Zum Inhalt springen

Interrupts 80x86/ INT 10

Aus Wikibooks

Beschreibung der Funktionen des BIOS-Interrupts 10h (Int 10h) der Grafikkarte

Funktion 00h: Setze Bildschirmmodus (EGA/VGA)

[Bearbeiten]
  AH=00h Setze Bildschirmmodus. Das AL-Register enthält die Modusnummer.
  AL=00h Textmodus, 40 x 25 Zeichen, 16 Graustufen
  AL=01h Textmodus, 40 x 25 Zeichen, 16 Farben
  AL=02h Textmodus, 80 x 25 Zeichen, 16 Graustufen
  AL=03h Textmodus, 80 x 25 Zeichen, 16 Farben
  AL=04h Grafikmodus, 320 x 200 Pixel, vier Farben
  AL=05h Grafikmodus, 320 x 200 Pixel, vier Graustufen
  AL=06h Grafikmodus, 640 x 200 Pixel, Monochrom
  AL=07h Textmodus, 80 x 25 Zeichen, Monochrom
  AL=08h reserviert
  AL=09h reserviert
  AL=0Ah reserviert
  AL=0Bh reserviert
  AL=0Ch reserviert
  AL=0Dh Grafikmodus, 320 x 200 Pixel, 16 Farben (ab EGA)
  AL=0Eh Grafikmodus, 640 x 200 Pixel, 16 Farben (ab EGA)
  AL=0Fh Grafikmodus, 640 x 350 Pixel, Monochrom (nur EGA an MDA-Monitor)
  AL=10h Grafikmodus, 640 x 350 Pixel, 16 Farben (ab EGA)
  AL=11h Grafikmodus, 640 x 480 Pixel, Monochrom (ab MCGA)
  AL=12h Grafikmodus, 640 x 480 Pixel, 16 Farben (ab VGA)
  AL=13h Grafikmodus, 320 x 200 Pixel, 256 Farben (ab MCGA)

Funktion 01h: Setze Kursorgröße (EGA/VGA)

[Bearbeiten]
AH=01h   Setze Kursorgröße
  CH     Oberste  Kursor-Bildzeile (Zählung beginnt oben ab Null)
  CL     Unterste Kursor-Bildzeile (7 für farbe, 12 für monochrom)
                z.B. CH=6, CL=7 für die Farbmodi
  • Siehe auch Funktion 12h Unterfunktion 34h.

Funktion 02h: Setze Kursorposition (EGA/VGA)

[Bearbeiten]
AH=02h    Setze Kursorposition
  DH,DL  Zeile, Spalte der Kursorposition (oben links = 0,0)
  BH     Seitennummer (meist =0)

Funktion 03h: Lesen der Kursorposition (EGA/VGA)

[Bearbeiten]
AH=03h    Lesen der Kursorposition
  BH     Seitennummer (meist =0).  Rückgabewerte in DX und CX:
  DH,DL  Zeile, Spalte der Kursorposition (oben links = 0,0)
  CH,CL  Kursorgröße (vergleiche mit Funktion 1: Setze Kursorgröße)

Funktion 04h: Lesen der Lichtstift-Position (EGA)

[Bearbeiten]
AH=04h    Lesen der Lichtstift-Position
Ausgabe: AH=00h: Position des Lichtstifts nicht abrufbar
         AH=01h: Position des Lichtstifts abgefragt:
           DH=Bildschirmzeile des Lichtstifts im Textmodus
           DL=Bildschirmspalte des Lichtstifts im Textmodus
           CH=Bildschirmzeile des Lichtstifts im Grafikmodus
           BX=Bildschirmspalte des Lichtstifts im Grafikmodus

Funktion 05h: Auswählen der aktiven Bildschirmseite (EGA/VGA)

[Bearbeiten]
AH=05h    Auswählen der aktiven Bildschirmseite
  AL     Neue Seitennummer (0-7 für Modi 0 und 1, 0-3 für Modi 2 und 3)

Funktion 06h: Rollen aufwärts (EGA/VGA)

[Bearbeiten]
AH=06h   Rollen aufwärts
  AL     Anzahl einzuschiebender Leerzeilen. =1 (oder 0=ganzer Schirm)
  CH,CL  Zeile und Spalte der oberen linken Fensterecke
  DH,DL  Zeile und Spalte der unteren rechten Fensterecke
  BH     Anzeigeattribute für die leeren Zeilen

Funktion 07h: Rollen abwärts (EGA/VGA)

[Bearbeiten]
AH=07h    Rollen abwärts: Parameter siehe bei AH=6  Rollen aufwärts

Funktion 08h: Attribut und Zeichen an Kursorposition lesen (EGA/VGA)

[Bearbeiten]
AH=08h   Attribut und Zeichen an Kursorposition lesen
  AL     gelesenes Zeichen                        BH     Seitennummer
  BL     Zeichenattribute (nur im Textmodus)

Funktion 09h: Attribut und Zeichen an Kursorposition wiederholt schreiben (EGA/VGA)

[Bearbeiten]
AH=09h   Attribut und Zeichen an Kursorposition schreiben
  AL     zu schreibendes Zeichen                  BH     Seitennummer
  BL     Zeichenattribute (nur im Textmodus)
  CX     Anzahl der zu schreibenden Zeichen

Funktion 0Ah: Zeichen an Kursorposition wiederholt schreiben (EGA/VGA)

[Bearbeiten]
AH=0Ah  Zeichen an Kursorposition schreiben (normale Attribute)
  AL     zu schreibendes Zeichen                  BH     Seitennummer
  CX     Anzahl der zu schreibenden Zeichen

