Color Graphics Adapter

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 im Jahr 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 und 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 × 200 Bildpunkte Grafikmodus durch Setzen eines Registerwerts aus der CGA-Farbpalette ausgewählt werden.[3]

Die CGA-Karte kennt die beiden Textmodi:

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

Der Zeichensatz für die Textmodi ist fest in einem ROM als Teil der CGA-Karte abgespeichert und umfasst in der DOS/OEM-US-Version die 256 Zeichen des IBM-Zeichensatzes der Codepage 437.[4]

Beide Modi haben je zwei Varianten:

  • Im ersten gibt es 16 Vorder- und Hintergrundfarben.
  • Im 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

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

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 können),
  • 640 × 200 Bildpunkte bei 2 Farben (eine frei wählbar, die andere auf schwarz festgelegt).

Die bei Verwendung von 320 × 200 Bildpunkten zur Verfügung stehende Farbpalette umfasst je nach der für sie gewählten niedrigen/hohen Intensität entweder die Farben dunkles/helles Magenta, dunkles/helles Türkis, Hellgrau/Weiß und eine frei wählbare Farbe (standardmäßig Schwarz); oder die Farben Braun/Gelb, Grün/Hellgrün, Rot/Hellrot und (standardmäßig) Schwarz. Die meisten Spiele nutzten die erst genannte Farbpalette, wodurch deren typisches Türkis-Magenta-Erscheinungsbild zustande kam.

Darstellung auf einem RGBI-Monitor

Die Übertragung des Bildes an einen RGBI-Monitor erfolgt über einen 9-poligen Sub-D-Anschluss.[5]

9-polige-Sub-D-Buchse an der CGA-Karte bei Draufsicht
Pinbelegung
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.[5][6]

160×100-Modus mit allen 16 Farben

Motorola MC6845

Der 160×100-Modus ist ein Grafikmodus, der mit Hilfe eines Textmodus realisiert und nicht durch das BIOS der CGA-Karte unterstützt wird.[7] Somit muss der bei der CGA-Karte eingesetzte Chip Motorola MC6845 direkt programmiert werden.[8] Zum Einsatz kommt bei diesem Modus eine 80 × 100-Zeichenmatrix. Da jedes Zeichen zwei Byte belegt, werden insgesamt 16000 von 16384 Bytes an Video-RAM verwendet.

Hierzu wird die CGA-Karte wie folgt konfiguriert, wobei der Bilddarstellung ein Raster von 640 × 200 Bildpunkten zugrunde liegt:

  1. Wahl des Textmodus mit 80 × 25 Zeichen, wodurch das Zeichensatz-ROM verwendet wird. Dies ist nur die Registereinstellung, tatsächlich benutzt werden 80 × 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 .[8]
  5. Wahl der Vordergrund- und Hintergrundfarbe für jedes Balkenzeichen, so dass zwei entsprechend farbige Blöcke bestehend aus 4 × 2 Bildpunkten durch die CGA-Karte angezeigt werden.[9]
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.[10] Hinzu kam, dass nur wenige Grafikkarten, z. B. die im IBM PCjr und im Tandy 1000, diesen Modus neben der Original-Karte von IBM unterstützen.

320×200-Multicolor-Modus

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.[11]

Geschichte

