INT 10H

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

INT 10H ou INT 16 est une interruption logicielle fournie par le BIOS, le 17e vecteur d'interruption d'un ordinateur à base d'un processeur x86, utilisée pour la gestion de l'affichage et des modes vidéo. Pour appeler une fonction de cette interruption, il faut mettre le numéro de la fonction désirée dans le registre AH, éventuellement charger les arguments dans les autres registres et invoquer l'interruption.

Bien que cette routine soit utile, voire indispensable, pour certains réglages peu fréquents (par exemple, changer de mode vidéo), elle est relativement lente, et la plupart des programmes préfèrent accéder à la mémoire vidéo directement plutôt que d'appeler l'interruption pour chaque pixel à afficher.

Fonctions disponibles[modifier | modifier le code]

Fonction Numéro de fonction Arguments Retours de la fonction
Changer de mode d'affichage AH=00h AL = Numéro du mode désiré AL = Informations sur le mode vidéo / Registre interne
Changer la forme du curseur AH=01h CH = Partie haute du curseur, CL = Partie basse du curseur

Le curseur se décompose en 7 lignes affichées ou non. Par exemple, CH=00h et CL=07h est un curseur plein. De plus, le bit 5 du registre CH est parfois utilisé pour cacher le curseur.

Certaine cartes graphiques représentent le curseur comme 16 lignes au lieu de 7, numérotées de 0h à 0Fh.

Enfin, certaines cartes graphiques ignorent le bit 5 de CH. Pour masquer le curseur, il faut alors définir un début de curseur (dans CH) plus grand que sa fin (contenue dans CL).

Définir la position du curseur AH=02h BH = Numéro de page, DH = Ligne, DL = Colonne
Obtenir la position et l'apparence du curseur AH=03h BH = Numéro de page AX = 0, CH = Partie haute du curseur, CL = Partie basse du curseur, DH = Ligne, DL = Colonne
Lire la position du crayon optique (Ne fonctionne pas sur le matériel VGA) AH=04h AH = État (0=Relâché, 1=Sur l'écran), BX = Position en X (en pixels), CH = Position en Y (en pixels), CX = Numéro de ligne de pixel pour les modes 0Fh et 10h, DH = Position en Y (en caractères du mode texte), DL = Position en X (en caractères du mode texte)
Sélectionner la page d'affichage AH=05h AL = Numéro de page
Remonter l'écran AH=06h AL = Nombre de ligne à remonter (0 = Ne pas remonter, CH, CL, DH, DL sont utilisés),

BH = Couleur CH = Ligne du haut, CL = Colonne de gauche, DH = Ligne du bas, DL = Colonne de droite

Descendre l'écran AH=07h Identique à remonter l'écran
Lire le caractère situé à la position du curseur et ses attributs AH=08h BH = Numéro de page AH = Attributs (Couleur, clignotement, intensité…), AL = Caractère
Écrire un caractère et ses attributs à la position du curseur AH=09h AL = Caractère, BH = Numéro de page, BL = Attributs (Couleur, clignotement, intensité…), CX = Nombre de fois à écrire le caractère
Écrire seulement un caractère à la position du curseur AH=0Ah AL = Caractère, BH = Numéro de page, CX = Nombre de fois à écrire le caractère
Changer la couleur de fond AH=0Bh, BH = 00h BL = Couleur de l'arrière plan
Changer la palette de couleur AH=0Bh, BH = 01h BL = Numéro de palette (À l'origine compatible uniquement pour CGA, mais les cartes graphiques actuelles supportent cette fonction pour presque tous les modes.)
Dessiner un pixel AH=0Ch AL = Couleur du pixel, BH = Numéro de page, CX = x, DX = y
Lire la couleur d'un pixel AH=0Dh BH = Numéro de page, CX = x, DX = y AL = Couleur du pixel
changer le type de sortie AH=0Eh AL = Caractère, BH = Numéro de page, BL = Couleur (Disponible en mode graphique uniquement)
Obtenir le mode vidéo actuel AH=0Fh AL = Mode vidéo
Écrire un chaîne de caractères (EGA+, nécessite un PC AT au minimum) AH=13h AL = Mode d'écriture, BH = Numéro de page, BL = Attributs (Couleur, clignotement, intensité…), CX = Taille de la chaîne, DH = Ligne, DL = Colonne, ES:BP = Adresse (sous forme segment:offset du mode réel) de la chaîne de caractères
Extension VESA VBE AH=4Fh AL = Numéro de sous-fonction VESA, autres registres à remplir en conséquence. AL = 4Fh si la fonction n'est pas supportée

Références[modifier | modifier le code]