GEMDOS.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
 
<pre>
 
<pre>
***-------------- LES FONCTIONS GEMDOS PAR NUM�RO ---------------***
+
***-------------- LES FONCTIONS GEMDOS PAR NUMÉRO ---------------***
   
 
$00 Pterm0 Fin de processus
 
$00 Pterm0 Fin de processus
$01 Cconin Lit un caract�re sur l'entr�e standard
+
$01 Cconin Lit un caractère sur l'entrée standard
$02 Cconout �crit un caract�re sur la sortie standard
+
$02 Cconout Écrit un caractère sur la sortie standard
$03 Cauxin Lit un caract�re sur l'entr�e standard AUX:
+
$03 Cauxin Lit un caractère sur l'entrée standard AUX:
$04 Cauxout �crit un caract�re sur la sortie standard AUX:
+
$04 Cauxout Écrit un caractère sur la sortie standard AUX:
$05 Cprnout �crit un caract�re sur la sortie standard PRN:
+
$05 Cprnout Écrit un caractère sur la sortie standard PRN:
$06 Crawio Lecture/�criture brute sur l'entr�e/sortie standard
+
$06 Crawio Lecture/écriture brute sur l'entrée/sortie standard
$07 Crawcin Lecture brute sur l'entr�e standard
+
$07 Crawcin Lecture brute sur l'entrée standard
$08 Cnecin Lit un caract�re sur l'entr�e standard, sans �cho
+
$08 Cnecin Lit un caractère sur l'entrée standard, sans écho
$09 Cconws �crit une cha�ne sur la sortie standard
+
$09 Cconws Écrit une chaîne sur la sortie standard
$0A Cconrs Lit une cha�ne format�e sur l'entr�e standard
+
$0A Cconrs Lit une chaîne formatée sur l'entrée standard
$0B Cconis Teste l'�tat de l'entr�e standard
+
$0B Cconis Teste l'état de l'entrée standard
$0E Dsetdrv Fixe le lecteur de disque par d�faut
+
$0E Dsetdrv Fixe le lecteur de disque par défaut
$10 Cconos Teste l'�tat de la sortie standard
+
$10 Cconos Teste l'état de la sortie standard
$11 Cprnos Teste l'�tat du p�riph�rique standard PRN:
+
$11 Cprnos Teste l'état du périphérique standard PRN:
$12 Cauxis Teste l'�tat du standard AUX: en entr�e
+
$12 Cauxis Teste l'état du standard AUX: en entrée
$13 Cauxos Teste l'�tat du standard AUX: en sortie
+
$13 Cauxos Teste l'état du standard AUX: en sortie
$19 Dgetdrv Demande le disque par d�faut
+
$19 Dgetdrv Demande le disque par défaut
 
$1A Fsetdta Fixe l'adresse du DTA (Disk Transfer Adress)
 
$1A Fsetdta Fixe l'adresse du DTA (Disk Transfer Adress)
 
$20 Super Entre/Sort/Demande du mode superviseur
 
$20 Super Entre/Sort/Demande du mode superviseur
Line 27: Line 27:
 
$2D Tsettime Fixe l'heure
 
$2D Tsettime Fixe l'heure
 
$2F Fgetdta Demande l'adresse du DTA (Disk Transfer Adress)
 
$2F Fgetdta Demande l'adresse du DTA (Disk Transfer Adress)
$30 Sversion Demande le num�ro de version du GEMDOS
+
$30 Sversion Demande le numéro de version du GEMDOS
$31 Ptermres Finit un programme qui reste r�sident
+
$31 Ptermres Finit un programme qui reste résident
 
$36 Dfree Demande d'informations sur un disque
 
$36 Dfree Demande d'informations sur un disque
$39 Dcreate Cr�ation d'un sous-r�pertoire
+
$39 Dcreate Création d'un sous-répertoire
$3A Ddelete Efface un sous-r�pertoire
+
$3A Ddelete Efface un sous-répertoire
 
$3B Dsetpath Fixe le catalogue courant
 
$3B Dsetpath Fixe le catalogue courant
$3C Fcreate Cr�ation d'un fichier
+
$3C Fcreate Création d'un fichier
 
$3D Fopen Ouvre un fichier
 
$3D Fopen Ouvre un fichier
 
$3E Fclose Ferme un fichier
 
$3E Fclose Ferme un fichier
 
$3F Fread Lit un fichier
 
$3F Fread Lit un fichier
$40 Fwrite �crit un fichier
+
$40 Fwrite Écrit un fichier
 
$41 Fdelete Efface un fichier
 
$41 Fdelete Efface un fichier
 
$42 Fseek Positionnement dans un fichier
 
$42 Fseek Positionnement dans un fichier
Line 43: Line 43:
 
$45 Fdup Recopie un identificateur de fichier standard
 
$45 Fdup Recopie un identificateur de fichier standard
 
$46 Fforce Force un identificateur de fichier
 
$46 Fforce Force un identificateur de fichier
$47 Dgetpath Demande le r�pertoire courant
+
$47 Dgetpath Demande le répertoire courant
$48 Malloc Demande d'allocation m�moire
+
$48 Malloc Demande d'allocation mémoire
$49 Mfree Lib�re de la m�moire
+
$49 Mfree Libère de la mémoire
$4A Mshrink R�tr�cit un bloc de m�moire allou�e
+
$4A Mshrink Rétrécit un bloc de mémoire allouée
$4B Pexec Charge/Ex�cute un programme
+
$4B Pexec Charge/Exécute un programme
 
$4C Pterm Termine un programme
 
$4C Pterm Termine un programme
$4E Fsfirst Recherche la premi�re occurrence d'un fichier
+
$4E Fsfirst Recherche la première occurrence d'un fichier
 
$4F Fnext Recherche l'occurrence suivante
 
$4F Fnext Recherche l'occurrence suivante
 
$56 Frename Renomme un fichier
 
$56 Frename Renomme un fichier
$57 Fdatime Demande ou fixe la date de cr�ation d'un fichier
+
$57 Fdatime Demande ou fixe la date de création d'un fichier
   
   
 
***-------------- FONCTIONS GEMDOS PAR NOM ----------------------***
 
***-------------- FONCTIONS GEMDOS PAR NOM ----------------------***
   
$03 Cauxin Lit un caract�re sur l'entr�e standard AUX:
+
$03 Cauxin Lit un caractère sur l'entrée standard AUX:
$12 Cauxis Teste l'�tat du standard AUX: en entr�e
+
$12 Cauxis Teste l'état du standard AUX: en entrée
$13 Cauxos Teste l'�tat du standard AUX: en sortie
+
$13 Cauxos Teste l'état du standard AUX: en sortie
$04 Cauxout �crit un caract�re sur la sortie standard AUX:
+
$04 Cauxout Écrit un caractère sur la sortie standard AUX:
$01 Cconin Lit un caract�re sur l'entr�e standard
+
$01 Cconin Lit un caractère sur l'entrée standard
$0B Cconis Teste l'�tat de l'entr�e standard
+
$0B Cconis Teste l'état de l'entrée standard
$10 Cconos Teste l'�tat de la sortie standard
+
$10 Cconos Teste l'état de la sortie standard
$02 Cconout �crit un caract�re sur la sortie standard
+
$02 Cconout Écrit un caractère sur la sortie standard
$0A Cconrs Lit une cha�ne format�e sur l'entr�e standard
+
$0A Cconrs Lit une chaîne formatée sur l'entrée standard
$09 Cconws �crit une cha�ne sur la sortie standard
+
$09 Cconws Écrit une chaîne sur la sortie standard
$08 Cnecin Lit un caract�re sur l'entr�e standard, sans �cho
+
$08 Cnecin Lit un caractère sur l'entrée standard, sans écho
$11 Cprnos Teste l'�tat du p�riph�rique standard PRN:
+
$11 Cprnos Teste l'état du périphérique standard PRN:
$05 Cprnout �crit un caract�re sur la sortie standard PRN:
+
$05 Cprnout Écrit un caractère sur la sortie standard PRN:
$07 Crawcin Lecture brute sur l'entr�e standard
+
$07 Crawcin Lecture brute sur l'entrée standard
$06 Crawio Lecture/�criture brute sur l'entr�e/sortie standard
+
$06 Crawio Lecture/écriture brute sur l'entrée/sortie standard
$39 Dcreate Cr�ation d'un sous-r�pertoire
+
$39 Dcreate Création d'un sous-répertoire
$3A Ddelete Efface un sous-r�pertoire
+
$3A Ddelete Efface un sous-répertoire
 
$36 Dfree Demande d'informations sur un disque
 
$36 Dfree Demande d'informations sur un disque
$19 Dgetdrv Demande le disque par d�faut
+
$19 Dgetdrv Demande le disque par défaut
$47 Dgetpath Demande le r�pertoire courant
+
$47 Dgetpath Demande le répertoire courant
$0E Dsetdrv Fixe le lecteur de disque par d�faut
+
$0E Dsetdrv Fixe le lecteur de disque par défaut
 
$3B Dsetpath Fixe le catalogue courant
 
$3B Dsetpath Fixe le catalogue courant
 
$43 Fattrib Retourne/fixe les attributs de fichier
 
$43 Fattrib Retourne/fixe les attributs de fichier
 
$3E Fclose Ferme un fichier
 
$3E Fclose Ferme un fichier
$3C Fcreate Cr�ation d'un fichier
+
$3C Fcreate Création d'un fichier
$57 Fdatime Demande ou fixe la date de cr�ation d'un fichier
+
$57 Fdatime Demande ou fixe la date de création d'un fichier
 
$41 Fdelete Efface un fichier
 
$41 Fdelete Efface un fichier
 
$45 Fdup Recopie un identificateur de fichier standard
 
$45 Fdup Recopie un identificateur de fichier standard
Line 92: Line 92:
 
$42 Fseek Positionnement dans un fichier
 
$42 Fseek Positionnement dans un fichier
 
$1A Fsetdta Fixe l'adresse du DTA (Disk Transfer Adress)
 
$1A Fsetdta Fixe l'adresse du DTA (Disk Transfer Adress)
$4E Fsfirst Recherche la premi�re occurrence d'un fichier
+
$4E Fsfirst Recherche la première occurrence d'un fichier
 
$4F Fnext Recherche l'occurrence suivante
 
$4F Fnext Recherche l'occurrence suivante
$40 Fwrite �crit dans un fichier
+
$40 Fwrite Écrit dans un fichier
$48 Malloc Demande d'allocation m�moire
+
$48 Malloc Demande d'allocation mémoire
$49 Mfree Lib�re de la m�moire
+
$49 Mfree Libère de la mémoire
$4A Mshrink R�tr�cit un bloc de m�moire allou�e
+
$4A Mshrink Rétrécit un bloc de mémoire allouée
$4B Pexec Charge/Ex�cute un programme
+
$4B Pexec Charge/Exécute un programme
 
$4C Pterm Termine un programme
 
$4C Pterm Termine un programme
 
$00 Pterm0 Termine un programme (code de retour 0)
 
$00 Pterm0 Termine un programme (code de retour 0)
$31 Ptermres Termine un programme qui reste r�sident
+
$31 Ptermres Termine un programme qui reste résident
 
$20 Super Entre/Sort/Demande du mode superviseur
 
$20 Super Entre/Sort/Demande du mode superviseur
$30 Sversion Demande le num�ro de version du GEMDOS
+
$30 Sversion Demande le numéro de version du GEMDOS
 
$2A Tgetdate Demande la date
 
$2A Tgetdate Demande la date
 
$2C Tgettime Demande l'heure
 
$2C Tgettime Demande l'heure
Line 115: Line 115:
   
 
Termine un processus, fermant tous les fichiers qu'il a ouvert et
 
Termine un processus, fermant tous les fichiers qu'il a ouvert et
lib�rant la m�moire qu'il a allou�e. Retourne $0000 comme code de
+
libérant la mémoire qu'il a allouée. Retourne $0000 comme code de
 
sortie au programme parent.
 
sortie au programme parent.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$01 Cconin Lit un caract�re sur l'entr�e standard
+
$01 Cconin Lit un caractère sur l'entrée standard
   
 
LONG Cconin()
 
LONG Cconin()
 
 
Lit un caract�re sur l'entr�e standard (identificateur 0). Si
+
Lit un caractère sur l'entrée standard (identificateur 0). Si
l'entr�e standard est la console, le long_mot retourn� dans D0
+
l'entrée standard est la console, le long_mot retourné dans D0
contient le code ASCII et le code clavier de la touche appuy�e
+
contient le code ASCII et le code clavier de la touche appuyée
 
(code de scrutation) :
 
(code de scrutation) :
   
Line 131: Line 131:
 
|-------------|-----------|----------|-----------|
 
|-------------|-----------|----------|-----------|
 
| | code de | | |
 
| | code de | | |
| $00 ou bits | scrutation| $00 | caract�re |
+
| $00 ou bits | scrutation| $00 | caractère |
 
| de shift | ou $00 | | ASCII |
 
| de shift | ou $00 | | ASCII |
 
|_____________|___________|__________|___________|
 
|_____________|___________|__________|___________|
   
