Section courante

A propos

Section administrative du site

Appels de fonction MSX-DOS

Les appels de fonction MSX-DOS sont effectués en plaçant le code de la fonction dans le registre C avec tous les autres paramètres requis dans les autres registres principaux, puis en exécutant une instruction "CALL 5". L'opération sera effectuée et les résultats seront renvoyés dans différents registres en fonction de la fonction.

Généralement, tous les registres principaux (AF, BC, DE et HL) seront corrompus par les appels MSX-DOS ou renverront des résultats. L'ensemble de registres alternatifs (AF', BC', DE' et HL') sont toujours conservés, tandis que les registres d'index (IX et IY) sont conservés sauf dans le ou les deux cas où ils renvoient des résultats.

Seule une petite quantité d'espace (8 octets) est nécessaire sur la pile du programme transitoire car MSX-DOS bascule vers une pile interne lorsqu'il est appelé.

Pour des raisons de compatibilité, toutes les fonctions ayant une contrepartie CP/M renvoient A=L et B=H. Fréquemment, le registre A renvoie un drapeau d'erreur, avec zéro indiquant le succès et 01h ou FFh indiquant l'échec.

Toutes les nouvelles fonctions MSX-DOS (code de fonction supérieur à 40h) renvoient un code d'erreur dans le registre A et tout autre résultat dans les autres registres principaux. Un code d'erreur de 0 signifie qu'il n'y a pas d'erreur, tandis que tout code différent de zéro signifie qu'une erreur s'est produite, dont la nature exacte peut être trouvée en regardant la valeur.

Entrée/sortie de périphériques et caractères

Partout où un nom de fichier est donné à une fonction MSX-DOS, un nom de périphérique peut également être donné. Ces périphériques sont utilisés pour les entrées/sorties basées sur des caractères et permettent à un programme d'accéder à un fichier disque ou à un périphérique de caractères exactement de la même manière sans avoir à savoir lequel il utilise.

La syntaxe des noms de périphériques est identique à celle des noms de fichiers, de sorte que les programmes n'ont besoin d'aucune manipulation spéciale pour utiliser les noms de périphériques. Ceci s'applique aussi bien aux nouvelles fonctions MSX-DOS 2 qu'aux fonctions FCB compatibles CP/M. Les noms de fichiers réservés utilisés pour les périphériques sont :

Périphérique Description
CON Sortie pour l'écran, entrée pour le clavier
PRN Sortie d'imprimante
LST Sortie d'imprimante
AUX Entrée/sortie auxiliaire
NUL Périphérique nulle

Lorsque l'un d'entre eux apparaît comme la partie principale d'un nom de fichier, il fait en fait référence au périphérique ; l'extension est ignorée. La plupart des appels de fonction qui utilisent des fichiers peuvent également utiliser des périphériques. Par exemple, un nom de fichier CON peut être attribué avec succès à la fonction "renommer le fichier" ou à la fonction "supprimer le fichier". Aucune erreur ne sera renvoyée, mais le périphérique ne sera pas affecté.

Le périphérique AUX mentionné ci-dessus ne fait rien par défaut, mais une routine peut y être accrochée pour qu'il se réfère par exemple à un pilote série. Le périphérique NUL ne fait en réalité rien ; les caractères de sortie sont ignorés et une fin de fichier est toujours entrée. Les dispositifs LST et PRN sont identiques.

Le périphérique CON est utilisé pour lire à partir du clavier ou écrire sur l'écran. Lors de la lecture à partir du périphérique CON, le système lira une ligne à la fois, permettant à l'utilisateur d'utiliser les fonctions d'édition de ligne. Ce n'est que lorsque l'utilisateur tape un CR (retour chariot) que la ligne sera saisie. La fin de la saisie est signalée par un caractère CTRL+Z en début de ligne.

Le système ouvre automatiquement plusieurs descripteurs de fichiers sur ces périphériques standard. Ces descripteurs de fichiers peuvent être utilisés par des programmes pour accéder aux périphériques standard. Alternativement, un programme peut effectuer des entrées/sorties de caractères en utilisant les fonctions de caractères CP/M traditionnelles (fonctions 01h...0Bh). Ces deux méthodes sont toutes deux acceptables mais elles ne doivent normalement pas être mélangées car elles utilisent des schémas de mise en mémoire tampon distincts et les caractères peuvent donc se perdre dans ces mémoires tampons.

