Les fonctions du XBIOS

 

Les fonctions du BIOS sont appelables grâce à l'instruction TRAP #13 en assembleur ou par la fonction BIOS en GFABASIC.

Certaines de ces fonctions utilisent des handles pour les périphériques. Voici la liste des handles utilisables:

Handle N°

Périphérique associé:

0

PRT: Imprimante

1

AUX: RS232

2

CON: Ecran

3

MIDI: …

4

IKBD: Clavier

D'autres fonctions accèdent aux unités de disques. Ces unités de disques sont différenciées les unes des autres par un numéro et non pas par une lettre comme on peut le voir sur le bureau par exemple.

La correspondance est alors la suivante:

Le lecteur A: à pour valeur 0

Le lecteur B: à pour valeur 1

Le lecteur C: à pour valeur 2

Et ainsi de suite.

A noter (ou pour rappel):

Si physiquement, il n'y a qu'un lecteur de disquette, le système va créer un lecteur A: mais aussi un lecteur logique B: (pour faciliter les copies de fichiers par exemple) qui utilisera lui aussi le lecteur présent physiquement. Lors d'un accès à un de ces deux lecteurs logiques, il y aura éventuellement affichage d'un message demandant de changer la disquette A du lecteur par la B ou inversement (cf. code erreur BIOS n° -17).

Et ceci m'amène justement à parler des différents codes erreurs du BIOS:

Code

Définition

Libellé

0

E_OK

Tout est OK

-1

ERROR

Erreur

-2

EDRVNR

Lecteur de disquette non prêt

-3

EUNCMD

Commande inconnue

-4

E_CRC

Erreur de CRC

-5

EBADRQ

Mauvaise requète

-6

E_SEEK

Erreur durant le déplacement des têtes

-7

EMEDIA

Média inconnu

-8

ESECNF

Secteur non trouvé

-9

EPAPER

Plus de papier

-10

EWRITF

Erreur en écriture

-11

EREADF

Erreur en lecture

-12

?

?

-13

EWRPRO

Média protégé en écriture

-14

E_CHNG

Détection d'un changement de média

-15

EUNDEV

Périphérique inconnu

-16

EBADSF

Erreur durant le formatage

-17

EOTHER

Insérez un autre disque

 

 

 

Liste des fonctions du BIOS:

00 Initmous

Initialisation du gestionnaire de la souris

En entrée:

word contient le type d'action

Valeur

Désignation

0

Désactivation souris

1

Activation de la souris en mode relatif

2

Activation de la souris en mode absolu

3

Inutilisé

4

Activation de la souris en mode clavier

long pointeur vers un bloc de paramètre défini comme suit:

1 octet indiquant que la souris est en 0 en haut (1) ou en bas (0)

1 octet pour définir le mode de fonctionnement des boutons de la souris

1 octet définissant le facteur de xparam

1 octet définissant le facteur de yparam

D'autres octets peuvent compléter ce bloc en fonction du mode choisi

 

long pointeur sur une routine lancée par la fonction rapport de souris (MOUSE REPORT) du processeur clavier.

 

01 Ssbrk

Réserve un certain nombre d'octets en haut de mémoire. Cette fonction est prévue pour être appelée avant l'initialisation du DOS.

En entrée:

word contient le nombre d'octets à réserver.

 

En sortie:

D0.L contient l'adresse à partir de laquelle les octets sont réservés.

 

02 Phybase

Indique l'adresse physique de la mémoire écran

En sortie:

D0.L adresse physique de la mémoire écran

 

03 Logbase

Indique l'adresse logique de la mémoire écran

En sortie:

D0.L adresse logique de la mémoire écran

 

04 Getrez

Indique le mode de résolution

En sortie:

D0.L contient 0 pour basse, 1 pour moyenne et 2 pour haute résolution

 

05 Setscreen

Positionne les paramètres de l'écran. Les valeurs négatifs ne changeant pas la valeur actuelle du paramètre correspondant.

En entrée:

long pour l'adresse logique

long pour l'adresse physique

word pour le mode résolution (0,1 ou 2)

 

06 Setpalette

Permet de modifier les couleurs de la palette du ST

En entrée:

