Interruption 10h |
Fonction 02h |
Position du curseur |
---|---|---|
MDA, CGA, PC Junior, EGA, MCGA, VGA, IBM 8514/A, SVGA |
Description
Cette fonction permet le positionnement du curseur dans la page vidéo spécifié.
Entrée
Registre | Description |
---|---|
AH | 02h |
BH | Ce registre permet d'indiquer la page |
DH | Ce registre permet d'indiquer la ligne (Coordonnée Y) |
DL | Ce registre permet d'indiquer la colonne (Coordonnée X) |
Sortie
Aucune
Remarques
- La coordonnée (x,y)=(0,0) représente le point en haut à gauche de l'écran.
- La valeur maximale de chaque coordonnée texte dépend de la carte vidéo et du mode d'affichage, voici un tableau récapitulatif :
- Voici l'algorithme de cette fonction d'interruption en Turbo Pascal :
- Un curseur séparé est conservé pour chaque page d'affichage, et chacun peut être défini indépendamment avec cette fonction quelle que soit la page actuellement active. Le nombre de pages d'affichage disponibles dépend de la carte vidéo et du mode d'affichage actuel. Voir l'interruption 10h, fonction 05h.
Mode | X maximum | Y maximum | Optionnel seulement |
---|---|---|---|
00h | 39 | 24 | |
01h | 39 | 24 | |
02h | 79 | 24 | |
03h | 79 | 24 | |
04h | 39 | 24 | |
05h | 39 | 24 | |
06h | 79 | 24 | |
07h | 79 | 24 | |
08h | 19 | 24 | PC Junior |
08h | 131 | 24 | Graphics Solution (Super CGA d'ATI) |
09h | 39 | 24 | |
0Ah | 79 | 24 | |
0Bh | Réservé | Réservé | |
0Ch | Réservé | Réservé | |
0Dh | 39 | 24 | |
0Eh | 79 | 24 | |
0Fh | 79 | 24 | |
10h | 79 | 24 | |
11h | 79 | 29 | |
12h | 79 | 29 | |
13h | 39 | 24 | |
... | ... | ... | ... |
Pour les autres modes, il suffit de soustraire 1 au nombre de colonne texte et d'également soustraire 1 au nombre de ligne texte.
Procedure SetCursorPos;
Var
Offset:Word;
Begin
Offset:=DH*MemW[$0040:$4A]+DL;
Port[MemW[$0040:$63]]:=$0E; Port[MemW[$0040:$63]+1]:=Hi(Offset);
Port[MemW[$0040:$63]]:=$0F; Port[MemW[$0040:$63]+1]:=Lo(Offset);
MemW[$0040:$50+(BH shl 1)]:=DX;
End;
Exemple
L'exemple suivant permet de position le curseur au coordonnées de colonne 7, ligne 8:
Ligne DB 8
Colonne DB 7
...
MOV DH,Ligne ; Met la ligne dans le registre
MOV DL,Colonne ; Met la colonne dans le registre
MOV AH,02h ; Fixe le numéro de la fonction
MOV BH,0 ; Fixe le numéro de la page, soit 0
INT 10h ; Appelle l'interruption vidéo (10h)
Voir également
Interruption 10h, Fonction 03h: Demander la position du curseur,
Interruption 10h, Fonction 05h: Sélection de la page affichée
Références
La Bible du PC: Programmation système - Sixième Edition, Edition Micro-Application, Michael Tischer, 1996, ISBN: 2-7429-0544-8, page 1579.
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 37 à 38.
The Undocumented PC: A programmer's Guide to I/O, CPUs, and Fixed Memory Areas - Second Edition, Edition Addison-Wesley, Frank van Gilluwe, 1997, ISBN: 0-201-47950-8, page 399.