Funktion 0Bh: Farbpalette für Grafikmodus festlegen (EGA/VGA)

[Bearbeiten]

Unterfunktion 00h

Rahmen und Hintergrundfarbe für den Grafik- und Textmodus setzen.

AH=0Bh
BH=00h
BL= Rahmen- und Hintergrundfarbe 
  • Nur für den 320x200- oder 640x200-Punkte-Modus. Für alle anderen Modi sollte man die Funktion 10h aufrufen.
  • Die Bits 0 bis 3 des BL-Registers bestimmen die die Hintergrund- und Vordergrundfarbe. Besonders intensive Farben erhält man mit dem Setzen des Bit 4.

Unterfunktion 01h

Eine der beiden Farbpaletten für den 320x200-Punkte-Modus wird festgelegt.

AH=0Bh
BH=01h
BL=Nummer der Farbpalette
  • Nur für den 320x200- oder 640x200-Punkte-Modus. Für alle anderen Modi sollte man die Funktion 10h aufrufen.
  • Das EGA- oder VGA-BIOS emuliert die zwei CGA-Paletten mit den Nummern 0 und 1:
    • Palette 0: Grün, Rot, Gelb
    • Palette 1: Cyan, Magenta, Weiß

Funktion 0Ch: Bildschirmpunkt im Grafikmodus setzen (EGA/VGA)

[Bearbeiten]
AH=0Ch
AL=Farbwert
BH=Bildschirmseite
DX=Bildschirmzeile
CX=Bildschirmspalte
  • Der Farbwert richtet sich nach dem aktuellen Grafikmodus
  • Ist Bit 7 im AL-Register gesetzt, so wird der Farbwert mit dem bisherigen Farbwert der Grafikpunkte durch ein XOR verknüpft.


Funktion 0Dh: Bildschirmpunkt im Grafikmodus abfragen (EGA/VGA)

[Bearbeiten]
AH=0Dh
BH=Bildschirmseite
DX=Bildschirmzeile
CX=Bildschirmspalte
Ausgabe: AL=Farbwert

Anmerkung: Die Angabe der Bildschirmseite wird im Grafikmodus 320x200 mit 4 Farben ignoriert

Funktion 0Eh: Schreiben und Cursor weiterbewegen (EGA/VGA)

[Bearbeiten]
AH=0Eh   Schreiben und Cursor weiterbewegen
  AL     zu schreibendes Zeichen im ASCII-Code
  BH     Seitennummer
  BL     Farbe (nur Grafikmodi)

Funktion 0Fh: Anzeigestatus abfragen (EGA/VGA)

[Bearbeiten]
AH=0Fh   Anzeigestatus abfragen
  AL     Bildschirmmodus
  AH     Zeichenzahl pro Zeile
  BH     Aktive Bildschirmseite


Funktion 10h: Farbeinstellungen (EGA/VGA)

[Bearbeiten]

Unterfunktion 00h

Palette-Register im Attribute-Controller der Grafikkarte setzen.

AH=10h
AL=00h
BL=Farbwert
BH=zu adressierendes Farbpaletten-Register 

Anmerkung: Die Registernummer wird vom BIOS nicht überprüft, deshalb können auch andere Register, wie Mode-Control- und Overscan-Register und so weiter manipuliert werden.

Unterfunktion 01h

Farbe des Bildschirmrahmens setzen. Der übergebene Wert wird in das Overscan-Register des EGA-Attribute-Controllers kopiert.

AH=10h
AL=01h
BH=Rahmenfarbe

Unterfunktion 02h

Setzen aller 16 Paletten-Register, sowie des Overscan-Registers.

AH=10h
AL=02h
ES=Segment Adresse der Farbtabelle
DX=Offsetadresse der Farbtabelle
  • ES:DX ist die Adresse der 17 Byte großen Tabelle. Das 17. Byte wird in das Overscan-Register geschrieben

Unterfunktion 03h

Diese Funktion setzt das Blinken-Attribute und ermöglicht intensivere Farben im Textmodus. Bit 7 im Attribute-Byte des Zeichens muss gesetzt sein.

AH=10h
AL=03h
BL=Blinken-Attribute

Blinken-Attribute:

  • 0 = intensive Hintergrundfarbe
  • 1 = Blinken

Unterfunktion 07h (nur VGA)

Paletten-Register des Attribute-Controllers auslesen.

AH=10h
AL=07h
BL=Nummer des Paletten-Registers
Ausgabe: BH=Inhalt des adressierten Paletten-Registers.

Unterfunktion 08h (nur VGA)

Diese Funktion liest das Overscan-Register aus, welches die Farbe des Bildschirmrahmens bestimmt.

AH=10h
AL=08h
Ausgabe: BH=Inhalt des Overscan-Registers

Unterfunktion 09h (nur VGA)

Inhalt aller 16 Paletten-Register, sowie des Overscan-Registers in einen Puffer des Aufrufers kopieren.

AH=10h
AL=09h
ES=Segmentadresse des Puffers
DX=Offsetadresse des Puffers
  • Der Puffer muss mindestens 17 Byte groß sein.

Unterfunktion 10h (nur VGA)

Definition eines der 256 RAMDAC-Farbregister.

AH=10h
AL=10h
BX= Nummer des DAC-Farbregisters
CH=Grün-Wert
CL=Blau-Wert
DH=Rot-Wert
  • Nur die Bits 0 bis 5 in den Registern CH, CL und DH sind für die Farbmischung von Bedeutung. Alle anderen Bits werden ignoriert.

