Color Graphics Adapter ed il colore marrone nel IBM 5153

Color Graphics Adapter (CGA) e gestione dei colori nel monitor IBM 5153 Color Display

 

Color Graphics Adapter (CGA) è il primo standard de-facto per i display dei PC a colori. Introdotto da IBM nel 1981, le prime schede video a colori basate sul CGA vennero montate sui PC IBM e, successivamente, tale formato video venne adottato anche dai produttori che realizzavano PC compatibili IBM (come Olivetti). In questo articolo andremo a vedere come il CGA gestisce i colori ed in particolare il colore marrone ed il colore grigio scuro.

 

Le schede video CGA trasportano le informazioni sui colori ad un monitor CGA compatibile (come l’IBM 5153 Color Display), attraverso 4 segnali digitali (ovvero attraverso 4 cavi). Tre segnali trasportano informazioni riguardanti la componente del colore da far visualizzare sullo schermo (rosso, verde o blu) mentre un successivo segnale (intensità) è utilizzato per abbassare o aumentare la luminosità delle tre componenti. In altri termini:

  1. segnale RED: è un segnale digitale TTL (0-5V). Se tale segnale è posto a GND (bit 0) la componente rossa non verrà visualizzata mentre se tale segnale è 5V (bit 1) la componente rossa sarà presente nell’immagine;
  2. segnale BLUE: è un segnale digitale TTL (0-5V). Se tale segnale è posto a GND (bit 0) la componente blu non verrà visualizzata mentre se tale segnale è 5V (bit 1) la componente blu sarà presente nell’immagine;
  3. segnale GREEN: è un segnale digitale TTL (0-5V). Se tale segnale è posto a GND (bit 0) la componente verde non verrà visualizzata mentre se tale segnale è 5V (bit 1) la componente verde sarà presente nell’immagine;
  4. segnale INTENSITY: è un segnale digitale TTL (0-5V). Se tale segnale è posto a GND (bit 0) i tre colori RGB sono visualizzati con bassa luminosità mentre se tale segnale è 5V (bit 1) i tre colori RGB sono visualizzati ad altà luminosità.

Poichè i 3 segnali RGB sono segnali digitali (possono assumare solo due valori) il numero totale di colori che è possibile ottenere combinando i loro stati è data da 2^3 = 8 diversi colori. Considerando anche il segnale intensità, che permette di alzare o di abbassare la luminosità di tutte e tre le componenti del colore contemporaneamente, otteniamo un raddoppio dei colori ottenibili giungendo a 16 diversi colori (2^4 = 16). Il formato CGA ha una tavolozza di 16 colori diversi.

Attenzione però, il CGA ha si una tavolozza di 16 colori ma non può realizzare un’immagine formata da tutti e 16 i colori contemporaneamente. Per esempio, ad una risoluzione di 320×200 pixel una scheda video CGA è capace di realizzare un immagine solo a 4 colori ed, ancora peggio, ad una risoluzione di 640×200 pixel il numero di colori scende a 2.

Infatti, il CGA supporta tre diverse modalità operative ognuna delle quali dispone di una ben definita risoluzione e di un ben definito numero di colori utilizzabile:

  1. modalità grafica:
    1. risoluzione di 320×200 pixel e 4 colors massimo.
    2. risoluzione di 640×200 pixel e 2 colori massimo.
  2. modalità testuale:
    1. 40×25 caratteri con un carattere formato da 8×8 pixel (risoluzione di 320×200).
    2. 80×25 caratteri con un carattere formato da 8×8 pixel (risoluzione di 640×200).
  3. modalità grafica estesa
    1. risoluzione di 160×100 pixel e 16 colori massimo.
    2. colori artefatti utilizzando come display un monitor NTSC.

La prima modalità grafica (320×200 pixel di risoluzione a 4 colori) è stata la modalità più utilizzata per la realizzazione dei giochi dell’epoca. Per esempio, “Indiana Jones and the Temple of Doom” (1989) o “The Secret of Monkey Island” (1990) erano realizzati in questa modalità. Sotto alcuni screenshots.

 

