OOStuBS - Technische Informatik II (TI-II)  2.4
Informationen zu CGA

Inhaltsverzeichnis

Video-RAM

Jede Grafikkarte verfügt über einen Video-RAM, einen eigenen Speicherbereich mit dessen Hilfe der Bildschirminhalt programmiert werden kann. Im Grafikmodus müssen dazu für jeden Bildpunkt je nach Anzahl der möglichen Farben ein oder mehrere Bits im Video-RAM gesetzt bzw. gelöscht werden. Im Textmodus genügt es dagegen, den ASCII-Code des gewünschten Zeichens, zusammen mit dessen Darstellungsattributen in den Video-RAM zu übertragen. Die Umsetzung des ASCII-Codes in eine Pixelmatrix wird dann eigenständig von der Grafikkarte vorgenommen.

In der Übung zur Vorlesung sollen alle Ausgaben des Betriebssystems oo-StuBS im CGA-Textmodus erfolgen. Dieser Modus wird von fast allen Grafikkarten unterstützt, ist einfach zu programmieren und für ein Übungsbetriebssystem vollkommen ausreichend.

Im CGA Textmodus belegt jede Bildschirmposition zwei Bytes im Video-RAM. Das erste der beiden Bytes (gerade Offsetadresse) nimmt den ASCII-Code des darzustellenden Zeichens auf, das zweite (ungerade Offsetadresse) die gewünschte Vorder- und Hintergrundfarbe. Die Abbildung der Bildschirmpositionen auf die Einträge im Video-RAM erfolgt nach Zeilen und Spalten geordnet. Bei einer Auflösung von 80 Zeichen pro Zeile und 25 Zeilen belegt das Zeichen in der linken oberen Ecke die Bytes 0 und 1, das Zeichen rechts daneben die Bytes 2 und 3 und das Zeichen am Ende der ersten Zeile die Bytes 158 und 159. Diese Zählung wird dann mit dem ersten Zeichen der zweiten Zeile fortgesetzt usw..

Da der Video-RAM in den Hauptspeicher des Computers eingeblendet wird, kann er mit Hilfe normaler Speicherzugriffe beschrieben werden. Offset 0 im Video-RAM wird mit (hexadezimal) B8000 addressiert.

Darstellungsattribute

Zu jedem Zeichen können die Merkmale Vordergrundfarbe, Hintergrundfarbe sowie Blinken einzeln festgelegt werden. Für diese Attribute steht pro Zeichen ein Byte zur Verfügung, dessen Bits haben für die Darstellungsattribute folgende Bedeutung:

Bits Bedeutung
0-3 Vordergrundfarbe
4-6 Hintergrundfarbe
7 Blinken

Für die Darstellung im CGA-Textmodus stehen dem Anwender die folgenden 16 Farben zur Verfügung. Die folgende Tabelle zeigt die zur Verfügung stehende Farbpalette. Da für die Hintergrundfarbe im Attributbyte nur drei Bits zur Verfügung stehen, können auch nur die ersten acht Farben als Hintergrundfarbe gewählt werden.

00 Schwarz    08 Dunkelgrau   
01 Blau    09 Hellblau   
02 Grün    10 Hellgrün   
03 Cyan    11 Hellcyan   
04 Rot    12 Hellrot   
05 Magenta    13 Hellmagenta   
06 Braun    14 Gelb   
07 Hellgrau    15 Weiß   

Cursor

Um die aktuelle Position des Cursors abfragen oder setzen zu können, muss der Videocontroller der Grafikkarte programmiert werden. Der Videocontroller einer CGA-Karte stellt zu diesem Zweck insgesamt 18 Steuerregister (8-Bit Wortbreite) zur Verfügung. Für die Cursorsteuerung sind jedoch nur die Steuerregister 14 und 15 interessant:

IndexRegister
14Cursor (high)
15Cursor (low)

Die Steuerregister können jedoch nicht direkt angesprochen werden. Der Zugriff erfolgt vielmehr indirekt über ein Index- und ein Datenregister. Dazu wird in das Indexregister zunächst die Nummer des Steuerregisters geschrieben, das gelesen oder geschrieben werden soll. Der eigentliche Zugriff auf den Inhalt des Steuerregisters (lesen/schreiben) erfolgt dann über das Datenregister. Daten- und Indexregister können direkt mit Hilfe der in und out Befehle angesprochen werden, da ihnen eigenständige Portadressen zugeordnet sind:

PortRegisterZugriffsart
3d4Indexregisternur schreiben
3d5Datenregisterlesen und schreiben