Unterfunktion 12h (nur VGA)

Diese Unterfunktion erlaubt das Laden mehrerer RAMDAC-Farbregister.

AH=10h
AL=12h
BX=Nummer des ersten angesprochenen RAMDAC-Farbregisters (00h bis FFh)
CX=Anzahl der zu ladenen Register
ES=Segmentadresse des Puffers
DX=Offsetadresse des Puffers
  • Der Puffer muss für jedes Farbregister drei aufeinander folgende Bytes für Rot, Grün und Blau enthalten. Die ersten drei Bytes korrespondieren dabei mit den ersten angesprochenen Farbregister, die nächsten drei mit den darauffolgenden Farbregister und so weiter.
  • Für die Farbmischung sind für einen Farbwert nur die Bits 0 bis 5 relevant. Alle anderen Bits werden ignoriert.
  • Ist die Summe von BX und CX größer als 255, wird nach dem Laden des letzten RAMDAC-Farbregister das erste RAMDAC-Farbregister bearbeitet (Wrap-Around).

Unterfunktion 13h (nur VGA)

Diese Funktion legt die Farbauswahl-Methode fest oder wählt eine RAMDAC-Register-Gruppe aus. Diese Funktion manipuliert das Bit 7 im Mode-Control-Register.

AH=10h
AL=13h
BL=00h oder 01h (siehe Text)
BH=Siehe Text

Diese Unterfunktion verfügt wiederum über zwei Unterfunktionen, die über das BL-Register ausgewählt werden können:

  • 00h: Festlegung der Farbauswahl
  • 01h: Festlegung der aktiven RAMDAC-Register-Gruppen

Unterfunktion 00h kopiert das Bit 0 im BH-Register in das Bit 7 des Mode-Control-Register und legt dadurch die Methode der Farbauswahl fest.

  • Bit 0 im BH-Register ist 0:
- 256 RAMDAC-Register in 4 Gruppen zu je 64 Register 
- Die Farbauswahl wird bestimmt durch die Bits 0 bis 5 in den Palettenregistern, sowie durch die Bits 2 und 3 des Color-Select-Registers.
  Diese 8 Bits fungieren dann als Index für die RAMDAC-Farbtabelle.
  • Bit 0 im BH-Register ist 1:
- 256 RAMDAC-Register in 16 Gruppen zu je 16 Register
- Die unteren 4 Bits des Farbpaletten-Registers bestimmen zusammen mit den unteren 4 Bits des Color-Select-Registers den 8-Bit-Index der 
  RAMDAC-Farbtabelle.
  • Die Unterfunktion 01h dient zum Laden des Color-Select-Registers, das zur Auswahl der aktiven RAMDAC-Farbregister-Gruppen zuständig ist. Dazu wird der Inhalt des BH-Registers in das Color-Select-Register kopiert.

Unterfunktion 15h (nur VGA)

Liefert den Inhalt eines der 256 RAMDAC-Farbregister zurück.

AH=10h
AL=15h
BX=Nummer eines der 256 RAMDAC-Register 
Ausgabe: CH=Grün-Wert
         CL=Blau-Wert
         DH=Rot-Wert
  • Für die Farbmischung sind nur die Bits 0 bis 5 relevant. Alle anderen Bits werden ignoriert.

Unterfunktion 17h (nur VGA)

Inhalt mehrerer RAMDAC-Register auslesen. Die Ergebnisse werden in einen Puffer geschrieben, welcher durch ES:DX adressiert wird.

AH=10h
AL=17h
BX=Nummer des ersten angesprochenen RAMDAC-Farbregisters (00h bis FFh)
CX=Anzahl der auszulesenden Register
ES=Segmentadresse des Puffers
DX=Offsetadresse des Puffers
  • Der Puffer muss für jedes Farbregister drei aufeinander folgende Bytes für Rot, Grün und Blau enthalten. Die ersten drei Bytes korrespondieren dabei mit den ersten angesprochenen Farbregister, die nächsten drei mit den darauffolgenden Farbregister und so weiter.
  • Für die Farbmischung sind für einen Farbwert nur die Bits 0 bis 5 relevant. Alle anderen Bits werden ignoriert.

Unterfunktion 18h (nur VGA)

RAMDAC-Mask-Register laden.

AH=10h
AL=18h
DL=Wert für das RAMDAC-Mask-Register
  • Der Inhalt des RAMDAC-Mask-Registers spielt für die Farbauswahl eine Rolle, da er durch eine AND-Verknüpfung mit dem Index der RAMDAC-Farbtabelle verbunden wird.

Unterfunktion 19h (nur VGA)

RAMDAC-Mask-Register auslesen.

AH=10h
AL=19h
Ausgabe: BH=Inhalt des RAMDAC-Mask-Registers

Unterfunktion 1Ah (nur VGA)

Methode der Farbauswahl und Inhalt des Color-Select-Registers ermitteln. Es wird der Inhalt des Bit 7 des Mode-Control-Registers und des Color-Select-Registers zurückgeliefert.

AH=10h
AL=1Ah
Ausgabe: BL=Bit 7 des Mode-Control-Registers
         BH=Inhalt des Color-Select-Registers

Unterfunktion 1Bh (nur VGA)

Inhalt der RAMDAC-Farbregister in Grauwerte umwandeln. Diese Unterfunktion wandelt einen bestimmten Bereich der RAMDAC-Farbtabelle in Grauwerte um.

