Home Programmierung
und BIOS
Shareware-
FAQ
Links Suche Kontakt u.
Infos

BIOS-Interrupt 10h

Die Funktionen den Interruptes 10h (Video-BIOS) stellt die folgende Tabelle dar:

Funktion Unter- Funktion Bedeutung Eingabe Ausgabe BIOS - Implementierung Anmerkungen
00h - Video - Modus setzen AH=00h
AL=Videomodus
keine PC, XT, AT, PS/2 siehe hierzu: Video-Modi
01h - Cursor - Größe AH=01h
CH=Startzeile
CL=Endzeile
keine PC, XT, AT, PS/2 Die Angaben im CX-Register beziehen sich auf die logische Zeile eines Zeichens (von oben). Der Bereich der Werte hängt von der Zeichengröße und der verwendeten Videokarte ab.
02h - Cursorposition ändern AH=02h
BH=Nummer der Bildschirmseite
DH=Zeile
DL=Spalte
keine PC, XT, AT, PS/2 Liegt ein angegebener Bereich im Register DX nicht innerhalb einer sichtbaren Position, kann der Cursor verschwinden.
03h - Cursorposition lesen AH=03h
BH=Nummer der Bildschirmseite
DH=Zeile
DL=Spalte
CH=Startzeile
CL=Endzeile
PC, XT, AT, PS/2 Start- und Endzeile sind Werte entsprechend Funktion 01h.
04h - Lichtstiftposition abfragen ??? ??? EGA Es lagen leider nicht genügend Informationen zu dieser Funktion vor.
05h - Bildschirmseite wählen AH=05h
AL=Nummer der Bildschirmseite
keine PC, XT, AT, PS/2 Zulässige Werte sind von der installierten Videokarte abhängig
06h - Rechteckigen Bereich des Bildschirms aufwärts rollen AH=06h
AL=Anzahl Zeilen
CH=obere Zeile
CL=linke Spalte
DH=untere Zeile
DL=rechte Spalte
BH=Attribut für neue Zeilen
keine PC, XT, AT, PS/2 Wird für AL 0 übergeben, wird der ganze Bereich gelöscht. Die Funktion bezieht sich immer auf die aktuelle Bildschirmseite.
07h - Rechteckigen Bereich des Bildschirms abwärts rollen AH=07h
AL=Anzahl Zeilen
CH=obere Zeile
CL=linke Spalte
DH=untere Zeile
DL=rechte Spalte
BH=Attribut für neue Zeilen
keine PC, XT, AT, PS/2 Wird für AL 0 übergeben, wird der ganze Bereich gelöscht. Die Funktion bezieht sich immer auf die aktuelle Bildschirmseite.
08h - Lesen eines Zeichens an der aktuellen Cursorposition AH=08h
BH=Nummer der Bildschirmseite
AL=ASCII - Code des Zeichens
AH=Attribut des Zeichens
PC, XT, AT, PS/2 -
09h - Schreiben eines Zeichens AH=09h
BH=Nummer der Bildschirmseite
CX=Anzahl der Wiederholungen
AL=ASCII - Code
BL=Attribut / Farbe
keine PC, XT, AT, PS/2 Es werden CX Zeichen ausgegeben. Steuercodes werden nicht berücksichtigt. Im Grafikmodus erfolgt kein Zeilenumbruch, außerdem bedeutet ein gesetztes Bit 7 im Register BL, daß die Zeichenfarbe mit dem aktuellen Zeichenmuster XOR-verknüpft wird.
0Ah - Schreiben eines Zeichens AH=0Ah
BH=Nummer der Bildschirmseite
CX=Anzahl der Wiederholungen
AL=ASCII - Code
BL=Farbe im Grafikmodus
keine PC, XT, AT, PS/2 Es werden CX Zeichen ausgegeben. Steuercodes werden nicht berücksichtigt. Im Grafikmodus erfolgt kein Zeilenumbruch, außerdem bedeutet ein gesetztes Bit 7 im Register BL, daß die Zeichenfarbe mit dem aktuellen Zeichenmuster XOR-verknüpft wird.
0Bh 00h Rahmen- / Hintergrundfarbe setzen AH=08h
BH=0
BL=Rahmen- / Hintergrundfarbe
keine PC, XT, AT, PS/2 Im Textmodus wird nur der Bildschirmrahmen, im Grafikmodus der gesamte Bildschirm bestimmt.
0Bh 01h Farbpalette wählen AH=0Bh
BH=1
BL=Nummer der Farbpalette
keine PC, XT, AT, PS/2 Diese Funktion wählt eine der beiden Farbpaletten für den 320x200-Grafikmodus aus.
0Ch - Bildpunkt setzen (Grafik-Modus) AH=0Ch
BH=Nummer der Bildschirmseite
DX=Zeile
CX=Spalte
AL=Farbe
keine PC, XT, AT, PS/2 Der Wertebereich in BL ist abhängig vom momentanen Videomodus und gilt als relativer Wert zur aktuellen Farbpalette.
0Dh - Bildpunkt lesen (Grafik-Modus) Ah=0Dh
BH=Nummer der Bildschirmseite
DX=Zeile
CX=Spalte
AL=Farbe PC, XT, AT, PS/2 Der Wertebereich in BL ist abhängig vom momentanen Videomodus und gilt als relativer Wert zur aktuellen Farbpalette.
0Eh - Zeichen an aktuelle Cursorposition schreiben und Position aktualisieren AH=0Eh
AL=ASCII - Code
BL=Farbe im Grafikmodus
keine PC, XT, AT, PS/2 Als Farbe wird das aktuelle Attribut verwendet. Es erfolgt wenn nötig ein Zeilenumbruch. Steuerzeichen werden als solche erkannt.
0Fh - Video - Modus lesen AH=0Fh AL=Nummer des Video - Modus
AH=Anzahl der Zeichen pro Zeile
BH=Nummer der aktuellen Bildschirmseite
PC, XT, AT, PS/2 siehe hierzu Tabelle 3: Video-Modi
10h 00h Palettenregister setzen AH=10h
AL=0
BL=Nummer des Palettenregisters
BH=Farbwert
keine EGA, VGA, PS/2 Bestimmt den Farbwert eines Punktes in den 16-Farb-Modi.
10h 01h Rahmenfarbe setzen AH=10h
AL=1
BH=Farbwert
keine EGA, VGA, PS/2 -
10h 02h Alle Palettenregister setzen AH=10h
AL=2
ES=Segmentadresse der Farbtabelle
DX=Offsetadresse der Farbtabelle
keine EGA, VGA, PS/2 Verändert alle Palettenregister einschließlich des Rahmens. ES:DX zeigt auf eine Tabelle mit 17 Einträgen für die Palettenregister.
10h 03h Hintergrund - Intensität / Blinkenattribut setzen AH=10h
AL=3
BL=Blink - Attribut (0: helle Hintergrundfarben, 1: Blinken)
keine EGA, VGA, PS/2 Diese Funktion ermöglicht die Darstellung von 16 Hintergrundfarben und legt damit fest, wie Bit 7 des Attribut - Bytes interpretiert wird.
10h 07h Palettenregister lesen AH=10h
AL=7
BL=Nummer des Palettenregisters
BH=Farbwert VGA, PS/2 -
10h 08h Rahmenfarbe lesen AH=10h
AL=8
BH=Rahmenfarbe VGA, PS/2 -
10h 09h Alle Palettenregister lesen AH=10h
AL=9
ES=Segmentadresse der Farbtabelle
DX=Offsetadresse der Farbtabelle
Farbtabelle in ES:DX VGA, PS/2 Gegenstück zu Unterfunktion 2h.
10h 10h DAC - Register setzen AH=10h
AL=10h
BX=Registernummer
CL=Blauanteil
CH=Grünanteil
DH=Rotanteil
keine VGA, PS/2 Für die Farbwerte sind Werte zwischen 0 und 63 (6 Bit) zulässig. Die VGA-Karte verwendet DAC (Digital - Analog - Converter) - Register, um digitale Farbsignale, bestehend aus 18 Bit, in analoge Monitorsignale umzuwandeln.
10h 12h Mehrere DAC - Register setzen AH=10h
AL=12h
BX=Nummer des ersten Registers
CX=Anzahl der Register
ES=Segmentadresse der Farbtabelle
DX=Offsetadresse der Farbtabelle
keine VGA, PS/2 Setzt CX DAC - Register mit den Werten aus dem Puffer, die in der Reihenfolge Rot-Grün-Blau abgelegt sein müssen.
10h 13h Methode der Farbauswahl festlegen oder DAC - Register - Gruppe auswählen ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
10h 15h DAC - Register lesen AH=10h
AL=15h
BX=Registernummer
CL=Blauanteil
CH=Grünanteil
DH=Rotanteil
VGA, PS/2 Farbwerte liegen zwischen 0 und 63.
10h 17h Mehrere DAC - Register lesen AH=10h
AL=17h
BX=Nummer des ersten Registers
CX=Anzahl Register
ES=Segmentadresse der Farbtabelle
DX=Offsetadresse der Farbtabelle
Farbtabelle in ES:DX VGA, PS/2 -
10h 18h DAC - Mask - Register laden ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
10h 19h Inhalt des DAC - Mask - Registers auslesen ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
10h 1Ah Methode der Farbauswahl und Inhalt des Color - Select - Registers ermitteln ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
10h 1Bh Inhalt der DAC - Farbregister in Grauwerte umwandeln ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
11h 00h Zeichensatz laden AH=11h
AL=0
BH=Byte pro Zeichen
BL=Zeichentabelle (0 oder 1)
CX=Zeichenzahl
DX=ASCII - Code des ersten Zeichens
ES=Segmentadresse der Zeichentabelle
Offsetadresse der Zeichentabelle
keine EGA, VGA, PS/2 Lädt einen benutzerdefinierten Zeichensatz in den Grafikspeicher der Videokarte. Der Zeichensatz wird nicht aktiviert, die Größe der Zeichen nicht der Bildschirmdarstellung angepaßt.
11h 01h 8*14 - Zeichensatz laden AH=11h
AL=1
BL=Zeichentabelle
keine EGA, VGA, PS/2 Lädt 8*14 - Zeichensatz, aktiviert ihn aber nicht.
11h 02h 8*8 - Zeichensatz laden AH=11h
AL=2
BL=Zeichentabelle
keine EGA, VGA, PS/2 Lädt 8*8 - Zeichensatz, aktiviert ihn aber nicht.
11h 03h Zeichensatz aktivieren AH=11h
AL=3
BL=Nummer des Zeichensatzes
keine EGA, VGA, PS/2 Diese Funktion aktiviert einen der vier Zeichensätze.
11h 04h 8*16 - Zeichensatz laden AH=11h
AL=4
BL=Zeichentabelle
keine VGA, PS/2 Lädt 8*16 - Zeichensatz, aktiviert ihn aber nicht.
11h 10h Zeichensatz laden & aktivieren AH=11h
AL=10h
BH=Byte pro Zeichen
BL=Zeichentabelle (0 oder 1)
CX=Zeichenzahl
DX=ASCII - Code des ersten Zeichens
ES=Segmentadresse der Zeichentabelle
BP=Offsetadresse der Zeichentabelle
keine EGA, VGA, PS/2 Lädt einen benutzerdefinierten Zeichensatz in den Grafikspeicher der Videokarte. Der Zeichensatz wird aktiviert und die Größe der Zeichen der Bildschirmdarstellung angepaßt.
11h 11h 8*14 - Zeichensatz aktivieren AH=11h
AL=11h
BL=Zeichentabelle
keine VGA, PS/2 Lädt den 8*14 - Zeichensatz und aktiviert ihn. Die VGA - Karte schaltet dazu in den 28 - Zeilen - Modus.
11h 12h 8*8 - Zeichensatz aktivieren AH=11h
AL=12h
BL=Zeichentabelle
keine EGA, VGA, PS/2 Lädt den 8*8 - Zeichensatz und aktiviert ihn. Die VGA - Karte schaltet dazu in den 50 - Zeilen - Modus (EGA 43).
11h 14h 8*16 - Zeichensatz aktivieren AH=11h
AL=14h
BL=Zeichentabelle
keine VGA, PS/2 Lädt den 8*16 - Zeichensatz und aktiviert ihn.
11h 30h Zeichensatz - Informationen AH=11h
AL=30h
BH=Zeichensatz
CX=Bytes pro Zeichen
DL=Anzahl der Bildschirmzeilen
ES=Segmentadresse der Zeichentabelle
BP=Offsetadresse der Zeichentabelle
EGA, VGA, PS/2 Informationen über einen Zeichensatz, dessen Code Sie in BH übergeben haben (Tabelle mit den gültigen Werten folgt am Ende dieser Tabelle).
12h 10h EGA - Konfiguration ermitteln ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
12h 20h alternative Hardcopy - Routine aktivieren ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
12h 30h Anzahl der Bildschirmzeilen (Scan - Lines) festlegen ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
12h 31h Laden der Standard-Palette AH=12h
BL=31h
AL=Modus (0: automatisches Laden erlauben; 1: dto. verbieten)
AL=12h VGA, PS/2 Legt fest, ob bei der Umschaltung des Videomodus mit Funktion 00h die Palettenregister mit den Standardwerten geladen werden.
12h 32h Zugriff auf Video - RAM AH=12h
BL=32h
AL=Modus (0: erlauben; 1: verbieten)
keine VGA, PS/2 Legt fest, ob der CPU ein Zugriff auf das Video - RAM oder Hardware - Register gestattet wird.
12h 33h Automatische Grau-Umwandlung der DAC - Farbregister an- / ausschalten ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
12h 34h Cursor - Emulation an- / ausschalten ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
12h 36h Bildschirm dunkelschalten AH=12h
BL=36h
AL=Modus (0: Bildschirm an; 1: Bildschirm aus)
keine VGA, PS/2 Ermöglicht es, den Bildschirmaufbau zu unterdrücken und damit den Bildschirm dunkelzuschalten.
13h - Textausgabe AH=13h
AL=Modus
BL=Attribut
BH=Bildschirmseite
CX=Anzahl Zeichen
DH=Zeile
DL=Spalte
ES=Segmentadresse des Puffers
BP=Offsetadresse des Puffers
keine EGA, VGA, PS/2 Gibt eine Zeichenkette entsprechend dem in AL gesetzten Modus (Tabelle mit den gültigen Modi unter dieser Tabelle) aus. Steuercodes werden interpretiert. Der Bildschirm wird bei Bedarf automatisch gerollt.
14h - reserviert - - - -
15h - reserviert - - - -
16h - reserviert - - - -
17h - reserviert - - - -
18h - reserviert - - - -
19h - reserviert - - - -
1Ah 00h Primären und sekundären Video - Adapter ermitteln ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
1Ah 01h Primären und sekundären Video - Adapter einstellen ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
1Bh - Statusinformationen über den Video-Modus und das VGA-BIOS einholen ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
1Ch 00h Größe der Save - Area abfragen ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
1Ch 01h Video - Status sichern ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.
1Ch 02h Video - Status restaurieren ??? ??? ??? Zu dieser Funktion standen leider nicht genügend Informationen zur Verfügung.