Les touches de fonction (F1 F10, HELP, UNDO, etc...) retournent
+
Les touches de fonction (F1 à F10, HELP, UNDO, etc...) retournent
le code ASCII $00, avec le code clavier appropri� (cf. le manuel
+
le code ASCII $00, avec le code clavier approprié (cf. le manuel
 
sur le clavier intelligent pour la valeur des codes clavier). Le
 
sur le clavier intelligent pour la valeur des codes clavier). Le
ST BIOS place l'�tat des touches sp�ciales dans les bits 24 31
+
ST BIOS place l'état des touches spéciales dans les bits 24 à 31
(voir le Guide du programmeur du BIOS pour plus de d�tails).
+
(voir le Guide du programmeur du BIOS pour plus de détails).
   
   
 
ERREURS
 
ERREURS
 
Ne retourne aucune indication de fin de fichier.
 
Ne retourne aucune indication de fin de fichier.
Ne reconna�t pas 'Control_C'
+
Ne reconnaît pas 'Control_C'
Impossible de savoir si l'entr�e est un p�riph�rique carac-
+
Impossible de savoir si l'entrée est un périphérique à carac-
t�res ou un fichier.
+
tères ou un fichier.
Il devrait exister un moyen de taper les 256 codes possibles
+
Il devrait exister un moyen de taper les 256 codes possibles à
 
partir du clavier.
 
partir du clavier.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$02 Cconout Ecrit un caract�re sur la sortie standard
+
$02 Cconout Ecrit un caractère sur la sortie standard
 
void Cconout(c)
 
void Cconout(c)
 
WORD c
 
WORD c
�crit le caract�re 'c' sur la sortie standard (identificateur 0).
+
Écrit le caractère 'c' sur la sortie standard (identificateur 0).
Les huit bits les plus significatifs de 'c' sont r�serv�s et
+
Les huit bits les plus significatifs de 'c' sont réservés et
doivent �tre z�ro. Les tabulations ne sont pas interpr�t�es.
+
doivent être à zéro. Les tabulations ne sont pas interprétées.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$03 Cauxin Lit un caract�re sur l'entr�e standard AUX:
+
$03 Cauxin Lit un caractère sur l'entrée standard AUX:
   
 
WORD Cauxin()
 
WORD Cauxin()
   
Lit un caract�re partir de l'identificateur 1 (le port s�rie AUX:,
+
Lit un caractère à partir de l'identificateur 1 (le port série AUX:,
 
normalement).
 
normalement).
   
 
REMARQUE
 
REMARQUE
Le contr�le de flux de la sortie RS232 ne marche pas avec
+
Le contrôle de flux de la sortie RS232 ne marche pas avec
 
cette fonction. Les programmes devraient utiliser l'appel de
 
cette fonction. Les programmes devraient utiliser l'appel de
p�riph�rique de caract�re BIOS afin d'�viter de perdre des
+
périphérique de caractère BIOS afin d'éviter de perdre des
caract�res re�us.
+
caractères reçus.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$04 Cauxout �crit un caract�re sur la sortie standard AUX:
+
$04 Cauxout Écrit un caractère sur la sortie standard AUX:
 
void Cauxout(c)
 
void Cauxout(c)
 
WORD c
 
WORD c
   
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$05 Cprnout �crit un caract�re sur la sortie standard PRN:
+
$05 Cprnout Écrit un caractère sur la sortie standard PRN:
 
void Cprnout(c)
 
void Cprnout(c)
 
WORD c
 
WORD c
   
�crit 'c' sur l'identificateur 2 (le port imprimante PRN:, norma-
+
Écrit 'c' sur l'identificateur 2 (le port imprimante PRN:, norma-
lement). Les huits bits hauts de 'c' sont r�serv�s et doivent �tre
+
lement). Les huits bits hauts de 'c' sont réservés et doivent être à
z�ro. Les tabulations ne sont pas interpr�t�es.
+
zéro. Les tabulations ne sont pas interprétées.
   
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$06 Crawio Lecture/�criture brute sur l'entr�e/sortie standard
+
$06 Crawio Lecture/Écriture brute sur l'entrée/sortie standard
 
LONG Crawio(w)
 
LONG Crawio(w)
 
WORD w;
 
WORD w;
   
 
REMARQUES
 
REMARQUES
Par le fait m�me de sa conception cette fonction ne peut
+
Par le fait même de sa conception cette fonction ne peut
�crire '$ff' sur la sortie standard.
+
écrire '$ff' sur la sortie standard.
$00 ne peut �tre diff�renci� d'une fin de fichier.
+
$00 ne peut être différencié d'une fin de fichier.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$07 Crawcin Entr�e brute sur l'entr�e standard
+
$07 Crawcin Entrée brute sur l'entrée standard
 
LONG Crawcin()
 
LONG Crawcin()
   
 
REMARQUE Pas d'indication de fin de fichier.
 
REMARQUE Pas d'indication de fin de fichier.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$08 Cnecin Lit un caract�re sur l'entr�e standard, sans �cho
+
$08 Cnecin Lit un caractère sur l'entrée standard, sans écho
 
LONG Cnecin()
 
LONG Cnecin()
   
Lit un caract�re sur l'entr�e standard. Si le p�riph�rique
+
Lit un caractère sur l'entrée standard. Si le périphérique
d'entr�e est 'CON:', aucun �cho n'est fait. Les caract�res de
+
d'entrée est 'CON:', aucun écho n'est fait. Les caractères de
contr�le sont interpr�t�s.
+
contrôle sont interprétés.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$09 Cconws Ecrit une cha�ne sur la sortie standard
+
$09 Cconws Ecrit une chaîne sur la sortie standard
void Cconws(cha�ne)
+
void Cconws(chaîne)
char *cha�ne;
+
char *chaîne;
�crit une cha�ne d�butant 'cha�ne' et finissant par 0, sur la
+
Écrit une chaîne débutant à 'chaîne' et finissant par 0, sur la
 
sortie standard.
 
sortie standard.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$0A Cconrs Lit une cha�ne sur l'entr�e standard
+
$0A Cconrs Lit une chaîne sur l'entrée standard
 
void Cconrs(buf)
 
void Cconrs(buf)
 
char *buf;
 
char *buf;
Lit une cha�ne sur l'entr�e standard. Les caract�res de contr�le
+
Lit une chaîne sur l'entrée standard. Les caractères de contrôle
habituels sont interpr�t�s :
+
habituels sont interprétés :
   
 
____________________________________________
 
____________________________________________
| Caract�re | Fonction |
+
| Caractère | Fonction |
 
|--------------|-----------------------------|
 
|--------------|-----------------------------|
 
| <return>, ^J | Fin de ligne |
 
| <return>, ^J | Fin de ligne |
| ^H, <rub> | Efface le dernier caract�re |
+
| ^H, <rub> | Efface le dernier caractère |
| ^U, ^X | Efface la ligne enti�re |
+
| ^U, ^X | Efface la ligne entière |
 
| ^R | Recopie la ligne |
 
| ^R | Recopie la ligne |
 
| ^C | Fini le programme |
 
| ^C | Fini le programme |
 
|______________|_____________________________|
 
|______________|_____________________________|
   
Le premier caract�re de 'buf' contient le nombre maximum d'octets
+
Le premier caractère de 'buf' contient le nombre maximum d'octets à
lire (taille du tampon moins deux). En sortie, le deuxi�me octet
+
lire (taille du tampon moins deux). En sortie, le deuxième octet
contient le nombre de caract�res lus. La cha�ne se trouve entre
+
contient le nombre de caractères lus. La chaîne se trouve entre
 
'buf+2' et 'buf+2+buf[1]'.
 
'buf+2' et 'buf+2+buf[1]'.
Il n'est pas garanti que la cha�ne se finisse par 0.
+
Il n'est pas garanti que la chaîne se finisse par 0.
   
 
REMARQUE Plante sur les fins de fichiers.
 
REMARQUE Plante sur les fins de fichiers.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$0B Cconis Teste l'�tat de l'entr�e standard
+
$0B Cconis Teste l'état de l'entrée standard
 
WORD Cconis()
 
WORD Cconis()
Retourne $FFFF si un caract�re est disponible sur l'entr�e
+
Retourne $FFFF si un caractère est disponible sur l'entrée
 
standard, $0000 sinon.
 
standard, $0000 sinon.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$0E Dsetdrv Fixe le lecteur de disque par d�faut
+
$0E Dsetdrv Fixe le lecteur de disque par défaut
 
LONG Dsetdrv(drv)
 
LONG Dsetdrv(drv)
 
WORD drv;
 
WORD drv;
Fixe le disque 'drv' par d�faut. Les disques sont rang�s de 0 15
+
Fixe le disque 'drv' par défaut. Les disques sont rangés de 0 à 15
(A: P:). Retourne dans D0.L la carte des disques actifs:
+
(A: à P:). Retourne dans D0.L la carte des disques actifs:
 
(bit 0 = A, bit 1 = B, etc..).
 
(bit 0 = A, bit 1 = B, etc..).
   
Un 'disque actif' est un disque partir duquel un catalogue a �t�
+
Un 'disque actif' est un disque à partir duquel un catalogue a été
 
fait.
 
fait.
   
REMARQUE Le GEMDOS ne supporte que 16 disques (bits 0 15). Les
+
REMARQUE Le GEMDOS ne supporte que 16 disques (bits 0 à 15). Les
syst�mes ult�rieurs en supporteront 32 .
+
systèmes ultérieurs en supporteront 32 .
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$10 Cconos Teste l'�tat de la sortie standard
+
$10 Cconos Teste l'état de la sortie standard
 
WORD Cconos()
 
WORD Cconos()
   
Renvoie $FFFF si la console est pr�te recevoir un caract�re,
+
Renvoie $FFFF si la console est prête à recevoir un caractère,
$0000 si la console n'est PAS pr�te.
+
$0000 si la console n'est PAS prête.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$11 Cprnos Teste l'�tat de la sortie standard PRN:
+
$11 Cprnos Teste l'état de la sortie standard PRN:
 
WORD Cprnos()
 
WORD Cprnos()
Retourne $FFFF si 'PRN:' est pr�t recevoir un caract�re, $0000
+
Retourne $FFFF si 'PRN:' est prêt à recevoir un caractère, $0000
 
sinon.
 
sinon.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$12 Cauxis Teste l'�tat de l'entr�e standard AUX:
+
$12 Cauxis Teste l'état de l'entrée standard AUX:
 
WORD Cauxis()
 
WORD Cauxis()
Retourne $FFFF si un caract�re est disponible sur l'entr�e 'AUX:'
+
Retourne $FFFF si un caractère est disponible sur l'entrée 'AUX:'
 
(identificateur 1), $0000 sinon.
 
(identificateur 1), $0000 sinon.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$13 Cauxos Teste l'�tat de la sortie standard AUX:
+
$13 Cauxos Teste l'état de la sortie standard AUX:
 
WORD Cauxos()
 
WORD Cauxos()
Renvoie $FFFF si 'AUX:' (identificateur 1) est pr�t recevoir un
+
Renvoie $FFFF si 'AUX:' (identificateur 1) est prêt à recevoir un
caract�re, $0000 sinon.
+
caractère, $0000 sinon.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$19 Dgetdrv Recherche le lecteur de disque par d�faut
+
$19 Dgetdrv Recherche le lecteur de disque par défaut
 
WORD Dgetdrv()
 
WORD Dgetdrv()
Retourne le num�ro du lecteur courant, compris entre 0 et 15.
+
Retourne le numéro du lecteur courant, compris entre 0 et 15.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$1A Fsetdta Fixe l'adresse du DTA (Disk Transfer Adress)
 
$1A Fsetdta Fixe l'adresse du DTA (Disk Transfer Adress)
 
void Fsetdta(adr)
 
void Fsetdta(adr)
 
char adr;
 
char adr;
Fixe l'adresse du DTA 'adr'. Le tampon de stockage des donn�es
+
Fixe l'adresse du DTA à 'adr'. Le tampon de stockage des données
 
sur un fichier (DTA) ne sert que pour les fonctions Fsfirst() et
 
sur un fichier (DTA) ne sert que pour les fonctions Fsfirst() et
 
Fsnext().
 
Fsnext().
Line 288: Line 288:
 
LONG Super(pile)
 
LONG Super(pile)
 
WORD *pile;
 
WORD *pile;
'pile' est �gal -1L ($FFFFFFFF):
+
'pile' est égal à -1L ($FFFFFFFF):
 
la fonction retourne $0000 si le processeur est en mode
 
la fonction retourne $0000 si le processeur est en mode
 
Utilisateur, $0001 s'il est en mode Superviseur.
 
Utilisateur, $0001 s'il est en mode Superviseur.
   
'pile' est diff�rent de -1L:
+
'pile' est différent de -1L:
 
si le processeur est en mode Utilisateur, la fonction revient
 
si le processeur est en mode Utilisateur, la fonction revient
 
avec le processeur en mode Superviseur. Si 'pile' est NUL
 
avec le processeur en mode Superviseur. Si 'pile' est NUL
($00000000), la pile superviseur sera la m�me que la pile
+
($00000000), la pile superviseur sera la même que la pile
 
Utilisateur avant l'appel. Sinon la pile Superviseur sera
 
Utilisateur avant l'appel. Sinon la pile Superviseur sera
plac�e 'pile'.
+
placée à 'pile'.
   
