| ★ CODING ★ PROGRAMMATION : De port en port II - PROGRAMMATION DU CONTROLEUR DE DISQUETTES A TRAVERS LES PORTS (2e partie) ★ |
| De port en port : Programmation du contrôleur de disquettes à travers les ports [2/2] - Formatages de Pistes (Micro-Mag) | Cours et Initiation MICROMAG |
Au fait du principe de programmation à travers les ports du FDC 765, découvrons la merveilleuse routine et le programme de formatage promis le mois dernier.Ladite routine est vraiment un exemple de rigueur car les temps de réponse entre Z80 et FDC sont optimisés, de même, la structure des sous-routines est compactée au maximum. Désolé pour les débutants en Assembleur...
La routine (chargement d'un secteur d'une piste) - La zone 50AC-50AF contient la zone de données que le Z80 doit envoyer au FDC afin que celui-ci exécute l'instruction Positionnement de la tête de lecture sur une piste particulière. Le 3 correspond au nombre de données à envoyer, le F est le code d'instruction (seek track), le 0 qui suit, le numéro du lecteur (ici A) et enfin le deuxième 0 est le numéro de piste sur laquelle on veut que la tête se positionne. Cette structure est utilisée pour les trois zones. - La zone 50B0-50B1 contient les données vérifiant le bon déroulement de l'instruction précédente et la sélection correcte de la piste courante. Le 1 signifie qu'il y a une seule donnée à envoyer, le 8 correspond au code d'instruction Read Interrupt Status. — La zone 50B2-50BB est la plus importante de cette routine car elle permet justement de lire un secteur sur une piste précédemment sélectionnée. Comme pour les autres zones, les données sont à envoyer au FDC, puis on attend patiemment que le FDC fasse son boulot (phase d'exécution). Enfin, on récupère quelques données (phase résultat) en provenance des registres d'état, afin d'agir en conséquence suivant l'échec ou le succès d'une instruction. Ceci est plus important qu'il n'y paraît au premier abord. Le 9 signifie que le Z80 enverra neuf données les unes à la suite des autres au FDC. — Le 46 est le code d'instruction Read seetor. — Le 0 signale que le secteur sera chargé sur le lecteur A (1 : lecteur B). — Le 0 qui suit est le numéro de la piste sur laquelle sera lu le secteur, ensuite, si la don- LD BC,&FA7E ;FDC Motor is now OFFPour finir, signalons que les données vers et/ou à partir du Z80, sont transmises par le port &FB7F, le même par conséquent que celui des registres d'état. Mais il faut savoir que les données partielles sont transmises lors de la phase instruction et/ou exécution. La phase résultat concerne uniquement la lecture des registres d'état et par conséquent, est à lecture seule. A propos des secteurs, nous avons vu qu'il était possible de leur attribuer un ordre. Cela est même recommandé, car un certain ordre peut permettre à ceux-ci d'être chargés deux fois plus vite. L'ordre classique pour une disquette que l'on désire formater en Data est le suivant: &C1, &C2, &C3,..., &C9. Celui-ci, bien que logique et simple, engendre cependant une lenteur non négligeable. C'est pourquoi il est préférable d'utiliser l'ordre suivant: &C1, &C6, &C2, &C7, &C3, &C8, &C4, &C9, &C5. Le FDC 765 réagira toujours de la même manière en ce qui concerne l'ordre de lecture des secteurs, donc, aucune raison de s'en priver. A vos disquettes
Stéphane Rodriguez, MICROMAG n°7
|