Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Programmation  Plateforme  Compilateur  Outils  Emulateur  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucles
Type de données élémentaire
Référence des registres
Mode d'adressage du processeur
Structure de données
Référence des instructions par catégories
Référence, lexique et dictionnaire des instructions 80x86
Les symboles prédéfinies
Les directives
Mode 8080
Mode réel
Mode protégé
Mode virtuel 8086
Mode SMM
Format du descripteur de segment
Format du TSS
Format du SMM
Format BCD
Format des nombres réels
8086/8088
Série NEC V20/V30
80286
80386
Pentium
Pentium Pro
AVX-512
MMX (MultiMedia eXtensions)
MPX (Memory Protection Extensions)
SGX (Software Guard Extensions)
SHA extensions
SMX (Safer Mode Extensions)
SSE (Streaming SIMD Extensions)
SSE2 (Streaming SIMD Extensions 2)
SSE3 (Streaming SIMD Extensions 3)
SSSE3 (Supplemental Streaming SIMD Extensions 3)
SSE4.1 (Streaming SIMD Extensions 4.1)
SSE4.2 (Streaming SIMD Extensions 4.2)
TSX (Transactional Synchronization Extensions)
VMX (Virtual-Machine eXtensions)
x86-64
Les boucles
Les chaînes
les comparaisons
Les conversions
Les décalages de bits
Les drapeaux
Les opérateurs
Saut conditionnel
Saut inconditionnel
Les transferts de données
Utilisation de la pile
Accès mémoire
Ensemble d'instructions pour les applications 80386
BIOS compatible au micro-ordinateur IBM PC
Démarrage du système
Détermination de la version du BIOS
Détermination du type de PC
Fonctions de sortie de l'écran du BIOS
Détermination de la configuration du système à l'aide du BIOS
Détermination de la RAM disponible à l'aide du BIOS
Accéder à la disquette depuis le BIOS
Accéder au disque dur depuis le BIOS
Accéder au port série depuis le BIOS
L'interruption de la cassette
Accéder au clavier depuis le BIOS
Accéder à l'imprimante à partir du BIOS
Lecture de la date et de l'heure à partir du BIOS
Variables du BIOS
Bonjour
Application
Détection
Mathématique
Temps
Stationnement de voiture
BIOS SCSI
CMOS de XT
DesqView
Valeur absolue (ABS)
Triangle Pascal
Année bissextile
DOS
GeoWorks
86-DOS
MS-DOS 2
MS-DOS 6
A86
LZASM
MASM
NASM
TASM
CodeView
Free Hex Editor Neo
OllyDbg
SoftICE
Turbo Debugger
DOSBox
emu8086
PCE - PC Emulator
PCem
Interruptions
Port d'entrée/sortie
RAM de l'IBM PC
Téléchargement
00h à 07h: Processeur
08h à 0Fh: Périphériques (IRQ0 à IRQ7)
10h: Gestionnaire vidéo
13h: Accès aux disques
14h: Gestion des ports séries
15h: Extension d'Entrée/Sortie
16h: Gestion du clavier
17h: Gestion de l'imprimante
21h: Service DOS
2Ah: Interface de service réseau
2Fh: Multiplexe
33h: Interface du pilote de souris
59h: GSS Computer Graphics Interface
5Ch: Réseau BIOS (NetBIOS)
67h: Gestionnaire EMM/EMS
00h: Mode vidéo
01h: Sélection du type de curseur
10h, F0h: Tseng Labs HiColor
4Fh: Pilote VESA
5Fh: Realtek RTVGA
6Fh: Video 7
18h: Demande des informations SCSI
01h: Écrit dans la RAM non-volatile (Amstrad PC1512)
02h: Lecture dans la RAM non-volatile (Amstrad PC1512)
10h: Gestionnaire principal TopView
89h: Entrée en mode protégé
64h: OS/2 API DOS32StartSession
FFh, 92h: Détecte la présence du pilote «PREDIR.EXE»
16h: Windows & DPMI
0Ah: Détection de Windows
84h: Demande le point d'entrée
86h: Détection du mode DPMI
87h: Détecte l'installation DPMI
8Eh: Machine virtuel et application
Préface
Notes légal
Dictionnaire
Recherche
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 :
  • Pour commencer le bits de 5 à 6 sont utilisées pour le nombre de caractères que le CRTC scrute à l'avance dans la mémoire (autrement dit, il s'agit du signal Display Enable, lequel est retardé en conséquence) afin d'être toujours prêt à renseigner sur le prochain caractère. En VGA, sa valeur par défaut est 0.
  • Tandis que les 5 bits inférieurs, soit ceux situer de 0 à 4, a une taille de 6 bits (0 à 63) représentent la fin de la période de blanc. Le bit 5 de ce nombre pourra être retrouver dans le registre 05h du CRTC.
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 :
  • Les bits de 0 à 4 sont affectés à la fin du retour de balayage horizontal par rapport au début. La première fois que les 5 bits inférieurs du compteur de caractères interne sont identiques au contenu de ce registre, on pourra en conclure que le retour de balayage est achevé.
  • Le bits de 5 et 6 est utiliser pour le Horizontal Sync Skew (délai). Le retour de balayage horizontal est parfois suivi d'un court délai, pour en savoir davantage, on se référera au registre 03h, bits 5 et 6.
  • Le bit 7 sera quand à lui associée au signal horizontal Blank End (registre 03h).
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 :
  • Bit 0: Vertical Total (bit 8)
  • Bit 1: Vertical Display Enable End (bit 8)
  • Bit 2: Vertical Sync Start (bit 8)
  • Bit 3: Vertical Blank Start (bit 8)
  • Bit 4: Line compare (Split Screen) (bit 8)
  • Bit 5: Vertical Total (bit 9)
  • Bit 6: Vertical Display Enable End (bit 9)
  • Bit 7: Vertical Sync Start (bit 9)