Si le processeur �tait en mode Superviseur, il se retrouve en
+
Si le processeur était en mode Superviseur, il se retrouve en
mode Utilisateur au retour de la fonction. 'pile' devra �tre
+
mode Utilisateur au retour de la fonction. 'pile' devra être
la valeur de la pile utilisateur qui a �t� retourn�e par le
+
la valeur de la pile utilisateur qui a été retournée par le
 
premier appel de la fonction.
 
premier appel de la fonction.
   
 
ATTENTION
 
ATTENTION
La pile Superviseur originale doit �tre replac�e avant la fin
+
La pile Superviseur originale doit être replacée avant la fin
du programme sinon le syst�me plantera la sortie du
+
du programme sinon le système plantera à la sortie du
 
programme.
 
programme.
   
Line 316: Line 316:
   
 
15 __________________9_8_________5_4_________0
 
15 __________________9_8_________5_4_________0
| Ann�e depuis 1980 | mois | jour |
+
| Année depuis 1980 | mois | jour |
 
| 0.....119 | 1...12 | 1...31 |
 
| 0.....119 | 1...12 | 1...31 |
 
|_____________________|___________|___________|
 
|_____________________|___________|___________|
   
 
RETOUR
 
RETOUR
les bits 0 4 contiennent le jour allant de 1 31.
+
les bits 0 à 4 contiennent le jour allant de 1 à 31.
les bits 5 8 contiennent le mois allant de 1 12.
+
les bits 5 à 8 contiennent le mois allant de 1 à 12.
les bits 9 15 contiennent l'ann�e ( partir de 1980)
+
les bits 9 à 15 contiennent l'année (à partir de 1980)
allant de 0 119.
+
allant de 0 à 119.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$2B Tsetdate Fixe la date
 
$2B Tsetdate Fixe la date
 
WORD Tsetdate(date)
 
WORD Tsetdate(date)
 
WORD date;
 
WORD date;
Fixe 'date' comme date courante dans le format d�crit dans
+
Fixe 'date' comme date courante dans le format décrit dans
 
Tgetdate().
 
Tgetdate().
   
Line 337: Line 337:
 
REMARQUES
 
REMARQUES
 
Le GEMDOS n'est pas difficile sur la date; par exemple le 31
 
Le GEMDOS n'est pas difficile sur la date; par exemple le 31
F�vrier ne lui d�pla�t pas.
+
Février ne lui déplaît pas.
Le GEMDOS ne pr�vient PAS le BIOS que la date a chang�e.
+
Le GEMDOS ne prévient PAS le BIOS que la date a changée.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$2C Tgettime Demande l'heure
 
$2C Tgettime Demande l'heure
Line 351: Line 351:
   
 
RETOUR Les bits :
 
RETOUR Les bits :
0 4 contiennent les secondes divis�es par 2 (0 28)
+
0 à 4 contiennent les secondes divisées par 2 (0 à 28)
5 10 contiennent les minutes (0 59)
+
5 à 10 contiennent les minutes (0 à 59)
11 15 contiennent les heures (0 23)
+
11 à 15 contiennent les heures (0 à 23)
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$2D Tsettime Fixe l'heure
 
$2D Tsettime Fixe l'heure
 
WORD Tsettime(heure)
 
WORD Tsettime(heure)
 
WORD heure;
 
WORD heure;
Fixe 'heure' comme heure courante dans le format d�crit dans
+
Fixe 'heure' comme heure courante dans le format décrit dans
 
Tgettime().
 
Tgettime().
   
Line 364: Line 364:
 
ERROR si le format de l'heure n'est pas valide.
 
ERROR si le format de l'heure n'est pas valide.
 
REMARQUE
 
REMARQUE
Le GEMDOS ne pr�vient pas le BIOS que l'heure a chang�.
+
Le GEMDOS ne prévient pas le BIOS que l'heure a changé.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$2F Fgetdta Demande l'adresse du DTA (Disk Transfer Address)
 
$2F Fgetdta Demande l'adresse du DTA (Disk Transfer Address)
 
LONG Fgetdta()
 
LONG Fgetdta()
Retourne l'adresse courante du tampon de stockage des donn�es sur un
+
Retourne l'adresse courante du tampon de stockage des données sur un
fichier (DTA), employ�e par les fonctions Fsfirst() et Fsnext().
+
fichier (DTA), employée par les fonctions Fsfirst() et Fsnext().
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$30 Sversion Demande le num�ro de version du GEMDOS
+
$30 Sversion Demande le numéro de version du GEMDOS
 
WORD Sversion()
 
WORD Sversion()
   
Retourne le num�ro de version du GEMDOS en format invers�. L'octet
+
Retourne le numéro de version du GEMDOS en format inversé. L'octet
le plus significatif contient la partie basse du num�ro, l'octet le
+
le plus significatif contient la partie basse du numéro, l'octet le
 
moins significatif, la partie haute.
 
moins significatif, la partie haute.
   
 
REMARQUES
 
REMARQUES
La version du GEMDOS sur disquette du 29/5/85 et la premi�re
+
La version du GEMDOS sur disquette du 29/5/85 et la première
version en ROM du 20/11/85 ont $1300 comme num�ro.
+
version en ROM du 20/11/85 ont $1300 comme numéro.
 
 
Les num�ros de version du GEMDOS et du TOS ne sont PAS les
+
Les numéros de version du GEMDOS et du TOS ne sont PAS les
m�mes. (cf. LE MANUEL DE REFERENCE DU BIOS DU ST pour le num�ro
+
mêmes. (cf. LE MANUEL DE REFERENCE DU BIOS DU ST pour le numéro
 
de version du TOS).
 
de version du TOS).
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$31 Ptermres Finit un programme qui reste r�sident
+
$31 Ptermres Finit un programme qui reste résident
 
void Permres( nbrest,coderet)
 
void Permres( nbrest,coderet)
 
LONG nbrest;
 
LONG nbrest;
 
WORD coderet;
 
WORD coderet;
   
Finit le programme courant, en conservant une part de sa m�moire.
+
Finit le programme courant, en conservant une part de sa mémoire.
 
'nbrest' le est nombre d'octets appartenant au programme qui
 
'nbrest' le est nombre d'octets appartenant au programme qui
doivent �tre gard�s, comprenant et commen�ant la page de base.
+
doivent être gardés, comprenant et commençant à la page de base.
'coderet' est le code de sortie qui est retourn� au programme
+
'coderet' est le code de sortie qui est retourné au programme
 
parent.
 
parent.
   
La m�moire que le programme a allou�e (en plus de sa zone TPA)
+
La mémoire que le programme a allouée (en plus de sa zone TPA)
N'EST PAS lib�r�e.
+
N'EST PAS libérée.
Il est impossible de rappeler le programme termin� par Ptermres().
+
Il est impossible de rappeler le programme terminé par Ptermres().
   
 
REMARQUE
 
REMARQUE
Les fichiers ouverts sont ferm�s lors de la fin de processus.
+
Les fichiers ouverts sont fermés lors de la fin de processus.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$36 Dfree Demande l'espace libre sur un disque
 
$36 Dfree Demande l'espace libre sur un disque
Line 410: Line 410:
   
 
Demande des informations sur le disque 'nbdisq' et les place dans
 
Demande des informations sur le disque 'nbdisq' et les place dans
quatre longs_mots commen�ant 'buf':
+
quatre longs_mots commençant à 'buf':
 
__________________________________________________
 
__________________________________________________
 
| buf + 0 | nombre de blocs libres sur le disque |
 
| buf + 0 | nombre de blocs libres sur le disque |
Line 421: Line 421:
 
|___________|______________________________________|
 
|___________|______________________________________|
   
REMARQUE Incroyablement lent sur un disque dur (5 10 secondes).
+
REMARQUE Incroyablement lent sur un disque dur (5 à 10 secondes).
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$39 Dcreate Cr�ation d'un sous_r�pertoire de disque C
+
$39 Dcreate Création d'un sous_répertoire de disque C
 
WORD Dcreate(chemin)
 
WORD Dcreate(chemin)
 
char *chemin;
 
char *chemin;
   
'Chemin' pointe sur une cha�ne termin�e par 0 sp�cifiant le chemin
+
'Chemin' pointe sur une chaîne terminée par 0 spécifiant le chemin
du nouveau r�pertoire.
+
du nouveau répertoire.
 
RETOUR
 
RETOUR
0 en cas de succ�s;
+
0 en cas de succès;
ERROR ou le num�ro d'erreur appropri� en cas d'�chec.
+
ERROR ou le numéro d'erreur approprié en cas d'échec.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$3A Ddelete Efface un sous_r�pertoire
+
$3A Ddelete Efface un sous_répertoire
 
WORD Ddelete(chemin)
 
WORD Ddelete(chemin)
 
char *chemin;
 
char *chemin;
Efface un r�pertoire qui doit �tre vide (il peut toutefois
+
Efface un répertoire qui doit être vide (il peut toutefois
comporter les fichiers sp�ciaux "." et ".."). 'chemin' pointe sur
+
comporter les fichiers spéciaux "." et ".."). 'chemin' pointe sur
une cha�ne termin�e par z�ro, sp�cifiant le chemin du r�pertoire
+
une chaîne terminée par zéro, spécifiant le chemin du répertoire à
 
effacer.
 
effacer.
   
RETOUR 0 en cas de succ�s;
+
RETOUR 0 en cas de succès;
ERROR ou le num�ro d'erreur appropri� en cas d'�chec.
+
ERROR ou le numéro d'erreur approprié en cas d'échec.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$3B Dsetpath Fixe le r�pertoire courant
+
$3B Dsetpath Fixe le répertoire courant
 
WORD Dsetpath(chemin)
 
WORD Dsetpath(chemin)
 
char *chemin;
 
char *chemin;
Fixe 'chemin', (une cha�ne termin�e par 0), comme r�pertoire
+
Fixe 'chemin', (une chaîne terminée par 0), comme répertoire
 
courant. Si le chemin commence par une lettre identificatrice de
 
courant. Si le chemin commence par une lettre identificatrice de
disque suivie de deux-points, le r�pertoire courant est plac� sur le
+
disque suivie de deux-points, le répertoire courant est placé sur le
lecteur sp�cifi�.
+
lecteur spécifié.
   
Le syst�me conserve un r�pertoire courant pour chaque lecteur.
+
Le système conserve un répertoire courant pour chaque lecteur.
   
RETOUR 0 en cas de succ�s;
+
RETOUR 0 en cas de succès;
ERROR ou le num�ro d'erreur appropri� en cas d'echec.
+
ERROR ou le numéro d'erreur approprié en cas d'echec.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$3C Fcreate Cr�ation d'un fichier
+
$3C Fcreate Création d'un fichier
 
WORD Fcreate(nomfich,attribs)
 
WORD Fcreate(nomfich,attribs)
 
char *nomfich;
 
char *nomfich;
 
WORD attribs;
 
WORD attribs;
Cr�e un fichier 'nomfich' et retourne son identificateur, non
+
Crée un fichier 'nomfich' et retourne son identificateur, non
standard, d'�criture seule. Le mot d'attributs est stock� dans le
+
standard, d'écriture seule. Le mot d'attributs est stocké dans le
r�pertoire; les bits d'attributs sont :
+
répertoire; les bits d'attributs sont :
 
_________________________________________________________
 
_________________________________________________________
 
| masque | description |
 
| masque | description |
 
|---------|-----------------------------------------------|
 
|---------|-----------------------------------------------|
| $01 | fichier cr�� en lecture seule |
+
| $01 | fichier créé en lecture seule |
| $02 | fichier transparent au r�pertoire |
+
| $02 | fichier transparent au répertoire |
| $04 | fichier syst�me |
+
| $04 | fichier système |
 
| $08 | fichier contenant un nom de volume sur 11 bits |
 
| $08 | fichier contenant un nom de volume sur 11 bits |
 
|________|______________________________________-_________|
 
|________|______________________________________-_________|
Line 475: Line 475:
 
RETOUR
 
RETOUR
 
Un nombre positif, l'identificateur ou :
 
Un nombre positif, l'identificateur ou :
ERROR ou le num�ro d'erreur appropri�.
+
ERROR ou le numéro d'erreur approprié.
   
 
REMARQUES
 
REMARQUES
Si le bit de lecture seule est positionn�, un identificateur
+
Si le bit de lecture seule est positionné, un identificateur
d'�criture seule est retourn�, et, de plus, cet identificateur
+
d'écriture seule est retourné, et, de plus, cet identificateur
ne permet pas d'�crire.
+
ne permet pas d'écrire.
   
Th�oriquement, un seul num�ro de volume est permis sur un
+
Théoriquement, un seul numéro de volume est permis sur un
r�pertoire racine. Le GEMDOS n'impose rien de tel, ce qui
+
répertoire racine. Le GEMDOS n'impose rien de tel, ce qui
 
peut causer quelque confusion.
 
peut causer quelque confusion.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
Line 491: Line 491:
 
WORD mode;
 
WORD mode;
 
Ouvre le fichier 'nmfich' en mode 'mode' et retourne son identifi-
 
Ouvre le fichier 'nmfich' en mode 'mode' et retourne son identifi-
cateur non standard. Le mode d'ouverture peut �tre:
+
cateur non standard. Le mode d'ouverture peut être:
 
____________________________
 
____________________________
 
| mode | description |
 
| mode | description |
 
