Section courante

A propos

Section administrative du site

Routines système pour les entrées/sorties en langage assembleur

Ces informations sont fournies aux clients souhaitant écrire leurs propres routines d'entrée/sortie au niveau de l'assemblage. Une explication de la séquence d'appel et des paramètres pour chaque routine d'entrée/sortie nécessaire est donnée. Une connaissance du code Z-80 est supposée.

Les notations suivantes sont standard dans cette section :

Notations Description
HL=>xxxx Les registres HL contiennent l'adresse de (pointer sur) xxxx au format machine. (Si l'adresse de xxxx=34B2h alors les valeurs dans les registres sont : H=34 ; L=B2).
DE=>xxxx Les registres DE contiennent l'adresse de (pointer sur) xxxx au format machine. (Si l'adresse de xxxx=5AF1h alors les valeurs dans les registres sont : D=5A ; E=F1).
B=xx Le registre B contient la valeur numérique de xx sous forme binaire. Si xx=64 décimal, alors B=40h.
A=xx Le registre A contient la valeur numérique de xx sous forme binaire. Si xx=127 décimal, alors A=7Fh. Le registre A est utilisé pour renvoyer le code d'erreur TRSDOS pour les appels d'entrée/sortie.
Z=OK Le drapeau de zéro est défini (OK) en cas de retour réussi des routines système.
X'nnnn' Adresse RAM matérielle en notation hexadécimale (par exemple, 402D est X'402D').
LRL Longueur d'enregistrement logique. De 1 à 255 octets uniquement. Vous pouvez définir des enregistrements de la longueur que vous souhaitez jusqu'à 255 octets maximum. Une longueur de zéro est un cas particulier pour les enregistrements physiques uniquement et indique que la LRL = 256 octets.
BUFFER 256 octets désignés par l'utilisateur dans la RAM pour que TRSDOS lise ou écrive des secteurs. Si LRL=0, cette zone est à la charge de l'utilisateur de gérer avant et après les entrées/sorties. Le TRSDOS gère cette zone si LRL est compris entre 1 et 255 octets. Ne modifiez pas cette zone lorsque vous utilisez le traitement d'enregistrements logiques.
UREC Enregistrement d'utilisateur : l'adresse de la chaîne d'octets RAM contiguë affectée par l'utilisateur comme sa zone d'enregistrement logique. Sa longueur doit être égale à LRL. C'est une zone différente de BUFFER.

DCB avant OPEN et après CLOSE

Le DCB est défini comme 32 octets contigus de RAM désignés par l'utilisateur. Avant OPEN et après CLOSE, il s'agit d'une chaîne de caractères ASCII compressée justifiée à gauche (sans espaces), comme dans une spécification de fichier TRSDOS standard :

Explication de DCB en OPEN

lsb/msb est l'octet le moins significatif suivi de l'octet le plus significatif au format RAM du Z80 (par exemple, adresse=7CC8 dans la RAM est C8 7C).

Adresse Longueur Explication
DCB+0 3 Réservé
+3 2 Adresse du tampon physique (lsb/msb)
+5 1 Déplacement du délimiteur à la fin de l'enregistrement en cours
+6 1 Résidence du numéro de l'unité de disque de fichier
+7 1 Réservé
+8 1 Déplacement EOF du dernier délimiteur dans le dernier enregistrement physique
+9 1 LRL (Longueur d'enregistrement logique)
+10 2 NRN (numéro du prochain enregistrement - ouvre l'ensemble=X'0000' - lsb/msb)
+12 2 ERN (numéro du dernier enregistrement - dernier dans le fichier - lsb/msb)
+14 18 Réservé

NRN

Le numéro d'enregistrement suivant définit quel enregistrement doit être lu ou écrit par le prochain appel système pour READ ou WRITE. Il est automatiquement incrémenté de un après chaque appel système. Afin de traiter des fichiers aléatoires, utilisez l'appel POSN pour diriger TRSDOS vers l'enregistrement que vous souhaitez transférer ensuite.

ERN

Le numéro d'enregistrement de fin est le dernier numéro d'enregistrement actuellement dans le fichier. Il est placé dans le répertoire au moment du CLOSE, donc s'il est censé être correct, l'utilisateur doit fermer ses fichiers après avoir ajouté des enregistrements à un fichier. Cette valeur peut également être utilisée pour se positionner à la fin du fichier afin que de nouveaux enregistrements puissent être ajoutés à la fin du fichier. Pour se positionner en fin de fichier utiliser un appel à POSN avec un numéro d'enregistrement ERN+1.



Dernière mise à jour : Mercredi, le 22 février 2023