La redirection est spécifiée sur la ligne de commande, ces deux méthodes (descripteurs de fichiers standard et fonctions de caractères) seront redirigées. Cependant, il est préférable d'utiliser les descripteurs de fichiers standard et de lire et d'écrire dans de grands blocs car lors de l'accès aux fichiers du disque, ceux-ci seront beaucoup plus rapides que d'utiliser la fonction caractère.

Même si la redirection a été spécifiée sur la ligne de commande, les programmes peuvent parfois avoir besoin d'effectuer une sortie à l'écran et une entrée au clavier contournant toute redirection. Par exemple, les routines de gestion des erreurs de disque peuvent avoir besoin de le faire. Pour faciliter cela, il existe une fonction permettant d'annuler temporairement la redirection des fonctions du caractères.

Gestionnaires de fichier

Les descripteurs de fichiers sont la méthode par laquelle les fichiers sont lus et écrits à l'aide des nouvelles fonctions MSX-DOS. Les descripteurs de fichiers peuvent également être utilisés pour manipuler des fichiers d'autres manières (par exemple, la manipulation des attributs de fichier).

Un descripteur de fichier est un nombre de 8 bits faisant référence à un fichier ou à un périphérique ouvert particulier. Un nouveau descripteur de fichier est alloué lorsque la fonction "ouvrir un descripteur de fichier" (fonction 43h) ou "créer un descripteur de fichier" (fonction 44h) est utilisée. Le descripteur de fichier peut être utilisé pour lire et écrire des données dans le fichier et exister jusqu'à ce que la fonction "fermer le descripteur de fichier" (fonction 45h) ou "supprimer le descripteur de fichier" (fonction 52h) soit appelée. D'autres opérations peuvent être effectuées sur les fichiers à l'aide de descripteurs de fichiers, telles que la modification des attributs ou le renommage du fichier auquel ils se réfèrent.

Chaque fois que MSX-DOS alloue un nouveau descripteur de fichier, il utilise le nombre inférieur disponible. Le nombre maximal de descripteurs de fichiers dans la version actuelle est de 63. Dans les versions futures, il pourra être augmenté mais ne sera jamais supérieur à 127, de sorte que les descripteurs de fichiers ne peuvent jamais être négatifs.

L'espace pour les structures de données internes utilisées pour les descripteurs de fichiers est alloué dynamiquement dans un segment de 16 Ko de RAM (le "segment de données"), il n'y a donc pas de limite fixe au nombre de descripteurs de fichiers pouvant être ouverts en même temps. Ce segment est conservé en dehors du TPA, donc tout ce qui y est stocké ne réduit pas la taille du TPA. En plus de conserver les informations de descripteur de fichier interne, le système conserve également les tampons de disque et les chaînes de caractères d'environnement dans le segment de données.

Divers descripteurs de fichiers sont prédéfinis et sont déjà ouverts lorsqu'un programme transitoire est exécuté. Ces descripteurs de fichiers font référence aux périphériques d'entrée et de sortie standard. Les fonctions d'entrée/sortie de caractères MSX-DOS "traditionnelles" de style CP/M font en fait référence à ces descripteurs de fichiers.

Un programme transitoire obtient en fait une copie des descripteurs de fichiers d'entrée et de sortie standard que l'interpréteur de commandes utilisait, plutôt que les originaux. Cela signifie que le programme peut librement fermer ces descripteurs de fichiers et les rouvrir vers différentes destinations et n'a pas besoin de les réinitialiser avant de se terminer.

Les descripteurs de fichiers par défaut et leurs destinations sont :

Valeur Description
0 Entrée standard (CON)
1 Sortie standard (CON)
2 Erreur standard d'entrée/sortie (CON)
3 Entrée/sortie auxiliaire standard (AUX)
4 Sortie d'imprimante standard (PRN)

Lorsque l'interpréteur de commandes est sur le point d'exécuter une commande (par exemple un programme transitoire), il exécute un appel de fonction "fork" (fonction 60H). Cela informe le système qu'un nouveau programme est en cours d'exécution en tant que "sous-programme" et, entre autres, tous les descripteurs de fichiers actuellement ouverts sont dupliqués, de sorte que le nouveau programme utilisera des copies des descripteurs d'origine plutôt que la commande d'interpréteur.

