AVR-DOS File System ------------------------------------------------------------------------------------------ Commande décrites dans le document AVR-DOS File I-O.txt ------------------------------------------------------- BLOAD, BSAVE, DIR, DISKFREE, DISKSIZE, FILEATTR, FILEDATE, FILEDATETIME, FILELEN, FILETIME, FLUSH, FREEFILE, INITFILESYSTEM, KILL, LINE INPUT, LOC, LOF, WRITE ------------------------------------------------------------------------------------------ Autres commandes ---------------- CLOSE, EOF, GET, INPUT, OPEN, PRINT, PUT, SEEK, ------------------------------------------------------------------------------------------ CLOSE ----- Action : Ferme un fichier précédement ouvert. Syntaxe : CLOSE #channel Remarques Channel : N° du canal à fermer. Ce doit-être une constante positive. Tous les fichiers ouvert doivent-être refermés. Lorsqu'un fichier est refermé, il est "flushé". (Voir la commande FLUSH) ------------------------------------------------------------------------------------------ EOF --- Action : Renvoie le statut de fin de fichier. Syntaxe : bFileEOFStatus = EOF(#bFileNumber) Remarques bFileEOFStatus : (Byte) Variable qui contient le satut de fin de fichier. bFileNumber : (Byte) Numéro du fichier ouvert. Valeur - Status 0 - NOT EOF (Fin de fichier non atteinte) 255 - EOF (Fin de fichier atteinte) En cas d'erreur (N° de fichier érroné), c'est la valeur 255 qui est renvoyée. ------------------------------------------------------------------------------------------ GET --- Action : Lit les données d'un fichier ouvert en mode BINARY. Syntaxe : GET #channel, var GET #channel, var , [pos] [, length] Remarques La commande GET fonctionne en mode BINARY, et vous pouvez lire n'importe quel type de fichier. #channel : Variable numérique ou contante qui contient le n° du fichier ouvert. Var : Variable ou tabeau contenat les valeurs lues dans le fichier. Pos : (Long) Paramètre optionnel qui indique l'adresse du début de lecture. Length : Paramètre optionnel indiquant le nombre d'octets à lire. Le nombre d'octets lus dans le fichier sera adapté à la variable utilisée. - Pour un BYTE, 1 octet sera lu. - Pour un WORD ou un INTEGER , 2 octets seront lus. - Pour un LONG ou un SINGLE, 4 octets seront lus. - Pour un STRING, le nombre d'octet lus, sera égal à la dimension du STRING. Par exemple : DIM S as string * 10 , lira 10 octets. La longeur maximale d'un STRING est de 254 octets. Note : La longeur maximale d'un tableau non-STRING est de 65535. Exemple partiel : GET #1 , var ,,2 ' Lit 2 octets à partir de la position courante dans le fichier. GET #1 , var , PS ' Lit à partir de la position PS dans le fichier. GET #1 , var , PS, 2 ' Lit 2 octets à partir de la position PS dans le fichier. ------------------------------------------------------------------------------------------ INPUT ----- Action : Permet la lecture de variables à partir d'un fichier. Syntaxe : INPUT #ch, var[ , varn ] Remarques Var,varn : Variable qui reçoit la valeur lue (numérique ou STRING). Ch : Constante ou variable contenant le n° du fichier. Lorsque la directive "$BIGSTRINGS" est utilsée, il est possible de lire 65535 octets. Nombre d'octets : - Un BYTE recevra 1 octet. - Un WORD ou un INTEGER recevra 2 octets. - Un LONG ou un SINGLE recevra 4 octets. - Et un DOUBLE en recevra 8. Si la variable est un tableau, un seul élément du tableau sera utilisé. Il est possible d'utiliser un paramètre optionnel supplémentaire pour spécifier le nombre d'octets à lire. Il sera ajouté à la suite de la commande et sera précédé d'un (;). ------------------------------------------------------------------------------------------ OPEN ---- Action : Ouverture d'un fichier. Syntaxe : OPEN file FOR MODE as #channel Remarques file : STRING ou constante contenant le nom du fichier. MODE : Peut-être INPUT, OUTPUT, APPEND or BINARY. Channel : Variable numérique ou constante contenant le n° du fichier. Tout fichier ouvert doit être refermé avec la commande CLOSE. Une seconde ouverture du fichier provoque une erreur. File mode - Description OUTPUT - A utiliser pour créer un fichier ou pour écrire des valeurs ASCII dans un fichier existant. Un fichier .txt veant d'un PC en est un exemple parfait. Dans un fichier ASCII, il y a un CR+LF à chaque fin de ligne. La commande PRINT est utilsée dans ce mode. Si le fichier existe déjà, il sera éffacé. INPUT - Mode utilisé pour la lecture d'un fichier ASCII. L'écriture dans le fichier est interdite dans ce mode. Le fichier doit exister et contenir des valeurs ASCII. La commande LINEINPUT est utilisée pour lire le fichier APPEND - Mode utilisé avec un fichier ASCII existant dans lequel il faudra ajouter des données, sans toucher aux données déjà existantes dans le fichier. Ce mode est typiquement utilisé lors de l'utilisation de fichiers "Log". BINARY - Permet la lecture ou l'écriture de n'importe quelle valeur à n'importe quelle position du fichier. LEs commandes GET et PUT sont utilisée dans ce type de fichier. Action permises en fonction du mode d'ouverture du fichier ---------------------------------------------------------- | Mode d'ouverture utilisé Action |Input|Output|Append|Binary -----------+-----+------+------+------ Attr | X | X | X | X Close | X | X | X | X Put | | | | X Get | | | | X LOF | X | X | X | X LOC | X | X | X | X EOF | X | (1) | (1) | X SEEK | X | X | X | X SEEK-Set | | | | X Line Input | X | | | X Print | | X | X | X Input | X | | | X Write | | X | X | X -----------+-----+------+------+------ (1) : Le pointeur de position est toujours en dernière position ------------------------------------------------------------------------------------------ PRINT ----- Action : Ecrit une chaîne de charactères dans un fichier. Syntaxe : PRINT [#channel , ] var ; " constant" Remarques Var : Contante ou variable à imprimer. Il est possible d'utiliser un point-virgule (;) pour imprimer plusieurs constantes ou variables les une à la suite des autres. Si un point-virgule termine la commande le CR+LF de fin de ligne ne sera pas ajouté. Seule des chaînes de charactères peuvent-être écrite sur un disque (ou une carte). ------------------------------------------------------------------------------------------ PUT --- Action : Ecrit des données dans un fichier ouvert en mode BINARY. Syntaxe : PUT #channel, var PUT #channel, var ,[pos] [,length] Remarques Cette commande, utilisée avec des fichiers ouverts en mode BINARY, permet d'écrire n'importe quel type de données dans un fichier. #channel : Constante ou variable contenant le numéro du fichier à utiliser. Var : Variable ou tableau à écrire dans le fichier. Pos : (LONG) variable optionnelle indiquant la position d'écriture. Length : Paramètre optionnel permettant de définir le nombre d'octets à écrire. Le nombre d'octets écris dans le fichier sera adapté à la variable utilisée. - Pour un BYTE, 1 octet sera écrit. - Pour un WORD ou un INTEGER , 2 octets seront écris. - Pour un LONG ou un SINGLE, 4 octets seront écris. - Pour un STRING, le nombre d'octet écris, sera égal à la dimension du STRING. Par exemple : DIM S as string * 10 , écrira 10 octets. La longeur maximale d'un STRING est de 254 octets. Note : La longeur maximale d'un tableau non-STRING est de 65535. Exemple PUT #1, var ' Ecrit la variable à l'endroit du pointeur PUT #1, var , , 2 ' Ecrit 2 octets à l'endroit du pointeur. PUT #1, var ,PS, 2 ' Ecrit 2 octets à partir de la position PS. ------------------------------------------------------------------------------------------ SEEK ---- Action : Fonction : Renvoie la position de l'octet suivant à lire ou à écrire. Commande : Fixe la position de l'octet suivant à lire ou à écrire. Syntaxe : Fonction : NextReadWrite = SEEK (#bFileNumber) Commande : SEEK #bFileNumber, NewPos Remarques bFileNumber : (BYTE) Numéro du fichier à utiliser. NextReadWrite : (LONG) Position suivante dans le fichier de l'octet à lire ou à écrire. NewPos : (LONG) Nouvelle position du pointeur. Si une erreur arrive, la valeur 0 est renvoyée. L'erreur Dos peut-être vérifiée dans la variable gDOSError. SEEK et LOC semblent semblables, mais en fait, SEEK renvoie la position de l'octet suivant alors que LOC renvoie la dernière position de lecture ou d'écriture. En fait, SEEK = LOC + 1.