Voir le sujet pr�c�dent :: Voir le sujet suivant |
Auteur |
Message |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Jeu 27 Nov 2008, 21:27 Sujet du message: GS/OS: AppleDisk5.25 |
|
|
Comme vous le savez, j'ai annonc� sur csa2 et csa2.programmer que je travaillais sur le driver AppleDisk5.25 de GS/OS afin de lui ajouter quelques fonctions afin de pouvoir g�rer d'autres syst�mes de fichiers (DOS 3.2, CP/M et d'autres en r�serve)
J'ai ainsi d�j� ajout� :
- les routines de gestion des blocs CP/M (1024 octets ou 4 secteurs DOS 3.3 ou 2 blocs ProDOS) avec l'interleaving qui va bien
- les routines de lecture, �criture, formatage du DOS 3.2 13 secteurs
Avec le premier ajout, j'ai pu v�rifier que cela fonctionnait gr�ce au d�veloppement d'un embryon de FST CP/M.
Avec le second ajout, je suis plus emb�t� en raison du comportement de GS/OS dont la gestion de l'appel Volume est le suivant : j'appelle la fonction Volume detous les FSTs pr�sents dans le syst�me, lesquels demandent � DEV_DISPATCHER de lire tel ou tel bloc pour v�rifier le syst�me de fichier et cr�er la structure VCR qui va bien. GS/OS boucle tant qu'un FST ne lui a pas r�pondu : ce truc est � moi.
Cependant, lorsque le driver (ici, AppleDisk5.25) rencontre une erreur de lecture du champ d'adresse, il retourne l'erreur $27 (I/O error) et GS/OS interpr�te cela comme une erreur de lecture du support physique et il consid�re donc qu'il n'a pas � appeler les autres FSTs.
Quand on consid�re qu'on n'a que des disquettes 16 secteurs, cela fonctionne. Mais quand on ajoute le 13 secteurs... boum ! En effet, GS/OS d�marre par le FST n�1 (ProDOS) lequel appelle le driver qui lui retourne l'I/O error puisqu'il a �t� incapable de lire la disquette.
Ce que j'ai cherch� � faire est de patcher en temps r�el le driver dans sa gestion du champ d'adresse :
- si je rencontre D5AA96, TVB
- si je rencontre D5AAB5, patche le driver pour modifier la routine de lecture du champ de donn�es.
Cela prend malheureusement trop de temps et n'est pas fiable.
Je pars sur une autre piste : j'ai doubl� la routine de lecture du champ d'adresse : READ_ADDRESS62 (la standard) et READ_ADDRESS53 et je consid�re les choses suivantes :
- si je suis dans READ_ADDRESS62 et que je rencontre D5AAB5 alors retourne une erreur que GS/OS devra interpr�ter comme : passe � un autre FST,
- si je suis dans READ_ADDRESS53 et que je rencontre D5AA96 alors retourne une erreur que GS/OS devra interpr�ter comme : passe � un autre FST,
- en cas d'erreur, je ne retourne plus l'I/O error.
C'est chaud ! Pour le moment, cela ne fait rien, ce n'est pas le bon code d'erreur. D'autant plus, que je ne retourne pas le code erreur � GS/OS mais � un FST lequel doit interpr�ter le code erreur correctement. De plus, en cas d'erreur de lecture I/O r�elle, je ne la g�re plus.
Une potentielle solution de contournement me g�n�re deux probl�mes. Soit je trouve le bon code erreur, soit je d�sassemble tous les FSTs qui font appel � du 5.25 (ProDOS, DOS 3.2, DOS 3.3, Pascal, CP/M) et je g�re l'erreur.
Bon, c'est ennuyeux...
el toto |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Jeu 27 Nov 2008, 22:27 Sujet du message: |
|
|
unknownVol, erreur $52 maybe... il y a du progr�s...
el toto |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Jeu 27 Nov 2008, 23:57 Sujet du message: |
|
|
la piste �nonc�e plus haut �tait la bonne, l'erreur $52 �tait la bonne �galement.
Bon, c'est cool, le FST DOS3.2 est bien appel�, apr�s ProDOS et DOS3.3, il demande � charger le bloc $CC (en 13 secteurs, c'est piste $11, secteur $0)
Le driver charge un truc, revient sans erreur, le FST r�cup�re l'appel sans erreur �galement mais...
...je crois qu'il faut que je revoie deux trucs :
- l'interleaving DOS 3.2
- ma routine de d�nibblization (mais c'est celle de la RWTS 3.2)
bon, euh, je vais me coucher,
el toto qui est content |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Mar 23 D�c 2008, 17:19 Sujet du message: |
|
|
Un point d'avancement avant No�l, d�j� post� sur brutal-deluxe.fr mais l�, je le fais en fran�ais.
- une piste DOS 3.2 contient 13 secteurs et non 12 d'o� mes calculs erron�s et une non-reconnaissance de ces disques par le FST DOS3.2. C'est maintenant corrig� ;=)
- le FST DOS3.2 existe, lit bien les disquettes et les reconnait, ce qui est l'essentiel.
- pas d'avancement sur le FST CP/M, les routines du driver m'ont pris bcp de temps, surtout en d�bogage et tests.
Donc, le driver AppleDisk5.25 g�re maintenant les blocs de 256, 512 et 1024 octets.
Il sait les lire, normalement formater des disquettes mais ce n'est pas test� encore (il faut modifier les FST)
Il ne sait pas encore �crire un bloc de 256 octets en DOS 3.2, je me suis rendu compte hier soir que je n'avais pas fait la routine
Il faut que je valide l'interleaving des routines de formatage, mon petit doigt me dit que la routine existante ne formate qu'en interleaving prodos...
J'ai commenc� � travailler sur l'ajout des commandes JudgeName, Format et EraseDisk du FST DOS3.3 afin de valider mes routines de driver. Je travaillerai sur cela pendant les vacances.
J'ai test� en long, large et travers les routines de lecture/�criture afin de ne pas introduire de r�gression, pour l'instant TVB avec une lecture/�criture normale sur disquette (via Finder) ou une lecture/�criture en masse (via Asimov), c'est rassurant.
C'est l� que je me rends compte que les commandes qui arrivent � un driver contiennent le num�ro du FST quand elles sont appel�es mais pas quand les commandes sont de type DRead, DStatus, DWrite, etc. Ce qui, somme toute, est logique mais pourrait �tre ennuyeux.
Asimov �crit ses disquettes en passant le nombre de blocs � �crire avec une taille de blocs et cela ne m'inqui�te mais ne me d�sesp�re pas, la logique voudrait que la paire taille d'un bloc / nombre de blocs sur un volume soit unique :
- 512 / 280 pour ProDOS ou Pascal (m�me interleaving)
- 256 / 560 pour DOS 3.3 ou RDOS 3.3 (m�me interleaving)
- 256 / 455 pour DOS 3.2 ou RDOS 3.2 (interleaving � v�rifier)
- 1024 / 140 pour CP/M (interleaving sp�cifique
Je contacterai les "�diteurs" des softs d'image s'il y a un probl�me.
Sur ce, je vous souhaite un joyeux No�l,
Antoine |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
flaith
Inscrit le: 30 Ao� 2007 Messages: 30 Localisation: $300:20 58 FC 60
|
Post� le: Mar 23 D�c 2008, 22:52 Sujet du message: |
|
|
impressionnant, je suis depuis le d�but et n'en loupe pas une miette
Bonne continuation, et joyeux no�l � toi et � toute la bande ![Wink](images/smiles/icon_wink.gif) _________________ Je suis sur de "rien", mais ne je suis pas sur du "tout". |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Mer 24 D�c 2008, 17:10 Sujet du message: |
|
|
Joyeux No�l �galement � tous,
Le FST DOS 3.3 formate maintenant en DOS 3.3 les disquettes qu'on lui donne � manger !
Le FST DOS 3.2 formate maintenant la premi�re piste en DOS 3.2 des disquettes qu'on lui donne � manger, hum ! La routine de v�rification du formatage est � modifier pour pouvoir la consid�rer bonne pour le service, ie. pour formater une disquette enti�rement.
J'ai ajout� les routines de pr�nibblization en DOS 3.2 et d'�criture d'un secteur.
Je vois le bout du tunnel !!!!!!
antoine |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
|