CGA
Från Rilpedia
Color Graphics Adapter (CGA), introducerades 1981 och var IBM:s första grafikkort för färgvisning och den första bildskärmsstandarden som kunde visa färger på en IBM PC.
CGA-standardkortet från IBM var utrustat med 16 kilobyte videominne. Kortet tillhandahöll ett flertal grafiska och textlägen, med en upplösning av 640x200 och upp till 16 färger (dock inte vid den upplösningen). CGA kunde visa maximimalt fyra färger vid en upplösning av 320x200. Det fanns dock flera olika sätt (vissa "officiella", andra inte) att visa fler färger även för färggrafikläget.
Innehåll |
CGA:s färgpalett
CGA:s 16-färgerspalett (hexadecimala värden anpassade från MC6845-specifikationen) |
|
---|---|
0 — black #000000 |
8 — (dark) gray #545454 |
1 — blue #0000A8 |
9 — bright blue #5454FE |
2 — green #00A800 |
10 — bright green #54FE54 |
3 — cyan #00A8A8 |
11 — bright cyan #54FEFE |
4 — red #A80000 |
12 — bright red #FE5454 |
5 — magenta #A800A8 |
13 — bright magenta #FE54FE |
6 — brown (orange) #A85400 |
14 — yellow #FEFE54 |
7 — white (light gray) #A8A8A8 |
15 — bright white #FEFEFE |
CGA-grafikkort arbetade med CRT RGBI-färgmonitorer. De baserades på Motorolas kontrollkrets MC6845 och hade en palett bestående av 16 färger. Röd, grön och blå motsvarade de tre elektronkanonerna i bildröret och svart färg betydde att signalen till dem nästan var avstängd. Färgen Cyan var en blandning av blå och gröna strålar, magenta mellan blå och röda. Orangebrun var en blandning av grönt och rött. Den vita färgen innehöll alla tre strålar.
De andra åtta färgerna skapades genom att slå på en ”intensifieringsbit", som gav ljusare versioner av varje färg. CGA:s variant av RGB plus ”intensifieringsbiten” kallades även för RGBI.
Datorn Commodore 128 använde samma metod för att sända färger till monitorn på sin RGBI-utgång och kunde därför använda samma monitorer och visa upp samma färger som datorer med CGA.
Standardtextlägen
CGA erbjöd två textlägen
- 40×25 tecken med upp till 16 färger. Varje tecken bestod av en matris av 8 x 8 ljuspunkter. Den effektiva upplösningen i detta läge var 320 x 200 pixel (pixelaspektrelation var 1:1.2 men enskilda pixlar kunde inte adresseras oberoende av varandra i detta läge). Valet av mönster för varje läge på skärmen var därför begränsat till en av de 256 tillgängliga tecknen. I detta läge kunde man välja förgrunds- och bakgrundsfärg för varje enskilt tecken som kunde nyttjas från hela CGA-färgpaletten (se exemplet) — exempelvis röd bakgrund och gul text för ett tecken och vit bakgrund och svart text för nästa tecken. Kortet hade tillräckligt mycket ramminne för åtta textsidor.
- 80×25 tecken med upp till 16 färger. Varje tecken var även i detta läge ett mönster av 8 x 8 punkter, med bildformatet 1:2.4. Den effektiva upplösningen i detta läge var 640 x 200 pixlar. Även här var man begränsad till de redan definierade tecknen. Kortet hade tillräckligt mycket videominne för att erbjuda fyra olika sidor.
Standardgrafiklägen
CGA 4-färgers palett #1 | ||
default | 5 — magenta | |
3 — cyan | 7 — white (light gray) | |
CGA 4-färgers palett #2 | ||
default | 4 — red | |
2 — green | 6 — brown (orange) |
CGA erbjöd två vanligen använda grafiklägen:
- 320 x 200 pixlar, som i 40 x 25-textläge. Men i grafikläge kunde varje enskild pixel adresseras var för sig. Nackdelen var att bara 4 färger kunde visas samtidigt. Dessa fyra färger kunde inte väljas fritt utan det fanns bara två officiella paletter för detta läge.
- Magenta, cyan, vitt och bakgrundsfärg (svart som default).
- Röd, grön, brun och bakgrundsfärg (svart som default).
- 640 x 200 pixlar, som i 80 x 25-textläge. Alla pixlar kunde adresseras oberoende av varandra. Detta läge var monokromt och erbjöd endast svart och vit färg (dock kunde detta ändras), och hade bildformatet 1:2.4
Composite-videolägen
Tämligen okänt var ytterligare ett grafikläge, 160 x 200 (pixelaspektrelatio 1.67:1), som kunde utnyttja 16 olika färger. Färgerna i detta läge använde inte samma palett som CGA-färgpaletten utan liknade mer Apple II:s ”double-hi-res”-läge. Detta då de utnyttjade samma teknik (composite signal color artifacting). Kompositfärg användes sällan av programvaran. Eftersom funktionen inte stöddes i BIOS utnyttjades det inte av programmerarna i någon högre grad. Kostnaden för ett IBM-system var hög nog, så de flesta hade inte råd med den dyrare RGB-monitorn som IBM vid denna tid erbjöd. Endast en handfull program använde 160 x 200-grafikläget och de flesta av dem var spel.
Ett vanligt missförstånd är att Composite-färg hade stöd på vissa RGB-utrustade maskiner, men detta är en direkt motsägelse av hur kompositfärger tekniskt fungerade. En mer trolig förklaring är att folk blandade samman 160 x 200-läget på maskiner som PCjr/Tandy 1000 och Amstrad CPC och trodde att det var samma sak. (De är identiska i upplösning, men skiljer sig i färg och minnesorganisation.) Skulle man försöka slå på Composite-färg på vilket kort som helst med en RGB-monitor ansluten så skulle det se identiskt ut som 640 x 200-grafikläget.)
Fler grafiklägen och hack
Ett flertal inofficiella och officiella sätt existerade för att erhålla bättre grafik på bildskärmen.
- I 320 x 200 grafikläge, bakgrundsfärgen som var svart vanligen kunde ändras till vilken som helst av de övriga 15 färgerna på CGA-paletten. Detta erbjöd viss variation men även vissa blixtliknande effekter då bakgrundsfärgen kunde ändras utan att man behövde uppdatera skärmbilden.
- I 640×200 grafikläge, förgrundsfärgen kunde ändras från den vanliga vita till någon av de övriga 15 färgerna.
- I textläge, kunde kantfärgen ändras (området utanför den vanliga visningsytan) från den vanliga svarta färgen till de 15 övriga färgerna.
- Ett tredje 320x200 grafikläge med fyra färgers palett kunde uppnås genom att slå på den monokroma biten medan man var i grafikläge. Detta ändrade paletten till att använda färgerna röd, cyan, vit och bakgrundsfärgen.
- Genom precisionstiming, var det möjligt att byta till en annan palett medan skärmen fortfarande uppdaterades. Det erbjöd möjligheten att använda vilken som helst av de tre paletterna per bildlinje. Det bästa exemplet för hur detta användes var i spelet California Games [1] när det kördes på en vanlig 4.77 MHZ 8088 (körde man spelet på en snabbare dator, fick man inte samma effekt, då timingen var kritisk när man bytte mellan olika paletter)
- Andra färger kunde också approximeras genom dithering, även om de låga upplösningarna gjorde tekniken väldigt uppenbar.
- Vissa av dessa hack kunde även kombineras, exempel på det finns i flertalet spel [2] De flesta mjukvarutitlar använde dock inte dessa möjligheter, men det fanns en del imponerande undantag.
160×100 16 färgläge
Rent tekniskt var detta inte ett grafikläge, men ett hack på 80x25 textläge. Textlägets texthöjdcell ändrades till att endast visa två linjer per textcell istället för de normalt åtta. Detta fyrdubblade numret av textrader som visades från 25 till 100. Dessa ”sammanpressade” tecken var inte fulla tecken, utan systemet visade endast de två övre linjerna innan det fortsatte till nästa rad.
Tecken 221. | |
221 Med blå text och röd bakgrund. | |
221 med röd text och blå bakgrundsfärg | |
Tecken 222. |
Tecken 221 i den utökade ASCII teckentabellen bestod av en låda som tog upp hela den vänstra halvan av teckencellen (tecken 222 bestod av en låda som upptog den högra halvan)
I och med att varje tecken kunde få en skild bakgrunds- och förgrundsfärg, som ett exempel kunde den bli blå till vänster (förgrundsfärg) och ljusröd till höger (bakgrundsfärg). Detta kunde reverseras genom att byta ut bakgrundsfärgen mot förgrundsfärgen.
Genom att nyttja tecken 221 och 222 (varje tecken bestod av en halv "sammanpressad" teckencell och kunde därför nyttjas som induvidiella pixlar —.) Detta gav då 160 pixlar horisontellt per scannlinje. Och därmed var 160x100 pixlar med 16 färger med bildformatet 1:1,2 möjligt.
|
Visserligen ett krångligt sätt att erhålla 16 färger i grafikläge, men detta fungerade hyfsat bra. [3] Detta läge nämndes även av (men blev inte förklarat) i IBM:s officiella dokumentation.
Högre upplösning kunde erhållas, genom att nyttja andra tecken (kombinerad ASCII-konst ) med den ovan nämnda tekniken.
Samma teknik där man begränsade visningsytan på varje teckencell kunde även nyttjas i 40x24 textläge. Detta var endast förnuftigt när man använde ASCII konst, då utan den tekniken så skulle den erhållna upplösningen endast ha varit 80x100 [4] [5] [6].
Buggar och detaljer
CGA:s mest sedda hårdvarubugg var snöeffekter i 80x25 textläge. Ramminnet på original IBM CGA-kortet var inte av dubbelportstyp. Läs- och skrivaccess var inte möjligt samtidigt. På grund av det visades slumpmässiga pixlar medan bildminnet skrevs till av CPU:n. Denna bugg fixades i de flesta tredjepartskloner men existerade i vissa varianter som exempel AT&T PC 6300 Display adapter.
Rivaliserande adaptrar
CGA hade två stycken konkurrerande teknologier.
- För affärsbruk och ordbehandling släppte IBM sin ”Monochrome Display Adapter” MDA vid samma tidpunkt som CGA. MDA hade högre upplösning i textläget 80x25 och varje teckenruta bestod av 9x14 punkter där 7x11 punkter utgjorde själva tecknet. Detta var mycket bättre än CGA:s 8x8 punkter. På grund av detta och CGA:s högre pris vid denna tidpunkt så var MDA att föredra för affärsbruk.
- Under 1982 introducerades Hercules Graphics Card från en tredjepartsleverantör. Det kortet erbjöd MDA-kompatibelt textläge i högupplösning och ett monokromt grafikläge. Det svartvita grafikläget hade en upplösning om 720x348 pixlar som var bättre än den högsta upplösningen CGA kunde erbjuda. Trots att kortet saknade möjligheter att visa färger, så erbjöd det bättre monokrom grafik samt möjligheterna att ansluta kortet till de billigare monokroma monitorerna gjorde att kortet var ett åtråvärt val för många. Så tidigt som 1985 erbjöds minnesresidenta program som ett exempel SIMCGA var tillgängligt som möjliggjorde visandet av CGA-grafiklägesdata i Hercules grafikläge. (slutresultatet såg ut som en grov variant av dithering)
En mindre använd konkurrent till CGA var Colorplus, från Plantronics ett CGA-kompatibelt kort som erbjöd dubbelt så mycket videominne (32k) vilket möjliggjorde 16 färger vid upplösningen 320x200 och fyra färger vid upplösningen 640x200.
CGA kortet ersattes senare på konsumentmarknaden av IBM:s ”Enhanced Graphics Adapter” EGA som hade stöd för de flesta av CGA:s lägen och utöver detta erbjöd upplösningen 640x350 tillsammans med mjukvarukontrollerad palett av 16 färger (som kunde väljas utifrån 64 färger allt som allt) i både text- och grafikläge.
Referenser
- ZiffDavis-Net site with info on old display adapters, including CGA (note: inaccurately states Hercules cards offered 4 colors.)
- Comprehensive FAQ on old display adapters (Usenet archive, some details speculated and/or inaccurate)
- IBM PC-Compatible CGA Video Reference — includes technical details
- Life Before Demos — page with detailed info on CGA modes, including the rarer ones
- IBM Color Graphics Adapter (CGA) (Thor Kildsen)
- Denna artikel var från början baserad på material från Free On-line Dictionary of Computing.
Se även