Port d'entrée/sortie 80x86 | 03D4h/03D5h en couleurs ou 03B4h/03B5h en monochrome |
---|---|
MDA, HGC, EGA, VGA, SVGA | Le contrôleur du tube de rayons cathodiques (Cathod Ray Tube Controller ou CRTC) |
Description
Concernant les cartes vidéo MDA, HGC, CGA et PC Junior : Seul les registres de 00h à 0Fh sont disponibles car ils sont basé sur les valeurs programmables dans les registres CRTC de la puce MC6845 de Motorola. Il ne faut pas oublier non plus que la plupart de ces cartes disposent seulement de l'accès en écriture. Il est donc impossible de lire des informations ou si vous en lisez les informations seront probablement erronée.
Le circuit VGA et Super VGA possèdent énormément de registres attribué au contrôleur du tube de rayons cathodiques (CRTC pour Cathod Ray Tube Controller). On lui attribue la responsabilité de la génération du signal vidéo. Le CRTC est programmable sans aucune contrainte et le rayon cathodique peut être manipulé avec beaucoup trop de liberté pour sa sécurité: ceci pouvant se révéler fort dangereux pour votre moniteur si vous ne manifestez pas un minimum de prudence! Ainsi, à partir des cartes VGA, afin de sécuriser le matériel contre des programmeurs amateurs et des anciens Virus, les registres sont protégés par un bit de protection (registre 11h du CRTC) empêchant toutes écritures accidentelles. Mais le CRTC dispose aussi de beaucoup d'autres registres n'ayant rien à voir avec le timing du rayon (par exemple Linear Starting Address, attribué à la position de départ de l'affichage mémoire), et peuvent donc être manipulés sans crainte d'endommager votre matériel. Bref, nous entrons en contact avec ces registres au moyen de 2 adresses: tout d'abord 3D4h sert d'index et ensuite 3D5h est destiné aux données. Ces adresses sont attribué à l'affichage couleurs, cependant en monochrome on utilise d'autre adresses, ceux-ci deviendront respectivement 3B4h et 3B5h. On atteint un registre donné en écrivant d'abord son numéro dans le registre d'index et en accédant ensuite, en écriture ou en lecture, au registre de données correspondant alors au registre CRTC recherché. Une fois l'index fixé, il reste valable et les accès peuvent se succéder autant de fois qu'on le désire. Pour des raisons d'efficacité on peut effectuer un accès unique en écriture en émettant un mot (Word) sur le port d'index: l'octet de poids faible doit alors contenir le numéro du registre et l'octet de poids fort la valeur à donner au registre.
Liste des registres
Voici un tableau explicatif de la signification des registres CRTC, Port 3D5h/3B5 en fonction de leur registre :
Registre | Nom | Description | ||
---|---|---|---|---|
00h | Horizontal Total | Les bits de 0 à 7 permettent de renseigner sur la taille d'une ligne en nombre de caractères (Character Times Units). A titre de référence, une unité de ce type correspond soit à 8 pixels (registre 1 du TS: bit 0 = 0, par exemple en mode 320x200) ou 9 pixels (registre 1 du TS: bit 0=0, par exemple en mode texte 80x25 (03h)). La valeur effective de ce registre doit être diminuée de 5 en VGA, Super VGA et de 2 pour une carte en mode EGA. | ||
01h | Horizontal Display End | Les bits de 0 à 7 fournissent les informations indiquant en pratique le nombre de caractères visible, soit 8 ou 9 pixels. Voir le registre 00h pour mieux saisir les explications... | ||
02h | Horizontal Blank Start | Les bits de 0 à 7 définissent la position à laquelle le CRTC doit désactivé le rayon cathodique du moniteur lors de l'affichage d'une ligne. La période de blanc contient la période de retour de balayage et créer par conséquent un cadre noir à droite et à gauche de l'écran. | ||
03h | Horizontal Blank End |
Ce registre est divisé en plusieurs catégorie :
|
||
04h | Horizontal Sync Start | Les bits de 0 à 7 fournissent la position (en caractère bien-sûr) où se commence le retour de balayage horizontal. | ||
05h | Horizontal Synd End |
Ce registre est divisé en plusieurs catégorie :
|
||
06h | Vertical Total | Les bits de 0 à 7 sont exploitées afin de donner la hauteur totale de l'image en lignes de balayages (doit être diminuer de 2 pour une carte VGA ou Super VGA et de 1 dans le cas d'une EGA). Ce nombre est compris sur 10 bits (11 en Super VGA). Les bits 8 et 9 se retrouve dans le registre 07h (Overflow). | ||
07h | Overflow |
Toutes les informations contenue dans ce registre
sont utilisées en complément d'autres registres. En
voici leur signification :
|
||
08h | Initial Row Address |
Ce registre est divisé en plusieurs catégorie:
|
||
09h | Maximum Row Address |
Ce registre est divisé en plusieurs catégorie:
|
||
0Ah | Ligne de début du curseur |
Ce registre est divisé en plusieurs
catégorie :
|
||
0Bh | Ligne de fin du curseur |
Ce registre est divisé en plusieurs catégorie:
|
||
0Ch | Linear Starting Address High | Les bits de 0 à 7 de se registre, contienne les valeurs des bits 8 à 15 associée à l'adresse de début de l'affichage. On peut donc comprendre, qu'il s'agit d'un registre de 16 bits, puisqu'on observe la partie haute de ceux-ci. A titre purement préventif, sachez donc que l'adresse indique la position à l'intérieur de la mémoire de l'écran, où le CRTC commence à lire les données graphiques. En manipulant cette information, on pourra provoquer un défilement horizontal, et vertical de l'écran. En mode texte le défilement se fait toutefois un caractère à la fois, le paramétrage de fin se faisant par le registre 13h de l'ATC (Horizontal Pixel Panning) et le registre 08h du CRTC (Initial Row Address). Par voie de conséquence, dans le cas du défilement continu en mode texte, avant d'écrire dans se registre, on devra obligatoirement diviser par 2 l'adresse réelle en mode pair/impair et par 4 en mode Chain 4 (par exemple 13h). | ||
0Dh | Linear Starting Address Low | Les bits de 0 à 7 affecte le mot de poids inférieur de l'adresse de début de l'écran. Pour mieux saisir ses explications, voir le registre 0Ch. | ||
0Eh | Cursor Address High | Les bits de 0 à 7 indiquent la position actuel (partie haute) du curseur dans la mémoire de l'écran. | ||
0Fh | Cursor Address Low | Les bits de 0 à 7 contiennent le mot de poids faible de l'adresse du curseur. | ||
10h | VGA: Vertical Sync Start | Les bits de 0 à 7 correspond également
au bits de 0 à 7 de la ligne de balayage (pour un grand
total de 10 bits) où se déclenche le retour de
signal vertical. Les bits 8 et 9 pourront être affecter par
l'intermédiaire du registre Overflow (07h).
L'ensemble de puce Ark utilise les bits de 6 à 7 afin de fournir des informations sur la quantité de mémoire installée. Voici la valeur et leur correspondance: |
||
Valeur | Description | |||
00b | 1 Mo | |||
01b | 2 Mo | |||
10b | 4 Mo | |||
11b | 8 Mo | |||
11h | VGA: Vertical Sync End | Ce registre est divisé en plusieurs catégorie:
|
||
12h | VGA: Vertical Display End | Après la ligne correspondant à se numéro, le CRTC coupe littéralement le rayon cathodique. On ne verra donc plus rien d'afficher à l'écran après cette position! Les bits 8 et 9 sont situés dans le registre Overflow (registre 07h). | ||
13h | VGA: Row Offset | Les bits de 0 à 7 définissent la distance entre 2 lignes située dans la mémoire vidéo, autrement dit leur longueur (Bytes Per Line). L'unité de référence dépendra du type d'adressage courant: en mode double mot on compte en blocs de 8 octets, par exemple dans le mode 13h si le registre contient la valeur 40, la largeur sera calculer comme soit 40 x 8 = 320 octets. En mode d'adressage par mot, l'unité de mesure est par groupe de 2 octets. Par exemple, le mode 320x400 en 256 couleurs, contient dans le registre le nombre 40, le produit sera donc le suivant: 40 x 2 = 80 octets. Ce registre permet également d'exécuter un défilement horizontal. On lui donne par exemple la valeur 80, ensuite la distance les lignes est alors dédoublée et en dehors de l'extrait visible sur le moniteur, on obtient des zones invisibles de la mémoire d'écran. Si on déplace par la suite le début de l'écran de quelques octets, on constatera qu'on peut effectuer un défilement horizontal de l'écran virtuel. | ||
14h | VGA: Underline Location | Ce registre est divisé en plusieurs catégorie:
|
||
15h | VGA: Vertical Blank Start | Les bits de 0 à 7 indique la position vertical où le CRTC doit désactiver le rayon cathodique. C'est à l'intérieur de cette période de blanc que le retour de balayage vertical va être déclenché. On pourra accéder aux bits 8 et 9 en utilisant le registre Overflow (registre 07h). | ||
16h | VGA: Vertical Blank End | Les bits de 0 à 7 permettent une référence relative au début du blanc, puisque seuls les 8 bits sont utilisés. La première fois que les 8 bits inférieurs du compteur de ligne interne correspondent au contenu de ce registre, la mise à blanc sera terminée. | ||
17h | VGA: CRTC Mode | Ce registre est divisé en plusieurs catégorie:
|
||
18h | VGA: Line Compare (Splot Screen) | Les bits de 0 à 7 indique où est-ce que la ligne de balayage physique où le CRTC redébute à extraire ses données du commencement de la mémoire d'écran. A l'aide de cette propriété, on peut réaliser un écran partagé en 2: dans la partie supérieure s'affichera le domaine de la mémoire fixé par la Linear Starting Address, tandis que dans la partie inférieure on fixe plutôt le début de la mémoire. Le bit 8 de ce registre se trouve dans le registre d'Overflow, le bit 9 dans le registre Maximum Row Address. | ||
19h | Genoa Super EGA: Double Scan Control |
|
||
1Bh | ET3000: X-Zoom Start Register | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
1Ch | ET3000: X-Zoom End Register | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
1Dh | ET3000: Y-Zoom Start Register Low | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
1Eh | ET3000: Y-Zoom End Register Low | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
1Fh | ET3000: Y-Zoom Start And End High Register | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
20h | ET3000: Zoom Start Address Register Low | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
21h | ET3000: Zoom Start Address Register Medium | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
23h | ET3000: Extended Start Address | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
24h | ET3000: Compatibility Register | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
25h | ET3000: Overflow High Register | Ce registre n'est utilisable qu'avec les vidéo équipé d'un ensemble de puces ET3000 de Tseng Labs. | ||
27h | Cirrus Logic CL-GD54xx: Chips version | Ce registre permet de connaître la version de puce installés de la carte Super VGA de Cirrus Logic : | ||
Valeur | Description | |||
8Ah | Cirrus Logic CL-GD5420 | |||
8Bh | Cirrus Logic CL-GD5420 r1 | |||
8Ch | Cirrus Logic CL-GD5422 | |||
90h | Cirrus Logic CL-GD5426 | |||
94h | Cirrus Logic CL-GD5424 | |||
98h | Cirrus Logic CL-GD5428 | |||
9Ch | Cirrus Logic CL-GD5429 | |||
A0h | Cirrus Logic CL-GD5430/40 | |||
A4h | Cirrus Logic CL-GD5434 révision 4 | |||
A8h | Cirrus Logic CL-GD5434 révision 8 | |||
ACh | Cirrus Logic CL-GD5436 | |||
B8h | Cirrus Logic CL-GD5446 | |||
BCh | Cirrus Logic CL-GD5480 | |||
D0h | Cirrus Logic CL-GD5462 | |||
D4h | Cirrus Logic CL-GD5464 | |||
D5h | Cirrus Logic CL-GD5464 révision BD | |||
D6h | Cirrus Logic CL-GD5465 | |||
E8h | Cirrus Logic CL-GD5436 | |||
29h | WD90C00: Unlock Second Bank | Ce registre permet d'activer ou désactiver l'accès à la banque de mémoire secondaire. | ||
2Ah | WD90C00: EGA Switches | Ce registre permet d'autoriser la lecture et l'écriture d'ajustement de la carte vidéo de changer les échangeurs sur la carte vidéo. | ||
2Bh | WD90C00: Scatch Pad | Ce registre permet de désaffecter la réinitialisation matériel et de le désactiver lors de son redémarrage. | ||
2Ch | WD90C00: Interlace H/2 Start | Ce registre permet d'indiquer la position de démarrage horizontal du compteur de caractères lors de synchronisation vertical de l'horloge dans un champ alternatif d'une opération d'entrelacement. | ||
2Dh | WD90C00: Interlace H/2 End | Ce registre permet d'ajuster l'activation d'IRQ, le double balayage vertical, l'activation du mode d'entrelacement et la synchronisation horizontal avec le mode d'entrelacement. | ||
2Dh | S3: Extended Chip ID | Ce registre permet d'identifier le modèle d'ensemble de puce S3 installée. | ||
2Dh | WD90C00: Miscellaneous Control 1 | Ce registre permet d'effectuer des ajustement divers d'horloge de la carte vidéo. | ||
2Eh | S3 7xx/866/x68: New Chip ID | Ce registre permet d'identifier les nouveaux modèle de puce S3 installée. | ||
2Fh | S3 7xx/866/x68: Chipset Revision | Ce registre permet d'identifier la version du nouvel ensemble de puce S3. | ||
30h | WD90C00: Miscellaneous Control 3 | Ce registre permet d'effectuer des ajustement divers de la ROM de la carte vidéo. | ||
30h | S3: Chip ID/Revision | Ce registre permet d'identifier la puce S3 installé ainsi que sa version. Voici les valeurs reconnu : | ||
Valeur | Description | |||
81h | S3 86c911 | |||
82h | S3 86c911A ou S3 86c924 | |||
90h | S3 86c928 (version original) | |||
A0h | S3 86c801/805 A-step ou B-step | |||
B0h | S3 86c928 PCI | |||
C0h | S3 Vision864 | |||
C1h | S3 Vision864P | |||
D0h | S3 Vision964 | |||
D1h | S3 Vision964P | |||
E0h | S3 Trio32/64, 86c866, 86c868, 86c968 | |||
E1h | S3 Trio32/64, 86c866, 86c868, 86c968 | |||
31h | S3: Memory Configuration | Ce registre permet de connaître la configuration actuel de la mémoire d'une carte vidéo de S3. | ||
32h | S3: backward compatibility 1 | Ce registre permet d'assurer une certaine compatibilité avec l'ancien matériel. | ||
33h | S3: backward compatibility 2 | Ce registre permet d'assurer une certaine compatibilité avec l'ancien matériel. | ||
34h | ET4000: 6845 compatibility control register | Ce registre permet d'assurer une certaine compatibilité avec l'ancien matériel d'affichage :
|
||
35h | S3: CRT Register Lock | Ce registre permet configurer la carte vidéo de S3. | ||
36h | Tseng Labs ET4000: Bus RAM | Les cartes vidéo étant équipée de la puce Tseng Labs ET4000 permettent de connaître les informations suivantes:
|
||
37h | Tseng Labs ET4000: Chips Memory | Les cartes vidéo étant équipée
de la puce Tseng Labs ET4000 permettent
de connaître les informations suivantes à propos de
la mémoire avec lequel les cartes sont équipés:
|
||
Valeur | Description | |||
00b ou 01b | 256 Ko | |||
10b | 512 Ko | |||
11b | 1 Mo | |||
|
||||
38h | S3: S3 Register lock | Ce registre permet configurer la carte vidéo de S3. | ||
39h | S3: Register Lock 2 | Ce registre permet configurer la carte vidéo de S3. | ||
3Ah | S3: Miscellaneous | Ce registre permet configurer la carte vidéo de S3. | ||
3Bh | S3: Data Transfer Execute position | Ce registre permet configurer la carte vidéo de S3. | ||
3Ch | S3: Interlace Retrace Start | Ce registre permet configurer la carte vidéo de S3. | ||
40h | S3: System Configuration | Ce registre permet d'effectuer les ajustements du système d'affichage de la carte vidéo S3:
|
||
41h |
Ark: Display Start S3: BIOS Flag register |
Les cartes vidéo d'origine Ark permettent de fixer, à l'aide de se registre, la position de départ de l'affichage à partir de la mémoire. | ||
42h | S3: Mode Control | Ce registre permet de configurer la carte vidéo de S3. | ||
43h | S3: Extended Mode | Ce registre permet configurer la carte vidéo de S3. | ||
45h | S3: Hardware Graphics Cursor Mode | Ce registre permet configurer la carte vidéo de S3. | ||
46h | S3: Hardware Cursor Origin X Low | Ce registre permet configurer la carte vidéo de S3. | ||
47h | S3: Hardware Cursor Origin X High | Ce registre permet configurer la carte vidéo de S3. | ||
48h | S3: Hardware Cursor Origin Y Low | Ce registre permet configurer la carte vidéo de S3. | ||
49h | S3: Hardware Cursor Origin Y High | Ce registre permet configurer la carte vidéo de S3. | ||
4Ah | S3: Hardware Graphics Cursor Foreground Stack | Ce registre permet configurer la carte vidéo de S3. | ||
4Bh | S3: Hardware Graphics Cursor Background Stack | Ce registre permet configurer la carte vidéo de S3. | ||
4Ch | S3: Hardware Graphics Cursor Map Start Address Low | Ce registre permet configurer la carte vidéo de S3. | ||
4Dh | S3: Hardware Graphics Cursor Map Start Address High | Ce registre permet configurer la carte vidéo de S3. | ||
4Eh | S3: Hardware Cursor Pattern Start X | Ce registre permet configurer la carte vidéo de S3. | ||
4Fh | S3: Hardware Cursor Pattern Start Y | Ce registre permet configurer la carte vidéo de S3. | ||
50h | Ark Model | Ce registre permet de connaître l'identité de l'ensemble de puce Ark installé. | ||
Valeur | Modèle de puces | |||
88h | ARK1000VL | |||
90h | ARK1000PV | |||
98h | ARK2000PV | |||
A0h | ARK2000MT | |||
A8h | ARK2000MI | |||
51h | S3 801+: Extended System Control 2 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
52h | S3 801+: Extended BIOS Flag 1 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
53h | S3 801+: Extended Memory Control 1 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
54h | S3 801+: Extended Memory Control 2 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
55h | S3 801+: Extended Video DAC Control | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
56h | S3 801+: External Sync Control 1 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
57h | S3 801+: External Sync Control 2 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
58h | S3 801+: Linear Address Window Control | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
59h | S3 801+: Linear Address Window Position High | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
5Ah | S3 801+: Linear Address Window Position Low | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
5Bh | S3 801+: Extended BIOS Flag 2 | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
5Ch | S3 801+: General Output Port | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
5Dh | S3 801+: Extended Horizontal Overflow | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
5Eh | S3 801+: Extended Vertical Overflow | Ce registre permet configurer la carte vidéo de S3 de série 801 ou postérieur. | ||
5Fh | S3 928/964: Bus Grant Termination Position | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
60h | S3 864/964: Extended Memory Control 3 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
61h | S3 864/964: Extended Memory Control 4 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
62h | S3 864/964: Extended Memory Control 5 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
63h | S3 864/964: External Sync Delay Adjustment High | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
64h | S3 864/964: Genlocking Adjustment | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
65h | S3 864/964: Extended Miscellaneous Control | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
66h | S3 864/964: Extended Miscellaneous Control 1 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
67h | S3 864/964: Extended Miscellaneous Control 2 | Ce registre permet configurer la carte vidéo de S3 de série864/964 ou postérieur. | ||
68h | S3 864/964: Configuration 3 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
69h | S3 864/964: Extended System Control 3 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
6Ah | S3 864/964: Extended System Control 4 And Switch Bank | Les bits de 0 à 5 sont utilisés par les cartes vidéo S3 de série 864/964 afin de permuter de page de 64 Ko de mémoire à l'adresse segment A000h. | ||
6Bh | S3 864/964: Extended BIOS Flag 3 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
6Ch | S3 864/964: Extended BIOS Flag 4 | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. | ||
6Dh | S3 864/964: Extended Miscellaneous Control | Ce registre permet configurer la carte vidéo de S3 de série 864/964 ou postérieur. |
Exemple
L'exemple suivant permet de tester la présence de la carte vidéo Zymos :