CODING ★ DISK COURT ★

Bidouilles ACPC n°35 - Disk Court

Voici un titre qui en dit long. Le lecteur de disquettes, chers lecteurs, nous vous en avons parlé encore et encore, pour vous le présenter sous toutes ses coutures. Vous devez donc commencer à le connaître comme un petit frère. En ce sens, le voici encore une fois décortiqué, dévoilé, mis au grand jour; bref, nous l'avons de nouveau broyé pour vous en extraire la pulpe.

C'est bien beau de vous donner des vecteurs système vous permettant de faire diverses opérations en Assembleur sur cette mémoire de masse, Malheureusement, et comme nous vous l'avons déjà dit, l'Amsdos est assez rigide et ne retient qu'une seule forme de travail: la sienne. Nous entendons par là que tout secteur fera 512 octets, que son nom sera &eX ou &4X et qu'il yen aura 9 par piste, Selon le nom du secteur, il est possible de déterminer le format de la disquette, soit CPM ou DATA (quoique! Si nous disons quoique, c'est parce que certaines ruses permettent de contourner ce genre de valeurs établies et de gruger l'Amsdos, mais c'est une autre histoire), Lorsqu'on décide de profiter pleinement du lecteur de disquettes, une décision est à prendre: utiliser ou non ce foutu système de m...

  • Avantages: tout est programmé et fiable. Il suffit simplement de gérer et utiliser les bons vecteurs.
  • Inconvénients: c'est lent, rigide, et cela renvoie des messages dans tous les sens,

En fait, on s'aperçoit vite que l'Amsdos finit par brider totalement le Cpc, Tout est trop inflexible, trop figé, Imaginez simplement que vous désiriez travailler avec des secteurs de 1 Ko au lieu de 512 octets. Impossible sous Amsdos, Ce genre de pratique est pourtant très sympa. Il est tout aussi impraticable de modifier le nombre et la taille des secteurs d'une piste à l'autre sous système sans se faire des nuits blanches à longueur d'années, Bref, que des ennuis, Comme nous décidons de ne pas passer par l'Amsdos, il nous faut travailler directement en Assembleur, par les ports d'entrées-sorties adéquats, C'est là que les choses se corsent, oh ! Catarinettabellachichi ! Voyons donc de quoi il retourne,

ET LES SCIES?

Avant de travailler avec le FDC, nous allons vous le présenter. Il est bon de savoir à qui on a à faire avant d'attaquer quoi que ce soit, C'est la firme Nec qui a développé cette petite merveille, Le Floppy Disk Controler est un circuit LSI (Large Scale Integration) capable de gérer quatre lecteurs de deux têtes chacun, Nous n'en demanderons pas tant sur Cpc, car je crois que seul un lecteur est effectivement relié au connecteur externe et que de celui-ci, une seule tête est disponible. Les capacités de ce composant sont alors réduites de moitié, Bête, mais déjà pas mal. Ce chip est capable de travailler dans deux densités. La simple, appelée FM (Frequency Modulation), et la double, plus couramment utilisée, nommée MFM (Modified Frequency Modulation). C'est marrant, j'ai déjà lu cela quelque part, Ce chip est aussi capable de travailler dans différents modes; avec ou sans interruptions et avec ou sans DMA (composant de transfert direct vers la mémoire, soit Direct Memory Acces) , Sur Cpc, c'est le mode Polling qui a été choisi. Rien à voir avec la choucroute car Poli veut dire vote in rosbeef in the text, Pas de DMA. pas de contrôle d'interruption, rien que du hand-shaking logiciel et hardware entre le Z80 et le FDC,

Z80: « C'est quand tu veux! »
FDC : « On peut y aller! »
Z80: « Tes là ?»
FDC : « Ça pète! »
Z80: «Go!»
FDC : « Ah, c'est con, je viens juste de m'apercevoir que j'ai pas de disquette dans le lecteur... »
Z80: « Et prout! »

C'est un peu lent, pas vraiment pratique, Assez « masturbation cérébrale» à programmer, mais le coût hardware est léger et ce procédé se révèle assez fiable à l'usage.

Il est possible d'intervenir sur le contrôleur par l'intermédiaire de deux ports d'entrées-sorties. Le premier concerne le registre d'états, Il permet de lire les informations relatives au fonctionnement du FDC à tout moment, ou presque, Il serait idiot d'écrire à cet endroit, vu sa tâche. Le second port est utilisé pour établir une conversation presque intelligente entre le Z80 et le FOC. C'est celui qui sert indépendamment à la lecture ou à récriture d'ordre, de comptes rendus ou encore de données. C'est en fait le plus utilisé, quoi qu'on en dise. Un troisième port ne concernant pas directement le FDC mais surtout le moteur du lecteur est aussi disponible, Voici le principe de conversation entre les deux compères.

  1. Le Z80 envoie un ordre au FDC histoire de ne pas travailler tout seul.
  2. Cela fait, il ne le quitte pas d'un secteur, histoire de dire que le travail sera bien fait. Pendant ce temps, le FDC vie sa vie, exécute avec dévotion et sérieux les tâches que le grand patron a demandées, Malheureusement, comme c'est le mode Polling qui est utilisé, le 765 bossant avec acharnement se fout totalement de ce que peut faire le microprocesseur, Pour le Z80, il n'est donc pas question d'aller draguer ou boire une bière. Que nenni, mon ami! Tas demandé des données? En veux tu? En voilà. A ne plus savoir qu'en faire. S'il n'y a personne à l'arrivée pour attraper les octets, ils seront perdus en route, Dure partie de Klax que se livrent nos deux acolytes à chaque accès disque. Bref, pas une milliseconde à perdre.
  3. Une fois que le FDC a bien mis le Z80 dans la semoule et la mouise, il se fait un plaisir de lui adresser un compte rendu d'état du travail effectué, histoire d'avoir le dernier mot. On ne sait jamais, des fois que des octets aient raté une marche ou bien que certains secteurs soient endommagés, voire non valides, Bref, mieux vaut assurer le transfert.