AH=10h
AL=1Bh
BX=Nummer des ersten umzuwandelnden RAMDAC-Farbregisters
CX=Anzahl der zu bearbeitenden RAMDAC-Farbregister
  • Die Umwandlung der Farben erfolgt in einer bestimmten Gewichtung der Rot-, Grün- und Blau-Anteile:
    • Rot: 0,3
    • Grün: 0,59
    • Blau: 0,11

Funktion 11h: Zugriff auf den Zeichengenerator (EGA/VGA)

[Bearbeiten]

Unterfunktion 00h

Mit dieser Funktion kann ein Anwender-definierter Zeichensatz geladen werden. Dieser Zeichensatz wird aus dem RAM in eine der zwei EGA-Zeichentabellen geladen.

AH=11h
AL=00h
BH=Rasterzeilen pro Zeichen
BL=Zeichentabelle (0 oder 1)
CX=Anzahl Zeichen in der Tabelle
DX=ASCII-Code des ersten Zeichens in der Tabelle
ES=Segmentadresse der Tabelle
BP=Offsetadresse der Tabelle
  • Pro Tabelle sind maximal 512 Zeichen erlaubt
  • Die Zeichentabelle wird mit dieser Unterfunktion noch nicht aktiviert!
  • Nur wenn die Zeichentabelle aktiviert ist, werden die Änderungen am Bildschirm sichtbar.

Unterfunktion 01h

Diese Funktion lädt einen 8x14-Zeichensatz aus dem ROM-BIOS in eine der beiden Zeichensatztabellen.

AH=11h
AL=01h
BL=Zeichentabelle (0 oder 1)
  • Der Zeichentabelle wird mit dieser Unterfunktion noch nicht aktiviert!
  • Nur wenn die Zeichentabelle aktiviert ist, werden die Änderungen am Bildschirm sichtbar.
  • In diesem Fall stellt die EGA-Karte 25 und die VGA-Karte 28 Textzeilen auf dem Bildschirm dar.

Unterfunktion 02h

Diese Funktion lädt einen 8x8-Zeichensatz aus dem ROM-BIOS in eine der beiden Zeichensatztabellen.

AH=11h
AL=02h
BL=Zeichentabelle (0 oder 1)
  • Der Zeichentabelle wird mit dieser Unterfunktion noch nicht aktiviert!
  • Nur wenn die Zeichentabelle aktiviert ist, werden die Änderungen am Bildschirm sichtbar.
  • In diesem Fall stellt die EGA-Karte 43 und die VGA-Karte 50 Textzeilen auf dem Bildschirm dar.

Unterfunktion 03h

Aktiviert einen beziehungsweise zwei der vier Zeichensätze mit 256 Zeichen.

AH=11h
AL=03h
BL=Nummer des zu aktivierenden Zeichensatzes
  • Ist das Bit 3 vom Attribute-Byte des Zeichens gelöscht, so geben die Bits 0 und 1 im BL-Register die Nummer des Zeichensatzes an, auf den zugegriffen werden soll.
  • Ist das Bit 3 vom Attribute-Byte des Zeichens gesetzt, so geben die Bits 2 und 3 im BL-Register die Nummer des Zeichensatzes an, auf den zugegriffen werden soll.
  • Sind alle Bits im BL-Register identisch, so hat das Bit 3 im Attribute-Byte keinen Einfluss. Dies hat zur Folge, dass nur 256 Zeichen darstellbar sind.

Unterfunktion 04h (nur VGA)

Diese Funktion lädt einen 8x16-Zeichensatz aus dem ROM-BIOS in eine der beiden Zeichensatztabellen.

AH=11h
AL=04h
BL=Zeichentabelle (0 bis 7)
  • Der Zeichentabelle wird mit dieser Unterfunktion noch nicht aktiviert!
  • Nur wenn die Zeichentabelle aktiviert ist, werden die Änderungen am Bildschirm sichtbar.
  • In diesem Fall stellt die VGA-Karte 25 Textzeilen auf dem Bildschirm dar.

Unterfunktion 10h

Mit dieser Funktion kann ein Anwender-definierter Zeichensatz geladen und aktiviert werden. Der Zeichensatz wird aus dem RAM in eine der zwei EGA-Zeichentabellen geladen und durch die Programmierung der Register des CRT-Controllers aktiviert.

AH=11h
AL=10h
BH=Rasterzeilen pro Zeichen
BL=Zeichentabelle (0 oder 1)
CX=Anzahl Zeichen in der Tabelle
DX=ASCII-Code des ersten Zeichens in der Tabelle
ES=Segmentadresse der Tabelle
BP=Offsetadresse der Tabelle
  • Pro Zeichentabelle sind 256 Zeichen möglich.
  • Die Anzahl der Zeilen auf dem Bildschirm richtet sich nach der Höhe (in Punktzeilen) der einzelnen Zeichen.
  • Die Start- und Endzeile des Cursors wird automatisch an die Höhe des Zeichens angepasst.

Unterfunktion 11h

Diese Funktion lädt einen 8x14-Zeichensatz aus dem ROM-BIOS der EGA-/VGA-Karte in eine der beiden Zeichensatztabellen und aktiviert diesen durch die Programmierung der Register des CRT-Controllers.

AH=11h
AL=11h
BL=Zeichentabelle
  • Mit dieser Funktion stellt die EGA-Karte 25 und die VGA-Karte 28 Textzeilen auf dem Bildschirm dar.
  • Die Start- und Endzeile des Cursors wird automatisch an die Höhe des Zeichens angepasst.

Unterfuntkion 12h

