CODINGCLEFS POUR AMSTRAD 2 ★ Système disque par Daniel Martin et Philippe Jadoul ★

Clefs2 10 - Cpm22 Table Vecteurs Standards - BdosCoding Clefs Pour Amstrad 2

CP/M 2.2 - TABLE DES VECTEURS STANDARDS DU BDOS

Les vecteurs standards du BDOS sont appelés en disposant le numéro de la fonction dans le registre C et en effectuant un CALL à l'adresse 0005H (saut au BDOS).

Le registre DE fournit les informations en entrée (positionnement sur le FCB, code de caractère ...). En sortie, les valeurs d'un octet sont transmises dans A et les valeurs des deux octets sont transmises dans HL. Pour des raisons de compatibilité, le registre A et le registre L sont identiques en sortie. Il en est de même des registres B et H.

Fonction 0 : Initialisation du système.
Action : réinitialisation totale du système. Cette fonction est identique à un saut au BOOT (0000N).
CE : C = 00.
CS : pas de CS.

Fonction 1 : Lecture CONSOLE.
Action : lecture dans l'accumulateur du caractère entré sur le périphérique physique associé à la console.
Les caractères CR, IF, BS et TAB sont traités ainsi que le test du CTRL S et CTRL P.
CE : C = 01.
CS : A contient le caractère ASCII.

Fonction 2 : Ecriture CONSOLE.
Action : écriture dans le périphérique physique associé à la console du caractère contenu dans le registre E.
Les caractères TAB, CR, LF, BS, CTRL S et CTRL P sont traités.
CE : C = 02, E contient le code ASCII du caractère à sortir.
CS : pas de CS.

Fonction 3 : Lecture READER.
Action : lecture du caractère en provenance du périphérique physique associé au READER.
CE : C = 03.
CS : A contient le code ASCII du caractère lu.

Fonction 4 : Ecriture PUNCHER.
Action : écriture du caractère contenu dans le registre E dans le périphérique physique associé au PUNCHER.
CE : C = 04, E contient le caractère à écrire.
CS : pas de CS.

Fonction 5 : Ecriture LIST.
Action : écriture du caractère contenu dans le registre E dans le périphérique physique associé au LIST.
CE : C = 05, E contient le caractère à écrire.
CS : pas de CS.

Fonction 6 : Lecture ou écriture directe sur la CONSOLE.
Action : cette fonction ne traite pas les caractères spéciaux (CTRL P, CTRL S, ...) et effectue un traitement direct avec la CONSOLE.
CE : C = 06, E contient le caractère à écrire ou FFH si le
caractère doit être lu.
CS : A contient le caractère lu ou un état (STATUS) 00 s'il n'y a pas de caractère lu.

Fonction 7 : Lecture de l'I/O byte.
Action : lecture de l'I/O byte dans le registre A.
CE : C = 07.
CS : A contient la valeur de l'I/O byte.

Fonction 8 : Ecriture de l'I/O byte.
Action : écriture du contenu du registre E dans l'I/O byte.
CE : C = 08, E contient la valeur à écrire.
CS : pas de CS.

Fonction 9 : Impression d'une chaîne de caractères,
Action : imprime la chaîne de caractères pointée par le registre DE vers la CONSOLE. La chaîne doit être terminée par un signe $.
CE ;: C = 09, DE pointe sur la chaîne de caractères.
CS ;: pas de CS.

Fonction 10 : Lecture du tampon de la CONSOLE.
Action : lit la CONSOLE et pousse le contenu dans un tampon pointé par le registre DE. L'entrée se termine lorsque le tampon déborde ou lorsqu'un RETOUR CHARIOT (ODH) ou un LINE FEED (OAH) est introduit à la CONSOLE. A l'issue de la fonction, le tampon contient, comme premier octet, le nombre de caractères total que peut contenir le tampon et le second octet contient le nombre de caractères qui suivent dans le tampon.
CE : C = OAH, DE pointe sur le tampon, le premier caractère pointé par DE contient le nombre maximum de caractères accepté par le tampon (1 à 255).
CS : le tampon contient les caractères entrés.

Fonction 11 : Lecture de l'état de la CONSOLE.
Action : cette fonction teste si un caractère a été introduit à la CONSOLE. Si un caractère a été introduit, A contient FFH, sinon A contient 00.
CE ;: C = OBH.
CS ;: A contient l'état de la CONSOLE.

Fonction 12 : Lecture du numéro de version du CP/M.
Action : cette fonction fournit une valeur sur deux octets. Le CP/M 2.2 fournit 0 dans le registre H et 22H dans le registre L.
CE : C = 0CH.
CS : HL contient le numéro de version.

Fonction 13 : Réinitialisation du système disque.
Action : cette fonction réinitialise le disque (disque A par défaut) et positionne le système en lecture et écriture permises. Cette fonction sert principalement à permettre un changement de disque sans faire de B00T.
CE : C = 0DH.
CS : pas de CS.

