Video Graphics Array — Änderungen 4670 → 4671

Zeile 1: Zeile 1:
 
{{Stub}}
 
{{Stub}}
−
'''Video Graphics Array''' ('''VGA''') ist ein Grafikstandard der seit 1987 benutzt wird. Heutige PC-Grafikkarten sind noch immer zum VGA Standard kompatibel.
 
  
−
== Modi ==
 
−
 
−
Die Grafikdarstellung von VGA kann grob in Text- und Grafikmodus unterteilen werden. <br>
 
−
 
−
=== Textmodus ===
 
−
Im Textmodus werden meistens 80*25 Zeichen verwendet. Diese Aufösung wird z.B. fast immer beim Starten eines PCs benutzt. Eine andere oft benutzte Zeichendarstellung ist 80*50. Speicheradresse: 0xB8000h.
 
−
=== Grafikmodus ===
 
−
Im Grafikmodus werden die Werte der einzelnen Pixel direkt verändert. Ein Modus besteht aus vertikaler und horizontaler Pixelanzahl und der Anzahl darstellbarer Farben.
 
−
====Modus 13h====
 
−
320x200 Punkte bei 256 Farben
 
−
 
−
Speicheradresse: 0xA0000
 
−
 
−
Speichergröße: 64000 Bytes
 
 
== Einleitung ==
 
== Einleitung ==
 
Irgendwann ist man an einem Punkt angelangt, an dem man nicht nur den voreingestellten Textmodus des BIOSes benutzen möchte. Man möchte in den Grafikmodus wechseln, die Auflösung anpassen und vielleicht auch die Farbtiefe anpassen. Oder auch einfach nur die Schriftart (Den Font) ändern. Der erste Station auf diesem Weg (Anfangs besser die erste Hürde) nennt sich VGA (Video Graphics Array).
 
Irgendwann ist man an einem Punkt angelangt, an dem man nicht nur den voreingestellten Textmodus des BIOSes benutzen möchte. Man möchte in den Grafikmodus wechseln, die Auflösung anpassen und vielleicht auch die Farbtiefe anpassen. Oder auch einfach nur die Schriftart (Den Font) ändern. Der erste Station auf diesem Weg (Anfangs besser die erste Hürde) nennt sich VGA (Video Graphics Array).
Zeile 37: Zeile 22:
 
=== Attribut Controller ===
 
=== Attribut Controller ===
 
Der Attribut Controller wird über die Ports 0x3C0 und 0x3C1 gesteuert. Ersterer übernimmt dabei den Index und die zu schreibenden Daten und letzterer enthält die zu lesenden Daten. Wie? Über nur zwei Ports hat man Zugriff auf mehrere Register? Und über ein und denselben Port werden Index und Daten geschrieben? Wie geht denn das? Nun, die Register werden durchnummeriert. Möchte man Daten ins Register 1 schreiben oder lesen, dann schreibt man zuerst die 1 das Index Register 0x3C0 und kann anschließend über denselben Port Daten senden oder über Port 0x3C1 das Register lesen. Dabei merkt sich der Controller, ob als nächstes ein Index oder Daten anstehen. Leider ist zu Beginn nicht definiert was erwartet wird. Glücklicherweise kann man durch Lesen eines Bytes von Port 0x3DA (Das ist das externe Status Register 1) die Logik zurücksetzen, sodass als nächstes ein Index erwartet wird. Man sollte also vor jedem Zugriff zuerst mal Port 0x3DA lesen, dann den Index schreiben und anschließend die Daten lesen/schreiben.
 
Der Attribut Controller wird über die Ports 0x3C0 und 0x3C1 gesteuert. Ersterer übernimmt dabei den Index und die zu schreibenden Daten und letzterer enthält die zu lesenden Daten. Wie? Über nur zwei Ports hat man Zugriff auf mehrere Register? Und über ein und denselben Port werden Index und Daten geschrieben? Wie geht denn das? Nun, die Register werden durchnummeriert. Möchte man Daten ins Register 1 schreiben oder lesen, dann schreibt man zuerst die 1 das Index Register 0x3C0 und kann anschließend über denselben Port Daten senden oder über Port 0x3C1 das Register lesen. Dabei merkt sich der Controller, ob als nächstes ein Index oder Daten anstehen. Leider ist zu Beginn nicht definiert was erwartet wird. Glücklicherweise kann man durch Lesen eines Bytes von Port 0x3DA (Das ist das externe Status Register 1) die Logik zurücksetzen, sodass als nächstes ein Index erwartet wird. Man sollte also vor jedem Zugriff zuerst mal Port 0x3DA lesen, dann den Index schreiben und anschließend die Daten lesen/schreiben.
 +
 +
== Modi ==
 +
====Modus 13h====
 +
320x200 Punkte bei 256 Farben
 +
 +
Speicheradresse: 0xA0000
 +
 +
Speichergröße: 64000 Bytes
 +
  
 
== Siehe auch ==
 
== Siehe auch ==
Zeile 46: Zeile 40:
 
[[Category:Glossar]]
 
[[Category:Glossar]]
 
[[Category:Hardware]]
 
[[Category:Hardware]]
−
[[Kategorie:Lizenz ungeklärt]]
 
  
 
== Quellen ==
 
== Quellen ==
 
* [http://wiki.osdev.org/VGA_Hardware wiki.osdev.org/VGA_Hardware]
 
* [http://wiki.osdev.org/VGA_Hardware wiki.osdev.org/VGA_Hardware]
 
* [http://www.osdever.net/FreeVGA/vga/vga.htm www.osdever.net/FreeVGA/vga/vga.htm]
 
* [http://www.osdever.net/FreeVGA/vga/vga.htm www.osdever.net/FreeVGA/vga/vga.htm]