Les fonctions GEMDOS, BIOS et XBIOS
Vous trouverez ici la liste des fonctions:
- Du GEMDOS
- DU BIOS
- DU XBIOS
Pour appeler ces fonctions:
- En GFA BASIC:
On utilisera les fonctions
-
GEMDOS(n°fonction[, ou ; paramètre1[, ou ; paramètre 2[, ou ; ...]]])
-
BIOS(n°fonction[, ou ; paramètre1[, ou ; paramètre 2[, ou ; ...]]])
-
XBIOS(n°fonction[, ou ; paramètre1[, ou ; paramètre 2[, ou ; ...]]])
-
ou le nom de la fonction GFA BASIC équivalente.
Vous utiliserez la commande void ou ~ dans le cas où vous n'attendez pas de paramètres de sortie après l'exécution d'une fonction GEMDOS, BIOS ou XBIOS.
Vous utiliserez une variable de type integer (nomvar%) pour récupérer le code en sortie.
Vous utiliserez l: pour indiquer un paramètre LONG (mot long), w: pour un paramètre en word (mot).
- En assembleur:
Vous passerez toutes les informations par la pile, dans le sens inverse des paramètres attendus par la fonction. Normal, ainsi, la fonction va les relire dans le bon sens (La pile est LIFO ! dernier entré, premier sortie...). Vous récupèrez l'information ou un code erreur éventuel dans le registre D0.L
Le GEMDOS est déclenché par TRAP #1
Le BIOS par TRAP #13
Enfin le XBIOS par TRAP #14
Ne pas oublier de corriger le pointeur de pile à la fin de l'appel !
ces fonctions
utilisent les registres: Certains
registres (D0-D2 et A0-A2) peuvent alors être modifiés aux retours
de ces fonctions...
Exemple d'utilisation d'une fonction BIOS en assembleur:
Pour envoyer un caractère sur un périphérique, vous utilisez
la fonction du bios:
03 Bconout
Envoyer un caractère sur un périphérique.
VOID Bconout (int device, int char);
En entrée:
Word: Le handle du périphérique.
Word: Le caractère à envoyer.
En sortie: Rien
Vous passez les différents paramètres sur la pile. Mais attention, comme indiqué ci-dessus : la fonction doit d'abord récupérer le handle de périphérique puis le caractète à envoyer. Donc passer ces paramètres à l'envers pour que le BIOS puisse les relire à l'endroit !
D'où le code:
MOVE.W #'A', -(SP) ; Le caractère A
MOVE.W #0, -(SP); Sur l'imprimante
MOVE.W #3 ; Fonction Bconout
TRAP #13 ; Appel au BIOS
L'ennui, c'est que la pile est chargée de données après l'appel qui ne servent plus. Il faut donc impérativement la corriger (risque de plantage sinon) !
Comment: C'est simple, il suffit de compter le nombre d'octets que placés
sur la pile.
Ici 3 words = 6 octets.
Donc, vous corrigee le pointeur de pile par :
ADDQ.L #6, SP
(Pour rappel : Un mot long (.L) = 4 octets, 1 mot (.W) = 2 octets).
Si vous ne comprenez pas cela, il vous faut impérativement revoir vos
notions d'assembleur !
- En C:
On notera que j'ai mis les appels, ou structure en C. Cependant, je ne peux plus vérifier tout cela, mes disquettes étant foutues Il se peut donc que des erreurs se soient sournoisement glissées dans la doc.