|------|---------------------|
 
|------|---------------------|
 
| 0 | lecture seule |
 
| 0 | lecture seule |
| 1 | �criture seule |
+
| 1 | écriture seule |
| 2 | lecture et �criture |
+
| 2 | lecture et écriture |
 
|______|_____________________|
 
|______|_____________________|
   
 
RETOUR
 
RETOUR
 
Un nombre positif, l'identificateur
 
Un nombre positif, l'identificateur
Un num�ro d'erreur n�gatif.
+
Un numéro d'erreur négatif.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$3E Fclose Fermeture d'un fichier
 
$3E Fclose Fermeture d'un fichier
Line 509: Line 509:
 
Ferme le fichier dont l'identificateur est 'idfich'.
 
Ferme le fichier dont l'identificateur est 'idfich'.
   
RETOUR 0 en cas de succ�s;
+
RETOUR 0 en cas de succès;
ERROR ou un num�ro d'erreur appropri� en cas d'�chec.
+
ERROR ou un numéro d'erreur approprié en cas d'échec.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$3F Fread Lecture sur un fichier
 
$3F Fread Lecture sur un fichier
Line 519: Line 519:
   
 
Lit 'nbre' octets dans le fichier d'identificateur 'idfich', et
 
Lit 'nbre' octets dans le fichier d'identificateur 'idfich', et
les place en m�moire partir de l'adresse 'buffer'.
+
les place en mémoire à partir de l'adresse 'buffer'.
   
 
RETOUR
 
RETOUR
Le nombre d'octets r�ellement lus, ou:
+
Le nombre d'octets réellement lus, ou:
 
0 si code de fin de fichier,
 
0 si code de fin de fichier,
Un num�ro d'erreur n�gatif.
+
Un numéro d'erreur négatif.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$40 Fwrite �criture sur un fichier
+
$40 Fwrite Écriture sur un fichier
 
LONG Fwrite(idfich,nbre,buffer)
 
LONG Fwrite(idfich,nbre,buffer)
 
WORD idfich;
 
WORD idfich;
Line 532: Line 532:
 
char *buffer;
 
char *buffer;
   
�crit 'nbre' octets de la m�moire partir de l'adresse 'buffer',
+
Écrit 'nbre' octets de la mémoire à partir de l'adresse 'buffer',
 
dans le fichier ayant comme identificateur 'idfich'.
 
dans le fichier ayant comme identificateur 'idfich'.
   
RETOUR Le nombre d'octets r�ellement �crits en cas de succ�s.
+
RETOUR Le nombre d'octets réellement écrits en cas de succès.
Un num�ro d'erreur n�gatif autrement.
+
Un numéro d'erreur négatif autrement.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$41 Fdelete Effacement d'un fichier
 
$41 Fdelete Effacement d'un fichier
Line 543: Line 543:
 
Efface le fichier ayant comme nom 'nomfich'.
 
Efface le fichier ayant comme nom 'nomfich'.
   
RETOUR 0 en cas de succ�s
+
RETOUR 0 en cas de succès
Un num�ro d'erreur n�gatif autrement.
+
Un numéro d'erreur négatif autrement.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$42 Fseek Positionne le pointeur de fichier
 
$42 Fseek Positionne le pointeur de fichier
Line 551: Line 551:
 
WORD idfich;
 
WORD idfich;
 
WORD mode;
 
WORD mode;
Positionne le pointeur dans le fichier d�fini par l'identificateur
+
Positionne le pointeur dans le fichier défini par l'identificateur
'idfich'. 'offset' est un nombre sign�; une valeur positive
+
'idfich'. 'offset' est un nombre signé; une valeur positive
d�place le pointeur vers la fin du fichier, une valeur n�gative,
+
déplace le pointeur vers la fin du fichier, une valeur négative,
vers le d�but. Le 'mode' de positionnement peut �tre :
+
vers le début. Le 'mode' de positionnement peut être :
 
_____________________________________________
 
_____________________________________________
| mode | D�placement d'offset octets... |
+
| mode | Déplacement d'offset octets... |
 
|-------|------------------------------------|
 
|-------|------------------------------------|
| 0 | partir du d�but du fichier |
+
| 0 | à partir du début du fichier |
| 1 | partir de la position courante |
+
| 1 | à partir de la position courante |
| 2 | partir de la fin du fichier |
+
| 2 | à partir de la fin du fichier |
 
|_______|____________________________________|
 
|_______|____________________________________|
   
 
RETOUR La position courante dans le fichier.
 
RETOUR La position courante dans le fichier.
Un num�ro d'erreur n�gatif si erreur.
+
Un numéro d'erreur négatif si erreur.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$43 Fattrib Fixe ou demande les attributs d'un fichier
 
$43 Fattrib Fixe ou demande les attributs d'un fichier
Line 571: Line 571:
 
WORD drap;
 
WORD drap;
 
WORD attribs;
 
WORD attribs;
'nmfich' pointe sur un chemin termin� par 0. Si 'drap' a la valeur
+
'nmfich' pointe sur un chemin terminé par 0. Si 'drap' a la valeur
1, les attributs de fichier 'attribs' sont fix�s (pas de valeur de
+
1, les attributs de fichier 'attribs' sont fixés (pas de valeur de
retour). Si 'drap' est 0, ils sont retourn�s.
+
retour). Si 'drap' est 0, ils sont retournés.
   
 
Les bits d'attributs sont :
 
Les bits d'attributs sont :
Line 579: Line 579:
 
| masque | description |
 
| masque | description |
 
|--------|------------------------------------------------|
 
|--------|------------------------------------------------|
| $01 | fichier lecture seule |
+
| $01 | fichier à lecture seule |
| $02 | fichier transparent au r�pertoire |
+
| $02 | fichier transparent au répertoire |
| $04 | fichier 'syst�me' |
+
| $04 | fichier 'système' |
 
| $08 | fichier contenant un nom de volume (11 octets) |
 
| $08 | fichier contenant un nom de volume (11 octets) |
| $10 | fichier sous-r�pertoire |
+
| $10 | fichier sous-répertoire |
| $20 | fichier �crit puis referm� |
+
| $20 | fichier écrit puis refermé |
 
|________|________________________________________________|
 
|________|________________________________________________|
   
 
REMARQUE Le bit d'archivage, $20, ne semble pas marcher comme
 
REMARQUE Le bit d'archivage, $20, ne semble pas marcher comme
pr�vu.
+
prévu.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$45 Fdup Duplique un identificateur de fichier
 
$45 Fdup Duplique un identificateur de fichier
 
WORD Fdup(idfich)
 
WORD Fdup(idfich)
 
WORD idfich;
 
WORD idfich;
L'identificateur 'idfich' doit �tre un identificateur standard (0
+
L'identificateur 'idfich' doit être un identificateur standard (0 à
5). Fdup() retourne un identificateur non standard (sup�rieur ou
+
5). Fdup() retourne un identificateur non standard (supérieur ou
�gal 6) qui pointe le m�me fichier.
+
égal à 6) qui pointe le même fichier.
   
 
RETOUR Un identificateur ou :
 
RETOUR Un identificateur ou :
Line 606: Line 606:
 
WORD nonstdh;
 
WORD nonstdh;
   
Force l'identificateur standard 'stdh' pointer le m�me fichier
+
Force l'identificateur standard 'stdh' à pointer le même fichier
ou p�riph�rique que l'identificateur non-standard 'nonstdh'.
+
ou périphérique que l'identificateur non-standard 'nonstdh'.
   
 
RETOUR 0 si OK
 
RETOUR 0 si OK
 
EIHNDL identificateur invalide.
 
EIHNDL identificateur invalide.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$47 Dgetpath Demande le r�pertoire courant
+
$47 Dgetpath Demande le répertoire courant
 
void Dgetpath(buf,driveno)
 
void Dgetpath(buf,driveno)
 
char *buf;
 
char *buf;
 
WORD driveno;
 
WORD driveno;
Le r�pertoire courant pour le lecteur 'driveno' est recopi� dans
+
Le répertoire courant pour le lecteur 'driveno' est recopié dans
'buf'. Le num�ro de lecteur commence 1 pour le lecteur A:, 2
+
'buf'. Le numéro de lecteur commence à 1 pour le lecteur A:, 2
pour le B:, etc..., 0 sp�cifiant le disque par d�faut.
+
pour le B:, etc..., 0 spécifiant le disque par défaut.
   
 
REMARQUE
 
REMARQUE
La taille maximum d'un chemin n'est pas limit�e par le sys-
+
La taille maximum d'un chemin n'est pas limitée par le sys-
t�me. C'est l'application de fournir assez de place pour le
+
tème. C'est à l'application de fournir assez de place pour le
tampon. 128 octets semblent suffisants pour 8 ou 9 sous-r�per-
+
tampon. 128 octets semblent suffisants pour 8 ou 9 sous-réper-
 
toires.
 
toires.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$48 Malloc Demande d'allocation m�moire
+
$48 Malloc Demande d'allocation mémoire
 
LONG Malloc(taille)
 
LONG Malloc(taille)
 
LONG taille;
 
LONG taille;
 
Si 'taille' est -1L ($FFFFFFFF) la fonction retourne la taille du
 
Si 'taille' est -1L ($FFFFFFFF) la fonction retourne la taille du
plus grand bloc libre du syst�me. Autrement si 'taille' est
+
plus grand bloc libre du système. Autrement si 'taille' est
diff�rent de -1L, la fonction essaie d'allouer 'taille' octets pour
+
différent de -1L, la fonction essaie d'allouer 'taille' octets pour
 
le programme en cours. La fonction retourne un pointeur sur le
 
le programme en cours. La fonction retourne un pointeur sur le
d�but du bloc allou� si tout s'est bien pass�, ou NULL s'il n'exis-
+
début du bloc alloué si tout s'est bien passé, ou NULL s'il n'exis-
tait pas de bloc assez grand pour satisfaire la requ�te.
+
tait pas de bloc assez grand pour satisfaire la requête.
   
 
REMARQUE
 
REMARQUE
Un programme ne peut avoir, un instant donn� plus de 20 blocs
+
Un programme ne peut avoir, à un instant donné plus de 20 blocs
allou�s par 'Malloc()'. D�passer cette limite peut d�semparer le
+
alloués par 'Malloc()'. Dépasser cette limite peut désemparer le
 
GEMDOS. (Il est cependant possible de faire le nombre de
 
GEMDOS. (Il est cependant possible de faire le nombre de
'Malloc()' que l'on veut condition de les faire suivre par
+
'Malloc()' que l'on veut à condition de les faire suivre par
l'appel de la fonction Mfree(), 20 �tant le nombre maximum de
+
l'appel de la fonction Mfree(), 20 étant le nombre maximum de
fragments qu'un programme peut g�n�rer).
+
fragments qu'un programme peut générer).
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$49 Mfree Lib�ration de m�moire
+
$49 Mfree Libération de mémoire
 
WORD Mfree(adbloc)
 
WORD Mfree(adbloc)
 
LONG adbloc;
 
LONG adbloc;
Lib�re le bloc m�moire commen�ant 'adbloc'. Le bloc doit �tre un
+
Libère le bloc mémoire commençant à 'adbloc'. Le bloc doit être un
de ceux allou�s par Malloc().
+
de ceux alloués par Malloc().
   
 
RETOUR
 
RETOUR
0 si la lib�ration s'est bien Effectu�e.
+
0 si la libération s'est bien Effectuée.
ERROR ou le num�ro d'erreur appropri� sinon.
+
ERROR ou le numéro d'erreur approprié sinon.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$4A Mshrink R�tr�cit la taille d'un bloc allou�
+
$4A Mshrink Rétrécit la taille d'un bloc alloué
 
WORD Mshrink(0,bloc,nouvtail)
 
WORD Mshrink(0,bloc,nouvtail)
 
WORD) 0;
 
WORD) 0;
 
LONG bloc;
 
LONG bloc;
 
LONG nouvtail;
 
LONG nouvtail;
R�tr�cit la taille d'un bloc m�moire allou�. 'bloc' pointe sur la
+
Rétrécit la taille d'un bloc mémoire alloué. 'bloc' pointe sur la
page de base d'un programme ou sur un bloc de m�moire allou� par
+
page de base d'un programme ou sur un bloc de mémoire alloué par
 
Malloc(), 'nouvtail' est la nouvelle taille du bloc.
 
Malloc(), 'nouvtail' est la nouvelle taille du bloc.
Le premier argument du bloc doit �tre un mot nul.
+
Le premier argument du bloc doit être un mot nul.
   
 
RETOUR
 
RETOUR
0 si l'ajustement de taille �t� r�ussi.
+
0 si l'ajustement de taille à été réussi.
EIMBA si l'adresse du bloc m�moire �tait invalide.
+
EIMBA si l'adresse du bloc mémoire était invalide.
EGSBF si la nouvelle taille demand�e �tait Erron�e.
+
EGSBF si la nouvelle taille demandée était Erronée.
   
 
REMARQUE
 
REMARQUE
un bloc ne peut �tre que r�tr�ci; la nouvelle taille du bloc
+
un bloc ne peut être que rétréci; la nouvelle taille du bloc
doit forc�ment �tre inf�rieure la pr�c�dente.
+
doit forcément être inférieure à la précédente.
   
 
N.D.T.:Le compilateur 'C' Alcyon rajoute, lors de la compilation,
 