Si le programme transitoire modifie l'un des descripteurs de fichiers, en fermant ceux existant déjà ou en en ouvrant de nouveaux, ce sera le propre ensemble de descripteurs de fichiers du programme étant modifié, l'ensemble d'origine restera inchangé. Une fois le programme terminé, l'interpréteur de commandes exécute un appel de fonction "join" (fonction 61H), en lui transmettant un identifiant de processus ayant été renvoyé par le "fork" d'origine. Cela indique au système que le nouveau programme s'est terminé et que tous ses descripteurs de fichiers peuvent être supprimés.

Les décomptes de références sont conservés pour le nombre de copies de chaque descripteur, ce qui permet au système de ranger tous les descripteurs de fichiers qui ne sont plus nécessaires lorsqu'un programme se termine. Cela garantit que le système ne manquera pas de descripteurs de fichiers à cause de programmes qui se comportent mal et ne les ferment pas.

Ces fonctions "fork" et "join" sont disponibles pour les programmes utilisateur s'ils les trouvent utiles. En plus de ranger les descripteurs de fichiers, "join" libérera également tous les segments de RAM alloués à l'utilisateur que le programme n'a pas libérés.

Blocs d'informations de fichier (File Info Blocks)

Toutes les nouvelles fonctions MSX-DOS agissant sur des fichiers sur disque peuvent recevoir un simple pointeur vers une chaîne de caractères terminée par un caractère nul (appelée chaîne de caractères ASCIIZ), pouvant contenir un unité de disque, un chemin et un nom de fichier non ambigu. Ce sont généralement les opérations qu'un programme transitoire effectuera, souvent via une interface de langage de haut niveau. La spécification de la commande en donne les détails.

À l'une de ces fonctions ASCIIZ, un FIB (File Info Blocks) peut être transmis à la place. Les FIB sont utilisés pour des opérations plus complexes telles que la recherche de répertoires pour des fichiers ou des sous-répertoires inconnus.

Un FIB est une zone de 64 octets de la mémoire de l'utilisateur contenant des informations sur l'entrée de répertoire sur le disque pour un fichier ou un sous-répertoire particulier. Les informations d'un FIB sont renseignées par les nouvelles fonctions "trouver" MSX-DOS ("trouver la première entrée" (fonction 40h), "trouver une nouvelle entrée" (fonction 42h) et "trouver l'entrée suivante" (fonction 41h)). Le format d'un FIB (File Info Block) est le suivant :

Déplacement Description
0 Toujours 0FFh
1 à 13 Le nom de fichier est une chaîne de caractères ASCII.
14 Octet d'attributs de fichier.
15 à 16 Heure de la dernière modification
17 à 18 Date de la dernière modification
19 à 20 Début de l'unité d'allocation
21 à 24 Taille du fichier
25 Unité de disque logique
26 à 63 Informations interne, ne doit pas être modifié

Le 0FFh au début du bloc d'informations de fichier doit être là pour le distinguer d'une chaîne de caractères de nom de chemin, puisque certaines fonctions peuvent prendre l'un ou l'autre type de paramètre.

Le nom de fichier est entreposé dans un format approprié pour un affichage direct et se présente sous la forme d'une chaîne de caractères ASCIIZ. Tous les espaces auront été supprimés, l'extension du nom de fichier (le cas échéant) sera précédée d'un point et le nom aura été mis en majuscule. Si l'entrée est une étiquette de volume, le nom sera entreposé sans le séparateur «.», avec des espaces laissés et non en majuscules.

L'octet d'attributs de fichier est un octet de drapeaux concernant le fichier. Le format de l'octet est :