Fonction 14 : Sélectionne une unité de disque.
Action : cette fonction sélectionne l'unité de disque dont le numéro est contenu dans le registre E (0 = A, 1 = B, ...). Le disque est immédiatement considéré comme disponible. Tout essai de changement de disque après le lancement de cette fonction produira un message d'erreur (RE-AD/ ONLY STATUS).
CE : C = OEH, E contient le numéro de l'unité.
CS : pas de CS.

Fonction 15 : Ouverture de fichier.
Action : cette fonction ouvre le fichier dont le nom est contenu dans le FCB (voir table) pointé par DE. En retour, cette fonction fournit un état dans le registre A (0, 1, 2 et 3 indiquent une ouverture correcte, FFH indique que le fichier ne peut être trouvé dans le répertoire).
Remarque : le nombre 0, 1, 2 ou 3 indique la position du nom du fichier dans l'enregistrement du répertoire (128 octets permettent 4 entrées de 32 octets).
CE : C = OFH, DE pointe sur le FCB.
CS : A contient le statut d'ouverture.

Fonction 16 : Fermeture de fichier.
Action : cette fonction ferme le fichier dont le FCB est pointé par DE, Un état d'échec ou de succès identique à celui de l'ouverture est fourni en sortie. Une fermeture est indispensable si une ou plusieurs écritures ont eu lieu dans le fichier.
CE : C = 10H, DE pointe sur le FCB du fichier.
CS : A contient le statut de fermeture.

Fonction 17 : Première recherche dans le répertoire.
Action : cette fonction recherche un nom de fichier dans le répertoire en commençant au début et fournit dans A un statut indiquant la position ou l'absence du fichier spécifié.
CE ;: C = 11H, DE pointe sur le FCB du fichier.
CS ;: A contient le statut de la recherche.

Fonction 18 : Continuer la recherche.
Action : cette fonction est identique à la précédente, mais la recherche continue à partir de l'endroit où la dernière recherche s'est arrêtée.
CE : C = 12H.
CS : A contient le statut de la recherche.

Fonction 19 : Effacement de fichier.
Action : cette fonction efface du répertoire le fichier dont le FCB est pointé par le registre DE. Si le fichier n'est pas trouvé en sortie, A contient FFH.
CE : C = 13H, DE pointe sur le FCB du fichier.
CS : A contient le statut.

Fonction 20 : Lecture séquentielle d'un fichier.
Action : cette fonction réalise la lecture de l'enregistrement suivant (128 octets) du fichier préalablement ouvert (fonction 15 ou 22).
CE : C = 14H, DE pointe sur le FCB du fichier.
CS : A contient 0 si la lecture est bonne. Toute autre valeur indique qu'il n'y a pas de données dans l'enregistrement suivant.

Fonction 21 : Ecriture séquentielle dans un fichier.
Action : cette fonction lit l'enregistrement suivant (128 octets) d'un fichier préalablement ouvert.
CE : C = 15H, DE pointe sur le FCB du fichier.
CS : A contient 0 si l'écriture est correcte.

Fonction 22 : Création d'un fichier.
Action : cette fonction est similaire à l'ouverture d'un fichier, mais le FCB doit référencer un fichier qui n'existe pas dans le répertoire. L'entrée correspondante est alors créée. En sortie, A contient un compte-rendu identique à celui d'une ouverture.
CE : C = 16H, DE pointe sur le FCB du fichier.
CS : A contient le statut de la création.

Fonction 23 : Changement du nom d'un fichier.
Action : cette fonction utilise le FCB pointé par DE pour changer le nom du fichier contenu dans les 16 premiers octets en nom du fichier contenu dans les 16 octets suivants. En sortie, A contient un compte-rendu identique à celui d'une ouverture.
CE : C = 17H, DE pointe sur le FCB.
CS : A contient le statut du changement de nom.

Fonction 24 : Lecture du vecteur d'état des disques.
Action : cette fonction fournit un mot de 16 bits dans le registre HL qui indique les disques présents dans le système (le bit 0 de L correspond au disque A et le bit 7 de H au disque P). Si le disque est présent, le bit est à 1.
CE : C = 18H.
CS : HL contient le vecteur d'état.