08h Initial Row Address Ce registre est divisé en plusieurs catégorie:
  • Les bits de 5 à 6 sont exploités afin de permettre un décalage du contenu de l'écran vers la gauche. Le décalage peut aller jusqu'à 3 octets, (en mode 320x200 pixels par exemple), mais il peut se faire avec plus de liberté en maniant l'adresse du début linéaire (Linear Starting Address, registre 0Ch et 0Dh).
  • Les bits de 0 à 4 identifie de leur côté, la ligne de déclenchement du retour de balayage vertical, normalement associé à la ligne 0. Si on augmente ce paramètre, le CRTC débute par une ligne située plus bas, ceci déplaçant le contenu de l'écran vers le haut. En outre, se registre fonctionne de la même façon en mode texte, de sorte que grâce à lui on peut réaliser un défilement continu vertical de l'affichage.
A noter qu'en mode 320x200 en 256 couleurs, on pourra utiliser se principe le suivant afin de ralentir sensiblement le défilement vertical tout en conservant 70 décalages par seconde dans l'objectif d'éviter des tressaillements: l'adresse de début est incrémentée qu'après 2 balayages afin de diminuer la vitesse. Le défilement de fin est ensuite effectué à l'aide de ce registre en le faisant osciller entre les valeurs 0 et 1. A chaque fois le défilement se fera sur une ligne de balayage (correspondant à la moitié d'une ligne d'image en mode 320x200 en 256 couleurs).
09h Maximum Row Address Ce registre est divisé en plusieurs catégorie:
  • Le bit 7 offre l'opportunité assez intéressante de divisé par 2 le rythme de l'horloge (clock rate) s'il est fixé à 1. En terme claire, grâce à ce bit on pourra doubler l'affichage de chaque ligne. Mais pourquoi cette caractéristique si particulière? A l'origine se mécanisme fut prévu pour la génération des modes d'affichages en 200 lignes dans une résolution physique de 400 lignes. La plupart des BIOS passe donc par se bit afin de parvenir à se résultat.
  • Les bits de 0 à 4 pour leur part, donne la hauteur des caractères dans les modes textes diminuée de 1. Par exemple le mode 3 de la carte VGA, avec des caractères de dimension 9x16 pixels, retournera 15. On pourra en plus l'exploiter dans les modes graphiques pour diminuer la résolution verticale (affichage multiple de chaque ligne si les bits de 0 à 4 sont toutefois supérieur à 0), dans le but très certain de provoquer une effet d'étirement.