N.D.T.:Le compilateur 'C' Alcyon rajoute, lors de la compilation,
le premier param�tre d'appel '0'. Il ne faut donc pas le mettre
+
le premier paramètre d'appel '0'. Il ne faut donc pas le mettre
 
dans l'appel de la fonction si l'on se sert de ce compilateur.
 
dans l'appel de la fonction si l'on se sert de ce compilateur.
   
 
Appel de la fonction avec le 'C' Alcyon : Mshrink(bloc,nouvtail);
 
Appel de la fonction avec le 'C' Alcyon : Mshrink(bloc,nouvtail);
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$4B Pexec Charge/Ex�cute un programme
+
$4B Pexec Charge/Exécute un programme
 
WORD Pexec(mode,ptr1,ptr2,ptr3)
 
WORD Pexec(mode,ptr1,ptr2,ptr3)
 
WORD mode;
 
WORD mode;
Line 686: Line 686:
 
char *ptr3;
 
char *ptr3;
   
Cette fonction permet diff�rentes utilisations selon le drapeau
+
Cette fonction permet différentes utilisations selon le drapeau
 
'mode':
 
'mode':
   
Line 692: Line 692:
 
| mode | ptr1 | ptr2 | ptr3 |
 
| mode | ptr1 | ptr2 | ptr3 |
 
|--------------|--------------|-------------|---------------|
 
|--------------|--------------|-------------|---------------|
| 0: charge et | le fichier | le jeu de | la cha�ne d' |
+
| 0: charge et | le fichier à | le jeu de | la chaîne d' |
| ex�cute | ex�cuter | commandes | environnement |
+
| exécute | exécuter | commandes | environnement |
 
|--------------|--------------|-------------|---------------|
 
|--------------|--------------|-------------|---------------|
| 3: charge | le fichier | le jeu de | la cha�ne d' |
+
| 3: charge | le fichier à | le jeu de | la chaîne d' |
 
| sans lancer| charger | commandes | environnement |
 
| sans lancer| charger | commandes | environnement |
 
|--------------|--------------|-------------|---------------|
 
|--------------|--------------|-------------|---------------|
| 4: ex�cute | l'adr. de la | (inutilis�) | (inutilis�) |
+
| 4: exécute | l'adr. de la | (inutilisé) | (inutilisé) |
 
| uniquement| page de base | | |
 
| uniquement| page de base | | |
 
|--------------|--------------|-------------|---------------|
 
|--------------|--------------|-------------|---------------|
| 5: cr�e une | (inutilis�) | le jeu de | la cha�ne d' |
+
| 5: crée une | (inutilisé) | le jeu de | la chaîne d' |
 
| page de base| | commandes | environnement |
 
| page de base| | commandes | environnement |
 
|______________|______________|_____________|_______________|
 
|______________|______________|_____________|_______________|
   
Le nom du fichier charger ou ex�cuter, 'ptr1', et la cha�ne du
+
Le nom du fichier à charger ou à exécuter, 'ptr1', et la chaîne du
jeu de commandes, 'ptr2', sont des chemins, termin�s par 0. La
+
jeu de commandes, 'ptr2', sont des chemins, terminés par 0. La
cha�ne d'environnement 'ptr3', est soit NULL (0L), soit un
+
chaîne d'environnement 'ptr3', est soit NULL (0L), soit un
pointeur sur une structure de cha�ne de la forme:
+
pointeur sur une structure de chaîne de la forme:
"cha�ne1\0"
+
"chaîne1\0"
"cha�ne2\0"
+
"chaîne2\0"
 
etc...
 
etc...
"cha�ne3\0"
+
"chaîne3\0"
 
"\0"
 
"\0"
   
La cha�ne d'environnement peut �tre n'importe quel num�ro de
+
La chaîne d'environnement peut être n'importe quel numéro de
cha�ne finie par un 0, suivie par une cha�ne nulle (un simple 0).
+
chaîne finie par un 0, suivie par une chaîne nulle (un simple 0).
Le programme h�rite d'une copie de la cha�ne d'environnement
+
Le programme hérite d'une copie de la chaîne d'environnement
 
parente si 'ptr3' est 'NULL'.
 
parente si 'ptr3' est 'NULL'.
   
Le mode 0 (charge et ex�cute) chargera le fichier sp�cifi�,
+
Le mode 0 (charge et exécute) chargera le fichier spécifié,
composera sa page de base, et l'ex�cutera. La valeur retourn�e par
+
composera sa page de base, et l'exécutera. La valeur retournée par
 
Pexec() sera le code de sortie du processus enfant (voir Pterm0()
 
Pexec() sera le code de sortie du processus enfant (voir Pterm0()
 
et Pterm()).
 
et Pterm()).
   
Le mode 3 (charge sans ex�cuter) chargera le fichier sp�cifi�,
+
Le mode 3 (charge sans exécuter) chargera le fichier spécifié,
 
composera la page de base, et retournera un pointeur sur cette
 
composera la page de base, et retournera un pointeur sur cette
page de base. Le programme n'est pas ex�cut�.
+
page de base. Le programme n'est pas exécuté.
   
Le mode 4 (ex�cute seulement) re�oit un pointeur sur une page de
+
Le mode 4 (exécute seulement) reçoit un pointeur sur une page de
base. Le programme commence son ex�cution au d�but de la zone de
+
base. Le programme commence son exécution au début de la zone de
texte, comme sp�cifi� dans la page de base.
+
texte, comme spécifié dans la page de base.
   
Le mode 5 (cr�ation d'une page de base) allouera le plus grand
+
Le mode 5 (création d'une page de base) allouera le plus grand
bloc libre de m�moire et cr�era la plus grande partie de sa page
+
bloc libre de mémoire et créera la plus grande partie de sa page
de base. Quelques entr�es comme la taille des zones de
+
de base. Quelques entrées comme la taille des zones de
texte/donn�es initialis�es/donn�es non initialis�es et leur
+
texte/données initialisées/données non initialisées et leur
adresse de base NE SONT PAS install�es. Le programme appelant en a
+
adresse de base NE SONT PAS installées. Le programme appelant en a
 
la charge.
 
la charge.
   
Un programme enfant h�rite des descripteurs de fichiers standards
+
Un programme enfant hérite des descripteurs de fichiers standards
 
de son parent. Il emploie en fait un appel de Fdup() et de
 
de son parent. Il emploie en fait un appel de Fdup() et de
Fforce() sur les identificateurs 0 5.
+
Fforce() sur les identificateurs 0 à 5.
   
Puisque les ressources syst�me sont allou�s lors de la cr�ation de
+
Puisque les ressources système sont alloués lors de la création de
la page de base, le processus engendr� DOIT se terminer en les
+
la page de base, le processus engendré DOIT se terminer en les
lib�rant. Ceci est particuli�rement important lors de l'emploi
+
libérant. Ceci est particulièrement important lors de l'emploi
 
d'overlays. (voir 'le livre de cuisine de Pexec' pour plus de
 
d'overlays. (voir 'le livre de cuisine de Pexec' pour plus de
d�tails sur Pexec()).
+
détails sur Pexec()).
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$4C Pterm Termine un programme
 
$4C Pterm Termine un programme
Line 754: Line 754:
 
WORD retcode;
 
WORD retcode;
 
Termine le programme courant, ferme tous les fichiers ouverts et
 
Termine le programme courant, ferme tous les fichiers ouverts et
lib�re la m�moire allou�e. Retourne 'retcode' au processus parent.
+
libère la mémoire allouée. Retourne 'retcode' au processus parent.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$4E Fsfirst Recherche la premi�re occurence d'un fichier
+
$4E Fsfirst Recherche la première occurence d'un fichier
 
WORD Fsfirst(fspec,attribs)
 
WORD Fsfirst(fspec,attribs)
 
char *fspec;
 
char *fspec;
 
WORD attribs;
 
WORD attribs;
Recherche la premi�re occurence du fichier 'fspec'. Le sp�cifi-
+
Recherche la première occurence du fichier 'fspec'. Le spécifi-
cateur de fichier peut contenir des caract�res sp�ciaux ('?' ou
+
cateur de fichier peut contenir des caractères spéciaux ('?' ou
'*') dans le nom de fichier mais pas dans le chemin de sp�ci-
+
'*') dans le nom de fichier mais pas dans le chemin de spéci-
fication. 'attribs' contr�le le type de fichier qu sera retourn�
+
fication. 'attribs' contrôle le type de fichier qu sera retourné
par Fsfirst(). Son format a �t� d�crit dans la documentation sur
+
par Fsfirst(). Son format a été décrit dans la documentation sur
 
'Fattrib()'.
 
'Fattrib()'.
   
Si 'attribs' est z�ro, les fichiers normaux seront seuls
+
Si 'attribs' est à zéro, les fichiers normaux seront seuls
recherch�s (aucun nom de volume, fichier cach�, sous-r�pertoire ou
+
recherchés (aucun nom de volume, fichier caché, sous-répertoire ou
fichier syst�me ne sera retourn�). Si 'attribs' est positionn� sur
+
fichier système ne sera retourné). Si 'attribs' est positionné sur
les fichiers cach�s ou sur les fichiers syst�mes, alors ceux_ci
+
les fichiers cachés ou sur les fichiers systèmes, alors ceux_ci
 
seront pris en compte pour la recherche. Si 'attribs' est posi-
 
seront pris en compte pour la recherche. Si 'attribs' est posi-
tionn� pour trouver un nom de volume, alors seuls les noms de volu-
+
tionné pour trouver un nom de volume, alors seuls les noms de volu-
me seront recherch�s.
+
me seront recherchés.
   
Lorsqu'un fichier est trouv�, une structure de 44 octets est
+
Lorsqu'un fichier est trouvé, une structure de 44 octets est
�crite l'emplacement point� par le DTA.
+
écrite à l'emplacement pointé par le DTA.
 
_________________________________________________
 
_________________________________________________
 
| offset | taille | contenus |
 
| offset | taille | contenus |
 
|--------|----------|-----------------------------|
 
|--------|----------|-----------------------------|
| 0 20 | | (r�serv�s) |
+
| 0 à 20 | | (réservés) |
 
| 21 | octet | bits d'attributs |
 
| 21 | octet | bits d'attributs |
| 22 | mot | heure de cr�ation |
+
| 22 | mot | heure de création |
| 24 | mot | date de cr�ation |
+
| 24 | mot | date de création |
 
| 26 | long | taille du fichier |
 
| 26 | long | taille du fichier |
 
| 30 | 14 octets| nom et extension du fichier |
 
| 30 | 14 octets| nom et extension du fichier |
Line 790: Line 790:
 
Le nom de fichier et son extension se terminent par 0, et ne
 
Le nom de fichier et son extension se terminent par 0, et ne
 
contiennent pas d'espaces.
 
contiennent pas d'espaces.
RETOUR 0 si le fichier a �t� trouv�
+
RETOUR 0 si le fichier a été trouvé
EFILNF si le fichier n'a pas �t� trouv�, ou le
+
EFILNF si le fichier n'a pas été trouvé, ou le
num�ro d'erreur appropri�.
+
numéro d'erreur approprié.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$4F Fsnext Recherche des occurences suivantes
 
$4F Fsnext Recherche des occurences suivantes
 
WORD Fsnext()
 
WORD Fsnext()
Recherche les occurences suivantes d'un fichier. La premi�re
+
Recherche les occurences suivantes d'un fichier. La première
occurence devra �tre recherch�e par Fsfirst(). Les octets de 0
+
occurence devra être recherchée par Fsfirst(). Les octets de 0 à
20 doivent rester inchang�s depuis l'appel de Fsfirst() ou depuis
+
20 doivent rester inchangés depuis l'appel de Fsfirst() ou depuis
 
le dernier appel de Fsnext().
 
le dernier appel de Fsnext().
   
RETOUR 0 si le fichier a �t� trouv�
+
RETOUR 0 si le fichier a été trouvé
ENMFIL s'il n'y a plus de fichiers trouv�s, ou le num�ro
+
ENMFIL s'il n'y a plus de fichiers trouvés, ou le numéro
d'erreur appropri�.
+
d'erreur approprié.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
 
$56 Frename Renomme un fichier
 
$56 Frename Renomme un fichier
Line 811: Line 811:
 
char *nouvnom;
 
char *nouvnom;
 
Renomme un fichier 'ancnom' en 'nouvnom'. Le nouveau nom ne doit
 
Renomme un fichier 'ancnom' en 'nouvnom'. Le nouveau nom ne doit
pas d�j� exister mais peut �tre dans un autre r�pertoire.
+
pas déjà exister mais peut être dans un autre répertoire.
   
Le premier param�tre doit �tre 0 (mot).
+
Le premier paramètre doit être 0 (mot).
   
 
RETOUR 0 si OK
 
RETOUR 0 si OK
EACCDN si le nouveau nom existe d�j�
+
EACCDN si le nouveau nom existe déjà
EPTHNF si l'ancien nom n'a pas �t� trouv�
+
EPTHNF si l'ancien nom n'a pas été trouvé
 
ENSAME si l'identificateur de disque (A,B,..) n'est
 
