Color Graphics Adapter

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Der 640×200-Zweifarbmodus mit der Standard-Vordergrundfarbe — Arachne Internet suite

CGA (Color Graphics Adapter, ursprünglich auch Color/Graphics Adapter oder IBM Color/Graphics Monitor Adapter) war die erste von IBM 1981 eingeführte farbfähige Grafikkarte und der erste Farbgrafikkarten-Standard für IBM-PCs. Bis zur Einführung von EGA war er Standard für Anwendungen, die jeden Bildpunkt einzeln adressieren mussten.[1] Das Video-RAM umfasste 16384 Byte. Die höchste Bildschirmauflösung der Karte betrug 640 × 200 Bildpunkte.[2] Wie bei den meisten Heimcomputern entsprach das Timing der CGA-Karte dem des Fernsehbildes, wodurch die Karte mithilfe eines externen HF-Modulators an einen Fernseher oder direkt an einen Composite-Monitor angeschlossen werden konnte. Die Rahmenfarbe des angezeigten Bildes konnte in den Textmodi und dem 320 x 200 Bildpunkte Grafikmodus durch Setzen eines Registerwerts aus der CGA-Farbpalette ausgewählt werden.[3]

Textmodi[Bearbeiten | Quelltext bearbeiten]

Die CGA-Karte kennt zwei Textmodi

  • 40  ×  25 Zeichen und
  • 80  ×  25 Zeichen.

Der Zeichensatz ist fest in einem ROM abgespeichert und umfasst die 256 Zeichen des IBM-Zeichensatzes.

Beide Modi haben je zwei Varianten

  • In der ersten gibt es 16 Vorder- und Hintergrundfarben.
  • In der zweiten gibt es nur noch 8 Hintergrundfarben, jedes Zeichen kann aber blinken.

Der Zeichensatz nutzt ein 8 × 8-Raster, wodurch Nachteile gegenüber den Monochrom-Standards MDA und HGC in Kauf genommen werden mussten: die Buchstaben sahen sehr rasterartig aus, und die Zeilenabstände waren so gering, dass Unterlängen (wie bei den Kleinbuchstaben g, j, p, q, y) die Großbuchstaben der nächsten Zeile berührten.

Grafikmodi[Bearbeiten | Quelltext bearbeiten]

CGA-16-Farben-Palette
0 Schwarz
#000000
8 Dunkelgrau
#555555
1 Blau
#0000AA
9 Hellblau
#0000FF
2 Grün
#00AA00
10 Hellgrün
#00FF00
3 Cyan
#00AAAA
11 Helles Cyan
#00FFFF
4 Rot
#AA0000
12 Hellrot
#FF0000
5 Magenta
#AA00AA
13 Helles Magenta
#FF00FF
6 Gelb
#AAAA00
14 Hellgelb
#FFFF00
7 Hellgrau
#AAAAAA
15 Weiß
#FFFFFF
CGA-Palette 1
Hintergrund 5 — Magenta
3 — Cyan 7 — Hellgrau
CGA-Palette 2
Hintergrund 4 — Rot
2 — Grün 6 — Gelb

Standard-Modi[Bearbeiten | Quelltext bearbeiten]

Die CGA-Karte bietet zwei Grafikmodi:

  • 320 × 200 Bildpunkte bei 4 Farben (eine frei wählbar, drei festgelegt durch eine von zwei Farbpaletten, die zusätzlich noch in hoher oder niedriger Intensität gewählt werden kann),
  • 640 × 200 Bildpunkte bei 2 Farben (eine frei wählbar, die andere auf schwarz festgelegt).

Darstellung auf einem RGBI-Monitor[Bearbeiten | Quelltext bearbeiten]

Die Übertragung des Bildes erfolgt über einen 9-poligen Sub-D-Stecker.

Pin Name Funktion
1 GND Masse
2 GND Masse
3 R Rot
4 G Grün
5 B Blau
6 I Intensität
7 RES reserviert
8 HSYNC Horizontale Synchronisation
9 VSYNC Vertikale Synchronisation

Als Signalpegel werden TTL-Pegel verwendet.

Die Signale R, G und B steuern direkt, d. h. digital, die Farben Rot, Grün und Blau an, aus denen sich die dargestellte Farbe eines Bildpunktes zusammensetzt. Bei gleichzeitiger Aktivität des I-Signals wird die Intensität dieser Farbe erhöht.[4][5]

160×100-Modus mit allen 16 Farben[Bearbeiten | Quelltext bearbeiten]

Der 160×100-Modus ist ein Grafikmodus, der mit Hilfe eines Textmodus realisiert und nicht durch das BIOS der CGA-Karte unterstützt wird.[6] Hierbei kommt eine Zeichenmatrix von 80 × 100 Zeichen zum Einsatz. Da jedes Zeichen zwei Byte belegt, werden insgesamt 16000 von 16384 Bytes Video-RAM verwendet.

Hierzu wird die CGA-Karte wie folgt konfiguriert:

  1. Wahl des Textmodus mit 80 x 25 Zeichen, wodurch das Zeichensatz-ROM verwendet wird. Dies ist nur die Registereinstellung, tatsächlich benutzt werden 80 x 100 Zeichen.
  2. Abschalten des Blink-Modus, um alle 16 Farben, statt 8 nicht blinkende und 8 blinkende Farben, verwenden zu können.
  3. Darstellung von 100 Textzeilen, wobei jede Textzeile zwei Bildpunkte hoch ist. Dadurch erscheinen von jedem Zeichen nur die obersten beiden Bildpunktreihen.
  4. Füllen der Zeichenmatrix mit dem Zeichen linker Balken () oder alternativ rechter Balken (). Weitere nutzbare Zeichen sind Leerzeichen, breiter Balken () und für Mischfarben , und .[7]
  5. Wahl der Vordergrund- und Hintergrundfarbe für jedes Balkenzeichen, wodurch mit Hilfe des Balkenzeichens ein entsprechend farbiger Block von 2 x 2 Bildpunkten durch die CGA-Karte erzeugt wird.
Screenshot von Paku Paku, einem CGA-Spiel, welches den 160×100×16-Modus verwendet. (Innerer Bildschirm)

Diesen Grafikmodus nutzten allerdings nur sehr wenige Spiele. Ein Beispiel ist der noch 2011 erschienene Pac-Man-Klon Paku Paku, dessen Quelltext frei einsehbar ist und der unter einer Public Domain-Lizenz veröffentlicht wurde.[8]

320×200-Multicolor-Modus[Bearbeiten | Quelltext bearbeiten]

Bei der CGA-Karte ist es darüber hinaus möglich, beim Erreichen bestimmter Bildzeilen, mit denen das Bild sukzessive aufgebaut wird, zwischen den einzelnen Farbpaletten umzuschalten und so unterschiedliche Farbpaletten in Teilbereichen des Bildes zu nutzen. Hierbei sollten die sichtbaren Bildzeilen, bei denen der Palettenwechsel stattfindet, farblich so gestaltet werden, dass sie keine unerwünschten Farbeffekte zeigen. Verwendet wurde dieser Modus beispielsweise vom Spiel California Games, wenn es auf einem Ur-PC mit CGA-Karte und Intel 8088 Prozessor mit 4,77 MHz Taktfrequenz ausgeführt wurde. Auf Systemen mit einer anderen Taktfrequenz und CGA-Karte wurden hingegen nur vier Farben bei der Bilddarstellung verwendet, da das für den Multicolor-Modus notwendige Timing bei diesem Spiel direkt von der Taktfrequenz des Prozessors abgeleitet wurde.[9]

Geschichte[Bearbeiten | Quelltext bearbeiten]

Die CGA-Karte wurde von IBM alternativ zur MDA-Karte 1981 mit dem ersten Ur-PC von IBM angeboten. Sie war damals rund 1000 DM teuer, von ihrer Leistung her für einen professionellen Computer aber unzureichend: Die 2-Farben-Auflösung wurde von den Konkurrenzgeräten überboten (Victor Sirius: 800 × 400 Pixel), der 320×200-Modus war mit vier Farben für Spiele nicht gut geeignet, der 16-Farben-Modus besaß eine selbst für Heimcomputer ungenügende Auflösung. Zugriffe auf den Bildspeicher erzeugten im 80x25-Bildstörungen in Form von Schnee. Die IBM-BIOS-Routinen schalteten während des Scrollens die Bildschirmausgabe komplett ab, was heftiges Geflacker verursachte. Alternativ benutzte man nicht das BIOS, sondern schrieb die Daten während der Austastlücken in den Bildspeicher. Weiterhin gab es am Anfang selbst von IBM keine geeigneten Monitore, die Fernsehausgabe erfolgte damals üblicherweise als Composite-Signal oder als HF-Moduliertes Signal mit schlechter Bildqualität. Da außerdem aus Sicht der damaligen Computer-Puristen Farbe nichts mit Professionalität zu tun hatte (es sei denn für exotische Anwendungen wie CAD), setzte sich die ein Jahr später angebotene monochrome Hercules-Karte HGC durch, und die CGA-Karte spielte erst einmal eine Nebenrolle.

