Passer des paramètres à un programme sur Atari ST

 

Lorsque vous lancez un programme soit en cliquant sur le bureau, ou soit en lançant la commande GEMDOS exec dans votre programme, il est possible de passer des paramètres à celui-ci.

Le séparateur d'arguments est en général l'espace.

La récupération de paramètres peut se faire sur un .PRG, .TOS ou un .TTP.

Sur Atari ST, c'est le .TTP qui est prévu principalement pour la réception de paramètres.

 

Le système va copier au moment de l'exécution du programme les arguments dans la page de base du programme fils.

Cette chaîne de caractères correspondant aux paramètres doit se terminer par 0 et ne doit pas dépasser 125 caractères.

 

Depuis le code nouvellement chargé, vous récupèrez les paramètres dans la page de base (si vous ne voyez pas de quoi je parle, il est urgent d'aller voir les différents type de programmes exécutables du ST et page de base).

Ces paramètres sont situés à l'offset $81 de la page de base. l'offset $80 contiendra la taille en caractère des paramètres passés.

Si vous avez besoin de plus de 125 caractères, eh bien...

- soit vous utiliser un fichier et vous passez le nom du fichier en argument. Bien entendu, le fils devra être capable de traiter ce fichier !

- soit vous passez un pointeur vers une adresse mémoire dans laquelle il y aura tous les arguments de la taille que vous voulez. Mais là aussi votre programme fils devra être capable de l'interpréter !

 

Image non trouvée !La DTA est par défaut positionnée à l'offset $80 de la page de base. Par conséquent, un appel aux fonctions GEMDOS Fsfirst() et Fsnext() vont effacer la ligne de commandes.

Si vous ne voulez pas perdre cette ligne de commandes, il faudra au préalable modifier l'adresse de la zone mémoire utilisée pour la DTA (Voir fonction GEMDOS Fsetdta().

 

Voici un exemple de programme affichant les paramètres qui lui sont passés:

Image non trouvée !

Remarque:

Sur le code:

Le début du code récupère la page de base et redimensionne la mémoire allouée au programme. (voir réorganiser la TPA)

Puis récupération de la chaîne de caractères et affichage grâce à la fonction 9 du GEMDOS.

Enfin attente de la saisie d'une touche avant de quitter le programme.

 

Si votre assembleur vous le permet, passer les paramètres avant d'exécuter le programme.

Sinon, soit vous assemblez le code et vous générez un .TTP (toujours si votre assembleur vous le permet)

Enfin, rien ne marche. Dans ce cas, vous assembler/linker normalement, vous obtenez un .PRG renommez ce programme en .TTP et lancez le sous le bureau. Vous obtiendrez une fenêtre vous demandant de saisir les paramètres à passer au programme.

 

Voici enfin un code similaire au premier et prouvant surtout que la DTA est bien par défaut en plein dans la zone correspondant à la ligne de commandes, puisque cette fois-ci, il y a récupération de l'adresse de la ligne de commandes en demandant l'adresse de la DTA (Voir fonction GEMDOS Fgetdta( )).

Image non trouvée !