Les cartes EGA/VGA reposent essentiellement sur quatre contrôleurs se répartissant les tachés liées a la génération du signal vidéo. Concrètement, it s’agit :
Les cartes EGA et VGA disposent en outre de quelques registres généraux décrits également dans ce chapitre.
La tache essentielle du contrôleur CRT consiste a configurer l’écran en créant des signaux pour le moniteur qui permettent au rayon électronique de piloter le tube cathodique. Ainsi, on rencontre ici de nombreux registres jouant surtout un role dans le timing du retour horizontal et vertical du rayon électronique. Ces registres présentent en général peu d’intérét pour le programmeur car ils sont complexes a gérer. Pour les programmer, il suffit de s’en remettre au BIOS qui les programme en conséquence en changeant tout simplement le mode vidéo.
L'adressage de tous les registres du contrôleur CRT s’effectue a travers un registre d'index et de données situés a l’adresse de port 3D4h ou 3D5h si la carte EGA ou VGA est utilisée en mode couleur. En mode monochrome, ces registres se trouvent en 3B4h et 3B5h.
Mais le BIOS n’est pas capable de programmer des registres tels que les registres offset ou Line Compare utilisés pour des effets vidéo spéciaux. Voici la liste des 25 registres du contrôleur CRT.
reg | Nom du registre |
---|---|
00h | Horizontal Total |
01h | Horizontal Display End |
02h | Start Horizontal Blanking |
03h | End Horizontal Blanking |
04h | Start Horizontal Retrace |
05h | End Horizontal Retrace |
06h | Vertical Total |
07h | Overflow |
08h | Vertical Pel Panning |
09h | Maximum Scan Line |
0Ah | Cursor Start |
0Bh | Cursor End |
0Ch | Start Address High |
0Dh | Start Address Low |
0Eh | Cursor Location High |
0Fh | Cursor Location Low |
10h | Start Vertical Retrace Light-Pen Low |
11h | End Vertical Retrace Light-Pen High (EGA seulement) |
12h | Vertical Display End |
13h | Offset |
14h | Underline Location |
15h | Start Vertical Blank |
16h | End Vertical Blank |
17h | Mode Control |
18h | Line Compare |
Ce registre détermine le caractère après le parcours duquel commence le retour du rayon électronique. L’écran peut ensuite être centré horizontalement à l'aide de ce registre.
0-4 | Détermine la fin du retour horizontal. Etant donné que la fin de ce retour se situe toujours avant le début, il faut uniquement 5 bits pour le coder. L’unité utilisée est 4 nouveau le caractère. |
5-6 | Comme pour la fin du Blanking horizontal, on peut définir un délai (Skew) pour la fin du retour horizontal. Il varie d’une carte a L'autre si bien que ces bits ne peuvent jamais être manipulés. |
7 | Ce bit sert d’extension aux bits 0 4 4 dans le registre End Horizontal Blanking et représente leur bit de poids fort. |
0-4 | Ligne de pour le soulignements Lorsque les cartes EGA et VGA fonctionnent en mode monochrome, elles peuvent souligner les caractères à l'écran. Ce champ de bits détermine la ligne de points ou le soulignement doit apparaitre. |
5 | Exclusivement pour les cartes VGA, ce bit décide si le compteur d’adresse interne ne doit être incrémenté que tous les quatre coups du Character Clock. A cet effet, ces bits doivent afficher la valeur 1 et le bit 3 du registre Mode CRT (Count by two) la valeur 0. Si ce bit contient au contraire la valeur 1, le mode Doubleword est ignoré dans tous les cas. |
6 | Avec des cartes VGA, ce bit permet d’activer le mode Doubleword. Le contenu des bits Access Mode du registre Mode CRT est alors ignoré. |
7 | non utilisé |
En mode Doubleword, l’adresse issue du compteur d’adresses interne pendant la configuration de l'écran lors de l’accés a la RAM vidéo est décalée de 2 bits vers le haut alors que les bits 14 et 15 se promènent simultanément entre la position 0 et 1. Tant que le compteur d’adresses est inférieur 4 4000h, toutes les cellules mémoire entre 0000h et FFFCh dont l'adresse modulo quatre donne la valeur zéro sont adressées. Lorsque le compteur d’adresses interne atteint la zone comprise entre 4000h et 7FFFh, toutes les cellules mémoire entre 0001h et FFFDh dont l'adresse module quatre donne la valeur un sont adressées. Le même procédé s’applique aux zones situées entre 8000h et BFFFh ou C000h et FFFFh. Mais les cellules mémoire adressées ici sont des cellules dont l’adresse modulo quatre donne la valeur deux ou trois.
Bit | Description |
---|---|
0 | Adresse du port * 0: monochrome 3B4h/3B5h et 3BAh * 1: couleur 3D4h/3D5h et 3DAh |
1 | Accès CPU à la ram Vidéo * 0: interdit * 1: autorisé |
2-3 | Résolution Horizontale |
4 | réservé |
5 | Bit de la page mode Odd/Even |
6-7 | Nombre de lignes de points verticales |
Le mode d’émulation 200 points de la carte VGA ne peut pas être défini a travers ce champ de bits. Il s’agit en fait d'un mode 400 points où 200 lignes seulement sont affichées en double.