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:

  1. Numéro de piste (0 à 34)
  2. Nombre de zéros
  3. Numéro du secteur (0 à 9)
  4. Taille du secteur
  5. Premier octet de CRC
  6. 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.