long pointeur sur une zone de 16 mots de 16 bits qui définissent les 16 couleurs

 

07 Setcolor

Permet de modifier la couleur d'un registre de couleur

En entrée:

word numéro du registre de couleur à affecter

word définit la couleur de ce registre

 

En sortie:

D0.W contient l'ancienne couleur

 

08 Floprd

Lecture d'un ou plusieurs secteurs de l'unité de disquette

En entrée:

long adresse du tampon qui recevra le résultat de la lecture. ATTENTION, le tampon devra être suffisement grand et bien sûr commencer sur une adresse pair !

long inutilisé

word numéro d'unité (0 ou 1)

word numéro du premier secteur à lire

word n° de la piste ou commence la lecture

word n° de la face (0 ou 1)

word Nombre de secteur à lire

 

En sortie:

D0.L contient un compte rendu d'erreur ou 0 si l'opération est réussie.

 

09 Flopwr

Ecriture d'un ou plusieurs secteur de l'unité de disquette

En entrée:

long adresse du tampon quicontiendra les données à écrire. ATTENTION, le tampon devra être suffisement grand et bien sûr commencer sur une adresse pair !

long inutilisé

word numéro d'unité (0 ou 1)

word numéro du premier secteur à écrire

word n° de la piste ou commence l'écriture

word n° de la face (0 ou 1)

word Nombre de secteur à écrire

 

En sortie:

D0.L contient un compte rendu d'erreur ou 0 si l'opération est réussie.

 

Remarque:

Si on écrit sur le secteur BOOT, le système détectera un changement de média après invocation de RWABS ou MEDIACH

 

0A Flopfmt

Formatage d’une disquette

En entrée :

Long pointeur vers un tampon d’au moins 8 k

Long inutilisés

