Interruption 10h |
Fonction 11h, Sous-Fonction 12h |
Active/charge une police 8x8 |
---|---|---|
EGA, MCGA, VGA, IBM 8514/A, SVGA |
Description
Cette fonction permet de charger/activer un ensemble de police de caractères de dimension 8x8 pixels.
Entrée
Registre | Description |
---|---|
AX | 1112h |
BL | Ce registre permet d'indiquer la table de caractères appelée (0 ou 1) |
Sortie
Aucune
Remarques
- Cette fonction permet de sélectionner la police de caractères dans les modes d'affichage texte (alphanumérique). Pour la sélection des polices dans les modes graphiques (adressables en tous points), voir l'interruption 10h, Fonction 11h, sous-fonction 20h à 24h.
- Si AL = 12H, la page 0 doit être active. Les points (octets par caractère), les lignes et la longueur du tampon de rafraîchissement sont recalculés. Le contrôleur est reprogrammé avec la ligne de balayage maximale (points - 1), le début du curseur (points - 2), la fin du curseur (points - 1), la fin de l'affichage vertical ((lignes * points) - 1) et l'emplacement de soulignement (points - 1, mode 7 uniquement). Si la sous-fonction 12h est appelée à tout moment autre qu'immédiatement après un mode défini, les résultats sont imprévisibles.
- Sur la carte vidéo MCGA, un appel à la sous-fonction 02h doit être suivi d'un appel à la sous-fonction 03h, afin que le BIOS en ROM charge la police de caractères dans les pages de police de caractères internes du générateur de caractères.
- La sous-fonction 12h est réservée sur la carte vidéo MCGA. S'il est appelé, la sous-fonction 02h est exécutée.
Exemple
Voici un exemple montrant comment utiliser le mode d'écran texte 80x43 sans utilisé les routines de base du Turbo Pascal :
- Program Mode43;
-
- Var
- I:Byte;
- S:String;
-
- Procedure GotoXY43(X,Y:Byte);Begin
- Mem[$0000:$0450]:=X-1;
- Mem[$0000:$0451]:=Y-1;
- End;
-
- Procedure Write43(Const S:String);
- Var
- X:Byte Absolute $0000:$0450;
- Y:Byte Absolute $0000:$0451;
- I:Byte;
- Begin
- For I:=1 to Length(S)do Begin
- Mem[$B800:(X+I-1+(Y*80))shl 1]:=Byte(S[I]);
- End;
- End;
-
- BEGIN
- ASM
- MOV AX,0003h
- INT 10h
- MOV AX,01201h
- MOV BX,00030h
- INT 010h
- MOV AX,1112h
- MOV BL,0
- INT 10h
- END;
- For I:=1 to 43 do Begin
- GotoXY43(1,I);
- Str(I,S);
- Write43('Ligne '+S);
- End;
- GotoXY43(1,43);
- Write43('Presse une touche pour quitter...');
- ASM
- XOR AX,AX
- INT 16h
- END;
- END.
on obtiendra le résultat suivant :
Voir également
Assembleur 80x86 - Interruption 10h: Fonction 12h, Sous-Fonction 30h - Fixe le balayage
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 1597.
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 420.
Dernière mise à jour : Jeudi, le 3 mars 2016