ASMtrad CPC

Apprenez l'assembleur Z80

Vecteurs System – Gestion DISQUETTE (#BC65 – #BCA4)

#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 : si le moteur est OK, C=1, si on a poussé sur ESC, C=0, A contient l’état précédent du moteur.

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

CE : A contient l’état précédent du moteur.
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.

#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éjà 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.