Diese Funktion lädt einen 8x8-Zeichensatz aus dem ROM-BIOS der EGA-/VGA-Karte in eine der beiden Zeichensatztabellen und aktiviert diesen durch die Programmierung der Register des CRT-Controllers.

AH=11h
AL=12h
BL=Zeichentabelle
  • Mit dieser Funktion stellt die EGA-Karte 43 und die VGA-Karte 50 Textzeilen auf dem Bildschirm dar.
  • Die Start- und Endzeile des Cursors wird automatisch an die Höhe des Zeichens angepasst.

Unterfunktion 14h (nur VGA)

Diese Funktion lädt einen 8x16-Zeichensatz aus dem ROM-BIOS der EGA-/VGA-Karte in eine der beiden Zeichensatztabellen und aktiviert diesen durch die Programmierung der Register des CRT-Controllers.

AH=11h
AL=14h
BL=Zeichentabelle
  • Mit dieser Funktion stellt die VGA-Karte 25 Textzeilen auf dem Bildschirm dar.
  • Die Start- und Endzeile des Cursors wird automatisch an die Höhe des Zeichens angepasst.

Unterfunktion 30h

Mit Hilfe dieser Funktion können aktuelle Status-Informationen über den Zeichengenerator eingeholt werden.

AH=11h
AL=30h
BH=Welche Information soll geholt werden?
   0=Inhalt des Interrupt-Vektors 1Fh
   1=Inhalt des Interrupt-Vektors 43h
   2=Adresse der 8x14-Zeichentabelle im ROM
   3=Adresse der 8x8-Zeichentabelle im ROM
   4=Adresse der zweiten Hälfte der 8x8-Zeichentabelle
   5=Adresse der alternativen 9x14-Zeichentabelle im ROM 
   6=Adresse der 8x16-Zeichentabelle im ROM (nur VGA)
   7=Adresse der alternativen 9x16-Zeichentabelle im ROM (nur VGA)
Ausgabe: CX=Höhe der aktuellen Zeichenmatrix
         DL=Anzahl Spalten pro Zeile-1
         ES=Segmentadresse des abgefragten Pointers
         BP=Offsetadresse des abgefragten Pointers

Funktion 12h: Videokonfiguration festlegen/abfragen (EGA/VGA)

[Bearbeiten]

Unterfunktion 10h

Diese Unterfunktion ermittelt die Konfiguration der EGA- und VGA-Karte.

AH=12h
BL=10h
Ausgabe: BH=angeschlossener Monitor
           0=Color- oder hochauflösender Monitor
           1=monochromer Monitor
         BL=Größe EGA-RAM
           0=64Kbyte
           1=128 KByte
           2=192 KByte
           3=256 KByte

Unterfunktion 20h

Da der BIOS-Interrupt 5h nicht für eine Hardcopy von mehr als 25 Zeilen geeignet ist, wird durch Aufruf dieser Funktion eine alternative Routine erstellt, die eine Hardcopy von mehr als 25 Textzeilen unterstützt.

AH=12h
BL=20h

Unterfunktion 30h

Legt die Anzahl der Bildschirmzeilen (Scan-Lines) im Grafikmodus fest.

AH=12h
BL=30h
AL=Anzahl Scan-Lines
   0=200
   1=350
   2=400 (nur VGA)

Unterfunktion 31h (nur VGA)

Mit dieser Unterfunktion kann man dem VGA-BIOS mitteilen, ob beim Umschalten des Video-Modus mit der Funktion 00h das Paletten-Register automatisch mit ihren Default-Werten geladen werden soll oder nicht.

AH=12h
BL=31h
AL=Paletten-Register automatisch laden?
   0=Ja
   1=Nein

Unterfunktion 32h (nur VGA)

Direkten Zugriff der CPU auf das Video-RAM und den Grafikkarten-Ports erlauben oder sperren.

AH=12h
BL=32h
AL=Zugriff?
 0=Ja
 1=Nein
  • Das EGA-BIOS unterstützt diese Funktion nicht. Jedoch kann man durch Manipulation von Bit 1 an der Portadresse 3C2h der Zugriff unterdrückt werden.

Unterfunktion 33h (nur VGA)

Automatische Grau-Umwandlung. Im Gegensatz zur selektiven Grau-Umwandlung der Unterfunktion 1Bh der Funktion 10h werden hier generell alle RAMDAC-Farbregister umgewandelt.

AH=12h
BL=33h
AL=Grau-Umwandlung?
  0=Ja
  1=Nein

Unterfunktion 34h (nur VGA)

Cursor-Emulation ein- und ausschalten. Bei der Funktion 01h musste der Aufrufer bei der Einstellung der Start- und Endzeile des Cursors Rücksicht auf die Auflösung der Zeichenmatrix nehmen. Mit dieser Unterfunktion braucht er sich nur noch auf eine 8x8-Matrix zu beziehen, da eine automatische Umrechnung der Größe der Zeichenmatrix durch das VGA-BIOS erfolgt.

AH=12h
BH=34h
AL=Cursor-Emulation?
  0=Ja
  1=Nein

Unterfunktion 36h (nur VGA)

Hier kann ein Aufrufer den Bildschirmaufbau temporär unterdrücken, um Manipulationen im Video-RAM im Hintergrund vorzunehmen.

AH=12h
BL=36h
AL=Bildschirmaufbau?
 0=Ja
 1=Nein

Funktion 13h: Zeichenkette schreiben (EGA/VGA)

[Bearbeiten]