Die Funktionen können mit dem Turbo-Pascal-eigenen Assembler aufgerufen werden. Ein Anwendungsbeispiel könnte so aussehen:


ASM

  mov {...}

  {Register entsprechend der Spalte "Eingabe" belegen...}

  int $10;

  mov {...}

  {Register auslesen gemäß der Spalte "Ausgabe"...}

END;

Generell wird im Register AH die Funktionsnummer übergeben.
Wichtig: Bei Zugriffen auf das Video-BIOS, welche nicht von jeder Grafikkarte unterstützt werden (z.B. Zugriffe auf den DAC), muß unbedingt vorher eine Überprüfung stattfinden, ob der Computer diese unterstützt. Sonst kann es eventuell zu Schäden, in den meisten Fällen aber zumindest zum Systemabsturz kommen.

Zeichensatz - Codes

Code Bedeutung
00h Zeichensatz von Interrupt 1Fh
01h Zeichensatz von Interrupt 43h
02h 8*14 - ROM -Zeichensatz
03h 8*8 - ROM -Zeichensatz (ASCII 00 - 7Fh)
04h 8*8 - ROM -Zeichensatz (ASCII 80 - FFh)
05h 9*14 - ROM -Zeichensatz
06h 8*16 - ROM -Zeichensatz
07h 9*16 - ROM -Zeichensatz

Werte für AL (Funktion 13h)

Modus Bedeutung
0 Cursorposition wird nicht aktualisiert, BL wird als Attribut verwendet.
1 Cursorposition wird aktualisiert, BL wird als Attribut verwendet.
2 Cursorposition wird nicht aktualisiert, das Attribut jedes Zeichens ist im Puffer enthalten.
3 Cursorposition wird aktualisiert, das Attribut jedes Zeichens ist im Puffer enthalten.

Alle Angaben ohne Gewähr.

Achtung: bitte Hinweise zur Aktualitšt der Daten beachten! Copyright by Mathias Harbeck