En fait, le FDC réagit comme tout périphérique du Z80 dans le sens où il interprète des commandes reçues et exécute des travaux en fonction de celles-ci, Chaque ordre passé au contrôleur doit être suivi d'une suite de paramètres lui permettant de savoir comment orienter ses tâches, Ces valeurs peuvent être différentes selon les commandes, Nous pouvons classer les travaux du FDC en fonction des actions qu'ils exécutent. Voici une liste concise de ces ordres.

CONCIS MAIS COSTAUD

Avant tout, il faut distinguer trois catégories de commandes différentes, Elles s'appliquent réciproquement aux trois classes d'objets à traiter qui sont les secteurs, les pistes et le matériel, Il est certain que ces choses étant totalement dissociables, elles seront traitées séparément.

Prenons, par exemple, le cas des secteurs. Ils sont créés et positionnés sur la piste une fois pour toute lors du formatage. Les seules actions réalisables sur ces espaces de stockage ne peuvent donc être que lecture, écriture et vérification, Les deux premières commandes peuvent être faites de deux manières. En effet, une des possibilités du FDC est de pouvoir écrire ou lire des secteurs qu'il marque comme effacés. Il lui est ainsi permis, si le bon mode de fonctionnement est sélectionné, d'ignorer des secteurs dits effacés pour ne se consacrer qu'à ceux écrits conventionnellement. Je ne crois pas que ce mode « effacé » soit utilisé sur Cpc, le système étant un peu trop ringard pour cela: mais il est tout de même bon dE! savoir que ce genre de truc existe. Sur la vérification (pardon mais je pouffe! Pouf !) nous ne nous étalerons pas. Ce genre de possibilité est sympathique lorsqu'une DMA est disponible mais dans notre cas, c'est plutôt inutile. C'est vraiment bien bête, car trois commandes y sont consacrées.

Passons aux pistes; elles ont aussi une sacrée importance dans le fonctionnement du contrôleur. La commande la plus utilisée est sans aucun doute celle de positionnement, qui permet de se promener allègrement sur la face de la disquette, youkaïdi, youkaïda ! Sa petite sœur est la recherche de piste qui est un dérivé de la sus-citée mais aussi sûrement moins utilisée. Lorsque la piste est trouvée et que la tête de lecture est bien en face et en phase, il est possible de lancer un formatage. Il faut tout de même bien réaliser que le FDC ne peut rien faire sur une piste qu'il n'a pas préalablement arrangée avec amour comme tout un chacun le fait naturellement de son petit nid. Pour savoir si une piste a déjà été formatée et, si oui, de quelle manière, il est possible de lire les identificateurs de secteurs nous renseignant sur leur nombre, leurs types et leurs noms.

Le dernier ordre relatif à ces cercles magnétiques est la lecture. Le FDC, dans toute sa charité et sa bonté naturelle, nous permet de prendre connaissance de chaque bit recouvrant la piste. Ainsi, il est possible de voir à la loupe entre les secteurs dans le cas où un mariole serait passé avec un lecteur biscornu, histoire de squatter la zone. J'ai la gorge nouée en vous avouant qu'il n'est pas possible d'écrire physiquement une piste sans tenir compte des secteurs. Pour r analyse, c'est tout de même vachement pratique de lire les inter-secteurs ainsi que les gaps. Contrecoup de cet avantage, il faut ce méfier de cette commande un tantinet buggée, et que même que si on la laisse faire, la lecture se prolonge indéfiniment, histoire de tout planter. Pas cool!

Nous finirons avec le matériel qu'il est possible de paramétrer, d'interroger, pour mieux en disposer. C'est la moindre des choses.

VIEUX MOTARD QUE J'AIMAIS

(NDPoum : copieur (NDSepth : copieur)) C'est dans le prochain épisode qu'on va se marrer. Il nous faudra programmer chacune des commandes citées dans le baratin d'introduction que vous venez de lire, sinon c'est que vous avez triché, alors recommencez depuis le début. Je sens que si on ne fait que commencer avec ce truc, on n'a pas fini d'en entendre parler. Saint Thur, priez pour nous. Je vous souhaite de bonnes et' constructives migraines en allant soigner celle que je couve. Bâille...

Sined le Dardare, ACPC n°35, p46-47

Page précédente : Bidouilles ACPC n°34 - Banques de mémoire

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

Lien(s):
» Coding » Assembleur ACPC n°18
» Coding » Assembleur ACPC n°43
» Coding » Bidouilles ACPC n°41 - L'art de la compression
» Coding » Bidouilles ACPC n°47 - Les vecteurs system (5/6)
» Coding » Bidouilles ACPC n°03 - Catalogue décorés
» Coding » Bidouilles ACPC n°30 - Catalogue et heresie
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.7-desktop/c
Page créée en 433 millisecondes et consultée 2296 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.