Eine Zeichenkette ab einer bestimmten Stelle und einer bestimmten Monitorseite ausgeben. Die Zeichenkette wird dabei aus einem Puffer entnommen.

AH=13h
AL=Ausgabemodus
  0=Attribut in BL und die Cursor-Position beibehalten
  1=Attribut in BL und die Cursor-Position aktualisieren
  2=Attribut im Puffer und die Cursor-Position beibehalten
  3=Attribut im Puffer und die Cursor-Position aktualisieren
BL=Attribut-Byte der Zeichen im Modi 0 und 1
CX=Anzahl der auszugebenden Zeichen
DH=Bildschirmzeile
DL=Bildschirmspalte
BH=Bildschirmseite
ES=Segmentadresse des Puffers
BP=Offsetadresse des Puffers
  • In den Modi 1 und 3 wird der Cursor hinter der ausgegebenen Zeichenkette gesetzt, so das bei nochmaliger Ausführung dieser BIOS-Funktion die Zeichen hinter der Zeichenkette geschrieben werden.
  • In den Modi 0 und 1 enthält der Puffer die ASCII-Codes der Zeichen. Die Farben dieser Zeichen werden in diesem Fall durch den Inhalt des BL-Registers bestimmt.
  • In den Modi 2 und 3 besitzt jedes Zeichen (ASCII-Code) ein eigenes Attribut-Byte (Farbe) im Puffer. Das BL-Register muss in diesem Fall nicht belegt werden und das CX-Register enthält nur die Anzahl der ASCII-Codes.
  • Die Steuercodes wie Bell und Carriage Return werden als Steuercodes und nicht als ASCII-Codes interpretiert. Carriage Return und Line Feed wirken nur auf der Bildschirmseite 0.
  • Es können auch im Grafikmodus Zeichen ausgegeben werden, wobei die Zeichenmuster aus einer der EGA-/VGA-Zeichentabelle entnommen werden.
  • Im Grafikmodus ist die Hintergrundfarbe immer 0 (schwarz) und die Vordergrundfarbe wird durch das BL-Register bestimmt. Ist das Bit 7 im BL-Register gesetzt, wird der Farbwert mit dem bisherigen Farbwert der Grafikpunkte mit einem XOR verknüpft.

Funktionen 14h bis 19h sind reserviert

[Bearbeiten]

Funktion 1Ah: Primäre und sekundäre Grafikkarte ermitteln und einstellen (VGA)

[Bearbeiten]

Unterfunktion 00

Gerätecode der primären und sekundären Grafikkarte ermitteln.

AH=1Ah
AL=00h
Ausgabe: AL=1Ah (1Ah: VGA-BIOS vorhanden)
         BL=Gerätecode für die aktive Grafikkarte
         BH=Gerätecode für die inaktive Grafikkarte

  • Gerätecodes:
    • 00h: keine Grafikkarte
    • 01h: MDA mit monochromen Bildschirm
    • 02h: CGA und CGA-Monitor
    • 03h: reserviert
    • 04h: EGA und EGA- oder Multisync-Monitor
    • 05h: EGA mit monochromen Bildschirm
    • 06h: reserviert
    • 07h: VGA mit analogen Monochrom-Bildschirm
    • 08h: VGA mit analogem Color-Bildschirm (Multisync)
    • 09h: reserviert
    • 0Ah: MCGA an CGA-Monitor (nur IBM PS/2)
    • 0Bh: MCGA an analogen Monochrom-Bildschirm (nur IBM PS/2)
    • 0Ch: MCGA an analogen Color-Bildschirm (nur IBM PS/2)
    • FFh: Grafikkarte unbekannt

Unterfunktion 01h

Primäre und sekundäre Grafikkarte einstellen beziehungsweise aktivieren und deaktivieren.

AH=1Ah
AL=01h
BL=Gerätecode für die aktive Grafikkarte
BH=Gerätecode für die inaktive Grafikkarte
Ausgabe: AL=1Ah (VGA-BIOS vorhanden)
  • Siehe Unterfunktion 00h für eine Liste der Gerätecodes.

Funktion 1Bh: Umschaltung zwischen zwei Videokarten

[Bearbeiten]
AH=1Bh

Funktion 1Ch: Zustand der Videokarte sichern/restaurieren

[Bearbeiten]
AH=1Ch

Funktion 4Fh: VESA-Schnittstelle (VBE)

[Bearbeiten]

Die verschiedenen VESA-Funktionen werden als Unterfunktionen der Funktion 4Fh aufgerufen. Voraussetzung ist ein VESA-Treiber oder ein VESA-fähiges BIOS.

Folgende Grafikmodi werden unterstützt (Stand 1998):

Modus
(hexadezimal)
Auflösung
(Pixel×Pixel)
Farbtiefe
(Bit)
0x100 640×400 8
0x101 640×480 8
0x102 800×600 4
0x103 800×600 8
0x104 1.024×768 4
0x105 1.024×768 8
0x106 1.280×1.024 4
0x107 1.280×1.024 8
0x108 80×60 (Text) 4
0x109 132×25 (Text) 4
0x10A 132×43 (Text) 4
0x10B 132×50 (Text) 4
0x10C 132×60 (Text) 4
0x10D 320×200 15
0x10E 320×200 16
0x10F 320×200 24
Modus
(hexadezimal)
Auflösung
(Pixel×Pixel)
Farbtiefe
(Bit)
0x110 640×480 15
0x111 640×480 16
0x112 640×480 24
0x113 800×600 15
0x114 800×600 16
0x115 800×600 24
0x116 1.024×768 15
0x117 1.024×768 16
0x118 1.024×768 24
0x119 1.280×1.024 15
0x11A 1.280×1.024 16
0x11B 1.280×1.024 24
0x11C 1.600×1.200 8
0x11D 1.600×1.200 15
0x11E 1.600×1.200 16
0x11F 1.600×1.200 24

