★ CODING ★ TEST DES DRIVES ★ |
Fdc - 04 - Test Drive (SOS Programmeurs) |
Le chapitre précédent vous a prévenu ! Ce n'est pas simple si l'on tient compte qu'il peut y-en avoir 1 ou 2 (Ce qui est la moindre des choses ...) Les tests ont été effectués sur 464 + 2 Drives . Les connections de l'interface drive 6128 ont été établies différement . Un test rapide sur 6128 révèle des résultats un peu plus cohérents ! (Sur 464 , les connexions du signal 'Ready' A & B sont reliées à la même broche) . Dans le cas ou seul 1 drive est connecté il n'y-à pas de problème . Dans le second , on distingue 2 possibilités : B est branché et allumé , B est branché mais éteint . Cette petite différence est fondamentale ! Si vous avez un drive B connecté et allumé , tout va bien . S'il est éteint , LES VALEURS RENVOYEES PAR ET3 SONT FAUSSEES ! Si votre configuration comporte 2 drives , faites l'essai suivant depuis le BASIC : Enlevez la disquette de A , éteignez B et envoyez une commande "SAVE" quelconque . Rien ! Aucun message d'erreur ... Sans rien toucher , mettez une disquette dans A et ça repart ! Autre essai : A est allumé , actif et contient une disquette . B est allumé et contient une disquette . Enlevez la disquette de A et tapez 'ùB' . Vous obtiendrez le message : "Drive B Disc missing" . Tapez 'R'etry . Tiens ? Il est revenu ! Dernière tentative si vous disposez d'un programme de copie quelconque : Lancez une opération de copie sur B avec celui-ci éteint et constatez le plantage . L'explication du phénomène rèside à la fois dans les connections électroniques et dans la lecture des états d'interruption (LE BIT 5 DE ET3 N'EST A 0 QUE DANS LE CAS D'UN DISQUE ABSENT ET PAS D'UN DRIVE HORS SERVICE) Entrer dans le détail déborde largement du cadre de l'étude en cours . Notez simplement que un drive B eteint mais branché faussera tout programme d'exploitation directe du FDC . Ci dessous un exemple de résultat obtenu dans ce cas : Commande 4 : Tester état drive avec B éteint et absence de disque dans A renvoie dans ET3 : A = Protégé écriture et B OK . Le programme devra donc déterminer avec précision si :
Fonctionnement de la routine On mémorise le drive utilisé actuellement puis on sélectionne le drive A qui ne peut qu'être connecté et allumé . On renvoie la tête en piste 0 . (Ce n'est pas indispensable) . Si la tête est déja sur la piste 0 la commande CALIBRE ne génère pas d'erreur il est donc inutile de tester où se trouve la tête avant la commande . La routine TSTDRIV remet à zéro les causes d'interruption (ABSOLUMENT INDISPENSABLE !) , envoie la commande 4 et le numéro de drive au FDC , lit l'état d'interruption et range ET3 dans l'octet déterminé par INCPTE3 . Ensuite on sélectionne le drive B et on essaye de placer la tête sur la piste 0 . C'EST OBLIGATOIRE : CALIBRE NOUS DIRA SI B EST ETEINT . La lecture des états après calibre nous dira :
Dans le 1er cas on continue . On ignore le second qui sera de toute manière traité par TSTDRIV . Pour le 3ème , on boucle sur le test de B tant qu'il n'est pas allumé ou débranché ! L'appel suivant à TSTDIRV pour le drive B verra tous les bits 7 à 2 de ET3 (Tous sauf le numéro de drive) à zéro si le drive B n'est pas branché . La seconde partie de la routine est plus longue mais plus simple . On va rechercher l'état du drive A et on interprête les bits 6 & 5 . La tête étant mise sur la piste 0 par CALIBRE , le bit 4 ne nous interesse pas de même que 7 , 3, 2 inutilisables sur Amstrad . (Revoyez le chapitre signification des registres d'état) . Un second tour est effectué pour le drive B et c'est fini . NOTES : La routine PRT affiche la chaîne pointée par HL . Le dernier caractère doit avoir son bit 7 à 1 (+#80) . PRTDRIV affiche le drive en cours à une position donnée . Ces deux routines sont dans la section sous programmes . ; ;--------------------------- CHANGER DE DRIVE |
|
Page précédente : Fdc - 03 - Commandes du Fdc |
|