Bit Description
0 Lecture seulement : S'il est défini, le fichier ne peut pas être écrit ou supprimé, mais peut être lu, renommé ou déplacé.
1 Fichier caché : S'il est défini, le fichier ne sera trouvé par la fonction "Find First" que si le bit "fichier caché" est défini dans l'octet des attributs de recherche. Toutes les commandes implémentées par l'interpréteur de commandes accédant aux fichiers et répertoires sur le disque peuvent prendre une option "/H" permettant à la commande de trouver des fichiers cachés.
2 Fichier système : En ce qui concerne les fonctions MSX-DOS, ce bit a exactement le même effet que le bit "fichier caché" sauf que les appels de fonction "Find New" et "Create" ne supprimeront pas automatiquement un fichier système. Aucune des commandes implémentées par l'interpréteur de commandes ne permet d'accéder aux fichiers système.
3 Nom de volume : Si elle est définie, cette entrée définit le nom du volume. Ne peut se produire que dans le répertoire racine et une seule fois. Tous les autres bits sont ignorés.
4 Répertoire : S'il est défini, l'entrée est un sous-répertoire plutôt qu'un fichier et ne peut donc pas être ouverte en lecture et en écriture. Seul le bit caché a une signification pour les sous-répertoires.
5 Bit d'archive : Chaque fois qu'un fichier a été écrit et fermé, ce bit est activé. Ce bit peut être examiné, par exemple, par la commande XCOPY pour déterminer si le fichier a été modifié.
6 Réservé (toujours 0)
7 Bit de périphérique : Ceci est défini pour indiquer que le FIB fait référence à un périphérique de caractères (par exemple "CON") plutôt qu'à un fichier disque. Tous les autres bits d'attributs sont ignorés.

L'heure de la dernière modification est codée sur deux octets comme suit :

Bits Description
15 à 11 Heures (0 à 23)
10 à 5 Minutes (0 à 59)
4 à 0 Secondes/2 (0 à 29)

La date de la dernière modification est codée sur deux octets comme suit. Si tous les bits sont à zéro, aucune date valide n'est définie :

Bits Description
15 à 9 Année (0 à 99 correspondant de 1980 à 2079)
8 à 5 Mois (1 à 12 correspondant à Janvier à Décembre)
4 à 0 Jour (1 à 31)

La taille du fichier est un nombre de 32 bits entreposé avec l'octet le plus bas en premier et est de zéro pour les sous-répertoires.

L'unité de disque logique est un numéro d'unité de disque à un octet, 1 correspondant à A:, 2 à B: ... Il ne sera jamais zéro, car si zéro a été spécifié dans la fonction d'origine, cela signifie l'unité de disque par défaut et le numéro piloté de l'unité de disque par défaut sera rempli ici.

Les informations internes indiquent à MSX-DOS où sur le disque l'entrée de répertoire est entreposée. Cela permet aux fonctions auxquelles le bloc d'informations sur le fichier est transmis d'agir sur l'entrée de répertoire, par exemple en la supprimant, en la renommant ou en l'ouvrant. Les données entreposées ici permettent également à la fonction "trouver l'entrée suivante" (fonction 41h) de poursuivre la recherche pour trouver le prochain fichier correspondant. L'utilisateur ne doit en aucun cas accéder ou modifier les informations internes.

Dans le cas de "trouver la première entrée", un répertoire sera recherché pour la première entrée correspondant à un nom de fichier donné et ayant des attributs appropriés. «Rechercher l'entrée suivante» poursuit une recherche lancée par une fonction précédente «Rechercher la première entrée» et met à jour le bloc d'informations sur le fichier avec l'entrée correspondante suivante.

"Rechercher une nouvelle entrée" est similaire à "Rechercher la première entrée", sauf qu'au lieu de rechercher une entrée correspondante, il en créera une nouvelle, puis renverra un bloc d'informations sur le fichier, comme si "Rechercher en premier" l'avait trouvé.

Après avoir créé un bloc d'informations sur le fichier à l'aide de l'une des fonctions "rechercher", il existe deux manières de l'utiliser. La première consiste à utiliser simplement les informations qu'il contient telles que le nom et la taille du fichier. Par exemple, la commande "DIR" affiche simplement les informations à l'écran.

La manière la plus intéressante d'utiliser un bloc d'informations de fichier est de le retransmettre à une autre fonction MSX-DOS afin d'effectuer une opération sur l'entrée de répertoire. De nombreuses fonctions MSX-DOS décrites dans la spécification de fonction prennent un pointeur dans le registre DE pouvant pointer vers une chaîne de caractères d'unité de disque/chemin/fichier ou un bloc d'informations de fichier. Dans les deux cas, un fichier ou un répertoire particulier est spécifié pour que la fonction agisse.