Unterfunktion 00h

Diese Funktion ermittelt die Fähigkeiten der Super-VGA-Grafikkarte und stellt fest, ob die VESA-Funktionen unterstützt werden.

AH=4Fh
AL=00h
ES:DI=FAR-Zeiger auf Info-Puffer
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
  • Der Info-Puffer muss mindestens 256 Byte groß sein - zum Beispiel 512 Bytes für VBE V2.0+. Kehrt die Funktion erfolgreich zurück (AH=00h), enthält dieser Puffer folgende Informationen:
Offset Inhalt Typ
00h VBE-Signatur "VESA" 4 Byte
04h übergeordnete Versionsnummer 1 Byte
05h untergeordnete Versionsnummer 1 Byte
06h FAR-Zeiger auf Namen des Kartenherstellers (ASCIIZ-String) 1 Double Word
0Ah Anzeige der Leistungsfähigkeit der Grafikkarte durch ein Flag 1 Double Word
0Eh FAR-Zeiger auf Liste mit den Codenummern für die unterstützten Video-Modi 1 Double Word
12h Speichergröße. Anzahl der 64-KByte-Blöcke 1 Word
14h VBE-Software-Revision 1 Word
16h FAR-Zeiger auf den Namen das Anbieters 1 Double Word
1Ah FAR-Zeiger auf den Namen des Produkts 1 Double Word
1Eh FAR-Zeiger auf die Revision des Produkts 1 Double Word
1Fh Reserviert 1 Byte
20h OEM-Daten 1 Byte

Unterfunktion 01h

Informationen eines VESA-Modus ermitteln. Dabei wird der VESA-Modus noch nicht eingeschaltet.

AH=4Fh
AL=01h
CX=Codenummer des gewünschten VESA-Modus
ES:DI=FAR-Zeiger auf Info-Puffer 
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
  • Diese Funktion erst aufrufen, nachdem die Unterfunktion 00h ordnungsgemäß ausgeführt wurde (VESA-Treiber vorhanden etc.).
  • Es dürfen nur VESA-Modi abgefragt werden, die in der Modi-Liste der Funktion 00h enthalten sind.
  • Der Info-Puffer, adressiert durch ES:DI muss mindestens 29 Byte groß sein. Wenn die Funktion ohne Fehler zurückkehrt enthält dieser Puffer folgende Informationen:
Offset Inhalt Typ
00h Modus-Flag s.u. 1 Word
02h Flags für das erste Zugriffsfenster s.u. 1 Byte
03h Flags für das zweite Zugriffsfenster s.u. 1 Byte
04h Granularität in KByte, mit der die beiden
Zugriffsfenster verschoben werden können
1 Word
06h Größe der Zugriffsfenster in KByte 1 Word
08h Segmentadresse erstes Zugriffsfenster 1 Word
0Ah Segmentadresse zweites Zugriffsfenster 1 Word
0Ch FAR-Zeiger auf Funktion zur Einstellung des sichtbaren
Bereichs in den beiden Zugriffsfenstern
1 Double Word
10h Anzahl Bytes, die jede Punktzeile im Video-RAM belegt. 1 Word
optionale Informationen (s. Modus-Flag)
12h X-Auflösung in Punkten oder Zeichen 1 Word
14h Y-Auflösung in Punkten oder Zeichen 1 Word
16h Breite der Zeichenmatrix in Punkten 1 Byte
17h Höhe der Zeichenmatrix in Punkten 1 Byte
18h Anzahl der Bit-Planes 1 Byte
19h Anzahl der Bits pro Pixel 1 Byte
1Ah Anzahl Speicherblöcke 1 Byte
1Bh Speichermodell 1 Byte
1Ch Größe der Speicherblöcke in KByte 1 Byte

Das Modus-Flag (Offset 00h) zeigt an, ob die optionalen Felder ab Offset 12h im Info-Puffer von der VESA-Funktion ausgefüllt wurden und liefert darüber hinaus Informationen über den gewünschten Modus.

Aufbau des 16 Bit großen Modus-Flags:

  • Bit 0: Ist der Modus kompatibel zum Monitor?
    • 0 = Nein
    • 1 = Ja
  • Bit 1: Wurden optionale Informationen zurückgeliefert?
    • 0 = Nein
    • 1 = Ja
  • Bit 2: BIOS-Test-Funktionen in diesem Modus?
    • 0 = Nein
    • 1 = Ja
  • Bit 3: Monochrom- oder Farbmodus
    • 0 = monochrome
    • 1 = Farbmodus
  • Bit 4: Text- oder Grafikmodus
    • 0 = Textmodus
    • 1 = Grafikmodus

Die Bits 5 bis 15 sind nicht belegt.

Die Zugriffsfenster (Offset 02h und 03h) werden durch folgende Bitfelder beschrieben:

  • Bit 0: Ist Fenster verfügbar?
    • 0 = Nein
    • 1 = Ja
  • Bit 1: Lesezugriff auf Video-RAM über dieses Fenster möglich?
    • 0 = Nein
    • 1 = Ja
  • Bit 2: Schreibzugriff auf Video-RAM über dieses Fenster möglich?
    • 0 = Nein
    • 1 = Ja

Die Bits 3 bis 15 sind nicht belegt.

