Table des matières

Les registres des cartes EGA/VGA

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.

Contrôleur CRT

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

Registre 04h - Start Horizontal Retrace

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.

Registre 05h - End Horizontal Retrace

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.

Registre 14h - Underline Location

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.

3CCh - Miscellaneous Output - Write

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
  • 0 : Pour l’émulation des cartes MDA, ce bit peut servir a définir l’adresse de port des données CRT et du registre d’index ainsi que le registre Input Status 1.
    Alors que ces registres occupent normalement les ports 3D4h/3D5h et 3DAh, ils peuvent ainsi être commutés sur les adresses de port 3B4h/3B5h et 3BAh.
  • 2-3: Ce champ de bit sélectionne le générateur de taches actif. Il dessine ainsi une ligne de points pour la résolution horizontale puisqu’un lien direct se crée entre le Dot Clock Rate et le nombre de points affichables.
    Le Dot Clock Rate de 0 MHz est réservé parce qu’il peut uniquement être utilisé pendant un reset de la carte VGA.
    La modification de ce registre doit toujours s’accompagner d’un reset synchrone à travers le registre reset du séquenceur.
    • 00 : 640 pointe horizontaux (25.175 MHz)
    • 01 : 720 pointe horizontaux (28.322 MHz)
    • 10 : Fréquence Dot Clock externe
    • 11 : Réservé (0 MHz)
  • 5 : Dans les modes Odd/Even (mode vidéo 0, 1, 2, 3 et 7), ce bit agit comme un bit de poids faible de I’'accès a la mémoire. Il décide par conséquent si seules les adresses paires ou impaires doivent être adressées dans les différents plans de bits. S’il contient la valeur 1 (défaut), tous les octets sont adressés sur les adresses d’ offset paires. Inversement, la valeur 0 autorise L'accès aux adresses impaires.
    Le bit perd sa valeur lorsque le mode Chain est défini a travers le bit 1 dans le registre 6 du contrôleur graphique ou le mode Chain4 4 travers le bit 3 dans le registre 4 du séquenceur.
  • 6-7 : En fait, ces deux bits ne sélectionnent pas directement la résolution verticale mais la polarité des signaux Retrace horizontaux et verticaux. En pratique, on obtient ainsi la résolution verticale spécifiée.

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.