Les fonctions pouvant prendre un tel paramètre sont "Supprimer un fichier ou un sous-répertoire" (fonction 4Dh), "Renommer un fichier ou un sous-répertoire" (fonction 4Eh), "Déplacer un fichier ou un sous-répertoire" (fonction 4Fh), "Obtenir/Définir les attributs du fichier" (fonction 50h), "Obtenir/Définir la date et l'heure du fichier" (fonction 51h) et "Ouvrir le descripteur de fichier" (fonction 43h). Tous ces éléments exécutent la fonction évidente sur le fichier ou le répertoire spécifié.

Un bloc d'informations de fichier peut également être passé à une fonction "Find First" ou "Find New" à la place de la chaîne de caractères de l'unité de disque/chemin/fichier. Dans ce cas, le bloc d'informations sur le fichier doit faire référence à un répertoire plutôt qu'à un fichier et une chaîne de caractères de nom de fichier doit également être passée dans le registre HL (généralement nulle, ce qui équivaut à "*.*"). Le répertoire spécifié par le bloc d'informations sur le fichier sera recherché pour les correspondances avec le nom de fichier, sous réserve de la vérification habituelle des attributs. Cette fonctionnalité est nécessaire pour l'interpréteur de commandes afin qu'une commande telle que "DIR A:UTIL" puisse avoir l'action requise si UTIL est un répertoire.

Chaînes de caractères d'environnement

Le MSX-DOS maintient une liste de "chaînes de caractères d'environnement" dans son segment de données. Une chaîne de caractères d'environnement est un élément nommé auquel est associée une valeur. Le nom et la valeur sont définis par l'utilisateur. Les chaînes de caractères d'environnement sont accessibles au niveau de l'appel de fonction via défini par l'utilisateur. Les chaînes de caractères d'environnement sont accessibles au niveau de l'appel de la fonction via les fonctions "Demande de chaîne de caractères d'environnement" (fonction 6Bh), "Fixe la chaîne de caractères d'environnement" (fonction 6Ch) et "Recherche la chaîne de caractères de l'environnement" (fonction 6Dh).

Le nom d'une chaîne de caractères d'environnement est une chaîne de caractères non nulle constituée de tous les caractères valides dans les noms de fichiers. Le nom peut comporter jusqu'à 255 caractères. Les caractères du nom sont en majuscules lorsque la chaîne de caractères est définie, bien que pour les comparaisons de noms, la casse ne soit pas significative.

La valeur d'une chaîne de caractères d'environnement consiste en une chaîne de caractères non nuls et peut comporter jusqu'à 255 caractères. Si la valeur d'une chaîne de caractères d'environnement est définie sur une chaîne nulle, le nom est supprimé de la liste des chaînes de caractères d'environnement. De même, si la valeur d'une chaîne de caractères d'environnement n'ayant pas été définie est lue, une chaîne de caractères nulle est renvoyée. La valeur n'est pas en majuscule et aucune interprétation n'est placée sur les caractères de la chaîne de caractères de valeur.

Lorsqu'un programme transitoire est chargé et exécuté à partir de COMMAND2.COM, deux chaînes de caractères d'environnement spéciales sont configurées, qu'il peut lire.

Une chaîne de caractères d'environnement appelée PARAMETERS est configurée sur la ligne de commande sans inclure le nom de commande actuel. Ceci est similaire à celui configuré à 80h pour la compatibilité CP/M, mais n'a pas été mis en majuscule.

Une autre chaîne de caractères d'environnement appelée PROGRAM est également configurée et c'est le chemin complet utilisé pour localiser le programme sur le disque. Le lecteur est le premier, suivi du chemin depuis la racine, puis du nom de fichier réel du programme. L'unité de disque, le chemin et le nom de fichier peuvent être séparés si vous le souhaitez à l'aide de l'appel de fonction "Parse Pathname" (fonction 5Ch).