IBM-PC-Nachbauten, die sowohl leistungsfähiger wie preiswerter als das Original waren, nutzten so gut wie immer auch Nicht-IBM-Grafikkarten (z. B. die ATI Graphics Solution). Auch diese Grafikkarten waren deutlich leistungsfähiger und preiswerter als die CGA- und MDA-Karten, flexibler bei der Ansteuerung von Monitoren, kompatibler zur IBM-CGA und IBM-MDA als die IBM-EGA-Karten. Sie benötigten weniger Strom und waren deutlich kleiner, weil die Nachbauten eigene VLSI-Chips entwickelten und verwendeten.[10]

Im 320×200-Modus besaß die Grafikkarte zwei feste Paletten aus jeweils vier Farben. Die erste Palette bestand aus den Farben Magenta, Türkis, Weiß und einer frei wählbaren Farbe (standardmäßig Schwarz), die zweite aus Gelb, Hellgrün, Hellrot und (standardmäßig) Schwarz. Die meisten Spiele nutzten die erste Palette, wodurch der typische Türkis-Magenta-Look der CGA-Spiele zustande kommt.

Der 160×200-Modus wurde vom PC-BIOS nicht unterstützt. Hier musste der Grafikprozessor der CGA-Karte, der Motorola 6845, direkt programmiert werden. Weiterhin unterstützten nur wenige Grafikkarten diesen Modus, u. a. die Original-Karte von IBM, die Karte für den IBM PCjr und die Grafikkarte des Tandy 1000, die aber ohnehin nicht dem CGA-Standard entsprach.

Compaq nutzte bei seinem Portable 386 und Portable III eine eigene, später verworfene Auflösung von 640 × 400 als CGA-Weiterentwicklung.

Auf der Demo-Party Revision 2015 wurden in der Demo "8088 MPH" (by Hornet + CRTC + DESiRE) durch geschickte Ansteuerung der CGA-Karte Bilder mit 1024 Farben bei 100 × 80 Pixeln erzeugt. Für die Ausgabe wird jedoch z. Zt. zwingend ein NTSC-Monitor benötigt, da hier Hardware-nah in die Generierung des Bildsignals eingegriffen wird. Emulatoren können dies Stand Mai 2016 nicht widerspiegeln. Da es zwei verschiedene CGA-Versionen gab, die sich in der Bildsignalerzeugung unterscheiden, variieren die Farben dabei je nach der entsprechenden Version und es können nicht beliebige Pixelkombinationen dargestellt werden.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. IBM Color/Graphics Monitor Adapter. (PDF; 828 KB) S. 1, abgerufen am 8. November 2020 (englisch): „... two basic modes of operation: ... and all-points addressable (APA) graphics.“
  2. IBM Color/Graphics Monitor Adapter. (PDF; 828 KB) S. 11, abgerufen am 8. November 2020 (englisch): „... 640 PELs by 200 rows ...“
  3. IBM Color/Graphics Monitor Adapter. (PDF; 828 KB) S. 18, abgerufen am 13. Oktober 2020 (englisch).
  4. IBM Color/Graphics Monitor Adapter. (PDF; 828 KB) S. 24, abgerufen am 21. November 2020 (englisch).
  5. Jim Leonard: CGA Compatibility Tester reference video. Abgerufen am 21. November 2020 (englisch).
  6. IBM Color/Graphics Monitor Adapter. (PDF; 828 KB) S. 9, abgerufen am 17. Januar 2021 (englisch).
  7. Perry Harrington: CGA16DMO.CPP. Abgerufen am 17. Januar 2021 (englisch).
  8. Jason Knight: Paku Paku - A game for early PC/MS-DOS Computers. deathshadow.com, abgerufen am 16. Januar 2013 (englisch): „Contents of DEATHSHADOW'S MADNESS © Jason M. Knight unless otherwise noted All code presented on this site is released to the Public Domain. There'll be none of that open source licensing malarkey in here - If you going to give something away, LANDS SAKE JUST GIVE IT AWAY!!!
  9. MobyGames: California Games (DOS). Abgerufen am 21. Dezember 2020 (englisch).
  10. https://www.retromaniek.pl/wp-content/uploads/2018/12/Commodore_PC10-PC20_Advanced_Graphics_Adapter.pdf