Вы находитесь на странице: 1из 26

Interruption 0h

Le 8088 dispose des instructions machine DIV et IDIV qui effectuent une division
entière. Les règles arithmétiques usuelles interdisent toute division par zéro. C'est
pourquoi le processeur déclenche dans ce cas une interruption 0. Lors du lancement du
système, le vecteur associé est dirigé par DOS sur une routine qui affiche un message du
genre "Division par zéro", puis revient par IRET au programme interrompu.

Interruption 1h
Cette interruption est appelée par le processeur à la suite de chaque instruction lorsque le
bit TRAP du registre des indicateurs est à 1. Les débogueurs exploitent ce mode pour
pouvoir suivre l'exécution d'un programme. Ils fournissent alors un gestionnaire pour
cette interruption.
Pour éviter qu'elle ne se déclenche à l'intérieur même de la routine d'interruption (ce qui
conduirait à des appels récursifs en nombre infini et au débordement de la pile), le
processeur annule le bit TRAP au début du gestionnaire. Auparavant comme c'est le cas
pour toutes les interruptions, le registre des indicateurs et notamment le bit TRAP aura
été sauvegardé sur la pile.
Dès que la routine d'interruption se termine par une instruction IRET, le processeur
rétablit automatiquement l'ancien contenu du bit TRAP en récupérant sur la pile le
registre des indicateurs. De ce fait, l'interruption 1 sera à nouveau appelée dès que la
prochaine instruction du programme à surveiller aura été exécutée.
Si le programmeur a recueilli toutes les informations nécessaires sur le programme, le
mode TRAP (autrement dit le bit TRAP) peut être désactivé. Mais comment faire, alors
que le programme suivi ne sait pas qu'il est surveillé et ne peut donc pas contenir
d'instruction propre à mettre à zéro le bit TRAP du registre des indicateurs?
La solution de ce problème se trouve encore dans la routine de l'interruption 1. C'est à
elle d'annuler le bit TRAP mais ce n'est pas si simple car ce bit été systématiquement mis
à 0 à l'entrée dans le programme et il sera rempli à la sortie, lors de la récupération du
registre des indicateurs, par l'ancienne valeur 1. Il faut donc avant de sortir de la routine
d'interruption reprendre le registre des indicateurs sur la pile, y annuler le bit TRAP et
remettre ensuite sur la pile, à son emplacement d'origine, le registre des indicateurs. Au
moment de l'instruction IRET, le processeur récupère le registre des indicateurs comme si
de rien n'était, mais le bit TRAP étant cette fois ci à 0, le programme continue son
exécution dans les conditions normales.
Ces possibilités ne sont guère exploitées dans les applications ordinaires. C'est pourquoi
le BIOS fait pointer le vecteur de l'interruption 1 sur un simple IRET, de sorte qu'il ne se
passera rien de spécial si un programme met par hasard le bit TRAP à 1. Le seul effet
sera un ralentissement de l'exécution puisque après chaque instruction l'interruption 1
sera systématiquement invoquée. L'interruption 1 par contre est très utile dans les
programmes de test du genre DEBUG car elle permet de suivre à la trace des
programmes en inspectant une à une les instructions et leurs conséquences.

Interruption 2h
Cette interruption est désignée par le signe NMI qui veut dire "Non Maskable Interrupt".
En conséquence, son exécution ne peut pas être inhibée par l'instruction CLI qui est en
principe chargée de couper court à toute interruption. Dans un PC, l'interruption NMI est
chargée d'attirer l'attention sur les erreurs en mémoire vive qui laissent présager un défaut
de circuit. Il y urgence car une erreur de ce type peut altérer gravement le fonctionnement
du système, et même l'endommager. C'est pourquoi le système déclenche l'interruption
NMI même si toutes les autres sont inhibées
Au moment de l'initialisation du système, le vecteur d'interruption correspondant reçoit la
référence d'une routine du BIOS charger d'afficher un message d'erreur et d'arrêter le
système.