Das Speichermodell an Offset 1Bh beschreibt den Aufbau des Video-RAMs in dem gewünschten Video-Modus.
Folgende Codes sind bekannt:

Code Aufgabe
00h Textmodus
01h 2 oder 4 Speicherblöcke (CGA-Format)
02h 4 Speicherblöcke (Hercules-Format)
03h EGA-/VGA-Format mit 16 Farben
04h gepacktes Format mit zwei Punkten a 4 Bit pro Byte
05h EGA-/VGA-Format mit 256 Farben
06h-0Fh reserviert
10h-FFh Herstellerspezifisch

Unterfunktion 02h

VESA-Modus einschalten.

AH=4Fh
AL=02h
BX=Codenummer des Modus
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  

  • Diese Funktion erst aufrufen, nachdem die Unterfunktion 00h ordnungsgemäß ausgeführt wurde (VESA-Treiber vorhanden etc.).
  • Es dürfen nur VESA-Modi initialisiert werden, die in der Modi-Liste der Funktion 00h enthalten sind.
  • Wenn das Video-RAM während der Initialisierung nicht gelöscht werden soll, so muss Bit 15 im BX-Register gesetzt werden.

Unterfunktion 03h

Diese Funktion liefert die Codenummer des Video-Modus zurück und berücksichtigt dabei auch Nicht-VESA-Modi.

AH=4Fh
AL=03h
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
         BX=Codenummer
  • Diese Funktion erst aufrufen, nachdem die Unterfunktion 00h ordnungsgemäß ausgeführt wurde (VESA-Treiber vorhanden etc.)

Unterfunktion 04h/00h

Die Größe des Sicherungspuffers wird ermittelt. Für den nachfolgenden Aufruf der Unterfunktion 04h/01h, kann die Größe des benötigten Sicherungspuffers mit dieser Funktion ermittelt werden.

AH=4Fh
AL=04h
DL=00h
CX=zu sichernde Komponente des Video-Status
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
         BX=Anzahl der zusammenhängenden 64 KByte-Blöcke, die als Sicherungspuffer benötigt werden.

Die verschiedenen Bits im Lo-Byte des CX-Registers zeigen beim Funktionsaufruf an, welche Komponenten gesichert werden sollen:

  • Bit 0: 1 = Status der Video-Hardware
  • Bit 1: 1 = Variablen aus den BIOS-Datenbereich
  • Bit 2: 1 = Register der RAMDAC-Farbtabelle
  • Bit 3: 1 = SVGA-Status

Die Bits 4 bis 7 sind nicht belegt.

Unterfunktion 04h/01h

Video-Status der SVGA-Karte sichern.

Nach einem vorangegangenen Aufruf der Unterfunktion 04h/00h werden Informationen über die ausgewählten Komponenten des Video-Status in einen Puffer geschrieben. Der Puffer muss die Größe besitzen, die in der Unterfunktion 04h/00h im BX-Register zurückgegeben wurde.

AH=4Fh
AL=04h
DL=01h
CX=zu sichernde Komponenten
ES:BX=FAR-Zeiger auf Sicherungsbuffer
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
  • Die verschiedenen Bits im Lo-Byte des CX-Registers zeigen beim Funktionsaufruf an, welche Komponenten gesichert werden sollen.

Unterfunktion 04h/02h

Videostatus der SVGA-Karte restaurieren. Nach sichern des Video-Status durch die Unterfunktion 04h/01h kann dieser Status durch diese Unterfunktion wieder restauriert werden.

AH=4Fh
AL=04h
DL=02h
CX=zu restaurierende Komponenten
ES:BX=FAR-Zeiger auf Segmentadresse des Sicherungsbuffer
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
  • Der übergebene Puffer muss vorher mit der Unterfunktion 04h/01h gefüllt worden sein.
  • Die verschiedenen Bits im Lo-Byte des CX-Registers zeigen beim Funktionsaufruf an, welche Komponenten restauriert werden sollen.

Unterfunktion 05h/00h

Zugriffsfenster auf Video-RAM festlegen. Diese Funktion dient dazu in einen bestimmten Teil des Video-RAM ein Zugriffsfenster einzublenden, um damit für ein Programm adressierbar zu machen.

AH=4Fh
AL=05h
BH=00h
BL=Zugriffsfenster (0 oder 1)
DX=Startadresse
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
  • Die Startadresse ist in Bezug auf die Granularität des Fensters zu sehen. Diese kann über die Unterfunktion 01h ermittelt werden.
  • Das zweite Zugriffsfenster kann nur angesprochen werden, wenn dieses auch existiert. Dies kann mit der vorher ausgeführten Unterfunktion 00h ermittelt werden.

Unterfunktion 05h/01h

Zugriffsfenster auf Video-RAM abfragen. Mit dieser Unterfunktion kann die Lage des Zugriffsfensters abgefragt werden.

AH=4Fh
AL=05h
BH=01h
BL=Zugriffsfenster (0 oder 1)
Ausgabe: AL=4Fh: VESA-Funktionen werden unterstützt
         AL!=4Fh: Funktion wird nicht unterstützt
         AH=01h: Funktionsaufruf fehlgeschlagen
         AH=02h: Funktion wird in dieser Hardware-Konfiguration nicht unterstützt
         AH=03h: Funktionsaufruf in diesem Video-Mode ungültig  
         DX=Startadresse
  • Die Startadresse ist in Bezug auf die Granularität des Fensters zu sehen. Diese kann über die Unterfunktion 01h ermittelt werden.

Beispiel

[Bearbeiten]

fehlt noch