The Secret of Monkey Island in CGA

The Secret of Monkey Island in CGA

Indiana Jones and the Temple of Doom in CGA

Indiana Jones and the Temple of Doom in CGA

 

I 4 colori nella modalità grafica di 320×200 non potevano essere scelti liberamente dall’intera tavolozza dei 16 colori, ma potevano essere scelti soltanto da 2 sotto tavolozze chiamate “palette 0” e “palette 1“. Le 2 tavolozze, con i rispettivi colori, sono riportate nelle seguenti tabelle (i nomi dei colori sono stati volutamente lasciati in inglese per maggiore aderenza con la loro definizione all’interno del Reference Hardware IBM ove CGA è descritto) :

 

# Palette 0
Palette 0 in High Intensity
(INTENSITY signal is HIGH)
1 Black (#000000) Black (#000000)
2 Green (#00AA00) Light green (#55FF55)
3 Red (#AA0000) Light red (#FF5555)
4 Brown (#AA5500) Yellow (#FFFF55)

 

# Palette 1 Palette 1 in High Intensity
(INTENSITY signal is HIGH)
1 Black (#000000) Black (#000000)
2 Cyan (#00AAAA) Light cyan (#55FFFF)
3 Magenta (#AA00AA) Light magenta (#FF55FF)
4 Light gray (#AAAAAA) White (#FFFFFF)

 

La palette 1 è stata indiscutibilmente quella più utilizzata per la creazione di software e giochi.

Nel 1981 gli ingegneri della IBM iniziarono a pensare a come poter trasformare i 4 segnali digitali realizzati dalla scheda CGA in 3 segnali analogici necessari per pilotare il cinescopio del monitor. In altre parole, i 4 segnali digitali che entravano all’interno del monitor dovevano, in qualche modo, essere convertiti in analogico in modo da ottenere 3 segnali RGB analogici capaci di pilotare i pennelli elettronici del monitor a raggi catodici. Purtroppo gli ingegneri IBM riuscirono (è più probabile che l’uscita sul mercato fu ritardata volutamente per supportare anche l’EGA) a realizzare un monitor pienamente compatibile con il CGA solo due anni più tardi l’uscita sul mercato della prima scheda video CGA. Nel marzo 1983 IBM immese sul mercato il primo monitor a colori compatibile CGA: l’IBM 5153 Color Display. Questo monitor si differenziava da tutti i monitor di terze parti, già presenti sul mercato, poichè era in grado di visualizzare il colore marrone ed il colore grigio scuro cosa che nessun’altro monitor faceva. Infatti, fino a quel momento, nessun monitor di terze parti era capace di visualizzare correttamente tutti e 16 i colori del CGA in quanto nessun monitor realizzava la conversione RGBI digitale -> RGB analogico nel modo corretto, o per meglio dire, nel modo geniale pensato da IBM.

Prima dell’uscita sul mercato del IBM 5153, i monitor compatibili CGA eseguivano la conversione dei 4 segnali RGBI digitali nei 3 segnali RGB analogici nel seguente modo (ipotesi: i segnali RGB analogici variano da 0V a 1V):

 

# I R G B Vred Vgreen
Vblue
Colori
0 0 0 0 0 0 0 0 Black (#000000)
1 0 0 0 1 0 0 0.66 Blue (#0000AA)
2 0 0 1 0 0 0.66 0 Green (#00AA00)
3 0 0 1 1 0 0.66 0.66 Cyan (#00AAAA)
4 0 1 0 0 0.66 0 0 Red (#AA0000)
5 0 1 0 1 0.66 0 0.66 Magenta (#AA00AA)
6 0 1 1 0 0.66 0.66 0 Dark Yellow (#AAAA00)
7 0 1 1 1 0.66 0.66 0.66 Light Gray (#AAAAAA)
8 1 0 0 0 0 0 0 Black (#000000)
9 1 0 0 1 0.33 0.33 1 Light Blue (#5555FF)
10 1 0 1 0 0.33 1 0.33 Light Green (#55FF55)
11 1 0 1 1 0.33 1 1 Light Cyan (#55FFFF)
12 1 1 0 0 1 0.33 0.33 Light Red (#FF5555)
13 1 1 0 1 1 0.33 1 Light Magenta (#FF55FF)
14 1 1 1 0 1 1 0.33 Yellow (#FFFF55)
15 1 1 1 1 1 1 1 White (#FFFFFF)

 

 

Problema: ci sono 2 colori “nero” ed il colore marrone non è presente. Gli ingegneri della IBM cambiarono il modo di eseguire la conversione all’interno del monitor IBM 5153 in modo da trasformare il colore #8 da nero a grigio scuro ed il colore #6 da giallo scuro a marrone. Per poter eseguire queste modifiche ai colori, progettarono un circuito, interno al monitor, capace di riconoscere la seguenza I=0, R=1, G=1, B=0. Una volta riconosciuta la seguenza, il circuito dimezzava la tensione della componente verde in modo da ottenere il colore marrone. Il circuito era anche capace di ottenere una tensione diversa da zero in uscita quando tutte le componenti dei colori erano uguali (R=0, G=0, B=0) a zero ma l’intensita (I=1) era pari ad 1.

Il circuito che esegue la “magia” può essere osservando all’interno del “IBM Color Display – Hardware Reference” a pagina 6 (nella figura sottostante è riportata solo la parte di schema che esegue la conversione).

 

IBM 5153 conversion circuit

IBM 5153 conversion circuit

 

La VERA tavolozza grafica dei 16 colori CGA con il colore marrone ed il colore grigio scuro è riportata nella tabella seguente:

 

# I R G B Vred
Vgreen
Vblue
Color
0 0 0 0 0 0 0 0 Black (#000000)
1 0 0 0 1 0 0 0.66 Blue (#0000AA)
2 0 0 1 0 0 0.66 0 Green (#00AA00)
3 0 0 1 1 0 0.66 0.66 Cyan (#00AAAA)
4 0 1 0 0 0.66 0 0 Red (#AA0000)
5 0 1 0 1 0.66 0 0.66 Magenta (#AA00AA)
6 0 1 1 0 0.66 0.33 0 Brown (#AA5500)
7 0 1 1 1 0.66 0.66 0.66 Light Gray (#AAAAAA)
8 1 0 0 0 0.33 0.33 0.33 Dark Gray (#555555)
9 1 0 0 1 0.33 0.33 1 Light Blue (#5555FF)
10 1 0 1 0 0.33 1 0.33 Light Green (#55FF55)
11 1 0 1 1 0.33 1 1 Light Cyan (#55FFFF)
12 1 1 0 0 1 0.33 0.33 Light Red (#FF5555)
13 1 1 0 1 1 0.33 1 Light Magenta (#FF55FF)
14 1 1 1 0 1 1 0.33 Yellow (#FFFF55)
15 1 1 1 1 1 1 1 White (#FFFFFF)

 

Se hai un monitor o una scheda di conversione tra formati e non sei in grado di osservare il colore marrone e/o il grigio scuro, vuol dire che il monitor o la scheda di conversione non sono totalmente compatibili con il formato video CGA. Per alcune applicazione perdere il marrone (che diventa giallo scuro) ed il grigio scuro (che diventa nero) può essere anche accettabile ma per le applicazioni grafiche, come la visualizzazione di vecchi giochi, questa perdita è inaccettabile.

La cosa diventa ancora più dannosa se stai utilizzando un software nel formato EGA (Enhanced Graphics Adapter)  o stai giocando ad un gioco nel formato EGA…il perchè verrà spiegato in un prossimo articolo.

 

A presto!!!


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *