VESA BIOS Extensions — Änderungen 8439 → 8441

Zeile 1: Zeile 1:
−
{{stub}}
+
Die VESA BIOS Extensions (kurz: VBE) sind ein Standard der [[VESA]]. Er vereinheitlicht den Zugriff auf eine Grafikkarte, bietet dabei allerdings deutlich mehr Möglichkeiten als [[VGA]]. Der Standard wird von nahezu allen Grafikkarten in Version 2.0 oder der letzten Version, 3.0, unterstützt. '''Daher bezieht sich dieser Artikel, wenn nicht anders vermerkt, auf Version 2.0.'''
−
Die VESA BIOS Extensions (kurz: VBE) sind ein Standard der [[VESA]]. Er vereinheitlicht den Zugriff auf eine Grafikkarte, bietet dabei allerdings deutlich mehr Möglichkeiten als [[VGA]]. Der Standard wird von nahezu allen Grafikkarten in Version 2.0 oder der letzten Version, 3.0, unterstützt.
 
  
 
== VBE Funktionen ==
 
== VBE Funktionen ==
Zeile 182: Zeile 181:
 
* AX = 4F01h
 
* AX = 4F01h
 
* CX = Nummer des Grafikmodus
 
* CX = Nummer des Grafikmodus
−
* ES:DI = Zeiger auf freien Speicher für den ModeInfoBlock
+
* ES:DI = Zeiger auf freien Speicher für den ModeInfoBlock (256 Bytes)
 +
So kann man die Nummer desjenigen Grafikmodus herausfinden, den man benötigt.
  
