CE = CONDITIONS D’ENTRÉE
CS = CONDITIONS DE SORTIE
REGS = REGISTRES
C = FLAG CARRY
Z = FLAG ZÉRO

 

 

GESTIONNAIRE DISQUETTE
**********************

 

#BC65 – INITIALISATION DU GESTIONNAIRE DISQUETTE.

CE: rien.
CS: AF, BC, DE, HL sont modifiés.

 

#BC68 – POSITIONNEMENT DE LA VITESSE D’ÉCRITURE.

CE: HL contient la longueur de la moiti{e d’un bit a zéro.
       A contient la pré-compensation a appliquer.
CS: AF, HL sont modifiés.

 

#BC6B – AUTORISE OU INTERDIT L’AFFICHAGE DES MESSAGES.

CE: A=0 autorisé. A différent de 0 interdit.
CS: AF est modifié.

 

#BC6E – MISE EN ROUTE DU MOTEUR DISQUETTE.

CE: rien.
CS: si le moteur est OK, C=1, si on a poussé sur ESC, C=0, A contient l’état précédent du moteur.

 

#BC71 – ARRÊT DU MOTEUR.

CE: rien.
CS: idem #BC6E.

 

#BC74 – REPOSITIONNE LE MOTEUR DANS SON ÉTAT PRÉCÉDENT.

CE: A contient l’état précédent du moteur.
CS: idem #BC6E.

 

#BC77 – POSITIONNE LE TAMPON POUR LA LECTURE ET LIT LE PREMIER BLOC.

CE: B contient la longueur du nom de fichier.
       HL contient l’adresse du nom de fichier.
       DE contient l’adresse du tampon (2K, donc #800 ou 2048 octets).
CS: si OK, C=1 et Z=0.
       HL contient l’adresse du tampon qui contient l’entête.
       DE contient l’adresse des données.
       BC contient la longueur du fichier.
       A contient le type de fichier : bit 0 mis = protégé
       bit 1=0 bit 2=0 BASIC.
       bit 1=1 bit 2=0 BINAIRE.
       bit 1=0 bit 2=1 IMAGAGE-ECRAN.
       bit 1=1 bit 2=1 bit 4=1 ASCII.
       Si le STREAM (flux) est déjà utilisé, C=0 et A, BC, DE, HL sont modifiés.
       Si on presse ESC, C=0 et Z=1. AF, BC, DE, HL sont modifiés.
       Dans tous les cas, IX est modifié.

 

#BC7A – FERME LE FICHIER.

CE: rien.
CS: si OK, C=1, sinon C=0. AF, BC, DE, HL sont modifiés dans les 2 cas.

 

#BC7D – ABANDONNE LA LECTURE ET FERME LE FICHIER.

CE: rien.
CS: AF, BC, DE, HL sont modifiés.

 

#BC80 – LECTURE D’UN OCTET.

CE: rien.
CS: Si OK, C=1 et Z=0 et A contient le caractère lu.
       Si on rencontre la fin de fichier (EOF), C=0 et Z=0 et A est modifié.
       Si on pousse sur ESC, C=0 et Z=1 et A est modifié.
       Dans tous les cas IX est modifié.

 

#BC83 – LECTURE D’UN FICHIER ET ÉCRITURE EN MÉMOIRE.

CE: HL contient l’adresse d’écriture.
CS: Idem #BC80 pour C et Z. En outre, HL contient le point d’entrée si la lecture est correcte.
      Dans tous les cas AF, BC, DE, HL, IX sont modifiés.

 

#BC86 – MET LE DERNIER CARACTÈRE LU PAR LA ROUTINE BC80 DANS LE TAMPON DE LECTURE

CE: rien.
CS: rien.

 

#BC89 – TESTE SI ON A ATTEINT LA FIN DE FICHIER.

CE: rien.
CS: Si on a atteint la fin de fichier, C=0 et Z=0.
       Si on ne l’a pas atteint C=1 et Z=0.
       Si l’utilisateur a poussé sur ESC, C=0 et Z=1.
       De toute façon, AF, IX sont modifiés.

 

#BC8C – OUVERTURE D’UN FICHIER EN SORTIE.

CE: B contient la longueur du nom de fichier.
       HL contient l’adresse du nom de fichier.
       DE contient l’adresse d’un tampon de 2K disponible pour le fichier.
CS: Si le fichier a été ouvert correctement, C=1 et Z=0 et HL contient l’adresse d’un tampon qui contient l’en-tête qui sera écrite au début de chaque bloc de données.
       Si l’utilisateur a poussé sur ESC, C=0 et Z=1.
       Si le tampon est déja utilisé, C=0 et Z=0.
       De toute façon AF, BC, DE, HL, IX sont modifiés.

 

#BC8F – FERMETURE PROPRE D’UN FICHIER EN SORTIE.

CE: rien.
CS: Si la fermeture est OK, C=1 et z=0.
       Si le fichier n’était pas ouvert, C=0 et Z=0.
       Si on a poussé sur ESC, C=0 et Z=1.
       De toute façon AF, BC, DE, HL, IX sont modifiés.

 

#BC92 – FERMETURE IMMÉDIATE D’UN FICHIER EN SORTIE.

CE: rien.
CS: AF, BC, DE, HL sont modifiés.

 

#BC95 – ÉCRITURE D’UN CARACTÈRE SUR UN FICHIER EN SORTIE.

CE: A contient le caractère a écrire.
CS: Si l’écriture est correcte, C=1 et Z=0.
       Si le fichier n’était pas ouvert, C=0 et Z=0.
       Si on a poussé sur ESC, C=0 et Z=1.
       De toute façon AF, IX sont modifiés.

 

#BC98 – ÉCRITURE DIRECTE DU CONTENU D’UNE MÉMOIRE VERS UN FICHIER EN SORTIE.

CE: HL contient l’adresse mémoire.
       DE contient le nombre d’octets a écrire.
       BC contient le point d’entrée.
       A contient le type de fichier (voir BC77).
CS: idem BC95, mais AF, BC, DE, HL, IX sont modifiés.

 

#BC9B – GÉNÈRE LE CATALOGUE DE LA DISQUETTE.

CE: DE contient l’adresse d’un tampon de 2K disponible.
CS: Si la lecture a eu lieu correctement, C=1 et Z=0.
       Si le tampon est occupé, C=0 et Z=0.
       Si une erreur a eu lieu, C=0 et Z=1.
       De toute façon AF, BC, DE, HL, IX sont modifiés.

 

#BC9E – ÉCRIT UN ENREGISTREMENT SUR DISQUETTE.

CE: HL contient l’adresse des données à écrire.
       DE contient le nombre d’octets a écrire.
       A contient le caractère de synchronisation. &2C écriture en-tête. &16 écriture de données.
CS: Si l’enregistrement s’est déroulé correctement, C=1 sinon C=0 et A contient un code d’erreur.
       De toute façon, AF, BC, DE, HL, IX sont modifiés.

 

#BCA1 – LIT UN ENREGISTREMENT SUR DISQUETTE.

CE: HL contient l’adresse ou seront écrites les données.
       DE contient le nombre d’octets a lire.
       A contient le caractère de synchronisation.(voir BC9E).
CS: Si la lecture s’est déroulée correctement, C=1 sinon C=0 et A contient un code d’erreur.
       De toute façon AF, BC, DE, HL, IX sont modifiés.

 

#BCA4 – COMPARE UN ENREGISTREMENT SUR DISQUETTE AVEC LE CONTENU DE LA MÉMOIRE.

CE: HL contient l’adresse des données a comparer.
       DE contient le nombre d’octets a comparer.
       A contient le caractère de synchronisation.
CS: Si la comparaison est correcte, C=1 sinon C=0 et A contient un code d’erreur.
       De toute façon AF, BC, DE, HL, IX sont modifiés.