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-
née est 0, le chargement se fera sur la tête 0 (ceci est réservé aux possesseurs de, lecteur double-tête); sinon la donnée sera toujours 0. Nous trouvons ensuite respectivement le numéro du premier secteur à lire sur la piste, la taille du secteur (n), le nom du dernier secteur à lire sur la même piste, la GAP#3 (&2A) et enfin &FF. Cette valeur est prise en compte seulement lorsque la taille du secteur est 0 (n=0). Ainsi, on peut donc lire en une seule fois plusieurs secteurs sur la même piste (exemple pour une piste data: &C1 à &C9), ce qui n'est pas négligeable. En général, on ne lit pourtant qu'un secteur à chaque fois. Remarque: du fait de son utilisation répétée (chargement de plusieurs pistes), la routine n'éteint jamais le lecteur de disquettes. Figure ci-dessous le programme manquant.

LD BC,&FA7E ;FDC Motor is now OFF
OUT (C),C
Pour 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

★ EDITEUR: MICROMAG
★ ANNÉE: 1989
★ AUTEUR: STEPHANE RODRIGUEZ
 


Page précédente : De port en port : Programmation du contrôleur de disquettes à travers les ports [1/2]

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Formatage spécial : TRANSFIL v2 (CPC Infos)
» Coding » Formatage spécial en Lecteur A ou B
» Coding » Formatage spécial : TRANSFIL (CPC Infos)
» Coding » Directory, Checksum und das Vortex-Format (Computer Technik)
» Coding » Fdc - 25 - Formatage et Ecriture Piste (SOS Programmeurs)
» Coding » Clefs pour Amstrad 2 : 10 - Cpm22 Format Secteur
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 597 millisecondes et consultée 2454 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.