Color Graphics Adapter

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 4. Oktober 2016 um 17:02 Uhr durch Trustable (Diskussion | Beiträge) (wikilinks). Sie kann sich erheblich von der aktuellen Version unterscheiden.
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 im grafischen Bereich. Das Video-RAM hatte 16.384 Byte. Die grundlegende Bildschirmauflösung der Karte war 640×200 Punkte. Anders als bei allen anderen PC-Grafikstandards, aber wie bei den meisten Heimcomputern, entsprach das Timing der CGA-Karte dem des Fernsehbildes, wodurch die Karte relativ einfach und ohne großen Detailverlust des Bildes an einen Fernseher oder Composite-Monitor angeschlossen werden konnte. Ebenfalls im Gegensatz zu den anderen PC-Grafikstandards hatte das Bild auf dem Monitor einen relativ breiten äußeren Rahmen, der durch die Festlegung einer sogenannten Rahmenfarbe farbig erscheinen konnte.

Textmodi

Die CGA-Karte kennt zwei Textmodi:

  • 40 × 25 Zeichen,
  • 80 × 25 Zeichen.

Beide Modi haben je zwei Varianten:

  • Vorder- und Hintergrundfarbe sind für jedes Zeichen einzeln aus einer Palette von 16 Farben frei wählbar,
  • alle Farbcodes werden in Grautöne umgesetzt.

Unabhängig vom gewählten Textmodus mussten alle Zeichen in einem 8×8-Raster dargestellt werden, 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. Darunter litt natürlich die Lesbarkeit, weshalb CGA auch nur selten für Büroanwendungen genutzt wurde.

Grafikmodi

CGA 16-farb Palette
0 Schwarz
#000000
8 Grau
#555555
1 Blau
#0000AA
9 Hellblau
#5555FF
2 Grün
#00AA00
10 Hellgrün
#55FF55
3 Cyan
#00AAAA
11 Helles Cyan
#55FFFF
4 Rot
#AA0000
12 Hellrot
#FF5555
5 Magenta
#AA00AA
13 Helles Magenta
#FF55FF
6 Braun
#AA5500
14 Gelb
#FFFF55
7 Helles Grau
#AAAAAA
15 Weiß (Hohe Intensität)
#FFFFFF
CGA-Palette 1
default 5 — Magenta
3 — cyan 7 — weiß (hellgrau)
CGA-Palette 2
default 4 — rot
2 — grün 6 — braun (orange)

Standard-Modi

Die CGA-Karte hat drei Grafikmodi:

  • 160 × 200 Punkte bei 16 Farben (Composite Mode, vom BIOS nicht unterstützt, nur auf Composite-Monitoren verwendbar),
  • 320 × 200 Punkte 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 Punkte bei 2 Farben (eine frei wählbar, eine auf schwarz festgelegt).

Mit einem RGBI Monitor

Trotz der variierenden Farbtiefen in den CGA-Modi wird in CGA die Farbinformation mit 4 Bits abgebildet, was maximal 16 verschiedene Farben ergibt. Die unteren drei Bits repräsentieren dabei die Farben Rot, Grün und Blau, das letzte Bit die Intensität.

Bei einem RGBI-Monitor werden diese 4 Bits unverändert über den DE-9 Stecker dem Monitor übermittelt. Der Monitor verwendete näherungsweise folgende Formel, um die digitalen Werte in analoge Spannungen umzuwandeln (0,0...1,0):

red  := 2/3×(colorNumber & 4)/4 + 1/3×(colorNumber & 8)/8
green := 2/3×(colorNumber & 2)/2 + 1/3×(colorNumber & 8)/8
blue := 2/3×(colorNumber & 1)/1 + 1/3×(colorNumber & 8)/8
Dunkel Gelb
6 #AAAA00

CGA-Farbe 6 wird unterschiedlich behandelt; mit der obigen Formel würde ein dunkles Gelb entstehen. Um jedoch einen angenehmeren Braunton zu erzielen, gab es eine Sonderschaltung in den meisten RGBI-Monitoren, inklusive des IBM 5153 color display[1], welche den Grüntanteil halbiert:

wenn Farbnummer = 6 dann Grün := Grün / 2

Diese "RGBI mit angepassten Braun"-Palette wurde von allen späteren Standards wie EGA und VGA ebenfalls als Power-up-Standard der internen Paletten-Register und/oder DAC-Register zur Verfügung gestellt.

160×100-Modus mit allen 16 Farben

Diesen Modus beherrscht der bei CGA-Karten für das Timing verantwortliche Motorola 6845 nicht offiziell, sondern er konnte nur durch Tricks erreicht werden. Diese Art von Tricks war typisch für die frühe Zeit der Spieleprogrammierung:

  1. Man schaltete die CGA-Karte in den Textmodus
  2. Man programmierte die Videoregister so, dass die Zahl der Textzeilen vervierfacht wurde. Dadurch erschienen von jedem Zeichen nur die obersten beiden Pixelreihen.
  3. Man füllte den ganzen Textbildschirm mit dem Zeichen linker Balken oder rechter Balken.
  4. Man schaltete den Blink-Modus ab, um 16 Farben, statt 8 nicht-blinkende und 8 blinkende Farben zu bekommen.
  5. Die eigentliche Anzeige erfolgte dann nur noch durch Änderung der Farbwerte der Balkenzeichen.
Screenshot von Paku Paku, einem CGA-Spiel, welches den 160×100×16-Modus verwendet. (Innerer Bildschirm)

Diesen Trick nutzten allerdings nur sehr wenige Spiele, da 160×100 Pixel doch zu wenig waren. Ein Beispiel ist jedoch der noch 2011 erschienene Pac-Man-Klon Paku Paku, dessen Quelltext einsehbar ist, da unter Public Domain veröffentlicht.[2]

320×200-Multicolor-Modus

Bei der CGA-Karte ist es darüber hinaus möglich, beim Bildaufbau zwischen den einzelnen Paletten umzuschalten und so jede Palette in einer Bildzeile zu nutzen. Durch sehr genaues Timing lassen sich so die Paletten gleichzeitig nutzen und einzelne Bildpunkte mit jeder CGA-Farbe auf einer Bildschirmseite, ohne Palettenbeschränkungen, ansprechen. Verwendet wurde dieser Modus beispielsweise vom Spiel California Games, wenn es auf einem Ur-PC mit CGA-Adapter und 8088er Prozessor mit 4,77 MHz ausgeführt wurde. Auf anderen Systemen mit CGA-Grafik wurden hingegen nur vier Farben gleichzeitig dargestellt, da das Funktionieren des Multicolormodus hier exakt von der Taktfrequenz des Prozessors abhängig ist.

Geschichte

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 konnte nur mit einem sogenannten Composite-Monitor angesteuert werden – das konnte allerdings auch ein ganz normaler Farbfernseher sein. 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.

Dies änderte sich im Jahr 1984, als IBM den PC AT und die EGA-Karte herausbrachte. Im gleichen Zug wurde die CGA-Karte sehr viel preiswerter und galt in den Jahren danach als Billiglösung. Für die in diesen Jahren aufkommenden „Billig-PCs“, die sich viele als Heim-PC anschafften und auf denen auch gespielt werden sollte, war die CGA-Karte die einzige Alternative. Das ist der Grund, warum Mitte der 1980er Jahre sehr viele PC-Spiele – ausschließlich oder optional – für den CGA-Modus erschienen.

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 640x400 als CGA-Weiterentwicklung.

Auf der Demo-Party Revision 2015 wurde in der Demo "8088 MPH" (by Hornet + CRTC + DESiRE) durch geschickte Ansteuerung der CGA-Karte Bilder mit 1024 Farben bei 100x80 Pixeln erzeugt werden. 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

Einzelnachweise

  1. International Business Machines Corporation (1983): IBM Personal Computer XT Technical Reference Manual, pages D-42 to D-43.
  2. 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!!!