INT 10h , INT 10H oder INT 16 ist die Kurzform für BIOS-Interruptaufruf 10 hex , den 17. Interruptvektor in einem x86 -basierten Computersystem. Das BIOS richtet typischerweise an diesem Vektor einen Interrupthandler im Realmodus ein , der Videodienste bereitstellt. Zu diesen Diensten gehören das Einstellen des Videomodus, die Ausgabe von Zeichen und Zeichenketten sowie Grafikprimitive (Lesen und Schreiben von Pixeln im Grafikmodus).

Um diesen Aufruf zu verwenden, laden Sie AH mit der Nummer der gewünschten Unterfunktion, laden Sie weitere benötigte Parameter in andere Register und führen Sie den Aufruf aus. INT 10h ist relativ langsam, daher umgehen viele Programme diese BIOS-Routine und greifen direkt auf die Grafikhardware zu. Die Einstellung des Videomodus, die selten erforderlich ist, kann über das BIOS erfolgen, während die Grafikdarstellung in einem Spiel schnell erfolgen muss. Daher ist der direkte Zugriff auf den Videospeicher sinnvoller als ein BIOS-Aufruf für jedes Pixel.

Auf modernen x86-Systemen können BIOS-Aufrufe nur im Realmodus oder im virtuellen 8086-Modus erfolgen . Im Langmodus ist v8086 nicht verfügbar . Das bedeutet, dass ein modernes Betriebssystem, das im geschützten Modus (32 Bit) oder im Langmodus (64 Bit) arbeitet, in den Realmodus und wieder zurück wechseln müsste, um das BIOS aufzurufen – ein äußerst rechenintensiver Vorgang. Obwohl die meisten modernen Systeme üblicherweise Gerätetreiber verwenden, die den Videomodus direkt festlegen, ist es für Hobby-Betriebssysteme nicht praktikabel , für jede Grafikkarte einen eigenen Gerätetreiber bereitzustellen – ein Problem, das auch ältere, nicht mehr unterstützte Systeme wie Windows 98 betrifft . Solche Systeme können stattdessen in den Realmodus wechseln, um den Videomodus umzuschalten und dann direkt in den Framebuffer zu zeichnen.

In EFI 1.x-Systemen werden INT 10H und die VESA BIOS Extensions (VBE) durch das EFI UGA-Protokoll ersetzt. In den weit verbreiteten UEFI 2.x-Systemen werden INT 10H und VBE durch UEFI GOP ersetzt . [ 1 ] [ 2 ]

Liste der unterstützten Funktionen

Die Liste ist unvollständig; verwenden Sie Ralf Browns Interrupt-Liste für umfassende Informationen. Bitte fügen Sie nur IBM/PC- oder andere gängige Standardfunktionen hinzu. 00h bis 0fh sind CGA-Funktionen.

Funktion Funktionscode Parameter Zurückkehren
Videomodus einstellen AH=00h AL = Videomodus

AL = Videomodus (Nur für ältere IBM-Modelle)

AL = Videomodus-Flag / CRT-Controller-Modus-Byte
Cursorform im Textmodus festlegen AH=01h CH = Scanzeilenanfang, CL = Scanzeilenende

Normalerweise hat eine Zeichenzelle 8 Scanzeilen (0–7). Daher ist CX=0607h ein normaler Unterstreichungscursor, CX=0007h ein Vollblockcursor. Wenn Bit 5 von CH gesetzt ist, bedeutet dies oft „Cursor ausblenden“. CX=2607h ist also ein unsichtbarer Cursor.

Einige Grafikkarten haben 16 Scanzeilen, 00h-0Fh.

Manche Grafikkarten nutzen Bit 5 von CH nicht. Bei diesen muss Start > Ende sein (z. B. CX=0706h).