0Ah Ligne de début du curseur Ce registre est divisé en plusieurs catégorie :
  • Les bits de 0 à 4 sont utilisées afin de désigner où la ligne de balayage désignant le curseur commence à l'intérieur du caractère afficher.
  • Le bit 5 est exploité afin d'offrir aux programmeurs sans techniques compliquer de faire apparaître (0) ou disparaître (1) le curseur.
0Bh Ligne de fin du curseur Ce registre est divisé en plusieurs catégorie:
  • Avec les bits de 0 à 3, dans le même ordre d'idée que le registre précèdent, on exploitera pour ce nombre pour désigner la ligne de balayage où le curseur s'arrête à l'intérieur du caractère afficher.
  • Tandis que les bits 5 et 6, tant qu'à eux, permettront à l'affichage de fixer le délai à laquelle le curseur s'affichera à l'écran. Cela bien entendu, ne s'applique qu'avec une cartes VGA ou postérieur. La valeur par défaut est pour cette raison égale à 0.
La Super VGA de Zymos: La lecture de se registre contrairement aux autres cartes vidéo retournera 2. On utilisera d'ailleurs cette technique afin de détecter la présence de la carte. Cependant, on ne devra pas oublier que le comportement ne s'opère que si le port d'Entrée/Sortie est 3D4h/3D5h et surtout pas 3B4h/3B5h.
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:
  • Les bits de 0 à 3 correspond à la fin du retour de balayage. Elle est aussi déterminer à partir du début, étant donné que seulement 4 bits sont réellement utilisées à cette effet. Lorsqu'il s'agit de la première fois que les 4 bits inférieur du compteur de lignes internes sont identiques, on peut en déduire qu'un retour de balayage en cours vient d'être achevé.
  • Le bit 4 pour sa part, est exploité afin d'activer l'interruption. Toutefois on ne devra pas oublier qu'à l'issue de chaque interruption, ce bit devra être remis à 0, et cela afin qu'une nouvelle interruption puisse encore être déclencher.
  • Si le bit 5 vaut 0, c'est que l'interruption précédente est réinitialisée par effacement du bit 4, le CRTC déclenche un IRQ2 au prochain retour de balayage vertical. Mais la plupart des cartes VGA ne génèrent pas cette interruption hélas, soit parce qu'elles ne sont tout simplement pas en mesure de la faire a cause de raison matériel ou que le constructeur a décidé de le configurer par micro-interruption DIP dans le but inavoué de rester compatible.
  • Enfin, le bit 7 est ni plus ni moins qu'un très sage bit de protection. Donc s'il est égale à 1, c'est qu'il sera impossible de modifier les registres 0 à 7 du CRTC à l'exception toutefois du bit 4 du registre d'Overflow (registre 07h). Presque tous les BIOS des cartes VGA et Super VGA ne prennent aucun risque et fixe ce bit à 1. On devra donc mettre à 0 ce bit si l'on souhaite effectuer une manipulation du timing.
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:
  • Les bits de 0 à 4 en mode monochrome, détermine la ligne de balayage de l'ACT exécutant le soulignement. Si on diminue cette valeur, les caractères peuvent se retrouver carrément barrés ou surlignés. Si on dépasse la hauteur d'un caractère, le soulignement est toutefois inactif.
  • Le bit 5, dans l'éventualité où il porterait la valeur 1, provoquera une fréquence de lecture dès lors divisée par 4. On l'emploi le plus régulièrement dans le cas d'un mode double mot.
  • Le bit 6 permettra d'enclencher le mode double mot à condition bien sûr de fixer sa valeur à 1. Dans ce mode particulier, l'adresse actuel subit une rotation de 2 bits vers la gauche, avant d'être ensuite envoyé à la mémoire vidéo pour un accès en lecture. De ce fait, la plupart du temps, ce sont d'abord les positions 0, 4, 8,... puis 1, 5, 9,... étant lu en mémoire. Dans la vie concrète d'une carte vidéo, ce fonctionnement se produit par exemple en mode 320x200 en 256 couleurs.
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:
  • Si on les mets à 0, les bits 0 à 1 reprogramment les lignes d'adresse 13 et 14: le bit 0 est reproduit en bit 13, le bit 1 en bit 14. Attention, se sera uniquement le cas si le bit 1 de ce registre vaut 0. En conséquence, les adresses impaires sont lues par tranches de 8 Ko après les paires, les 2 bits inférieurs déterminant un bloc. On peut grâce à cette caractéristique, émuler le contrôleur 6845 adressant la mémoire vidéo de cette manière. En CGA le bit 0 est mis à 0 tout comme le bit 1 en émulation du mode Hercules.
  • Le bit 2 s'il est égale à 1, indique que le compteur de ligne n'est incrémenté que toutes les 2 lignes, ceci dédoublant le timing vertical.
  • En mettant à 1 le bit 3, il divise par 2 la fréquence d'accès aux caractères dans la mémoire d'écran. On peut considérer que son rôle est similaire à celui du bit 5 du registre 14h.
  • Si le bit 5 est nul, le bit 15 n'est pas transféré dans le bit 13 en direction du bit 0 (rotation): à titre historique, ce procédé permettait aux cartes EGA munies de 64 Ko de mémoire de ne pas déborder en mode double mot.
  • Si le bit 6 est égale à 0, le mode mot (Word) est actif, sinon il s'agit du mode octet (Byte). Si le bit 6 du registre 14h contient 1 (mode double mot) ce bit n'a plus aucune importance.
  • Une valeur de 0 du bit 7, arrête l'ensemble du timing horizontal et vertical.
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
  • Le bit 0 fixer à la valeur 1 de la carte Super EGA du fabricant Genoa permet d'activer le double balayage de ligne.
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 :
  • Le bit 0 permet d'assurer la translation EMCK du bit CS0.
  • Le bit 6 permet d'activer le double balayage de ligne / soulignement du mode AT&T.
  • Le bit 7 permet à la carte d'émuler le contrôleur 6845 des cartes CGA.
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:
  • Le bit 6 s'il vaut 0, indique que l'accès à la mémoire vidéo se fait en 8 bits, tandis que s'il est vaut 1, elle se fait en 16 bits.
  • Le bit 7 fournira un renseignement dans le même genre, c'est-a-dire que si le bit est à 0, les accès de port d'entrée/sortie sont effectués en 8 bits, et égalera 1 dans le cas de 16 bits.
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:
  • Le bit 0 et 1 fournit quatre combinaison possible lequel représente la quantité de mémoire installée sur la carte Super VGA. Les valeurs correspondent au information suivantes:
Valeur Description
00b ou 01b 256 Ko
10b 512 Ko
11b 1 Mo
  • Le bit 4 indique lorsqu'il vaut 0, que le bus de la ROM fait des accès en 8 bits, au contraire lorsqu'il vaut 1, c'est même accès sont effectuer en 16 bits.
  • Le bit 7 est indicateurs intéressant, puisqu'il permet d'indiquer le type de mémoire installée: 0 = DRAM, 1 = VRAM.
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:
  • Le bit 0 permet d'activer l'accès aux registres de compatibilité de la carte IBM 8514/A lequel utilise le Port d'Entrée/Sortie x2E8h.
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 :

  1. MOV DX,3D4h
  2. MOV AL,0Bh
  3. OUT DX,AL ; 3D4h
  4. INC DX
  5. IN  AL,DX ; 3D5h
  6. AND AL,0Fh
  7. CMP AL,2
  8. JE  @ZyMosFound
  9.  ; Ce n'est pas une carte vidéo Zymos
  10.  ; ...
  11. @ZyMosFound:
  12.  ; La carte Zymos a été trouvé
  13.  ; ...


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Samedi, le 2 août 2014