Commandes de gestion de fichiers
Le contenu de la RAM est détruit chaque fois que vous éteignez votre Amiga. Vous devez entreposer tout ce que vous souhaitez enregistrer sur le disque dans un fichier. ABasiC propose trois types de fichiers disque :
- L'interpréteur ABasiC et le système d'exploitation AmigaDOS fournis avec votre Amiga.
- Les programmes ABasiC que vous écrivez, enregistrez, exécutez,...
- Les fichiers de données utilisés par les programmes ABasiC.
Les commandes de gestion de fichiers gèrent les communications entre ABasiC et le système d'exploitation disque, AmigaDOS. Vous pouvez inclure n'importe laquelle de ces commandes dans un programme ABasiC.
ASK WINDOW
ASK WINDOW width%, height% |
Utilisez la commande ASK WINDOW pour connaître la taille de la fenêtre de sortie actuelle. ASK WINDOW place la largeur (en pixels) dans la première variable entière que vous spécifiez et la hauteur dans la deuxième variable entière. Par exemple, les lignes suivantes obtiennent et affichent la taille de la fenêtre de sortie actuelle :
- 100 ASK WINDOW wide%, high%
- 110 PRINT wide%, high%
Lorsque vous exécutez le programme, le résultat (pour une fenêtre de 220 x 100) est :
220 100BLOAD
BLOAD "file-name", address% |
Utilisez la commande BLOAD pour charger un fichier binaire en mémoire à l'adresse spécifiée. Vous devez vous assurer que l'adresse est une zone de mémoire sûre, c'est-à-dire qu'elle n'écrase aucun programme ni ses variables, tableaux, tampons de fichiers,... Pour la plupart des applications, vous pouvez déclarer un tableau d'entiers et utiliser le paramètre du tableau. première cellule pour l'adresse de chargement du fichier.
Lorsque BLOAD s'exécute, il recherche dans le fichier un entête de 12 octets créé par ABasiC lors de l'enregistrement du fichier. (Voir la commande BSAVE pour une description de l'entête.)
Vous devez utiliser BLOAD pour tous les programmes créés par l'assembleur ou un autre compilateur de langage de haut niveau. Vous devez charger le fichier avant de l'appeler. Vous n'avez pas besoin d'utiliser BLOAD pour charger les routines de la bibliothèque résidente. ABasiC n'a pas d'équivalent en fichier binaire de :
RUN "file-name" |
commande (c'est-à-dire une commande chargeant et exécutant un fichier binaire).
Lorsque vous exécutez le programme, ABasiC charge GRAPH_OBJ dans le tableau BACKGRD%.
BSAVE
BSAVE "file-name", address%, length% |
Utilisez la commande BSAVE pour enregistrer le fichier binaire spécifié sous une forme que les programmes ABasiC peuvent charger et utiliser. L'adresse que vous spécifiez est l'emplacement où le fichier commence en mémoire et la longueur est le nombre d'octets du fichier. L'adresse et la longueur doivent être des nombres entiers.
ABasiC attribue automatiquement un entête de 12 octets à tout fichier que vous enregistrez avec BSAVE. ABasiC utilise ensuite l'entête lors du chargement du fichier. Le format de l'entête est :
Taille | Description |
---|---|
4 octets | Identification du fichier (générée en interne) |
4 octets | Adresse à partir de laquelle le fichier a été enregistré |
4 octets | Longueur du fichier (en octets) |
Vous trouverez ci-dessous un exemple de BSAVE :
CHAIN
CHAIN "file-name" [line-number] [, ALL] |
La commande CHAIN permet à un programme ABasiC résident (le programme actuellement en mémoire) de se remplacer par un autre programme ABasiC du disque. Vous pouvez également transmettre des variables de l'ancien programme au nouveau avant son exécution.
Le programme chaîné s'exécute dès qu'il est chargé. Si vous spécifiez le numéro de ligne facultatif, l'exécution commence à cette ligne ; sinon, le programme démarre à la première instruction exécutable. (N'oubliez pas de modifier la référence du numéro de ligne si vous renumérotez les lignes dans le programme chaîné.)
Le mot-clef facultatif ALL indique à ABasiC de conserver toutes les variables du programme pour qu'elles soient utilisées par le programme entrant. Si vous omettez ce mot-clef, vous devez utiliser la commande COMMON pour spécifier les variables que le programme entrant utilisera. Remarque : Vous ne devez pas utiliser le mot-clef ALL si vous souhaitez que votre programme soit compatible avec les programmes ABasiC compilés.
- CHAIN "CALCS3"
- CHAIN "NEWPROG", 1200, ALL
Le premier exemple charge et exécute le programme «CALCS3» ; cela suppose qu'une instruction COMMON distincte nomme les variables à conserver. Le deuxième exemple charge «NEWPROG», en commençant l'exécution à la ligne 1 200 ; il transmet toutes les variables du programme au programme entrant.
CHAIN MERGE
CHAIN MERGE "file-name" [,line-number] [,DELETE line-number - line-number] |
La commande CHAIN MERGE vous permet de chaîner un programme sans écraser complètement le programme résident. En d'autres termes, il gère les superpositions, étant des segments de programme échangés dans et hors de la RAM par un programme de contrôle lorsque la mémoire est rare. (Voir aussi la commande système MERGE.) CHAIN MERGE enregistre toutes les variables, instructions et options.
Si vous exécutez une commande CHAIN MERGE dans un sous-programme, elle préserve la pile du sous-programme (l'adresse de retour,...). Vous pouvez éventuellement supprimer une ligne ou une intervalle de numéros de ligne dans le programme résident lorsque vous fusionnez les deux programmes. Vous devez vous assurer de ne pas supprimer la ligne à laquelle un tel sous-programme doit revenir.
Le mot clef ALL n'est pas valide avec la commande CHAIN MERGE. CHAIN MERGE préserve le paramètre OPTION BASE le plus récent.
Remarque : Vous ne devez pas utiliser la commande CHAIN MERGE si vous souhaitez que votre programme soit compatible avec les programmes ABasiC compilés.
- 20 CHAIN MERGE "SUBP2", 1500, DELETE 2500-
Lorsque vous exécutez le programme, la superposition «SUBP2» fusionne avec le programme résident. Le programme supprime les lignes 2500 jusqu'à la fin de l'ancien programme et l'exécution commence à la ligne 1500.
CMD
CMD [file-number] |
La commande CMD vous permet de rediriger la sortie du programme vers un périphérique spécial, tel qu'une fenêtre personnalisée ou un fichier de données. Habituellement, ABasiC répertorie les programmes et affiche les résultats dans une seule fenêtre (l'écran entier). Vous pouvez ouvrir une fenêtre personnalisée de la taille et de la position d'écran souhaitées dans la fenêtre par défaut (voir la commande WINDOW), en associant la fenêtre personnalisée à un numéro de fichier. Utilisez ensuite la commande CMD pour acheminer la sortie vers cette fenêtre.
ABasiC traite tous les périphériques externes (par exemple, l'imprimante ligne) comme des fichiers. Pour acheminer la sortie du programme vers un périphérique autre que l'écran du moniteur, vous devez ouvrir le périphérique en tant que fichier et lui associer un numéro de tampon de fichier. L'écran du moniteur porte le numéro de fichier 0.
Une fois la fenêtre ou le «fichier» ouvert, utilisez la commande CMD pour y acheminer la sortie du programme. Par exemple, la sortie de commandes graphiques ou le texte d'une instruction PRINT ordinaire peut apparaître dans cette fenêtre ou ce fichier. Suivez la commande CMD avec le numéro de fichier, qui est un entier compris entre 0 et 15. (Le signe dièse est facultatif.)
Si vous spécifiez un nombre négatif, la sortie est envoyée à la fois à l'écran et au périphérique attribué au numéro de tampon de fichier étant la valeur absolue de le paramètre. Par exemple :
- CMD -4
envoie la sortie à l'écran ainsi qu'au périphérique que vous avez attribué au tampon de fichier numéro 4. Lorsque vous souhaitez qu'ABasiC reprenne l'envoi de la sortie à la fenêtre par défaut, exécutez une autre commande CMD sans paramètre ou avec un paramètre de 0. Notez qu'ABasiC exécute automatiquement une instruction CMD 0 lorsque vous fermez une fenêtre ou un périphérique.
La commande CMD envoie uniquement la sortie générée par un programme en cours d'exécution ou une instruction de mode immédiat. Cela signifie que vous ne pouvez pas acheminer les sorties des commandes système, telles que les listes de programmes ou les informations de débogage, de cette manière.
Vous trouverez ci-dessous des exemples de programmes permettant d'acheminer la sortie vers une fenêtre personnalisée, un fichier de données et l'imprimante ligne.
Lorsque vous exécutez le programme, le résultat est :
Lorsque vous exécutez le programme, le texte de la ligne 70 est entreposé dans le fichier de données séquentielles MYFILE.
Lorsque vous exécutez le programme, toutes les sorties entre les lignes 210 et 250 sont envoyées à l'imprimante de lignes. La ligne 250 redirige la sortie vers l'écran du moniteur.
COMMON
COMMON variable [ , variable...] |
Utilisez la commande COMMON pour nommer la ou les variables à transmettre à un programme chaîné. (Voir la commande CHAIN.) La commande CHAIN inclut un mot-clef facultatif, ALL. Lorsque vous l'utilisez, toutes les variables du programme sortant sont partagées avec le programme entrant. Si vous n'utilisez pas le mot-clef ALL, vous devez utiliser COMMON pour indiquer les variables spécifiques partagées par les deux programmes.
Bien que la commande COMMON puisse apparaître n'importe où dans votre programme, il est conseillé de la placer au début ou près du début. COMMON doit s'exécuter avant l'instruction CHAIN qu'il affecte.