Interrupts 80x86/ INT 10
Beschreibung der Funktionen des BIOS-Interrupts 10h (Int 10h) der Grafikkarte
Funktion 00h: Setze Bildschirmmodus (EGA/VGA)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenAH=02h Setze Kursorposition DH,DL Zeile, Spalte der Kursorposition (oben links = 0,0) BH Seitennummer (meist =0)
Funktion 03h: Lesen der Kursorposition (EGA/VGA)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenAH=07h Rollen abwärts: Parameter siehe bei AH=6 Rollen aufwärts
Funktion 08h: Attribut und Zeichen an Kursorposition lesen (EGA/VGA)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenUnterfunktion 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)
BearbeitenAH=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)
BearbeitenAH=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)
BearbeitenAH=0Eh Schreiben und Cursor weiterbewegen AL zu schreibendes Zeichen im ASCII-Code BH Seitennummer BL Farbe (nur Grafikmodi)
Funktion 0Fh: Anzeigestatus abfragen (EGA/VGA)
BearbeitenAH=0Fh Anzeigestatus abfragen AL Bildschirmmodus AH Zeichenzahl pro Zeile BH Aktive Bildschirmseite
Funktion 10h: Farbeinstellungen (EGA/VGA)
BearbeitenUnterfunktion 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)
BearbeitenUnterfunktion 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)
BearbeitenUnterfunktion 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)
BearbeitenEine 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
BearbeitenFunktion 1Ah: Primäre und sekundäre Grafikkarte ermitteln und einstellen (VGA)
BearbeitenUnterfunktion 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
BearbeitenAH=1Bh
Funktion 1Ch: Zustand der Videokarte sichern/restaurieren
BearbeitenAH=1Ch
Funktion 4Fh: VESA-Schnittstelle (VBE)
BearbeitenDie 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):
|
|
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
Bearbeitenfehlt noch