Fonction 25 : Retourne le numéro du disque courant.
Action : cette fonction fournit, dans le registre A, le numéro du disque courant (sélectionné au moment de l'appel de la fonction).
CE : C = 19 H.
CS : A contient le numéro du disque (0 à 15).

Fonction 26 : Positionne l'adresse du DMA.
Action : cette fonction positionne l'adresse du tampon qui
contient l'enregistrement à lire ou à écrire. En standard, cette valeur vaut 80H.
CE : C = 1AH.
CS : DE contient l'adresse du DMA.

Fonction 27 : Lecture de l'adresse d'ALLOC.
Action : cette fonction fournit dans HL l'adresse du vecteur d'allocation (ALLOC).
CE : C = 1BH.
CS :HL contient l'adresse du vecteur ALLOC.

Fonction 28 : Positionne le disque en WRITE PROTECT.
Action : cette fonction positionne le disque courant en protection d'écriture jusqu'au prochain démarrage à chaud ou à froid.
CE : C = 1C.
CS : pas de CS.

Fonction 29 : Lecture du vecteur READ/ONLY.
Action : cette fonction fournit dans HL un vecteur de 16 bits qui indique les disques qui possèdent le statut lecture seule (READ ONLY). Le bit 0 du registre L indique le statut du disque A.
CE : C = 1DH.
CS : HL contient le vecteur READ/ONLY.

Fonction 30 : Positionnement des attributs d'un fichier.
Action : cette fonction permet de positionner l'attribut READ/ONLY ou l'attribut SYSTEME (fichier invisible) dans un état ou dans l'autre (ACTIF ou INACTIF).
CE : C = 1EH, DE pointe sur le FCB du fichier spécifié avec
les attributs positionnés dans l'état désiré (bit 7 des deux premiers caractères de l'extension).
CS : A contient FF si le fichier n'est pas trouvé. Sinon, A contient un nombre compris entre 0 et 3 qui indique la position de l'entrée dans l'enregistrement du répertoire.

Fonction 31 : Lecture de l'adresse de la DPB.
Action : cette fonction fournit, dans le registre HL, l'adresse du DPB (Disk Parameter Bloc) du disque courant.
CE : C = 1FH.
CS : HL pointe sur la DPB.

Fonction 32 : Positionnement ou lecture du numéro d'USER.
Action : cette fonction fournit le numéro d'USER courant si le registre E contient FFH ou modifie le numéro d'USER si E contient un autre nombre. Le numéro d'USER est pris égal à E modulo 16.
CE : C = 20H, E contient FFH ou le numéro d'USER.
CS : si E contient FFH, alors A contient le numéro d'USER courant.

Fonction 33 : Lecture directe.
Action : cette fonction est presque identique à la fonction de lecture séquentielle (fonction 20). L'enregistrement lu n'est pas le suivant du fichier, son numéro est contenu dans les trois octets qui suivent l'octet 31H du FCB. L1enregistrement est écrit à l'adresse DMA. En retour, le registre A contient un code d'erreur. 0 indique une lecture correcte, 3 indique que l'enregistrement courant ne peut être fermé, 4 indique que l'enregistrement demandé n'existe pas encore et 6 indique que l'enregistrement demandé dépasse la taille du disque.
CE : C = 21H, DE pointe sur le FCB du fichier.
CS : A contient le compte-rendu d'erreur.

Fonction 34 : Ecriture directe.
Action : cette fonction est presque identique à la fonction
d'écriture séquentielle (fonction 21). Comme dans la lecture directe (fonction 33), le numéro d'enregistrement est lu dans les trois derniers octets du FCB (32 à 35). L'enregistrement doit être à l'adresse DMA. En retour, A fournit un code d'erreur identique à celui de la fonction 33 avec, en plus, un code 5 qui indique qu'un nouvel enregistrement ne peut être créé pour des raisons de débordement de répertoire.
CE : C = 22H, DE pointe sur le FCB du fichier.
CS : A contient le compte-rendu d'erreur.

Fonction 35 : Calcul de la taille d'un fichier.
Action : cette fonction permet de déterminer la taille d'un fichier. Le résultat est fourni dans les octets 32 et 33 (ceux qui contiennent le numéro d'enregistrement direct à atteindre).
CE : C = 23H, DE pointe sur le FCB du fichier.
CS : les octets 32 et 33 du FCB contiennent la taille du fichier exprimée en nombre d'enregistrements.

Fonction 36 : Positionne le numéro d'enregistrement.
Action : cette fonction positionne, dans les octets 32 et 33
du FCB, le numéro direct d'enregistrement. Cette routine est intéressante dans le cas où le fichier a été préalablement adressé en mode séquentiel.
CE : C = 24H, DE pointe sur le FCB du fichier.
CS : les octets 32 et 33 du FCB contiennent le numéro d'enregistrement.

Fonction 37 : Réinitialisation du disque.
Action : initialise une configuration disque.
CE : C = 25H, DE contient le vecteur d'activité des disques (16 bits).
CS : A = 0.

Fonction 40 : Ecriture d'un enregistrement avec des 0.
Action : cette fonction est identique à la fonction 34, mais l'enregistrement est rempli de 0.
CE : C = 28H, DE pointe sur le FCB du fichier.
CS : A contient un code d'erreur (voir fonction 34).

★ ANNÉE: ???
★ AUTEUR(S): ???

Page précédente : Clefs2 10 - CPM/22 Table Vecteurs Propre au bios de l'Amstrad
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 541 millisecondes et consultée 1786 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.