# INT 10H

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.

## Historique

Cette routine a notamment été utilisée dans le BIOS, le DOS et dans VESA qui fonctionnaient en mode réel. Avoir le développement de système d'exploitation plus élaboré, d'autres approches ont été mises en œuvre comme l'utilisation du mode protégé ou encore l'utilisation d'un véritable pilote open source de carte graphique.

## Fonctions disponibles

| 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. Certaines 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 lignes à 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 |
| Écrire un caractère télétype | 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 une 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 |