Word numéro du lecteur (0 pour A : et 1 pour B J

Word Nombre de secteur par piste

Word Numéro de piste (0 à 79)

Word Numéro de face (0 ou 1)

Word Facteur d’entrelacement (Normalement 1)

Long nombre magic $87654321

Word Valeur qui sera ecrite dans chaque octet de chaque secteur formaté (Habituellement E5E5)

 

En sortie :

D0.L contient 0 si l’opération est réussie et un code d’erreur dans le cas contraire. Le tampon contiendra une liste non trié des secteurs défectueux.

Le formatage implique un changement de média après invocation de RWABS ou MEDIACH

 

0B Inutilisée !

 

0C Midiws

Ecriture d’une chaîne de caractères sur le port MIDI

En entrée :

Word contient le nombre de caractères à écrire moins un.

Long pointeur sur la chaîne de caractères

 

0D MFPOINT

Positionne un vecteur d'interruption interne (0 à 15) du MFP à une adresse précise

En entrée:

word pour indiquer le n° du vecteur
long adresse à positionner pour ce vecteur

0E IOREC

Donne un pointeur sur un spécificateur de tampon d'un périphérique d'entrée.

En entrée:

word qui contient le numéro de périphérique (0 pour RS232, 1 pour le clavier et 2 pour le MIDI)

En sortie:
Le spécificateur de tampon dont la structure est la suivante:

long adresse du tampon
word taille du tampon
word index de début (prochaine position du traitement)
word index de fin (qui peut être identique à index de début si la tampon est vide)
word marqueur de niveau inférieur (autorisation de poursuite de transmission ou XON)
word marqueur de niveau supérieur (inhibition de poursuite de transmission ou XOFF)

Si le périphérique est le RS232, un descritpteur de tampon de sortie (ayant la même structure que le tampon d'entrée) va suivre le descripteur de tampon d'entrée.

0F RSCONF

Configurer le port RS232

En entrée:

word Vitesse de transmission suivant les valeurs suivantes:
0 = 19200 1 = 9600 2 = 4800 3 = 3600
4 = 2400 5 = 2000 6 = 1800 7 = 1200
8 = 600 9 = 300 A = 200 B = 150
C = 134 D = 110 E = 75 F = 50

word mode de contrôle du flux
0 pas de contrôle
1 XON/XOFF
2 RTS/CTS
3 XON/XOFF et RTS/CTS

word valeur du regsitre UCR du MFP
word valeur du regsitre RSR du MFP
word valeur du regsitre TSR du MFP
word valeur du regsitre SCR du MFP

10 KEYTBL

Positionne les pointeurs vers les tables de transcodage du clavier.

En entrée:

long pointent vers la table de transcodage des touches normales, les 4 suivants vers la table de transcodage des touches utilisées avec les touches shift et les 4 derniers
vers la table de transcodage des touches lorsque CAPS LOCK est positionnée.

En sortie:

D0.L l'adresse d'une table qui contient les adresses successives des trois pointeurs. Chaque table ayant une longueur de 128 octets.

11 RANDOM

Retourne un nombre pseudo-aléatoire

En entrée: Rien

En sortie: D0.L contient un nombre aléatoire sur 24 bits. L'octet le plus significatif vaut 0.

12 PROTOBT

Construction d'une image du secteur BOOT.

En entrée:

long : Adresse d'un tampon de 512 octets (Taille d'un secteur Boot)
long : Doit contenir un numéro de série. En principe il doit être unique, car il s'agit du seul moyen pour le ST de détecter un changement de disque. Si plusieur boot ont le même n° de série, alors le système ne détectera pas un éventuellement changement d'où des risques de mélange de données lors de la maj sur le disque !

word : Type du disque

ou -1 si le type ne doit pas être modifié

Valeur désignation
0 40 pistes, simple face
1 40 pistes, double face
2 80 pistes, simple face
3 80 pistes, double face
-1 Le type ne doit pas être changé

word : Sémaphore d'exécution:Indique si le secteur boot doit être exécutable (1) ou non (0)

En sortie: rien

13 FLOPVER

Permet de vérifier 1 ou plusieurs secteurs du disque

En entrée comme en sortie, les paramètres sont identiques à la fonction 8

 

14 SCRDMP

Impression de l'écran

En entrée: rien

En sortie: rien

 

15 CURSCONF

Permet de lire ou de modifier les attributs du curseur

En entrée:

word -1 pour lire, une autre valeur indiquant la nouvelle vitesse de clignotement. (vitesse basé sur la vitesse du balayage vertical)

word attributs du curseur:

Valeur Désignation
-1 Ne rien faire
0 Curseur Clignotant
1 Curseur fixe
2 Curseur inhibé

En sortie: D0.L : Le poid fort contient la valeur de la vitesse clignotante lue ou l'ancienne si maj.

Le poid faible contient l'attribut du curseur lu ou l'ancienne valeur si maj.

 

16 SETTIME

Positionne la date et l'heure. Bon l'intérêt sur un ST n'est pas des plus important, puisqu'il n'y a pas de batterie pour garder cette date et cette heure lorsque vous éteignez votre machine...

long qui contient la date sur les 16 bits de poids fort et l'heure sur les 16 bits de poids faible.

En sortie : rien

 

17 GETTIME

Lecture de la date et de l'heure...même remarque que la fonction précédente...

En entrée: rien

En sortie: D0.L contient la date sur les 16 bits de poids fort et l'heure sur les 16 bits de poids faible.

 

18 BIOSKEYS

Repositionner les valeurs initiales de transcodage du clavier

En entrée: rien

En sortie: rien

 

19 IKBDWS

Ecriture d'une chaîne de caractères vers le crontôleur intelligent du clavier.

En entrée:

word qui contient le nombre de d'octets à écrire

long qui contient l'adresse de la chaîne à transmettre.

 

En sortie: rien

1A JDISINT

Permet d'empêcher une interruption.

En entrée:

word qui est le numéro de l'interruption à empêcher.

En sortie: rien

 

1B JENABINT

Autoriser l'interruption désignée.

En entrée:

word qui est le numéro de l'interruption à activer.

En sortie: rien

 

1C GIACCASS

Lecture ou écriture d'un registre du générateur sonore

En entrée:

byte qui sera la donnée à écrire

word pour le numéro de registre à lire ou écrire.

Image non trouvée !le bit 7 de ce mot devant être à 0 pour une lecture, à 1 pour une écriture.

 

En sortie:

D0.L contient la donnée lue si l'opération demandée est une lecture !