Cursorposition festlegen AH=02h BH = Seitenzahl, DH = Zeile, DL = Spalte
Cursorposition und -form abrufen AH=03h BH = Seitenzahl AX = 0, CH = Startzeile, CL = Endzeile, DH = Zeile, DL = Spalte
Position des Lichtstifts lesen (Funktioniert nicht auf VGA -Systemen) AH=04h AH = Status (0 = nicht ausgelöst, 1 = ausgelöst), BX = Pixel X, CH = Pixel Y, CX = Pixelzeilennummer für die Modi 0Fh–10h, DH = Zeichen Y, DL = Zeichen X
Aktive Anzeigeseite auswählen AH=05h AL = Seitenzahl
Fenster nach oben scrollen AH=06h AL = Zeilen zum Scrollen (0 = löschen, CH, CL, DH, DL werden verwendet),

BH = Hintergrundfarbe und Vordergrundfarbe. BH = 43h bedeutet, dass die Hintergrundfarbe Rot und die Vordergrundfarbe Cyan ist. Siehe die Farbattribute im BIOS.

CH = Obere Zeilennummer, CL = Linke Spaltennummer, DH = Untere Zeilennummer, DL = Rechte Spaltennummer

Fenster nach unten scrollen AH=07h wie oben
Zeichen und Attribut an der Cursorposition lesen AH=08h BH = Seitenzahl AH = Farbe , AL = Zeichen
Zeichen und Attribut an der Cursorposition schreiben AH=09h AL = Zeichen, BH = Seitenzahl, BL = Farbe , CX = Anzahl der Druckvorgänge
Schreibe nur Zeichen an der Cursorposition AH=0Ah AL = Zeichen, BH = Seitenzahl, CX = Anzahl der Ausgaben des Zeichens
Hintergrund-/Rahmenfarbe festlegen AH=0BH, BH = 00h BL = Hintergrund-/Rahmenfarbe (Rahmen nur im Textmodus)
Set-Palette AH=0BH, BH = 01h BL = Paletten-ID (war nur in CGA gültig , wird aber von neueren Grafikkarten in vielen oder allen Grafikmodi unterstützt)
Grafikpixel schreiben AH=0Ch AL = Farbe , BH = Seitenzahl, CX = x, DX = y
Grafikpixel lesen AH=0Dh BH = Seitenzahl, CX = x, DX = y AL = Farbe
Teletype-Ausgabe AH=0Eh AL = Zeichen, BH = Seitenzahl, BL = Farbe (nur im Grafikmodus)
Aktuellen Videomodus abrufen AH=0Fh AL = Videomodus, AH = Anzahl der Zeichenspalten, BH = aktive Seite
Zeichensatz für den Textmodus ändern [ 3 ]AH=11h BH = Anzahl der Bytes pro Zeichen, CX = Anzahl der zu ändernden Zeichen, DX = Startzeichen der zu ändernden Zeichen, ES:BP = Offset der Zeichendaten
Schreibe Zeichenkette (EGA+, bedeutet PC AT Minimum) AH=13h AL = Schreibmodus, BH = Seitenzahl, BL = Farbe , CX = Anzahl der Zeichen in der Zeichenkette, DH = Zeile, DL = Spalte, ES:BP = Offset der Zeichenkette
VESA-konforme Videomodi einstellen, beginnend bei 640 x 480 und bis zu 1280 x 1024 mit 256 Farben AX=4f02h BX = Videomodus; wenn das Vorzeichenbit (Bit 15) gesetzt ist, wird der Videospeicher nicht aktualisiert.
Weitere VESA VBE -BefehleAX=4F00h bis 4F15h Siehe Spezifikation Siehe Spezifikation

Siehe auch

Referenzen

  1. ^ „Was ist efifb? – Die Linux-Kernel-Dokumentation“ . kernel.org . Abgerufen am 24.11.2020 .
  2. ^ „Was ist vesafb? – Die Linux-Kernel-Dokumentation“ . kernel.org . Abgerufen am 24.11.2020 .
  3. ^ „Eine Routine zum Ändern von Schriftarten“ . Forever Young Software . Abgerufen am 8. März 2020 .