La chaîne de caractères d'environnement PROGRAM a plusieurs utilisations. L'utilisation principale est qu'un programme peut l'utiliser pour charger des fichiers de recouvrement à partir du même répertoire que celui à partir duquel il a été chargé. Le dernier élément de PROGRAM (c'est-à-dire le nom de fichier du programme réel) est remplacé par le nom du fichier de recouvrement, puis la nouvelle chaîne de caractères peut être transmise à l'une des nouvelles fonctions MSX-DOS 2 acceptant des chaînes de caractères ASCIIZ (telles que "Ouvrir Dossier").

Notez que certains programmes CP/M sont capables de charger et d'exécuter des programmes transitoires, et dans ce cas, ils n'auront évidemment pas configuré les chaînes d'environnement PROGRAM et PARAMETERS, et ils seront en fait toujours configurés à partir du moment où le programme CP/M a été chargé. Si un programme souhaite utiliser PROGRAM et PARAMETERS et être toujours chargeable à partir d'un programme CP/M, alors il peut consulter une variable appelée "LOAD_FLAG", se trouvant dans la page 0 à l'adresse 0037h. Il est défini sur zéro à chaque appel de fonction MSX-DOS 2 mais est défini sur différent de zéro immédiatement avant qu'un programme transitoire ne soit exécuté par l'interpréteur de commandes. De même, si un nouveau programme transitoire a la capacité de charger d'autres programmes transitoires et qu'il configure PROGRAM et PARAMETERS, il doit également définir LOAD_FLAG sur une valeur différente de zéro.

Une autre chaîne de caractères d'environnement spéciale est appelée APPEND. Celui-ci peut être configuré par l'utilisateur à partir de l'interpréteur de commandes et est utilisé par la fonction CP/M "Open File (FCB)". Lorsque cet appel de fonction est terminé et que le fichier n'est pas trouvé, un répertoire alternatif, spécifié par APPEND, est recherché. Il n'est cependant pas prévu que de nouveaux programmes transitoires utilisent cet appel de fonction ou la chaîne de caractères d'environnement APPEND.

Plusieurs chaînes de caractères d'environnement sont configurées par l'interpréteur de commandes lors de son démarrage et sont modifiées par l'utilisateur pour contrôler diverses fonctionnalités et options du système, et il peut être utile pour les programmes transitoires de lire certaines d'entre elles. Par exemple, il peut être utile de lire la chaîne de caractères d'environnement PATH ou les chaînes de caractères d'environnement DATE et TIME si le programme affiche des dates et des heures. La spécification de la commande contient des détails sur ces chaînes de caractères d'environnement par défaut.

Blocs de contrôle de fichier

Il n'est pas prévu que des programmes transitoires MSX-DOS 2 spécialement écrits ou des programmes MSX-DOS 1 ou CP/M modifiés pour MSX-DOS 2 utilisent les fonctions FCB compatibles CP/M, mais le format des FCB utilisés pour ces fonctions est donnée ici à titre indicatif. Ce format est, bien sûr, très similaire aux FCB utilisés par CP/M et MSX DOS 1 mais l'utilisation de certains des champs dans le FCB est différente (bien que généralement compatible).

Un FCB de base a une longueur de 33 octets. Ce type de FCB peut être utilisé pour les opérations de gestion de fichiers (suppression, renommage,...) et également pour la lecture et l'écriture séquentielles. Les fonctions de lecture et d'écriture aléatoires utilisent 3 octets supplémentaires à la fin du FCB pour entreposer un numéro d'enregistrement aléatoire. Les fonctions de lecture et d'écriture de blocs compatibles MSX-DOS 1 utilisent également ces trois (ou dans certains cas quatre) octets supplémentaires.

La disposition d'un FCB est donnée ci-dessous. Une description générale de chacun des champs est incluse ici. La description de la fonction individuelle donnée dans la spécification de la fonction détaille la manière dont les champs sont utilisés pour chaque fonction lorsque cela n'est pas évident.

Déplacement Description
00h Unité de disque numéro 1 à 8. 0 => unité de disque par défaut. Doit être configuré dans tous les FCB utilisés, jamais modifié par des appels de fonction MSX-DOS (sauf "Open File" si APPEND a été utilisé).
01h à 08h Nom de fichier, justifié à gauche avec des blancs à la fin. Peut contenir "?" caractères si un nom de fichier ambigu est autorisé. Lors des comparaisons, la casse sera ignorée. Lors de la création de nouveaux fichiers, le nom sera en majuscule.
09h à 0Bh Extension de nom de fichier. Identique au nom de fichier. Notez que le bit 7 des caractères d'extension de nom de fichier n'est pas interprété comme des drapeaux comme ils le sont dans CP/M.
0Ch Numéro d'extension (octet de poids faible). Doit être défini (généralement à zéro) par le programme transitoire avant l'ouverture ou la création. Il est utilisé et mis à jour par lecture et écriture séquentielles, et également défini par lecture et écriture aléatoires. Ceci est compatible avec CP/M et MSX-DOS 1.
0Dh Attributs de fichier. Défini par "ouvrir", "créer" ou "rechercher".
0Eh Numéro d'extension (octet de poids fort) pour les fonctions CP/M. Mise à zéro par ouvrir et créer. Pour la lecture et l'écriture séquentielles, il est utilisé et mis à jour en tant qu'extension du numéro d'étendue pour permettre l'accès à des fichiers plus volumineux. Bien que cela soit différent de CP/M, il n'interfère pas avec l'utilisation des FCB par CP/M et est identique à MSX-DOS 1. Taille d'enregistrement (octet de poids faible) pour les fonctions de bloc compatibles MSX-DOS 1. Doit être défini sur la taille d'enregistrement requise avant d'utiliser les fonctions de lecture ou d'écriture de bloc.
0Fh Nombre d'enregistrements pour les fonctions CP/M. Mis en place par ouvrir et créer et modifié si nécessaire par des lectures et écritures séquentielles et aléatoires. C'est la même chose que CP/M et MSX-DOS 1. Taille d'enregistrement (taille élevée) pour les fonctions de bloc compatibles MSX-DOS 1. Doit être défini sur la taille d'enregistrement requise avant d'utiliser les fonctions de lecture et d'écriture de bloc.
10h à 13h Taille du fichier en octets, octet le plus bas en premier. La taille du fichier est exacte, non arrondie à 128 octets. Ce champ est défini par ouvrir et créer et mis à jour lorsque le fichier est étendu par des opérations d'écriture. Ne doit pas être modifié par le programme transitoire car il est réécrit sur le disque par un appel de fonction de fermeture. C'est le même que MSX-DOS 1 mais différent de CP/M entreposant ici les informations d'allocation.
14h à 17h Identificateur de volume. Il s'agit d'un numéro à quatre octets identifiant le disque particulier auquel ce FCB accède. Il est configuré par ouvrir et créer et est vérifié lors des appels en lecture, écriture et fermeture. Ne doit pas être modifié par le programme. Notez que ceci est différent de MSX-DOS 1 entreposant la date et l'heure de la dernière mise à jour ici, et de CP/M entreposant les informations d'allocation.
18h à 1Fh Informations internes. Ces octets contiennent des informations permettant de localiser le fichier sur le disque. Ne doit pas être modifié du tout par le programme transitoire. Les informations internes conservées ici sont similaires mais pas identiques à celles conservées par MSX-DOS 1 et totalement différentes de CP/M.
20h Enregistrement actuel dans l'étendue (0 à 127). Doit être défini (normalement à zéro) par le programme transitoire avant la première lecture ou écriture séquentielle. Utilisé et modifié par lecture et écriture séquentielle. Également mis en place par lecture et écriture aléatoires. Ceci est compatible avec CP/M et MSX-DOS 1.
21h à 24h Numéro d'enregistrement aléatoire, octet de poids faible en premier. Ce champ est facultatif, il n'est requis que si des lectures ou des écritures aléatoires ou par bloc sont utilisées. Il doit être configuré avant d'effectuer ces opérations et est mis à jour par lecture et écriture de bloc mais pas par lecture ou écriture aléatoire. Également configuré par la fonction "Fixe un enregistrement aléatoire". Pour les opérations de bloc, étant dans MSX-DOS 1 mais pas dans CP/M, les quatre octets sont utilisés si la taille de l'enregistrement est inférieure à 64 octets, et seuls les trois premiers octets sont utilisés si la taille de l'enregistrement est de 64 octets ou plus. Pour la lecture et l'écriture aléatoires, seuls les trois premiers octets sont utilisés (la taille d'enregistrement implicite est de 128 octets). Ceci est compatible avec CP/M et avec MSX-DOS 1.


Dernière mise à jour : Lundi, le 16 janvier 2023