−
//TODO: ModeInfoBlock beschreiben
+
{| {{prettytable}}
 +
!Offset
 +
!Eintrag
 +
!Größe
 +
!Beschreibung
 +
|- bgcolor=chartreuse
 +
|0
 +
|ModeAttributes
 +
|Word
 +
|
 +
*Bit 7: 0=kein LFB, 1=LFB verfügbar
 +
*Bit 6: 0=kein VGA kompatibles Speichermodell, 1=VGA kompatibles Speichermodell verfügbar (=paged)
 +
*Bit 5: 0=VGA kompatibler Modues, 1= nicht VGA kompatibel
 +
*Bit 4: 0=Textmodus, 1=Grafikmodus
 +
*Bit 3: 0=Monochrom, 1=farbig
 +
*Bit 2: 0=TTY Ausgabe Funktionen werden nicht unterstuützt, 1=werden unterstützt
 +
*Bit 1: Reserved (1)
 +
*Bit 0: 0=Modus wird nicht unterstützt, 1=wird unterstützt
 +
|-
 +
|2
 +
|WinAAttributes
 +
|Byte
 +
|
 +
*Bit 2: 0=Window nicht schreibbar, 1=Window schreibbar
 +
*Bit 1: 0=Window lesbar, 1=nicht lesbar
 +
*Bit 0: 0=Reallozierung der Windows nicht möglich, 1=ist möglich
 +
|-
 +
|3
 +
|WinBAttributes
 +
|Byte
 +
|''siehe WinAAttributes''
 +
|-
 +
|4
 +
|WinGranularity
 +
|Word
 +
|in KB
 +
|-
 +
|6
 +
|WinSize
 +
|Word
 +
|Window Größe in KB
 +
|-
 +
|8
 +
|WinASegment
 +
|Word
 +
|WindowA Start Segment
 +
|-
 +
|10
 +
|WinBSegment
 +
|Word
 +
|WindowB Start Segment
 +
|-
 +
|12
 +
|WinFuncPtr
 +
|Dword
 +
|Zeiger auf die "Window Function" (segment:offset)
 +
|- bgcolor=crimson
 +
|16
 +
|BytesPerScanLine
 +
|Word
 +
|
 +
|- bgcolor=crimson
 +
|18
 +
|XResolution
 +
|Word
 +
|Horizontale Auflösung
 +
|- bgcolor=crimson
 +
|20
 +
|YResolution
 +
|Word
 +
|Vertikale Auflösung
 +
|-
 +
|22
 +
|XCharSize
 +
|Byte
 +
|Breite eines Buchstabens (Textmodus)
 +
|-
 +
|23
 +
|YCharSize
 +
|Byte
 +
|Höhe eines Buchstabens (Textmodues)
 +
|-
 +
|24
 +
|NumberOfPlanes
 +
|Byte
 +
|
 +
|- bgcolor=crimson
 +
|25
 +
|BitsPerPixel
 +
|Byte
 +
|Bits pro Pixel (=Farbtiefe)
 +
|-
 +
|26
 +
|NumberOfBanks
 +
|Byte
 +
|
 +
|- bgcolor=crimson
 +
|27
 +
|Speichermodell
 +
|Byte
 +
|
 +
*00h = Text mode
 +
*01h = CGA graphics
 +
*02h = Hercules graphics
 +
*03h = Planar
 +
*04h = Packed pixel
 +
*05h = Non-chain 4, 256 color
 +
*06h = Direct color
 +
*07h = YUV
 +
|-
 +
|28
 +
|BankSize
 +
|Byte
 +
|in KB
 +
|-
 +
|29
 +
|NumberOfImagePages
 +
|Byte
 +
|Anzahl der Images minus Eins
 +
|-
 +
|30
 +
|Reserviert
 +
|Byte
 +
|=1
 +
|- bgcolor=lightskyblue
 +
|31
 +
|RedMaskSize
 +
|Byte
 +
|Anzahl der Bits, die den roten Farbanteil angeben (Speichermodell: direct color)
 +
|- bgcolor=lightskyblue
 +
|32
 +
|RedFieldPosition
 +
|Byte
 +
|Position des ersten Bits ([[LSB]]), das den roten Farbanteil angibt
 +
|- bgcolor=lightskyblue
 +
|33
 +
|GreenMaskSize
 +
|Byte
 +
|
 +
|- bgcolor=lightskyblue
 +
|34
 +
|GreenFieldPosition
 +
|Byte
 +
|
 +
|- bgcolor=lightskyblue
 +
|35
 +
|BlueMaskSize
 +
|Byte
 +
|
 +
|- bgcolor=lightskyblue
 +
|36
 +
|BlueFieldPosition
 +
|Byte
 +
|
 +
|- bgcolor=lightskyblue
 +
|37
 +
|RsvdMaskSize
 +
|Byte
 +
|
 +
|-
 +
|38
 +
|DirectColorModeInfo
 +
|Byte
 +
|
 +
*Bit 1: 0=Alle reservierten Bits in der Farbmaske dürfen NICHT benutzt werden, 1=dürfen benutzt werden
 +
*Bit 0: 0=Color ramp is fixed, 1=programmable (???)
 +
|- bgcolor=chartreuse
 +
|39
 +
|PhysBasePtr
 +
|DWord
 +
|Physikalische Adresse des LFB
 +
|-
 +
|43
 +
|OffScreenMemOffset
 +
|DWord
 +
|Zeiger auf den Anfang des Teil des Grafikspeichers, der nicht auf dem Bildschirm zu sehen ist
 +
|-
 +
|47
 +
|OffScreenMemSize
 +
|Word
 +
|in KB
 +
|-
 +
|49
 +
|Reserviert
 +
|206 Bytes
 +
|
 +
|}
  
−
So kann man die Nummer desjenigen Grafikmodus herausfinden, den man benötigt.
+
Von diesen Einträgen sind einige besonders wichtig:
 +
*In <font color=chartreuse>grün</font>: Diese Einträge sind für die Verwendung des [[LFB]] wichtig.
 +
*In <font color=crimson>rot</font>: Diese Einträge sind zum Adressieren/Zeichnen eines Pixels wichtig.
 +
*In <font color=lightskyblue>blau</font>: Diese Einträge zeigen an, wie die Farbe eines Pixels anzugeben ist. Dies ist in der Regel eine [[RGB]]-Angabe. Dafür muss das Speichermodell (27) ''direct color'' sein (=6h).
  
 
=== In einen Grafikmodus umschalten: 4F02h ===
 
=== In einen Grafikmodus umschalten: 4F02h ===