Die CGA-Karte wurde von IBM als Alternative zur gleichzeitig erschienenen MDA-Karte im Jahr 1981 mit dem ersten Ur-PC von IBM angeboten.[12] Während die MDA-Karte für den geschäftlichen Einsatz konzipiert war, war die CGA-Karte für den Heimgebrauch gedacht.[13] Sie war damals rund 1000 DM teuer, von ihrer Leistung aber für einen professionellen Computer unzureichend: die 640 × 200 Bildpunkte-Auflösung bei zwei Farben wurde von den Konkurrenzgeräten übertroffen (Victor Sirius: 800 × 400 Bildpunkte), der 320 × 200 Bildpunkte-Modus war mit vier Farben für Spiele nicht gut geeignet, und der 16-Farben-Modus besaß eine selbst für Heimcomputer ungenügende Auflösung. Zugriffe auf den Bildspeicher erzeugten im 80 × 25 Textmodus Bildstörungen in Form von Schnee. Die IBM-BIOS-Routinen schalteten deswegen während des Scrollens die Bildschirmausgabe komplett ab, was wiederum heftiges Geflacker verursachte.[14] Alternativ dazu benutzte man nicht die BIOS-Routinen, und konnte so die Daten während der Austastlücken in den Bildspeicher schreiben. Weiterhin gab es am Anfang selbst von IBM keine geeigneten Monitore. Die Ausgabe auf einen Fernseher 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 als auch preiswerter als das Original waren, nutzten so gut wie immer auch Nicht-IBM-Grafikkarten (z. B. die ATI Graphics Solution). Auch waren diese Grafikkarten oftmals leistungsfähiger und preiswerter sowie flexibler bei der Ansteuerung von Monitoren als die CGA- und MDA-Karten von IBM. Ebenso waren sie kompatibler zu den originalen CGA- und MDA-Karten als die von IBM als deren Nachfolger entwickelte EGA-Karte. Sie benötigten weniger Strom und waren deutlich kleiner, weil die Nachbauten eigene VLSI-Chips verwendeten.[15]

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

Auf der Demo-Party Revision 2015 wurden von der Demo 8088 MPH (by Hornet + CRTC + DESiRE) durch geschickte Ansteuerung der CGA-Karte Bilder mit bis zu 1024 Farben bei einer Auflösung von 80 × 100 Pixel erzeugt.[9] Für die Ausgabe wird jedoch z. Zt. zwingend ein NTSC-Monitor benötigt, da hier hardwarenah in die Generierung des Bildsignals eingegriffen und der Composite-Ausgang der CGA-Karte verwendet wird. Emulatoren können dies Stand Mai 2016 nicht widerspiegeln. Da zwei verschiedene Versionen der CGA-Karte hergestellt wurden, die sich in der Bildsignalerzeugung unterscheiden, variieren die Farben je nach der alten oder neuen Version.[16]

Einzelnachweise

  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. VileR: I. FONTS FROM THE IBM PC & FAMILY. Abgerufen am 14. April 2021 (englisch): „IBM's first two video solutions shared the same character ROM, which provided the text mode font ...“
  5. a b IBM Color/Graphics Monitor Adapter. (PDF; 828 kB) S. 24, abgerufen am 21. November 2020 (englisch).
  6. Jim Leonard: CGA Compatibility Tester reference video. (englisch); archive.org.
  7. IBM Color/Graphics Monitor Adapter. (PDF; 828 kB) S. 9, abgerufen am 17. Januar 2021 (englisch).
  8. a b Perry Harrington: CGA16DMO.CPP. github.com, abgerufen am 17. Januar 2021 (englisch).
  9. a b VileR: CGA in 1024 Colors - a New Mode: the Illustrated Guide. Abgerufen am 15. März 2021 (englisch).
  10. Jason Knight: Paku Paku - A game for early PC/MS-DOS Computers. deathshadow.com, abgerufen am 14. April 2021 (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!!!“
  11. MobyGames: California Games (DOS). Abgerufen am 21. Dezember 2020 (englisch).
  12. David J. Bradley: The Creation of the IBM PC. In: Byte magazine, 9/1990, S. 414; Textarchiv – Internet Archive. “… , on August 12, 1981, we announced the IBM Personal Computer.
  13. David J. Bradley: The Creation of the IBM PC. In: Byte magazine, 9/1990, S. 417; Textarchiv – Internet Archive. “CGA for the home and the … (MDA) for business.
  14. David J. Bradley: The Creation of the IBM PC. In: Byte magazine, 9/1990, S. 418; Textarchiv – Internet Archive. “…quickly filled the screen with ‘snow’ … The scroll routine … simply turned off the display, …
  15. Personal Computer PC 10 PC 20 Advanced Graphics Adapter. (PDF; 6,4 MB) In: Internet Archive. 1986, archiviert vom Original am 9. April 2023; abgerufen am 9. April 2023 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.retromaniek.pl
  16. VileR: 8088 MPH Final: Old vs. New CGA (and Other Gory Details). Abgerufen am 15. März 2021 (englisch).