Interruption 3h
Cette interruption est aussi exploitée par les débogueurs. Par rapport à toutes les autres
interruptions, elle présente la particularité de pouvoir être appelée à l'aide d'une
instruction spéciale qui n'appartient qu'à elle seule. Les autres interruptions sont en effet
appelées par une instruction machine sur 2 octets (premier octet = CDh, second octet =
numéro de l'interruption) alors que l'interruption 3 se déclenche par une instruction
particulière sur un seul octet seulement (le code CCh). Cette interruption convient ainsi
parfaitement pour tester un programme, lorsqu'on désire l'exécuter jusqu'à un endroit
déterminé où il devra s'interrompre et révéler le contenu courant des registres. Dans un
débogueur on obtient ce résultat en insérant un appel à l'interruption 3 à l'endroit du
programme où celui-ci devra être interrompu. Derrière cette interruption se cache en
général un gestionnaire du débogueur qui affiche les contenus des registres et tout ce qu'il
faut.
Vous pourriez objecter qu'à la place de l'interruption 3 toute autre interruption ferait
l'affaire, pourvu que dans le gestionnaire associé on installe une routine d'affichage des
registres. Cette remarque est certes judicieuse mais il ne faut pas oublier que
l'interruption 3 présente l'avantage de tenir sur un seul octet. Pour comprendre la portée
de cet avantage prenons un programme fictif.
Ce programme contient une instruction RET. Cette instruction prend un octet et constitue
la fin d'un sous-programme. Un autre sous-programme se trouve à la suite qui commence
par une instruction machine quelconque. L'utilisateur souhaite examiner les registres à
la fin du premier sous-programme, il disposera donc un point d'arrêt (c'est-à-dire un appel
à l'interruption 3) à la place de l'instruction RET. Il est tout à fait avantageux que cet
appel ne prenne qu'un seul octet. S'il occupait davantage de place, par exemple 2 ou 3
octets, il n'écraserait pas seulement l'instruction RET mais également tout ou partie de la
première instruction du sous-programme qui suit. Si au cours de l'exécution le second
sous-programme est invoqué, il se produirait une erreur capable de planter le système.
Mais en limitant le point d'arrêt à un seul octet, cet incident ne se produit pas car le point
d'arrêt ne peut pas écraser plus d'une seule instruction.
Jusqu'à son exploitation par un programme de mise au point, cette interruption n'a
généralement pas d'application. Le système DOS l'aiguille sur une routine simplement
constituée de l'instruction IRET Interrupt Return) qui rend la main au programme
interrompu sans rien faire.
Interruption 4h
Cette interruption peut être appelée par une certaine instruction liée à une condition. Il
s'agit de l'instruction machine INTO (INTerruption on Overflow) qui ne déclenche
l'interruption 4 que si le bit de débordement (Overflow) du registre des indicateurs est à 1
au moment de son exécution. Ce sera notamment le cas à la suite d'opérations
arithmétiques (par exemple après une multiplication avec l'instruction MUL) si le résultat
de l'opération ne peut plus être représenté avec un nombre déterminé de bits. Cette
interruption peut naturellement également être appelée à l'aide de l'instruction INT
normale mais dans ce cas l'appel ne dépendra pas de l'état d'armement du bit Overflow.
En fait cette interruption est très peu utilisée et DOS la dirige directement sur une
instruction de retour IRET.

Interruption 5h
Bien que classée dans le groupe des interruptions matérielles, l'interruption 5 est
exploitée par le BIOS. Elle est déclenchée par le BIOS chaque fois que la touche "PrtScr"
(sur un clavier américain) ou "Impr" (sur un clavier français) est actionnée. Sa tâche
consiste à envoyer sur l'imprimante le contenu de l'écran, ce qu'on appelle une copie
d'écran ou hard copy. C'est pourquoi le vecteur de cette interruption est initialisé par le
BIOS dans la table des vecteurs d'interruption de façon à pointer sur la routine de copie
d'écran du BIOS qui figure en ROM . Les programmes en assembleur ou en langage
évolué peuvent également recourir à cette interruption, en l'appelant par INT, pour
envoyer au cours de leur exécution une copie d'écran sur l'imprimante.

Interruptions 6h, 7h
Ces interruptions sont pour l'instant réservées à un usage ultérieur par IBM. Elles peuvent
donc être utilisées pour des besoins de programmation individuels.

Interruption 8h
Le timer du PC (un circuit 8253) reçoit 1 193 180 signaux par seconde du coeur du
système constitué par un oscillateur à quartz. Au bout de 65536 de ces signaux, soit
environ 18,2 fois par seconde, il génère un appel à l'interruption 8 qui est transmis au
processeur par l'intermédiaire du 8259. Comme la fréquence d'appel de cette interruption
ne dépend pas de la fréquence d'horloge (variable) du système, cette interruption convient
parfaitement à la mesure du temps puisqu'on sait qu'une seconde s'écoule tous les 18,2
appels. C'est dans cet esprit que l'interruption est exploitée dans un PC. Le BIOS dirige le
vecteur de l'interruption sur une routine qui est donc appelée 18,2 fois par seconde. Cette
routine est chargée de faire avancer un compteur de temps et d'arrêter le moteur du
lecteur de disquette si aucun accès à la disquette ne s'est produit depuis un certain délai.
Une fois ces tâches exécutées, la routine appelle l'interruption 1Ch qui peut être
détournée par un utilisateur qui aurait besoin d'une exploitation dépendant d'un signal
périodique.
Interruption 9h
Le clavier comporte un processeur Intel portant l'appellation 8048 (ou 8042 sur l'AT). Ce
processeur surveille le clavier et enregistre toute pression ou tout relâchement d'une
touche, ou encore tout enfoncement prolongé . Il doit renseigner le processeur central
pour que le système puisse réagir de façon appropriée en lisant le code de la touche
frappée. Il envoie donc un signal au 8259 qui, lorsqu'aucune interruption de priorité
supérieure n'est à prendre en compte, demande au processeur central de déclencher
l'interruption 9. Cette interruption appelle alors une routine du BIOS qui lit le caractère
frappé au clavier et le place le buffer du clavier.

Interruption 10h
Fonction 00h Définir le mode vidéo

Cette fonction permet de sélectionner et initialiser un mode vidéo. L'écran est alors
entièrement effacé. De ce fait, cette fonction peut aussi être appelée pour vider l'écran
d'une façon très simple même lorsqu'on ne souhaite pas changer le mode vidéo.

Entrée :
AH = 00h
AL Mode Résolution Résolution Couleurs Système
T/G texte graphique

00h T 40x25 8x8 Gris CGA,PCjr


T 40x25 8x14 Gris EGA
T 40x25 8x16 16 MCGA
T 40x25 9x16 16 VGA
01h T 40x25 8x8 16 CGA,PCjr
T 40x25 8x14 16 EGA
T 40x25 8x16 16 MCGA
T 40x25 9x16 16 VGA
02h T 80x25 8x8 16 gris CGA,PCjr
T 80x25 8x14 16 gris EGA
T 80x25 8x16 16 MCGA
T 80x25 9x16 16 VGA
03h T 80x25 8x8 16 CGA,PCjr
T 80x25 8x14 16 EGA
T 80x25 8x16 16 MCGA
T 80x25 9x16 16 VGA
04h G 40x25 8x8 320x200 4 CGA,PCjr,EGA,MCGA,VGA
05h G 40x25 8x8 320x200 4 gris CGA,PCjr,EGA
G 40x25 8x8 320x200 4 MCGA,VGA
06h G 80x25 8x8 640x200 2 CGA,PCjr,EGA,MCGA,VGA
07h T 80x25 9x14 mono MDA,Hercules,EGA
T 80x25 9x16 mono VGA
08h G 20x25 8x8 160x200 16 PCjr
G 90x43 8x8 720x352 mono Hercules + MSHERC.COM
09h G 40x25 8x8 320x200 16 PCjr
0Ah G 80x25 8x8 640x200 4 PCjr
0Bh réservé pour le BIOS EGA
0Ch réservé pour le BIOS EGA
0Dh G 40x25 8x8 320x200 16 EGA,VGA
0Eh G 80x25 8x8 640x200 16 EGA,VGA
0Fh G 80x25 8x14 640x350 mono EGA,VGA
10h G 80x25 8x14 640x350 4 EGA 64 Ko
G 640x350 16 EGA 256 Ko,VGA
11h G 80x30 8x16 640x480 mono VGA,MCGA
12h G 80x30 8x16 640x480 16/256k VGA
13h G 40x25 8x8 320x200 256/256k VGA,MCGA
18h T 132x44 8x8 mono Tseng Labs EVA
T 132x44 8x8 16/256 Tseng ET4000
19h T 132x25 8x14 mono Tseng Labs EVA
T 132x25 8x14 16/256 Tseng ET4000
1Ah T 132x28 8x13 mono Tseng Labs EVA
T 132x28 8x13 16/256 Tseng ET4000
22h T 132x44 8x8 Tseng Labs EVA
T 132x44 8x8 16/256 Tseng ET4000
T 132x44 16 Orchid Prodesigner VGA
23h T 132x25 6x14 Tseng Labs EVA
T 132x25 8x14 16/256 Tseng ET4000
T 132x28 16 Orchid Prodesigner VGA
24h T 132x28 6x13 Tseng Labs EVA
T 132x28 8x13 16/256 Tseng ET4000
T 132x25 16 Orchid Prodesigner VGA
25h G 80x60 8x8 640x480 Tseng Labs EVA
G 80x60 8x8 640x480 16/256 Tseng ET4000
G 80x60 8x8 640x480 16 Orchid Prodesigner VGA
26h T 80x60 8x8 Tseng Labs EVA
T 80x60 8x8 16/256 Tseng ET4000
T 80x60 16 Orchid ProDesigner VGA
G 100x37 8x16 800x600 16 Orchid
G 100x37 8x16 800x600 16/256 Tseng ET4000
T 100x40 8x16 16 Orchid Prodesigner VGA
T 100x40 8x15 16/256 Tseng ET4000
2Dh G 80x25 8x14 640x350 256/256k Tseng ET4000
2Eh G 80x30 8x16 640x480 256/256k Orchid
G 80x30 8x16 640x480 256/256k Tseng ET4000
2Fh G 80x25 8x16 640x400 256/256k Tseng ET4000
30h G 100x37 8x16 800x600 256/256k Orchid
G 100x37 8x16 800x600 256/256k Tseng ET4000
37h G 128x48 8x16 1024x768 16 Orchid
38h G 128x48 8x16 1024x768 256/256k Tseng ET4000
6Ah G 800x600 16 VESA standard

Sortie :
aucune sortie
Remarques :
· Les couleurs pour les modes 4, 5 et 6 peuvent être fixées à l'aide de la fonction 11.
· Le contenu des registres BX, CX, DX et des registres SS, CS et DS n'est pas
modifié. Le contenu de tous les autres registres, et notamment celui des registres SI et DI,
peut avoir été modifié

Fonction 01h Définir l'apparence du curseur


Les lignes de départ et de fin du curseur de l'écran sont fixées en appelant cette fonction.
Cette fonction ne dépend pas de la page écran actuellement affichée sur l'écran.

Entrée :
AH = 01h
CH = Ligne de départ du curseur
CL = Ligne de fin du curseur

Sortie :
aucune sortie
Remarques :
·Les valeurs autorisées pour les lignes de départ et de fin dépendent de la carte vidéo
installée. Les valeurs suivantes sont autorisées :
Cartes écran monochromes : 0 - 13
Cartes écran couleur : 0 - 7
·Le BIOS fixe au départ les valeurs suivantes :
Cartes écran monochromes : lignes 11 et 12
Cartes écran couleur : lignes 6 et 7
·Il ne faut pas définir des valeurs non autorisées à l'aide de cette fonction car cela peut
avoir des conséquences imprévisibles (en général, une disparition du curseur).
·Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS n'est pas
modifié par cette fonction. Le contenu de tous les autres registres, et notamment des
registres SI et DI, peut avoir été modifié.

Fonction 02h Placer le curseur


Cette fonction permet de déplacer le curseur qui fixe la position de la sortie de
caractères sur l'écran, à l'aide d'une des fonctions de sortie de caractères du BIOS.

Entrée :
AH = 02h
BH = Numéro de la page écran
DH = Ligne de l'écran
DL = Colonne de l'écran
Sortie :
aucune sortie
Remarques :
· Le curseur clignotant de l'écran n'est déplacé par cette fonction qu'à condition que
la page écran appelée soit la page actuelle de l'écran.
· La ligne de l'écran est une valeur entre 0 et 24.
· La colonne de l'écran est une valeur comprise entre 0 et 79 (en 80 colonnes) ou
entre 0 et 39 (en 40 colonnes), suivant le mode vidéo fixé.
· Une méthode pour faire disparaître le curseur clignotant consiste à le placer dans
une position hors du champ de l'écran (par exemple colonne 0, ligne 25).
· Le numéro de la page écran dépend aussi du nombre de pages écran disponibles
sur la carte vidéo utilisée.
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 03h Lire la position du curseur


Lecture de la position du curseur de texte dans une page écran et lecture des lignes de
départ et de fin du curseur clignotant de l'écran.

Entrée :
AH = 03h
BH = Numéro de la page écran

Sortie :
DH = Ligne de l'écran dans laquelle figure le curseur
DL = Colonne de l'écran dans laquelle figure le curseur
CH = Ligne de départ du curseur clignotant de l'écran
CL = Ligne de fin du curseur clignotant de l'écran
Remarques :
· Le numéro de la page écran dépend aussi du nombre de pages écran disponibles
sur la carte vidéo utilisée.
· Les ligne et colonne de l'écran se réfèrent au système de coordonnées de texte.
· Le contenu du registre BX et des registres de segment SS, CS et DS n'est pas
modifié par cette fonction. Le contenu de tous les autres registres, et notamment des
registres SI et DI, peut avoir été modifié.

Fonction 04h Lire la position du crayon optique


Si possible, la position du crayon optique sur l'écran est lue.

Entrée :
AH = 04h
Sortie :
AH = 0 : position du crayon optique ne peut être testée pour le moment.
AH = 1 : position du crayon optique a pu être obtenue, auquel cas :
DH = Ligne écran du crayon optique (mode texte)
DL = Colonne écran du crayon optique (mode texte)
CH = Ligne écran du crayon optique (mode graphique)
BX = Colonne écran du crayon optique (mode graphique)
Remarques :
· L'appel de cette fonction doit être répété jusqu'à ce qu'un 1 soit renvoyé dans le
registre AH car ce n'est que dans ce cas que les coordonnées peuvent être lues dans les
autres registres.
· Les coordonnées indiquées se réfèrent naturellement au mode vidéo actuel et à sa
résolution horizontale et verticale.
· Les coordonnées du crayon optique ne peuvent pas être déterminées très
précisément, surtout en mode graphique. La coordonnée Y (ligne) est toujours une valeur
paire de sorte qu'il n'est pas possible de distinguer si le crayon optique se trouve sur la
ligne 8 ou 9. En mode graphique 320*200 points, la coordonnée X (colonne) est toujours
un multiple entier de 4 et en mode graphique 640*200 points toujours un multiple entier
de 8.
· Le contenu du registre CL et des registres de segment SS, CS et DS n'est pas
modifié par cette fonction. Le contenu de tous les autres registres, et notamment des
registres SI et DI, peut avoir été modifié.

Fonction 05h Sélectionner la page actuelle de l'écran


Sélection de la page écran actuelle, c'est-à-dire de celle qui doit être affichée sur
l'écran (mode texte uniquement).

Entrée :
AH = 05h
AL = Numéro de la page écran

Sortie :
aucune sortie

Remarques :
· Le numéro de la page écran dépend aussi du nombre de pages écran disponibles
sur la carte vidéo.
· Lorsqu'une nouvelle page écran est activée le curseur clignotant de l'écran est
toujours fixé sur la position du curseur de texte sur cette page.
· Le fait de passer d'une page écran à l'autre n'affecte pas le contenu de ces pages.
· Il n'est pas nécessaire qu'une page écran soit activée pour pouvoir y écrire.
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 06h Faire défiler des lignes de texte vers le haut


Faire défiler d'une ou plusieurs lignes vers le haut ou effacer une partie de la page
écran actuelle
Entrée :
AH = 06h
AL = Nombre de lignes dont la fenêtre doit être décalée vers le haut (0 signifie
effacer la fenêtre)
CH= Ligne écran du coin supérieur gauche de la fenêtre
CL= Colonne écran du coin supérieur gauche de la fenêtre
DH= Ligne écran du coin inférieur droit de la fenêtre
DL= Colonne écran du coin inférieur droit de la fenêtre
BH= Couleur (attribut) pour les lignes vides
Sortie :
aucune sortie
Remarques :
· Seule la page écran actuelle peut être modifiée par cette fonction
· Le fait d'effacer la zone de l'écran (nombre de lignes = 0) revient à la remplir
d'espaces (code ASCII 32).
· Le contenu des lignes expulsées de l'écran lors du défilement est définitivement
perdu et ne peut être récupéré.
· Pour vider l'écran tout entier, il est préférable d'employer la fonction 0 de cette
interruption.
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 07h Faire défiler des lignes de texte vers le bas


Faire défiler d'une ou plusieurs lignes vers le haut ou effacer une partie de la page
écran actuelle
Entrée :
AH = 07h
AL = Nombre de lignes dont la fenêtre doit être décalée vers le bas (0 signifie
effacer la fenêtre)
CH = Ligne écran du coin supérieur gauche de la fenêtre
CL = Colonne écran du coin supérieur gauche de la fenêtre
DH = Ligne écran du coin inférieur droit de la fenêtre
DL = Colonne écran du coin inférieur droit de la fenêtre
BH = Couleur (attribut) pour les lignes vides
Sortie :
aucune sortie
Remarques :
· Seule la page écran actuelle peut être modifiée par cette fonction
· Le fait d'effacer la zone de l'écran (nombre de lignes = 0) revient à la remplir
d'espaces (code ASCII 32).
· Le contenu des lignes expulsées de l'écran lors du défilement est définitivement
perdu et ne peut être récupéré.
· Pour vider l'écran tout entier, il est préférable d'employer la fonction 0 de cette
interruption.
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 08h Lire un caractère/une couleur


Lecture du code ASCII et de la couleur (attribut) du caractère figurant dans la
position actuelle du curseur.
Entrée :
AH = 08h
BH = Numéro de la page écran
Sortie :
AL = Code ASCII du caractère
AH = Couleur (attribut)
Remarques :
· Le numéro de la page écran dépend aussi du nombre de pages écran disponibles
sur la carte vidéo
· Cette fonction peut également être appelée en mode graphique. Dans ce cas, le
modèle de bits du caractère sur l'écran sera comparé avec les modèles de bits des
caractères définis dans la ROM de caractères de la carte vidéo et avec les caractères qui
ont été stockés dans une table en RAM dont l'adresse figure à l'interruption 1Fh. Si le
caractère ne peut être identifié, le registre AL contiendra la valeur 0 après appel de la
fonction.
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 09h Ecrire un caractère/une couleur


Ecrire un caractère dans une couleur déterminée dans la position actuelle du curseur
(dans la page écran spécifiée).
Entrée :
AH = 09h
BH = Numéro de la page écran
CX = Nombre d'écritures successives du caractère
AL = Code ASCII du caractère
BL = Attribut
Sortie :
aucune sortie
Remarques :
· Si le caractère indiqué doit être sorti plusieurs fois (auquel cas la valeur du
registre CX est supérieure à 1), il faut, en mode graphique, que tous les caractères
rentrent dans la page écran actuelle.
· Les codes de commande "bell", "carriage return", etc..., ne sont pas identifiés
comme tels mais sortis comme des codes ASCII normaux.
· Cette fonction permet également de sortir des caractères en mode graphique. Dans
ce cas, les modèles des caractères portant les codes 0 à 127 sont tirés dans une table en
ROM et les modèles des caractères portant les codes 128 à 255 sont tirés d'une table en
RAM qui doit avoir été installée préalablement avec l'instruction GRAFTABL du DOS.
· En mode de texte, le contenu du registre BL définit l'octet d'attribut du caractère.
En mode graphique, il détermine la couleur du caractère. En mode graphique 640*200
points, les valeurs 0 et 1, en mode graphique 320*200 points, les valeurs 0 à 3 sont
possibles pour définir les différentes couleurs de la palette de couleurs sélectionnée.
· Si le mode graphique est activé lors de la sortie de caractères et si le bit 7 du
registre BL est fixé, le modèle de caractère est combiné par un 'ou exclusif' avec les
points graphiques figurant sous ce caractère.
· Seule la page écran actuelle peut être modifiée par cette fonction
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 0Ah Ecrire un caractère


Un caractère est écrit dans la position actuelle du curseur dans la page écran
spécifiée. La couleur de l'ancien caractère dans cette position de l'écran est maintenue.

Entrée :
AH = 0Ah
BH = Numéro de la page écran
CX = Nombre d'écritures successives du caractère
AL = Code ASCII du caractère
Sortie :
aucune sortie
Remarques :
· Si le caractère indiqué doit être sorti plusieurs fois (auquel cas la valeur du
registre CX est supérieure à 1), il faut, en mode graphique, que tous les caractères
rentrent dans la page écran actuelle.
· Les codes de commande "bell", "carriage return", etc..., ne sont pas identifiés
comme tels mais sortis comme des codes ASCII normaux.
· Cette fonction permet également de sortir des caractères en mode graphique. Dans
ce cas, les modèles des caractères portant les codes 0 à 127 sont tirés dans une table en
ROM et les modèles des caractères portant les codes 128 à 255 sont tirés d'une table en
RAM qui doit avoir été installée préalablement avec l'instruction GRAFTABL du DOS.
· En mode de texte, le contenu du registre BL définit l'octet d'attribut du caractère.
En mode graphique, il détermine la couleur du caractère. En mode graphique 640*200
points, les valeurs 0 et 1, en mode graphique 320*200 points, les valeurs 0 à 3 sont
possibles pour définir les différentes couleurs de la palette de couleurs sélectionnée.
· Si le mode graphique est activé lors de la sortie de caractères et si le bit 7 du
registre BL est fixé, le modèle de caractère est combiné par un 'ou exclusif' avec les
points graphiques figurant sous ce caractère.
· Cette fonction ne fait pas avancer le curseur vers la prochaine position de l'écran.
Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS n'est pas
modifié par cette fonction. Le contenu de tous les autres registres, et notamment des
registres SI et DI, peut avoir été modifié.
Fonction 0Bh, Sous-Fct 0 Sélectionner des couleurs de cadre et de fond
Cette fonction sert à sélectionner les couleurs de cadre et de fond pour les modes
graphique et de texte.

Entrée :
AH = 0Bh
BH =0
BL = Couleurs de cadre/de fond
Sortie :
aucune sortie
Remarques :
· En mode graphique, la valeur de couleur transmise définit aussi bien la couleur du
cadre de l'écran que celle du fond de l'écran. En mode de texte, la couleur du fond est
définie séparément pour chaque caractère, de sorte que la valeur de couleur transmise
définit uniquement la couleur du cadre de l'écran.
· La valeur de couleur transmise peut être comprise entre 0 et 15 et peut donc
représenter les 16 couleurs possibles.
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 0Bh, Sous-Fct 1 Sélectionner la palette de couleurs


Sélection d'une des deux palettes de couleurs pour le mode graphique 320*200
points.

Entrée :
AH = 0Bh
BH =1
BL = Numéro de la palette de couleurs
Sortie :
aucune sortie
Remarques :
· Deux palettes de couleurs sont disponibles. Elles portent les numéros 0 et 1 et
contiennent les couleurs suivantes :
Palette 0 : vert, rouge, jaune
Palette 1 : turquoise, magenta, blanc
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 0Ch Ecrire un point graphique


Définir la valeur de couleur pour un point écran en mode graphique.
Entrée :
AH = 0Ch
DX = Ligne de l'écran
CX = Colonne de l'écran
AL = Valeur de couleur
Sortie :
aucune sortie
Remarques :
· La valeur de couleur se réfère au mode graphique actuel.
· En mode 640*200 points, seules les valeurs 0 et 1 sont autorisées.
· En mode 320*200 points, les valeurs 0 à 3 sont autorisées. Elles génèrent une
couleur en fonction de la palette de couleurs sélectionnée. La valeur 0 correspond à la
couleur sélectionnée pour le fond, 1 à la première couleur de la palette sélectionnée, 2 à la
seconde, etc...
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 0Dh Lire un point graphique


Lire la couleur d'un point écran en mode graphique.
Entrée :
AH = 0Dh
DX = Ligne de l'écran
CX = Colonne de l'écran
Sortie :
AL = Valeur de couleur
Remarques :
· La valeur de couleur se réfère au mode graphique actuel.
· En mode 640*200 points, seules les valeurs 0 et 1 sont possibles.
· En mode 320*200 points, les valeurs 0 à 3 sont autorisées. Elles génèrent une
couleur en fonction de la palette de couleurs sélectionnée. La valeur 0 correspond à la
couleur sélectionnée pour le fond, 1 à la première couleur de la palette sélectionnée, 2 à la
seconde, etc...
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 0Eh Ecrire un caractère


Un caractère est écrit dans la position actuelle du curseur dans la page écran
actuelle. La couleur de l'ancien caractère dans cette position de l'écran est maintenue.
Entrée :
AH = 0Eh
AL = Code ASCII du caractère
BL = Couleur de premier plan du caractère (en mode graphique uniquement)
Sortie :
aucune sortie
Remarques :
· Cette fonction n'interprète pas les différents codes de commande tels que "bell" et
"carriage return" comme des codes ASCII normaux mais comme des codes de commande
particuliers. La sortie du caractère "bell" produira par exemple un bip.
· Après sortie d'un caractère à l'aide de cette fonction, la position du curseur est
incrémentée de sorte que le caractère suivant sera sorti dans la position suivante de
l'écran. Lorsque la dernière position de l'écran est atteinte, l'écran défile d'une ligne vers
le haut et la sortie se poursuit dans la première colonne de la dernière ligne de l'écran.
· La couleur de premier plan se réfère au mode graphique actuel.
· En mode 640*200 points, seules les valeurs 0 et 1 sont possibles.
· En mode 320*200 points, les valeurs 0 à 3 sont autorisées. Elles génèrent une
couleur en fonction de la palette de couleurs sélectionnée. La valeur 0 correspond à la
couleur sélectionnée pour le fond, 1 à la première couleur de la palette sélectionnée, 2 à la
seconde, etc...
· Le contenu des registres BX, CX, DX et des registres de segment SS, CS et DS
n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 0Fh Lire le mode vidéo


Lire le numéro du mode vidéo actuel, le nombre de caractères par ligne et le
numéro de la page écran actuelle.
Entrée :
AH = 0Fh
Sortie :
AL = Mode vidéo (voir plus bas)
AH = Nombre de caractères par ligne
BH = Numéro de la page écran actuelle
Remarques :
AL Mode Résolution Résolution Couleurs Système
T/G texte graphique

00h T 40x25 8x8 Gris CGA,PCjr


T 40x25 8x14 Gris EGA
T 40x25 8x16 16 MCGA
T 40x25 9x16 16 VGA
01h T 40x25 8x8 16 CGA,PCjr
T 40x25 8x14 16 EGA
T 40x25 8x16 16 MCGA
T 40x25 9x16 16 VGA
02h T 80x25 8x8 16 gris CGA,PCjr
T 80x25 8x14 16 gris EGA
T 80x25 8x16 16 MCGA
T 80x25 9x16 16 VGA
03h T 80x25 8x8 16 CGA,PCjr
T 80x25 8x14 16 EGA
T 80x25 8x16 16 MCGA
T 80x25 9x16 16 VGA
04h G 40x25 8x8 320x200 4 CGA,PCjr,EGA,MCGA,VGA
05h G 40x25 8x8 320x200 4 gris CGA,PCjr,EGA
G 40x25 8x8 320x200 4 MCGA,VGA
06h G 80x25 8x8 640x200 2 CGA,PCjr,EGA,MCGA,VGA
07h T 80x25 9x14 mono MDA,Hercules,EGA
T 80x25 9x16 mono VGA
08h G 20x25 8x8 160x200 16 PCjr
G 90x43 8x8 720x352 mono Hercules + MSHERC.COM
09h G 40x25 8x8 320x200 16 PCjr
0Ah G 80x25 8x8 640x200 4 PCjr
0Bh réservé pour le BIOS EGA
0Ch réservé pour le BIOS EGA
0Dh G 40x25 8x8 320x200 16 EGA,VGA
0Eh G 80x25 8x8 640x200 16 EGA,VGA
0Fh G 80x25 8x14 640x350 mono EGA,VGA
10h G 80x25 8x14 640x350 4 EGA 64 Ko
G 640x350 16 EGA 256 Ko,VGA
11h G 80x30 8x16 640x480 mono VGA,MCGA
12h G 80x30 8x16 640x480 16/256k VGA
13h G 40x25 8x8 320x200 256/256k VGA,MCGA
18h T 132x44 8x8 mono Tseng Labs EVA
T 132x44 8x8 16/256 Tseng ET4000
19h T 132x25 8x14 mono Tseng Labs EVA
T 132x25 8x14 16/256 Tseng ET4000
1Ah T 132x28 8x13 mono Tseng Labs EVA
T 132x28 8x13 16/256 Tseng ET4000
22h T 132x44 8x8 Tseng Labs EVA
T 132x44 8x8 16/256 Tseng ET4000
T 132x44 16 Orchid Prodesigner VGA
23h T 132x25 6x14 Tseng Labs EVA
T 132x25 8x14 16/256 Tseng ET4000
T 132x28 16 Orchid Prodesigner VGA
24h T 132x28 6x13 Tseng Labs EVA
T 132x28 8x13 16/256 Tseng ET4000

T 132x25 16 Orchid Prodesigner VGA


25h G 80x60 8x8 640x480 Tseng Labs EVA
G 80x60 8x8 640x480 16/256 Tseng ET4000
G 80x60 8x8 640x480 16 Orchid Prodesigner VGA
26h T 80x60 8x8 Tseng Labs EVA
T 80x60 8x8 16/256 Tseng ET4000
T 80x60 16 Orchid ProDesigner VGA
G 100x37 8x16 800x600 16 Orchid
G 100x37 8x16 800x600 16/256 Tseng ET4000
T 100x40 8x16 16 Orchid Prodesigner VGA
T 100x40 8x15 16/256 Tseng ET4000
2Dh G 80x25 8x14 640x350 256/256k Tseng ET4000
2Eh G 80x30 8x16 640x480 256/256k Orchid
G 80x30 8x16 640x480 256/256k Tseng ET4000
2Fh G 80x25 8x16 640x400 256/256k Tseng ET4000
30h G 100x37 8x16 800x600 256/256k Orchid
G 100x37 8x16 800x600 256/256k Tseng ET4000
37h G 128x48 8x16 1024x768 16 Orchid
38h G 128x48 8x16 1024x768 256/256k Tseng ET4000
6Ah G 800x600 16 VESA standard

· Le contenu des registres BL, CX, DX et des registres de segment SS, CS et DS


n'est pas modifié par cette fonction. Le contenu de tous les autres registres, et notamment
des registres SI et DI, peut avoir été modifié.

Fonction 10h, Sous-Fct 00h Définir le registre de palette EGA/VGA


Cette fonction permet de régler le contenu de l'un des registres de palette du
contrôleur d'attribut de la carte EGA/VGA.
Entrée :
AH = 10h
AL = 00h
BL = code couleur
BH = registre à adresser
Sortie :
aucune
Remarques :
· Le numéro de registre n'étant pas contrôlé par le BIOS, cette fonction permet de
programmer aussi les autres registres du contrôleur d'attribut. Il s'agit notamment des
registres Mode Control, Overscan etc.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 10h, Sous-Fct 01h Définir la couleur du cadre de l'écran EGA/VGA


La valeur spécifiée est copiée par cette fonction dans le registre Overscan du
contrôleur d'attribut EGA/VGA.
Entrée :
AH = 10h
AL = 01h
BH = couleur du cadre
Sortie :
aucune
Remarques :
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 10h, Sous-Fct 02h Définir tous les registres de palette EGA/VGA
Ces fonctions permettent de régler simultanément les 16 registres de palette et le
registre Overscan.
Entrée :
AH = 10h
AL = 02h
ES = adresse de segment de la table de couleurs
DX = adresse d'offset de la table de couleurs
Sortie :
aucune
Remarques :
· La paire de registres ES:BX désigne une table qui doit avoir une longueur de 17
octets. Les 16 premiers octets seront transférés dans les 16 registres de palette du
contrôleur d'attribut alors que le 17ème registre sera copié dans le registre Overscan.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 10h, Sous-Fct 03h Définir l'attribut de clignotement EGA/VGA


L'appel de cette fonction permet de savoir si le bit 7 de l'octet d'attribut d'un
caractère entraîne, en mode de texte, un clignotement de ce caractère, ou un affichage
plus intense du fond du caractère.
Entrée :
AH = 10h
AL = 03h
BL = attribut de clignotement
0 = couleur de fond intense
1 = clignotement
Sortie :
aucune
Remarques :
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 10h, Sous-Fct 07h Lire le registre de palette


Cette fonction offre à un programme la possibilité de connaître le contenu de l'un
des registres de palette du contrôleur d'attribut.
Entrée :
AH = 10h
AL = 07h
BL = Numéro du registre de palette
Sortie :
BH = Contenu du registre de palette adressé
Remarques :
· Le numéro du registre de palette appelé n'étant pas contrôlé par le BIOS, cette
fonction permet en fait de lire tous les registres du contrôleur d'attribut.
· Le contenu des registres BL, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 08h Lire le contenu du registre Overscan


Cette fonction renvoie au programme d'appel le contenu du registre Overscan, qui
définit la couleur du cadre de l'écran.
Entrée :
AH = 10h
AL = 08h
Sortie :
BH = Contenu du registre Overscan
Remarques :
· Le contenu des registres BL, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 09h Lire le contenu de tous les registres de palette et
Overscan
Lorsque cette fonction est appelée, le contenu des 16 registres de palette ainsi que le
contenu du registre Overscan sont copiés dans un buffer du programme d'appel.
Entrée :
AH= 10h
AL= 09h
ES= Adresse de segment du buffer
DX= Adresse d'offset du buffer

Sortie :
Aucune
Remarques :
·Le buffer doit disposer d'une place d'au moins 17 octets pour pouvoir recevoir le contenu
de tous les registres de palette (octets 0 à 15) et le contenu du registre Overscan (octet
16).
·Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous les
registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 10h Charger un registre de couleur DAC


Cette fonction permet de définir le contenu de l'un des 256 registres de couleurs
DAC.
Entrée :
AH = 10h
AL = 10h
BX = Numéro du registre de couleur DAC (0 à 255)
CH = Vert
CL = Bleu
DH = Rouge
Sortie :
Aucune
Remarques :
· Seuls les bits 0 à 5 des registres CH, CL et DH servent à composer le mélange de
la couleur, les autres bits sont ignorés.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 12h Charger plusieurs registres de couleur DAC


Cette fonction représente une extension de la fonction 10h et permet de charger des
valeurs dans plusieurs registres de couleur DAC simultanément.
Entrée :
AH = 10h
AL = 12h
BX = Numéro du premier registre de couleur DAC appelé (0 à 255)
CX = Nombre de registres à définir
ES = Adresse de segment du buffer
DX = Adresse d'offset du buffer
Sortie :
Aucune
Remarques :
· Le buffer spécifié doit comporter pour chacun des registres de couleur à définir un
groupe de 3 octets consécutifs, dont le premier définit la part de rouge, le deuxième la
part de vert et le troisième la part de bleu. Les trois premiers octets correspondent au
premier registre de couleur DAC appelé, les trois octets suivants au registre de couleur
DAC suivant, etc.
· Pour le mélange de la couleur, seuls les bits 0 à 5 sont significatifs, les autres bits
sont ignorés.
· Si la somme de BX et CX est supérieure à 255, c'est le premier registre de couleur
DAC qui sera traité après que le dernier registre de couleur DAC ait été traité. Il y a donc
une exécution en boucle (Wrap Around).
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 13h Définir la méthode de sélection des couleurs ou de


registres DAC
Cette fonction manipule le bit 7 du registre de contrôle de mode.
Entrée :
AH= 10h
AL= 13h
BL= 00h ou 01h (voir plus bas)
BH= voir plus bas
Sortie :
Aucune
Remarques :
· Cette sous-fonction dispose elle-même à son tour de deux sous-fonctions
sélectionnées à travers la valeur dans le registre BL. La sous-fonction 00h permet de
définir la sélection des couleurs, alors que la sous-fonction 01h sert à sélectionner le
groupe de registres DAC activé.
· La sous-fonction 00h copie le bit 0 du registre BH dans le bit 7 du registre de
contrôle de mode, fixant ainsi la méthode de sélection des couleurs. Si le bit 0 de BH
contient la valeur 0, les 256 registres de couleur DAC seront divisés en quatre groupes de
64 registres. En ce qui concerne la sélection de couleur, les bits 0 à 5 de chaque registre
de palette forment avec les bits 2 à 3 du registre de sélection de couleur les 8 bits utilisés
comme index dans la table de couleurs DAC. Si le bit 0 du registre BH contient par
contre la valeur 1, les registres de couleur DAC seront groupés en 16 groupes de 16
registres. Les 4 bits inférieurs du registre de palette composeront alors avec les 4 bits
inférieurs du registre de sélection de couleur l'index 8 bits sur la table de couleurs DAC.
· La sous-fonction 01h sert à définir le registre de sélection de couleur, dont le
contenu sélectionne le groupe de registres de couleur DAC activé. Le contenu du registre
BH est copié à cet effet dans le registre de sélection de couleur.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 15h Lire un des registres de couleur DAC


Fournit au programme d'appel le contenu de l'un des 256 registres de couleur DAC.
Entrée :
AH = 10h
AL = 15h
BX = Numéro du registre de couleur DAC
Sortie :
CH = Vert
CL = Bleu
DH = Rouge
Remarques :
· Seuls les bits 0 à 5 des registres CH, CL et DH participent au mélange de la
couleur.
· Le contenu des registres BX, DL, SI, DI et BP ainsi que le contenu de tous les
registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 17h Définir le contenu de plusieurs registres de couleur


DAC
Cette fonction, qui représente une extension de la fonction 10h, permet de définir en
une fois le contenu de plusieurs registres de couleur DAC.
Entrée :
AH = 10h
AL = 17h
BX = Numéro du premier registre de couleur DAC appelé (0 à 255)
CX = Nombre de registres à définir
ES = Adresse de segment du buffer
DX = Adresse d'offset du buffer
Sortie :
Aucune
Remarques :
· Le buffer spécifié doit comporter pour chacun des registres de couleur à définir un
groupe de 3 octets consécutifs, dont le premier définit la part de rouge, le deuxième la
part de vert et le troisième la part de bleu. Les trois premiers octets correspondent au
premier registre de couleur DAC appelé, les trois octets suivants au registre de couleur
DAC suivant, etc.
· Pour le mélange de la couleur, seuls les bits 0 à 5 sont significatifs, les autres bits
sont ignorés.
· Si la somme de BX et CX est supérieure à 255, c'est le premier registre de couleur
DAC qui sera traité après que le dernier registre de couleur DAC ait été traité. Il y a donc
une exécution en boucle (Wrap Around).
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 18h Définir le registre de masque DAC


Charge la valeur transmise dans le registre de masque DAC.
Entrée :
AH = 10h
AL = 18h
BL = Valeur pour le registre de masque DAC
Sortie :
Aucune
Remarques :
· Le contenu du registre de masque DAC intervient dans la sélection de couleur car
il est combiné par un ET logique avec l'index servant à l'accès à la table de couleurs
DAC.
· Le contenu des registres BH, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 19h Lire le contenu du registre de masque DAC


Lit le contenu actuel du registre de masque DAC.
Entrée :
AH = 10h
AL = 19h
Sortie :
BL = Contenu du registre de masque DAC
Remarques :
· Le contenu du registre de masque DAC intervient dans la sélection de couleur car
il est combiné par un ET logique avec l'index servant à l'accès à la table de couleurs
DAC.
· Le contenu des registres BH, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 1Ah Lire la méthode de sélection de couleur et le contenu


du registre
Cette fonction fournit d'une part le contenu du bit 7 du registre de contrôle de mode, et
donc la méthode de sélection de couleur, ainsi que le contenu du registre de sélection de
couleur, qui détermine le groupe de registres de couleur DAC activé.
Entrée :
AH= 10h
AL= 1Ah
Sortie :
BL= Bit 7 du registre de contrôle de mode
BH= Contenu du registre de sélection de couleur
Remarques :
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 10h, Sous-Fct 1Bh Convertir le contenu des registres de couleur DAC
en gris
Cette fonction convertit une section déterminée de la table de couleurs DAC en
nuances de gris correspondantes.
Entrée :
AH= 10h
AL= 1Bh
BX= Numéro du premier registre de couleur DAC à convertir
CX= Nombre de registres de couleur DAC à traiter
Sortie :
Aucune
Remarques :
· La conversion en une nuance de gris s'effectue par une pondération différenciée
des parts de rouge, de vert et de bleu, qui reflète les différences d'intensité entre ces
couleurs fondamentales sur l'écran. Le coefficient appliqué au rouge est 0,3, celui
appliqué au vert 0,59, et celui appliqué au bleu 0,11.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que le contenu de tous
les registres de segment ne sont pas modifiés par cette fonction.

Fonction 11h, Sous-Fct 00h Charger le jeu de caractères défini par l'utilisateur
EGA/VGA
Cette fonction charge un jeu de caractères défini par l'utilisateur de la mémoire
RAM dans l'une des deux tables de caractères EGA/VGA.
Entrée :
AH= 11h
AL= 00h
BH= lignes par caractère (et donc octets par caractère)
BL= table de caractères appelée (0 ou 1)
CX= nombre de caractères dans la table
DX= code ASCII du premier caractère dans la table
ES= adresse de segment de la table de caractères dans la RAM
BP= adresse d'offset de la table de caractères dans la RAM
Sortie :
aucune
Remarques :
· 512 caractères peuvent être chargés au maximum par table de caractères.
· Le jeu de caractères chargé n'est pas activé et les registres du CRTC ne sont pas
non plus programmés de façon à adapter l'affichage des caractères sur l'écran à la taille
des caractères. Les modifications ne sont donc perceptibles sur l'écran que si la table de
caractères dans laquelle sont chargées les définitions de caractères est la table
actuellement activée.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 11h, Sous-Fct 01h Charger le jeu de caractères 8*14 EGA/VGA


Cette fonction charge le jeu de caractères 8*14 points tout entier du BIOS en ROM
dans l'une des deux tables de caractères.
Entrée :
AH = 11h
AL = 01h
BL = table de caractères appelée (0 ou 1)
Sortie :
aucune
Remarques :
· Le jeu de caractères chargé n'est pas activé et les registres du CRTC ne sont pas
non plus programmés de façon à adapter l'affichage des caractères sur l'écran à la taille
des caractères. Les modifications ne sont donc perceptibles sur l'écran que si la table de
caractères dans laquelle sont chargées les définitions de caractères est la table
actuellement activée. La carte EGA affiche dans ce cas 25 lignes sur l'écran, la carte
VGA 28.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 11h, Sous-Fct 02h Charger le jeu de caractères 8*8 EGA/VGA


Cette fonction charge le jeu de caractères 8*8 points tout entier du BIOS en ROM
dans l'une des deux tables de caractères.
Entrée :
AH = 11h
AL = 02h
BL = table de caractères appelée (0 ou 1)
Sortie :
aucune
Remarques :
· Le jeu de caractères chargé n'est pas activé et les registres du CRTC ne sont pas
non plus programmés de façon à adapter l'affichage des caractères sur l'écran à la taille
des caractères. Les modifications ne sont donc perceptibles sur l'écran que si la table de
caractères dans laquelle sont chargées les définitions de caractères est la table
actuellement activée. La carte EGA affiche dans ce cas 43 lignes sur l'écran, la carte
VGA 50.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.
Fonction 11h, Sous-Fct 03h Sélectionner un jeu de caractères EGA/VGA
Active un (ou deux) des quatre jeux de 256 caractères.
Entrée :
AH = 11h
AL = 03h
BL = numéro du jeu de caractères à activer
Sortie :
aucune
Remarques :
· Les bits 0 et 1 du registre BL spécifient le numéro du jeu de caractères auquel il
faut accéder lorsque le bit 3 de l'octet d'attribut vaut 0.
· Les bits 2 et 3 du registre BL spécifient le numéro du jeu de caractères auquel il
faut accéder lorsque le bit 3 de l'octet d'attribut vaut 1.
· Si le contenu des bits 0 et 1 ainsi que celui des bits 2 et 3 du registre BL est
identique, le bit 3 de l'octet d'attribut d'un caractère est sans effet sur le code ASCII du
caractère affiché. Seuls 256 caractères différents peuvent donc être affichés sur l'écran.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 11h, Sous-Fct 04h Charger le jeu de caractères 8*16


Cette fonction charge le jeu de caractères 8*16 points complet du BIOS en ROM de
la carte VGA dans l'une des deux tables de caractères.
Entrée :
AH = 11h
AL = 04h
BL = table de caractères appelée (0-7)
Sortie :
Aucune
Remarques :
· Le jeu de caractères chargé n'est pas activé et les registres du CRTC ne sont pas
non plus programmés de façon à adapter l'affichage des caractères sur l'écran à la taille
des caractères. Les modifications ne sont donc perceptibles sur l'écran que si la table de
caractères dans laquelle sont chargées les définitions de caractères est la table
actuellement activée. La carte VGA affiche dans ce cas 25 lignes sur l'écran.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 11h, Sous-Fct 10h Charger et activer un jeu de caractères défini par
l'utilisateur
Cette fonction charge un jeu de caractères défini par l'utilisateur dans l'une des deux
tables de caractères EGA/VGA et l'active en programmant les registres du CRTC.
Entrée :
AH= 11h
AL= 10h
BH= lignes par caractère (et donc octets par caractère)
BL= table de caractères appelée (0 ou 1)
CX= nombre de caractères dans la table
DX= code ASCII du premier caractère dans la table
ES= adresse de segment de la table de caractères dans la RAM
BP= adresse d'offset de la table de caractères dans la RAM
Sortie :
Aucune
Remarques :
· 256 caractères peuvent être chargés au maximum par table de caractères.
· Le nombre de lignes de texte affichées sur l'écran dépend de la hauteur des
caractères. Il est égal au nombre de lignes de l'écran (350 ou 480) divisé par la hauteur de
caractère.
· Les lignes de début et de fin du curseur clignotant de l'écran sont
automatiquement adaptées à la hauteur de la nouvelle matrice de caractère.
· Le contenu des registres BX, CX, DX, SI, DI et BP ainsi que celui de tous les
registres de segment n'est pas modifié par cette fonction.

Fonction 11h, Sous-Fct 11h Charger et activer le jeu de caractères 8*14


EGA/VGA
Fonction 11h, Sous-Fct 12h Charger le jeu de caractères 8*8 EGA/VGA
Fonction 11h, Sous-Fct 14h Charger jeu de caractères 8*16
Fonction 11h, Sous-Fct 30h Lire des informations sur le générateur de caractères
EGA/VGA
Fonction 12h, Sous-Fct 10h Lire la configuration EGA/VGA EGA/VGA
Fonction 12h, Sous-Fct 20h Définir une autre routine de copie d'écran EGA
Fonction 12h, Sous-Fct 30h Définir le nombre de lignes de balayage
Fonction 12h, Sous-Fct 31h Activer ou désactiver le chargement des registres de
palette
Fonction 12h, Sous-Fct 32h Autoriser/verrouiller l'accès de l'unité centrale à la
RAM vidéo
Fonction 12h, Sous-Fct 33h Activer/désactiver la conversion en gris des registres
de couleur
Fonction 12h, Sous-Fct 34h Activer/désactiver l'émulation du curseur
Fonction 12h, Sous-Fct 36h Interdire la construction de l'écran
Fonction 13h Afficher une chaîne de caractères
Fonction 14h Non documentée
Fonction 15h Non documentée
Fonction 16h Non documentée
Fonction 17h Non documentée
Fonction 18h Non documentée
Fonction 19h Non documentée
Fonction 1Ah, Sous-Fct 00h Lire le type d'adaptateur vidéo primaire et
secondaire
Fonction 1Ah, Sous-Fct 01h Définir les cartes vidéo primaire et secondaire
Fonction 1Bh Lire les informations d'état du mode vidéo et le
BIOS VGA
Fonction 1Ch, Sous-Fct 00h Demander la taille de la zone de sauvegarde
Fonction 1Ch, Sous-Fct 01h Sauvegarder l'état vidéo
Fonction 1Ch, Sous-Fct 02h Restaurer l'état vidéo
Fonction 4Fh, Sous-Fct 00h Lire les spécificités de la carte Super VGA
Fonction 4Fh, Sous-Fct 01h Lire les données-clés d'un mode VESA
Fonction 4Fh, Sous-Fct 02h Activer le mode VESA
Fonction 4Fh, Sous-Fct 03h Lire le mode en cours
Fonction 4Fh, Sous-Fct 04h/00h Lire la taille du buffer de stockage
Fonction 4Fh, Sous-Fct 04h/01h Sauver l'état vidéo de la carte Super VGA
Fonction 4Fh, Sous-Fct 04h/02h Restaurer l'état vidéo de la carte Super VGA
Fonction 4Fh, Sous-Fct 05h/00h Placer la fenêtre d'accès sur la RAM vidéo
Fonction 4Fh, Sous-Fct 05h/01h Lire la fenêtre d'accès sur la RAM vidéo

Вам также может понравиться