ENSAME si l'identificateur de disque (A,B,..) n'est
pas le m�me pour les deux noms.
+
pas le même pour les deux noms.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
$57 Fdatime Fixe ou demande le moment de cr�ation d'un fichier
+
$57 Fdatime Fixe ou demande le moment de création d'un fichier
 
void Fdatime(idfich,pttemp,drap)
 
void Fdatime(idfich,pttemp,drap)
 
WORD idfich;
 
WORD idfich;
Line 830: Line 830:
 
(l'heure se trouve dans le premier mot, la date dans le second).
 
(l'heure se trouve dans le premier mot, la date dans le second).
   
Si 'drap' est 1, la date et l'heure sont plac�es dans le fichier
+
Si 'drap' est à 1, la date et l'heure sont placées dans le fichier
partir de 'pttemp'.
+
à partir de 'pttemp'.
   
Si 'drap' est 0, la date et l'heure sont lues et plac�es dans
+
Si 'drap' est à 0, la date et l'heure sont lues et placées dans
 
'pttemp'.
 
'pttemp'.
 
*------------------------------------------------------------------*
 
*------------------------------------------------------------------*
  +
 
</pre>
 
</pre>
 
Back to [[ASM_Tutorial]]
 
Back to [[ASM_Tutorial]]

Revision as of 12:25, 24 November 2023

   ***-------------- LES FONCTIONS GEMDOS PAR NUMÉRO ---------------***

   $00      Pterm0    Fin de processus
   $01      Cconin    Lit un caractère sur l'entrée standard
   $02      Cconout   Écrit un caractère sur la sortie standard
   $03      Cauxin    Lit un caractère sur l'entrée standard AUX:
   $04      Cauxout   Écrit un caractère sur la sortie standard AUX:
   $05      Cprnout   Écrit un caractère sur la sortie standard PRN:
   $06      Crawio    Lecture/écriture brute sur l'entrée/sortie standard
   $07      Crawcin   Lecture brute sur l'entrée standard
   $08      Cnecin    Lit un caractère sur l'entrée standard, sans écho
   $09      Cconws    Écrit une chaîne sur la sortie standard
   $0A      Cconrs    Lit une chaîne formatée sur l'entrée standard
   $0B      Cconis    Teste l'état de l'entrée standard
   $0E      Dsetdrv   Fixe le lecteur de disque par défaut
   $10      Cconos    Teste l'état de la sortie standard
   $11      Cprnos    Teste l'état du périphérique standard PRN:
   $12      Cauxis    Teste l'état du standard AUX: en entrée
   $13      Cauxos    Teste l'état du standard AUX: en sortie
   $19      Dgetdrv   Demande le disque par défaut
   $1A      Fsetdta   Fixe l'adresse du DTA (Disk Transfer Adress)
   $20      Super     Entre/Sort/Demande du mode superviseur
   $2A      Tgetdate  Demande la date
   $2B      Tsetdate  Fixe la date
   $2C      Tgettime  Demande l'heure
   $2D      Tsettime  Fixe l'heure
   $2F      Fgetdta   Demande l'adresse du DTA (Disk Transfer Adress)
   $30      Sversion  Demande le numéro de version du GEMDOS
   $31      Ptermres  Finit un programme qui reste résident
   $36      Dfree     Demande d'informations sur un disque
   $39      Dcreate   Création d'un sous-répertoire
   $3A      Ddelete   Efface un sous-répertoire
   $3B      Dsetpath  Fixe le catalogue courant
   $3C      Fcreate   Création d'un fichier
   $3D      Fopen     Ouvre un fichier
   $3E      Fclose    Ferme un fichier
   $3F      Fread     Lit un fichier
   $40      Fwrite    Écrit un fichier
   $41      Fdelete   Efface un fichier
   $42      Fseek     Positionnement dans un fichier
   $43      Fattrib   Retourne/fixe les attributs de fichier
   $45      Fdup      Recopie un identificateur de fichier standard
   $46      Fforce    Force un identificateur de fichier
   $47      Dgetpath  Demande le répertoire courant
   $48      Malloc    Demande d'allocation mémoire
   $49      Mfree     Libère de la mémoire
   $4A      Mshrink   Rétrécit un bloc de mémoire allouée
   $4B      Pexec     Charge/Exécute un programme
   $4C      Pterm     Termine un programme
   $4E      Fsfirst   Recherche la première occurrence d'un fichier
   $4F      Fnext     Recherche l'occurrence suivante
   $56      Frename   Renomme un fichier
   $57      Fdatime   Demande ou fixe la date de création d'un fichier


   ***-------------- FONCTIONS GEMDOS PAR NOM ----------------------***

   $03      Cauxin    Lit un caractère sur l'entrée standard AUX:
   $12      Cauxis    Teste l'état du standard AUX: en entrée
   $13      Cauxos    Teste l'état du standard AUX: en sortie
   $04      Cauxout   Écrit un caractère sur la sortie standard AUX:
   $01      Cconin    Lit un caractère sur l'entrée standard
   $0B      Cconis    Teste l'état de l'entrée standard
   $10      Cconos    Teste l'état de la sortie standard
   $02      Cconout   Écrit un caractère sur la sortie standard
   $0A      Cconrs    Lit une chaîne formatée sur l'entrée standard
   $09      Cconws    Écrit une chaîne sur la sortie standard
   $08      Cnecin    Lit un caractère sur l'entrée standard, sans écho
   $11      Cprnos    Teste l'état du périphérique standard PRN:
   $05      Cprnout   Écrit un caractère sur la sortie standard PRN:
   $07      Crawcin   Lecture brute sur l'entrée standard
   $06      Crawio    Lecture/écriture brute sur l'entrée/sortie standard
   $39      Dcreate   Création d'un sous-répertoire
   $3A      Ddelete   Efface un sous-répertoire
   $36      Dfree     Demande d'informations sur un disque
   $19      Dgetdrv   Demande le disque par défaut
   $47      Dgetpath  Demande le répertoire courant
   $0E      Dsetdrv   Fixe le lecteur de disque par défaut
   $3B      Dsetpath  Fixe le catalogue courant
   $43      Fattrib   Retourne/fixe les attributs de fichier
   $3E      Fclose    Ferme un fichier
   $3C      Fcreate   Création d'un fichier
   $57      Fdatime   Demande ou fixe la date de création d'un fichier
   $41      Fdelete   Efface un fichier
   $45      Fdup      Recopie un identificateur de fichier standard
   $46      Fforce    Force un identificateur de fichier
   $2F      Fgetdta   Demande l'adresse du DTA (Disk Transfer Adress)
   $3D      Fopen     Ouvre un fichier
   $3F      Fread     Lit un fichier
   $56      Frename   Renomme un fichier
   $42      Fseek     Positionnement dans un fichier
   $1A      Fsetdta   Fixe l'adresse du DTA (Disk Transfer Adress)
   $4E      Fsfirst   Recherche la première occurrence d'un fichier
   $4F      Fnext     Recherche l'occurrence suivante
   $40      Fwrite    Écrit dans un fichier
   $48      Malloc    Demande d'allocation mémoire
   $49      Mfree     Libère de la mémoire
   $4A      Mshrink   Rétrécit un bloc de mémoire allouée
   $4B      Pexec     Charge/Exécute un programme
   $4C      Pterm     Termine un programme
   $00      Pterm0    Termine un programme (code de retour 0)
   $31      Ptermres  Termine un programme qui reste résident
   $20      Super     Entre/Sort/Demande du mode superviseur
   $30      Sversion  Demande le numéro de version du GEMDOS
   $2A      Tgetdate  Demande la date
   $2C      Tgettime  Demande l'heure
   $2B      Tsetdate  Fixe la date
   $2D      Tsettime  Fixe l'heure

   *------------------------------------------------------------------*
   $00      Pterm0    Finit un programme

        void Pterm0()

   Termine  un  processus, fermant  tous les fichiers qu'il a ouvert et
   libérant  la  mémoire  qu'il a allouée. Retourne $0000 comme code de
   sortie au programme parent.
   *------------------------------------------------------------------*
   $01  Cconin    Lit un caractère sur l'entrée standard

        LONG Cconin()
     
   Lit   un  caractère sur l'entrée standard   (identificateur 0).   Si
   l'entrée   standard  est  la  console,  le long_mot retourné dans D0
   contient le code ASCII et le code clavier de la touche appuyée
   (code de scrutation) :

          ________________________________________________
         | 31..24      | 23.. 16   |  15..8   |   7..0    |
         |-------------|-----------|----------|-----------|
         |             |  code de  |          |           |
         | $00 ou bits | scrutation|   $00    | caractère |
         | de shift    | ou $00    |          | ASCII     |
         |_____________|___________|__________|___________|

   Les  touches  de fonction (F1 à F10,  HELP, UNDO, etc...) retournent
   le  code  ASCII  $00,  avec le code clavier approprié (cf. le manuel
   sur  le  clavier  intelligent  pour la valeur des codes clavier). Le
   ST BIOS place l'état des touches spéciales dans les bits 24 à 31
   (voir le Guide du programmeur du BIOS pour plus de détails).


   ERREURS
        Ne retourne aucune indication de fin de fichier.
        Ne reconnaît pas 'Control_C'
        Impossible  de  savoir si l'entrée est un périphérique à carac-
        tères ou un fichier.
        Il  devrait exister un moyen de taper les 256 codes possibles à
        partir du clavier.
   *------------------------------------------------------------------*
   $02 Cconout   Ecrit un caractère sur la sortie standard
        void  Cconout(c)
        WORD c
   Écrit  le caractère 'c' sur la sortie standard   (identificateur 0).
   Les   huit   bits  les  plus significatifs de 'c'  sont  réservés et
   doivent être à zéro. Les tabulations ne sont pas interprétées.
   *------------------------------------------------------------------*
   $03 Cauxin    Lit un caractère sur l'entrée standard AUX:

        WORD Cauxin()

   Lit un caractère à partir de l'identificateur 1 (le port série AUX:,
   normalement).

   REMARQUE
        Le  contrôle  de flux de la sortie RS232 ne marche  pas  avec  
        cette fonction.  Les programmes devraient utiliser l'appel de  
        périphérique  de caractère BIOS afin d'éviter de  perdre  des  
        caractères reçus.
   *------------------------------------------------------------------*
   $04 Cauxout   Écrit un caractère sur la sortie standard AUX:
        void Cauxout(c)
        WORD c

   *------------------------------------------------------------------*
   $05 Cprnout   Écrit un caractère sur la sortie standard PRN:
        void Cprnout(c)
        WORD c

   Écrit 'c' sur l'identificateur 2  (le  port  imprimante PRN:, norma-
   lement). Les huits bits hauts de 'c' sont réservés et doivent être à
   zéro. Les tabulations ne sont pas interprétées.

   *------------------------------------------------------------------*
   $06 Crawio    Lecture/Écriture brute sur l'entrée/sortie standard
        LONG Crawio(w)
        WORD w;

   REMARQUES
        Par  le  fait  même  de  sa conception cette fonction ne peut  
        écrire '$ff' sur la sortie standard.
        $00 ne peut être différencié d'une fin de fichier.
   *------------------------------------------------------------------*
   $07 Crawcin   Entrée brute sur l'entrée standard
        LONG Crawcin()

   REMARQUE     Pas d'indication de fin de fichier. 
   *------------------------------------------------------------------*
   $08 Cnecin    Lit un caractère sur l'entrée standard, sans écho
        LONG Cnecin()

   Lit   un   caractère   sur   l'entrée  standard.  Si le périphérique
   d'entrée   est  'CON:', aucun  écho n'est fait.  Les  caractères  de
   contrôle sont interprétés.
   *------------------------------------------------------------------*
   $09 Cconws    Ecrit une chaîne sur la sortie standard
        void Cconws(chaîne)
        char *chaîne;
   Écrit   une  chaîne  débutant  à 'chaîne' et finissant par 0, sur la
   sortie standard.
   *------------------------------------------------------------------*
   $0A Cconrs    Lit une chaîne sur l'entrée standard
        void Cconrs(buf)
        char *buf;
   Lit  une  chaîne sur l'entrée standard.  Les caractères de  contrôle
   habituels sont interprétés :

                   ____________________________________________
                  | Caractère    |    Fonction                 |
                  |--------------|-----------------------------|
                  | <return>, ^J | Fin de ligne                |
                  |   ^H, <rub>  | Efface le dernier caractère |
                  |   ^U, ^X     | Efface la ligne entière     |
                  |      ^R      | Recopie la ligne            |
                  |      ^C      | Fini le programme           |
                  |______________|_____________________________|

   Le premier caractère de 'buf' contient le nombre maximum  d'octets à
   lire  (taille  du  tampon  moins deux). En sortie, le deuxième octet
   contient   le  nombre  de caractères lus.  La chaîne se trouve entre
   'buf+2' et 'buf+2+buf[1]'.
   Il n'est pas garanti que la chaîne se finisse par 0.

   REMARQUE     Plante sur les fins de fichiers.
   *------------------------------------------------------------------*
   $0B Cconis    Teste l'état de l'entrée standard
        WORD Cconis()
   Retourne    $FFFF  si  un  caractère  est  disponible  sur  l'entrée
   standard, $0000 sinon.
   *------------------------------------------------------------------*
   $0E Dsetdrv   Fixe le lecteur de disque par défaut
        LONG Dsetdrv(drv)
        WORD drv;
   Fixe le disque 'drv' par défaut. Les disques sont rangés de 0 à 15
   (A: à P:). Retourne dans D0.L la carte des disques actifs:
           (bit 0 = A, bit 1 = B, etc..).

   Un 'disque actif' est un disque à partir duquel un catalogue a été
   fait.

   REMARQUE Le GEMDOS ne supporte que 16 disques (bits 0 à 15).  Les 
   systèmes ultérieurs en supporteront 32 .
   *------------------------------------------------------------------*
   $10 Cconos    Teste l'état de la sortie standard
        WORD Cconos()

   Renvoie  $FFFF   si  la  console  est prête à recevoir un caractère,
   $0000 si la console n'est PAS prête.
   *------------------------------------------------------------------*
   $11 Cprnos    Teste l'état de la sortie standard PRN:
        WORD Cprnos()
   Retourne  $FFFF  si  'PRN:' est  prêt à recevoir un caractère, $0000
   sinon.
   *------------------------------------------------------------------*
   $12 Cauxis    Teste l'état de l'entrée standard AUX:
        WORD Cauxis()
   Retourne $FFFF si un caractère est disponible sur l'entrée 'AUX:'
   (identificateur 1), $0000 sinon.
   *------------------------------------------------------------------*
   $13 Cauxos    Teste l'état de la sortie standard AUX:
        WORD Cauxos()
   Renvoie $FFFF si 'AUX:' (identificateur 1) est prêt à recevoir un
   caractère, $0000 sinon.
   *------------------------------------------------------------------*
   $19 Dgetdrv   Recherche le lecteur de disque par défaut
        WORD Dgetdrv()
   Retourne le numéro du lecteur courant, compris entre 0 et 15.
   *------------------------------------------------------------------*
   $1A Fsetdta   Fixe l'adresse du DTA (Disk Transfer Adress)
        void Fsetdta(adr)
        char adr;
   Fixe  l'adresse  du DTA à 'adr'.  Le tampon de stockage des  données
   sur   un  fichier (DTA) ne sert que pour les fonctions Fsfirst()  et
   Fsnext().
   *------------------------------------------------------------------*
   $20 Super     Change/teste le mode (Utilisateur ou Superviseur)
        LONG Super(pile)
        WORD *pile;
        'pile' est égal à -1L ($FFFFFFFF):
   la   fonction   retourne $0000  si  le  processeur   est   en   mode
   Utilisateur,  $0001 s'il est en mode Superviseur.

   'pile' est différent de -1L:
        si  le  processeur est en mode Utilisateur, la fonction revient
        avec   le  processeur en mode Superviseur.   Si 'pile' est  NUL
        ($00000000),  la   pile  superviseur  sera  la même que la pile
        Utilisateur   avant  l'appel.  Sinon la pile  Superviseur  sera
        placée à 'pile'.

        Si  le  processeur était en mode Superviseur, il se retrouve en
        mode  Utilisateur  au retour de la fonction.  'pile' devra être
        la   valeur  de  la pile utilisateur qui a été retournée par le
        premier appel de la fonction.

   ATTENTION
        La  pile  Superviseur originale doit être replacée avant la fin
        du   programme  sinon  le   système  plantera  à  la  sortie du
        programme.

   *------------------------------------------------------------------*
   $2A Tgetdate  Demande la date
        WORD Tgetdate()

   Retourne la date en format DOS :

        15 __________________9_8_________5_4_________0 
        |  Année depuis 1980  |   mois    |   jour    |
        |    0.....119        |  1...12   |  1...31   |
        |_____________________|___________|___________|

   RETOUR
        les bits 0 à 4 contiennent le jour allant de 1 à 31.
        les bits 5 à 8 contiennent le mois allant de 1 à 12.
        les   bits   9 à  15 contiennent  l'année   (à  partir de 1980)
        allant de 0 à 119.
   *------------------------------------------------------------------*
   $2B Tsetdate  Fixe la date
        WORD Tsetdate(date)
        WORD date;
   Fixe   'date' comme   date courante  dans  le  format  décrit   dans
   Tgetdate().

   RETOUR   0 si la date est valide.
            ERROR si le format de la date est incorrect.

   REMARQUES
        Le GEMDOS n'est pas difficile sur la date;  par exemple le 31  
        Février ne lui déplaît pas.
        Le GEMDOS ne prévient PAS le BIOS que la date a changée.
   *------------------------------------------------------------------*
   $2C Tgettime  Demande l'heure
        WORD Tgettime()

   Retourne l'heure courante dans le format DOS:

              15__________11_10________5_4__________0
             |    heure     |   minute  |   seconde  |
             |   0...23     |   0...59  |   0...28   |
             |______________|___________|____________|

   RETOUR    Les  bits :
        0 à 4    contiennent les secondes divisées par 2 (0 à 28)
        5 à 10   contiennent les minutes  (0 à 59)
        11 à 15  contiennent les heures   (0 à 23)
   *------------------------------------------------------------------*
   $2D Tsettime  Fixe l'heure
        WORD Tsettime(heure)
        WORD heure;
   Fixe  'heure' comme   heure  courante  dans  le  format décrit  dans
   Tgettime().

   RETOUR   0 si le format de l'heure fournie est valide;
            ERROR si le format de l'heure n'est pas valide.
   REMARQUE
        Le GEMDOS ne prévient pas le BIOS que l'heure a changé.
   *------------------------------------------------------------------*
   $2F Fgetdta   Demande l'adresse du DTA (Disk Transfer Address)
        LONG Fgetdta()
   Retourne l'adresse courante du tampon de stockage des données sur un
   fichier  (DTA), employée  par les  fonctions  Fsfirst() et Fsnext().
   *------------------------------------------------------------------*
   $30 Sversion  Demande le numéro de version du GEMDOS
        WORD Sversion()

   Retourne  le  numéro de version du GEMDOS en format inversé. L'octet
   le plus significatif contient la partie basse du  numéro, l'octet le
   moins significatif, la partie haute.

   REMARQUES
        La version du GEMDOS sur disquette du 29/5/85 et la  première  
        version en ROM du 20/11/85 ont $1300 comme numéro.
     
        Les  numéros  de  version  du  GEMDOS et du TOS ne sont PAS les
        mêmes. (cf. LE MANUEL DE REFERENCE DU BIOS DU ST pour le numéro
        de version du TOS).
   *------------------------------------------------------------------*
   $31 Ptermres  Finit un programme qui reste résident
        void Permres( nbrest,coderet)
        LONG nbrest;
        WORD coderet;

   Finit  le  programme  courant, en conservant une part de sa mémoire.
   'nbrest'  le   est   nombre d'octets appartenant  au  programme  qui
   doivent être gardés,  comprenant et commençant à la page de  base.
   'coderet' est  le  code  de  sortie  qui  est  retourné au programme
   parent.

   La   mémoire   que le programme a allouée (en plus de sa  zone  TPA)
   N'EST PAS libérée.
   Il est impossible de rappeler le programme terminé par Ptermres().

   REMARQUE 
        Les fichiers ouverts sont fermés lors de la fin de processus.
   *------------------------------------------------------------------*
   $36 Dfree     Demande l'espace libre sur un disque
        void Dfree(buf,nbdisq)
        LONG *buf;
        WORD nbdisq;

   Demande  des  informations  sur le disque 'nbdisq' et les place dans
   quatre longs_mots commençant à 'buf':
             __________________________________________________
            |  buf + 0  | nombre de blocs libres sur le disque |
            |-----------|--------------------------------------|
            |  buf + 4  | nombre total de blocs sur le disque  |
            |-----------|--------------------------------------|
            |  buf + 8  | taille d'un secteur en octets        |
            |-----------|--------------------------------------|
            |  buf + 12 | nombre de secteurs par bloc          |
            |___________|______________________________________|

   REMARQUE   Incroyablement lent sur un disque dur (5 à 10 secondes).
   *------------------------------------------------------------------*
   $39 Dcreate   Création d'un sous_répertoire de disque C
        WORD Dcreate(chemin)
        char *chemin;

   'Chemin' pointe  sur  une chaîne terminée par 0 spécifiant le chemin
   du nouveau répertoire.
   RETOUR
        0 en cas de succès;
        ERROR ou le numéro d'erreur approprié en cas d'échec.
   *------------------------------------------------------------------*
   $3A Ddelete   Efface un sous_répertoire
        WORD Ddelete(chemin)
        char *chemin;
   Efface   un   répertoire   qui  doit être  vide  (il  peut toutefois
   comporter  les  fichiers  spéciaux "." et ".."). 'chemin' pointe sur
   une  chaîne  terminée par zéro, spécifiant le chemin du répertoire à
   effacer.

   RETOUR   0 en cas de succès;
            ERROR ou le numéro d'erreur approprié en cas d'échec.
   *------------------------------------------------------------------*
   $3B Dsetpath  Fixe le répertoire courant
        WORD Dsetpath(chemin)
        char *chemin;
   Fixe   'chemin',  (une  chaîne  terminée  par   0), comme répertoire
   courant.  Si  le  chemin commence par une lettre identificatrice  de
   disque suivie de deux-points, le répertoire courant est placé sur le
   lecteur spécifié.

   Le système conserve un répertoire courant pour chaque lecteur.

   RETOUR   0 en cas de succès;
            ERROR ou le numéro d'erreur approprié en cas d'echec.
   *------------------------------------------------------------------*
   $3C Fcreate   Création d'un fichier
        WORD Fcreate(nomfich,attribs)
        char *nomfich;
        WORD attribs;
   Crée  un  fichier 'nomfich' et retourne  son  identificateur,  non
   standard,  d'écriture seule. Le mot d'attributs est stocké dans le
   répertoire; les bits d'attributs sont :
         _________________________________________________________
        |  masque |       description                             |
        |---------|-----------------------------------------------|
        | $01    | fichier créé en lecture seule                  |
        | $02    | fichier transparent au répertoire              |
        | $04    | fichier système                                |
        | $08    | fichier contenant un nom de volume sur 11 bits |
        |________|______________________________________-_________|

   RETOUR
        Un nombre positif, l'identificateur ou :
        ERROR ou le numéro d'erreur approprié.

   REMARQUES
        Si  le bit de lecture seule est positionné,  un identificateur 
        d'écriture seule est retourné, et, de plus, cet identificateur 
        ne permet pas d'écrire.

        Théoriquement, un  seul  numéro  de  volume  est  permis sur un
        répertoire  racine.  Le  GEMDOS  n'impose  rien de tel, ce  qui
        peut causer quelque confusion.
   *------------------------------------------------------------------*
   $3D Fopen     Ouverture d'un fichier
        WORD Fopen(nmfich,mode)
        char *nmfich;
        WORD mode;
   Ouvre  le  fichier 'nmfich' en mode 'mode' et retourne son identifi-
   cateur non standard. Le mode d'ouverture peut être:
                      ____________________________
                     | mode |     description     |
                     |------|---------------------|
                     | 0    | lecture seule       |
                     | 1    | écriture seule      |
                     | 2    | lecture et écriture |
                     |______|_____________________|

   RETOUR
        Un nombre positif, l'identificateur
        Un numéro d'erreur négatif.
   *------------------------------------------------------------------*
   $3E Fclose    Fermeture d'un fichier
        WORD Fclose(idfich)
        WORD idfich;
   Ferme le fichier dont l'identificateur est 'idfich'.

   RETOUR   0 en cas de succès;
            ERROR ou un numéro d'erreur approprié en cas d'échec.
   *------------------------------------------------------------------*
   $3F Fread     Lecture sur un fichier
        LONG Fread(idfich,nbre,buffer)
        WORD idfich;
        LONG nbre;
        char *buffer;

   Lit  'nbre' octets dans le fichier d'identificateur  'idfich',  et
   les place en mémoire à partir de l'adresse 'buffer'.

   RETOUR
        Le nombre d'octets réellement lus, ou:
        0 si code de fin de fichier,
        Un numéro d'erreur négatif.
   *------------------------------------------------------------------*
   $40 Fwrite    Écriture sur un fichier
        LONG Fwrite(idfich,nbre,buffer)
        WORD idfich;
        LONG nbre;
        char *buffer;

   Écrit  'nbre' octets  de la mémoire à partir de l'adresse  'buffer',
   dans le fichier ayant comme identificateur 'idfich'.

   RETOUR   Le nombre d'octets réellement écrits en cas de succès.
            Un numéro d'erreur négatif autrement.
   *------------------------------------------------------------------*
   $41 Fdelete   Effacement d'un fichier
        WORD Fdelete(nomfich)
        char *nomfich;
   Efface le fichier ayant comme nom 'nomfich'.

   RETOUR   0 en cas de succès
            Un numéro d'erreur négatif autrement.
   *------------------------------------------------------------------*
   $42 Fseek     Positionne le pointeur de fichier
        LONG Fseek(offset,idfich,mode)
        LONG offset;
        WORD idfich;
        WORD mode;
   Positionne  le  pointeur dans le fichier défini par l'identificateur
   'idfich'.   'offset' est   un  nombre  signé;   une  valeur positive
   déplace  le pointeur vers la fin du fichier,   une valeur  négative,
   vers le début. Le 'mode' de positionnement peut être :
              _____________________________________________
             | mode  |  Déplacement d'offset octets...    |
             |-------|------------------------------------|
             |    0  | à partir du début du fichier       |
             |    1  | à partir de la position courante   |
             |    2  | à partir de la fin du fichier      |
             |_______|____________________________________|

   RETOUR   La position courante dans le fichier.
            Un numéro d'erreur négatif si erreur.
   *------------------------------------------------------------------*
   $43 Fattrib   Fixe ou demande les attributs d'un fichier
        WORD Fattrib(nmfich,drap,attribs)
        char *nmfich;
        WORD drap;
        WORD attribs;
   'nmfich' pointe  sur un chemin terminé par 0.  Si 'drap' a la valeur
   1, les  attributs  de fichier 'attribs' sont fixés (pas de valeur de
   retour). Si 'drap' est 0, ils sont retournés.

        Les bits d'attributs sont :
         _________________________________________________________
        | masque |               description                      |
        |--------|------------------------------------------------|
        | $01    | fichier  à lecture seule                       |
        | $02    | fichier transparent au répertoire              |
        | $04    | fichier 'système'                              |
        | $08    | fichier contenant un nom de volume (11 octets) |
        | $10    | fichier  sous-répertoire                       |
        | $20    | fichier écrit puis refermé                     |
        |________|________________________________________________|

   REMARQUE   Le  bit  d'archivage, $20, ne  semble  pas  marcher comme
   prévu.
   *------------------------------------------------------------------*
   $45 Fdup      Duplique un identificateur de fichier
        WORD Fdup(idfich)
        WORD idfich;
   L'identificateur 'idfich' doit être un identificateur standard  (0 à
   5). Fdup() retourne  un  identificateur  non  standard (supérieur ou
   égal à 6) qui pointe le même fichier.

   RETOUR   Un identificateur ou :
   EIHNDL   'idfich' n'est pas un identificateur standard
            ENHNDL    Plus d'identificateur non standard
   *------------------------------------------------------------------*
   $46 Fforce    Force un identificateur de fichier
        Fforce(stdh,nonstdh)
        WORD stdh;
        WORD nonstdh;

   Force   l'identificateur  standard 'stdh' à pointer le même  fichier
   ou périphérique que l'identificateur non-standard 'nonstdh'.

   RETOUR   0 si OK
            EIHNDL    identificateur invalide.
   *------------------------------------------------------------------*
   $47 Dgetpath  Demande le répertoire courant
        void Dgetpath(buf,driveno)
        char *buf;
        WORD driveno;
   Le   répertoire  courant pour le lecteur 'driveno' est recopié  dans
   'buf'.  Le   numéro  de lecteur commence à 1 pour le lecteur  A:,  2
   pour le B:, etc..., 0 spécifiant le disque par défaut.

    REMARQUE
   La   taille   maximum   d'un chemin n'est  pas  limitée  par le sys-
   tème. C'est  à  l'application  de  fournir  assez  de  place pour le
   tampon.  128 octets  semblent  suffisants  pour  8 ou 9  sous-réper-
   toires.
   *------------------------------------------------------------------*
   $48 Malloc    Demande d'allocation mémoire
        LONG Malloc(taille)
        LONG taille;
   Si  'taille' est  -1L  ($FFFFFFFF) la fonction retourne la taille du
   plus   grand   bloc   libre  du système.   Autrement si 'taille' est
   différent  de -1L, la fonction essaie d'allouer 'taille' octets pour
   le  programme  en cours.   La fonction retourne un pointeur  sur le 
   début du bloc alloué si tout s'est bien passé,  ou NULL s'il n'exis-
   tait pas de bloc assez grand pour satisfaire la requête.

   REMARQUE
   Un  programme  ne peut avoir, à un instant donné  plus de  20 blocs 
   alloués  par 'Malloc()'.  Dépasser cette  limite  peut désemparer le
   GEMDOS.   (Il  est  cependant  possible  de  faire  le  nombre    de
   'Malloc()' que  l'on  veut  à  condition  de  les   faire suivre par
   l'appel  de  la  fonction  Mfree(),  20 étant  le  nombre maximum de
   fragments qu'un programme peut générer).
   *------------------------------------------------------------------*
   $49 Mfree     Libération de mémoire
        WORD Mfree(adbloc)
        LONG adbloc;
   Libère le bloc mémoire commençant à 'adbloc'.   Le bloc doit être un
   de ceux alloués par Malloc().

   RETOUR
        0 si la libération s'est bien Effectuée.
        ERROR ou le numéro d'erreur approprié sinon.
   *------------------------------------------------------------------*
   $4A Mshrink   Rétrécit la taille d'un bloc alloué
        WORD Mshrink(0,bloc,nouvtail)
        WORD) 0;
        LONG bloc;
        LONG nouvtail;
   Rétrécit  la  taille d'un bloc mémoire alloué.  'bloc' pointe sur la
   page   de  base  d'un programme ou sur un bloc de mémoire alloué par
   Malloc(), 'nouvtail' est la nouvelle taille du bloc.
   Le premier argument du bloc doit être un mot nul.

   RETOUR
        0        si l'ajustement de taille à été réussi.
        EIMBA    si l'adresse du bloc mémoire était invalide.
        EGSBF    si la nouvelle taille demandée était Erronée.

   REMARQUE
        un  bloc  ne peut être que rétréci;  la nouvelle taille du bloc
        doit forcément être inférieure à la précédente.

   N.D.T.:Le   compilateur  'C' Alcyon rajoute, lors de la compilation,
   le   premier  paramètre d'appel '0'.   Il ne faut donc pas le mettre
   dans l'appel de la fonction si l'on  se  sert  de ce compilateur.

   Appel de la fonction avec le 'C' Alcyon :  Mshrink(bloc,nouvtail);
   *------------------------------------------------------------------*
   $4B Pexec     Charge/Exécute un programme
        WORD Pexec(mode,ptr1,ptr2,ptr3)
        WORD mode;
        char *ptr1;
        char *ptr2;
        char *ptr3;

   Cette  fonction  permet  différentes  utilisations  selon le drapeau
   'mode':

        ___________________________________________________________
       |     mode     |     ptr1     |    ptr2     |      ptr3     |
       |--------------|--------------|-------------|---------------|
       | 0: charge et | le fichier à |  le jeu de  |  la chaîne d' |
       |     exécute  |   exécuter   |  commandes  | environnement |
       |--------------|--------------|-------------|---------------|
       | 3: charge    | le fichier à |  le jeu de  | la chaîne d'  |
       |   sans lancer| charger      |  commandes  | environnement |
       |--------------|--------------|-------------|---------------|
       | 4: exécute   | l'adr. de la | (inutilisé) | (inutilisé)   |
       |    uniquement| page de base |             |               |
       |--------------|--------------|-------------|---------------|
       | 5: crée une  | (inutilisé)  |  le jeu de  | la chaîne d'  |
       |  page de base|              |  commandes  | environnement |
       |______________|______________|_____________|_______________|

   Le  nom  du fichier à charger ou à exécuter, 'ptr1', et la chaîne du
   jeu  de  commandes,  'ptr2',  sont des chemins,  terminés par 0.  La
   chaîne   d'environnement   'ptr3',  est  soit  NULL  (0L),  soit  un
   pointeur sur une structure de chaîne de la forme:
                  "chaîne1\0"
                  "chaîne2\0"
                  etc...
                  "chaîne3\0"
                  "\0"

   La  chaîne   d'environnement   peut être n'importe  quel  numéro  de
   chaîne  finie  par un 0,  suivie par une chaîne nulle (un simple 0).
   Le   programme   hérite   d'une copie de  la chaîne  d'environnement
   parente si 'ptr3' est 'NULL'.

   Le   mode   0  (charge et exécute)  chargera  le  fichier  spécifié,
   composera  sa  page de base, et l'exécutera. La valeur retournée par
   Pexec() sera  le  code de sortie du processus enfant (voir  Pterm0()
   et Pterm()).

   Le   mode 3  (charge  sans exécuter)  chargera le  fichier spécifié,
   composera   la  page  de base,  et retournera un pointeur sur  cette
   page de base. Le programme n'est pas exécuté.

   Le   mode 4 (exécute  seulement) reçoit un pointeur sur une page  de
   base.   Le  programme commence son exécution au début de la zone  de
   texte, comme spécifié dans la page de base.

   Le   mode 5  (création d'une page de base)  allouera le  plus  grand
   bloc   libre  de mémoire et créera la plus grande partie de sa  page
   de    base.   Quelques   entrées   comme   la  taille  des  zones de
   texte/données  initialisées/données    non    initialisées  et  leur
   adresse  de base NE SONT PAS installées.  Le programme appelant en a
   la charge.

   Un programme enfant hérite des descripteurs de fichiers  standards
   de  son  parent.  Il  emploie en fait un appel  de  Fdup()  et  de
   Fforce() sur les identificateurs 0 à 5.

   Puisque les ressources système sont alloués lors de la création de
   la  page de base,  le processus engendré DOIT se terminer  en  les
   libérant.  Ceci  est particulièrement important lors  de  l'emploi
   d'overlays.  (voir  'le  livre de cuisine de Pexec' pour  plus  de
   détails sur Pexec()).
   *------------------------------------------------------------------*
   $4C Pterm     Termine un programme
        void Pterm(retcode)
        WORD retcode;
   Termine le programme courant,  ferme tous les fichiers ouverts  et
   libère la mémoire allouée. Retourne 'retcode' au processus parent.
   *------------------------------------------------------------------*
   $4E Fsfirst   Recherche la première occurence d'un fichier
        WORD Fsfirst(fspec,attribs)
        char *fspec;
        WORD attribs;
   Recherche la première occurence  du fichier   'fspec'.   Le spécifi-
   cateur  de  fichier peut contenir des  caractères  spéciaux ('?'  ou
    '*') dans  le  nom  de  fichier  mais  pas dans le chemin de spéci-
   fication. 'attribs' contrôle  le  type  de fichier qu  sera retourné
   par  Fsfirst().   Son format a été décrit  dans la documentation sur
   'Fattrib()'.

   Si   'attribs'  est   à zéro,  les  fichiers  normaux  seront  seuls
   recherchés  (aucun  nom de volume, fichier caché, sous-répertoire ou
   fichier  système  ne sera retourné). Si 'attribs' est positionné sur
   les  fichiers  cachés  ou  sur les fichiers systèmes, alors  ceux_ci
   seront   pris  en  compte  pour la recherche. Si 'attribs' est posi-
   tionné pour trouver un nom de volume,  alors seuls les noms de volu-
   me seront recherchés.

   Lorsqu'un   fichier   est trouvé,  une structure de  44  octets  est
   écrite à l'emplacement pointé par le DTA.
            _________________________________________________
           | offset |  taille  |   contenus                  |
           |--------|----------|-----------------------------|
           | 0 à 20 |          | (réservés)                  |
           |   21   |  octet   | bits d'attributs            |
           |   22   |  mot     | heure de création           |
           |   24   |  mot     | date de création            |
           |   26   |  long    | taille du fichier           |
           |   30   | 14 octets| nom et extension du fichier |
           |________|__________|_____________________________|

   Le  nom  de fichier et son extension se terminent  par  0,  et  ne
   contiennent pas d'espaces.
   RETOUR   0 si le fichier a été trouvé
            EFILNF     si   le   fichier n'a pas été trouvé,     ou  le
            numéro d'erreur approprié.
   *------------------------------------------------------------------*
   $4F Fsnext    Recherche des occurences suivantes
        WORD Fsnext()
   Recherche   les   occurences suivantes  d'un  fichier.  La  première
   occurence  devra  être recherchée par Fsfirst().  Les octets de 0  à
   20 doivent  rester  inchangés depuis l'appel de Fsfirst() ou  depuis
   le dernier appel de Fsnext().

   RETOUR   0 si le fichier a été trouvé
        ENMFIL     s'il  n'y a plus de fichiers trouvés,  ou le  numéro
        d'erreur approprié.
   *------------------------------------------------------------------*
   $56 Frename   Renomme un fichier
        WORD Frename(0,ancnom,nouvnom)
        WORD) 0;
        char *ancnom;
        char *nouvnom;
   Renomme  un  fichier 'ancnom' en 'nouvnom'.  Le nouveau nom ne  doit
   pas déjà exister mais peut être dans un autre répertoire.

   Le premier paramètre doit être 0 (mot).

   RETOUR   0         si OK
            EACCDN    si le nouveau nom existe déjà
            EPTHNF    si l'ancien nom n'a pas été trouvé
            ENSAME    si l'identificateur de disque (A,B,..) n'est  
                      pas le même pour les deux noms.
   *------------------------------------------------------------------*
   $57 Fdatime   Fixe ou demande le moment de création d'un fichier
         void Fdatime(idfich,pttemp,drap)
        WORD idfich;
        LONG pttemp;
        WORD drap;
   Le  fichier  est reconnu par son identificateur  'idfich'.  'pttemp'
   pointe   sur  deux mots contenant l'heure et la date en  format  DOS
   (l'heure se trouve dans le premier mot,  la date dans le  second).

   Si  'drap' est à 1,  la date et l'heure sont placées dans le fichier
   à partir de 'pttemp'.

   Si   'drap' est  à  0, la date et l'heure sont lues et placées  dans
   'pttemp'.
   *------------------------------------------------------------------*

Back to ASM_Tutorial