Commandes:
Le FD1771B-01 peut exécuter 11 commandes différentes réparties en quatre groupes. Ces commandes sont détaillées dans la documentation technique du circuit intégré. Son utilisa est décrite dans le document "Model I Disk Interfacing Guide" de William Barden Jr. Nous ne verrons ici que l'implémentation du TRS-80, sachant qu'il existe d'autre possibilité de paramétrage des commandes.
Commandes du premier groupe:
RESTORE:
Code: ${$}$03
Fonction: Positionne la tête de lecture sur la piste 0
SEEK:
Code: ${$}$13
Fonction: Positionne la tête de lecture sur la piste choisie dans le registre Track. Le registre doit être positionné avant l'envoi de la commande.
STEP:
Code: ${$}$23 ou ${$}$33
Fonction: Avance la tête d'une piste dans la direction du dernier mouvement exécuté. Pour le code ${$}$33 le registre Track est modifié, pas avec le code ${$}$23.
STEP IN:
Code: ${$}$43 ou ${$}$53
Fonction: Avance la tête d'une piste vers le centre (incrémente le numéro de piste). Pour le code ${$}$53 le registre Track est modifié, pas avec le code ${$}$43.
STEP OUT:
Code: ${$}$63 ou ${$}$73
Fonction: Avance la tête d'une piste vers l'extérieur (décrémente le numéro de piste). Pour le code ${$}$73 le registre Track est modifié, pas avec le code ${$}$63.
STATUS retournés:
- Bit 0: BUSY
- Bit 1: INDEX
- Bit 2: TRACK 0
- Bit 3: CRC ERROR
- Bit 4: SEEK ERROR
- Bit 5: HEAD ENGAGED (= '1')
- Bit 6: WRITE PROTECT
- Bit 7: NOT READY
Commandes du deuxième groupe:
READ SECTOR:
Code: ${$}$8C
Fonction: Lis le secteur choisi dans le registre Sector sur la piste où est positionnée la tête.
WRITE SECTOR:
Code: ${$}$AC
Fonction: Ecris le secteur choisi dans le registre Sector sur la piste où est positionnée la tête.
STATUS retournés:
- Bit 0: BUSY
- Bit 1: DRQ
- Bit 2: LOST DATA
- Bit 3: CRC ERROR
- Bit 4: RECORD NOT FOUND
- Bit 5: RECORD TYPE (RD) OR WRITE FAULT
- Bit 6: RECORD TYPE (RD) OR WRITE PROTECT
- Bit 7: NOT READY
Commandes du troisième groupe:
Chaque block de données d'un secteur est précédé d'une champ d'identification ou ADRESS MARK. Celui-ci est composé de six octets défini comme suit:
- Numéro de piste (0 à 34)
- Nombre de zéros
- Numéro du secteur (0 à 9)
- Taille du secteur
- Premier octet de CRC
- Second octet de CRC
READ ADDRESS:
Code: ${$}$C4
Fonction: Lis le prochain champ d'identification présent sur la disquette à partir de la position de la tête.
STATUS retournés:
- Bit 0: BUSY
- Bit 1: DRQ
- Bit 2: LOST ADDRESS
- Bit 3: CRC ERROR
- Bit 4: ID NOT FOUND
- Bit 5: 0
- Bit 6: 0
- Bit 7: NOT READY
READ TRACK:
Code: ${$}$E4
Fonction: Lis la totalité de la piste sur laquelle est positionnée la tête. La lecture inclue également les champs d'identification et les GAP entre blocks de données.
STATUS retournés:
- Bit 0: BUSY
- Bit 1: DRQ
- Bit 2: LOST DATA
- Bit 3: 0
- Bit 4: 0
- Bit 5: 0
- Bit 6: 0
- Bit 7: NOT READY
WRITE TRACK:
Code: ${$}$F4
Fonction: Formatte la piste sur laquelle est positionnée la tête. L'écriture inclue les champs d'identification et les GAP entre blocks de données.
STATUS retournés:
- Bit 0: BUSY
- Bit 1: DRQ
- Bit 2: LOST DATA
- Bit 3: 0
- Bit 4: 0
- Bit 5: WRITE FAULT
- Bit 6: WRITE PROTECT
- Bit 7: NOT READY
Commandes du quatrième groupe:
FORCE INTERRUPT:
Code: ${$}$Dx
Fonction: Interrompt la commande en cours et génère une interruption en fonction de la valeur de x = [I3, I2, I1, I0]b
- I0 = 1 : Arrête la commande sur une transition NOT READY vers READY.
- I1 = 1 : Arrête la commande sur une transition READY vers NOT READY.
- I2 = 1 : Arrête la commande sur la détection d'une impulsion d'INDEX.
- I3 = 1 : Arrêt immédiat.
Si x= 0, alors la commande s'arrête immédiatement sans générer d'interruption.