---------------------------------------------------

Anhang VIII

GTIA

---------------------------------------------------

 

Der GTIA ist ein neuer Graphik-Chip, der den älteren CTIA ersetzt. Der GTIA unterscheidet sich nicht sonderlich vom CTIA. Er liefert zusätzlich neue Möglichkeiten. So gibt es drei weitere Modi für die Interpretation der vom ANTIC-Chip kommenden Informationen. Der ANTIC braucht hierbei keinen neuen Modus, um sich mit dem GTIA zu verständigen; es wird der hochauflösende Modus $0F (BASIC-Modus 8) verwendet. Ansonsten ist der GTIA-Prozessar absolut kompatibel zum CTIA. Es folgt nun eine kurze Beschreibung der GTIA-Möglichkeiten, so daß die Unterschiede zwischen GTIA und CTIA deutlich werden.

 

Der CTIA-Chip wird zum Anzeigen der Daten auf dem Fernsehschirm benutzt. Er erzeugt das Playfield, die Player/Missile-Graphiken und fragt Kollisionen einzelner Objekte auf dem Schirm ab. Der CTIA interpretiert die vom ANTIC-Prozessor kommenden Daten als 6 Text- und 8 Graphik-Modi. Bei einem statischen Display werden die von ANTIC gelieferten Informationen zum Anzeigen von Farben und Helligkeiten verwendet (wie in den 4 Farbregistern festgelegt). Durch den GTIA wird dieses Spektrum auf 9 Farbregister (9 Farben + Helligkeiten), 16 Farben in einer Helligkeit oder eine Farbe in 16 Helligkeiten erweitert.

 

Die 3 ìneuenî Graphik-Modi, die durch den GTIA-Chip möglich werden, sind einfach drei neue Interpretationsarten des Hochauflösungs-Modus $0F. Alle drei Modi beeinflussen lediglich das Playfield; die Player/Missile-Objekte können weiterhin benutzt werden. Außerdem können alle Farben und Helligkeiten durch Display-List-Interrupts geändert werden.

 

Der GTIA benutzt jeweils 4 Bit der von ANTIC kommenden Daten, um ein Pixel festzulegen (daher die Bezeichnung Pixel-Daten). Jedes Pixel ist 2 Color-Clocks breit und eine Scan-Line hoch, ist also viermal so breit wie hoch. Das Display besitzt eine Auflösung von 80 Pixel in der Breite mal 192 Pixel in der Höhe. Jede Zeile benötigt 320 Speicherbits, d.h. 40 Bytes, was der im Modus $0F benötigten Speichergröße entspricht. Ein Programm, das mit den GTIA-Modi arbeiten soll, muß daher einen freien Speicherraum von mindestens 8k zur Verfügung haben.

 

Die GTIA-Modi werden durch das Prioritäts-Register PRIOR ausgewählt. PRIOR besitzt eine Schatten-Adresse bei $026F und liegt im OS bei $D01B. Die Bits D6 und D7 sind die für die GTIA-Modi maßgeblichen Kontrollbits. Ist keines dieser Bits gesetzt, wird kein GTIA-Modus benutzt und der GTIA-Prozessor arbeitet wie der CTIA. Wenn Bit D7 auf 0 und Bit D6 auf 1 gesetzt sind, dann wird der GTIA-Modus 9 angesprochen, welcher eine Farbe in 16 verschiedenen Helligkeiten zuläßt. Sind Bit D7 auf 1 und Bit D6 auf 0 gesetzt, dann wird der GTIA-Modus 10 eingeschaltet. Dieser Modus erzeugt 9 Farben + zugehörigen Helligkeiten, indem die 4 Playfield- plus die 4 Player/Mismile plus 1 Hintergrund-Farbregister verwendet werden. Werden in diesem Modus die Player/Missile-Objekte eingesetzt, dann erhalten auch sie ihre Farbdaten aus den ihnen zugeordneten Registern. (im Original:...erhalten sie ihre Farbe auch hier ihre Farbdaten aus...) ) Wenn sowohl Bit D7, als auch Bit D6 auf 1 gesetzt sind, dann wird GTIA-Modus 11 eingeschaltet. Dieser Modus liefert 16 Farben in einer Helligkeit. Wie bei Modus 9 können auch hier Play- und Missile-Objekte zum Erweitern der Farb- bzw. Helligkeitsauflösung benutzt werden.

 

 

PRIOR

 

D7 D6 D5 D4 D3 D2 D1 D0

 

 

 

               D7   D6   OPTION                     

               0    0    KEIN GTIA-Modus (Modi 0-8)

                          (CTIA-Operation)

               0    1    1 Farbe, 16 Helligkeiten

                          (Modus 9)

               1    0    9 Farben + Helligkeiten

                          (Modus 10)

               1    1    16 Farben, 1 Helligkeit

                          (Modus 11)

 

Abbildung VIII.1:

Bit-Muster in PRIOR zum Anwählen der GTIA-Modi

 

 

Das Anwählen der GTIA-Modi ist genauso einfach, wie das der anderen CTIA-Betriebsarten: um die GTIA-Modi von BASIC aus aufzurufen, sind lediglich die Kommandos GRAPHICS 9, GRAPHICS 10 oder GRAPHICS 11 für die Modi 9, 10 und 11 erforderlich. In Assembler entspricht der Aufruf dieser Betriebsarten dem Bildschirmöffnen für die anderen Modi. Wird eine neue Display-List aufgebaut, so muß PRIOR zum richtigen Einschalten der GTIA-Betriebsarten mitbenutzt werden (Siehe Abbildung VIII.1).

 

In Modus 9 werden bis zu 16 verschiedene Helligkeitsstufen einer Farbe erzeugt. Der ANTIC-Chip liefert die Pixel-Daten, welche die jeweilige Helligkeit auswählt. Der Farbton wird durch das Hintergrund-Register bestimmt (dieses geschieht in BASIC mittels POKE oder SETCOLOR). Das obere Nybble des Hintergrund-Registers gibt die Farbe an, während das untere Nybble auf Null gesetzt wird. Das Format dieses Kommandos sieht demnach wie folgt aus:

 

     SETCOLOR 4,ìFarbwert",0

 

 

Die 4 gibt hierbei an, daß die Farbe ins Hintergrund-Register gebracht werden soll. Der Farbton kann wie gewöhnlich ein Wert von 0 bis 15 sein, wobei die Null den Helligkeitswert des Farbregisters auf 0 setzt. Dieses ist erforderlich, weil die Pixel-Daten von ANTIC mit dem unteren Nybble des Hintergrund-Registers oderiert werden, um die gewünschte Helligkeit auf den Schirm zu bringen. Auch das COLOR-Kommando wird zum Bestimmen der zum Zeichnen auf den Bildschirm verwendeten Helligkeit benutzt. Der Parameter-Wert bei diesem Befehl kann sich zwischen 0 und 15 inklusive bewegen. Ein BASIC-Programm muß also mindestens die folgenden Anweisungen enthalten, damit der GTIA-Modus 9 verwendet werden kann:

 

     GRAPHICS 9           GTIA 9 ansteuern

     SETCOLOR 4,12,0      Hintergrund-Farbregister auf

                          Grün festlegen.

     FOR I=0 TO 15        Beispiel für die Verwendung des

     COLOR I              COLOR-Kommandos.

     PLOT 4,I+10

     NEXT I

 

 

In Assembler muß die OS-Schatten-Adresse des Hintergrund-Registers bei $2C8 benutzt werden, um den Farbton mit dem oberen Nybble festzulegen. Wird CIO aufgerufen, dann werden die Pixel-Daten im OS-Register ATACHR bei $2FB gespeichert. Hierdurch wird die Helligkeit mit den Werten $0 bis $F ausgewählt. Werden vom Programmierer eigene Anzeige-Daten geliefert, dann gehen diese Pixel-Daten direkt in die linke bzw. rechte Hälfte des Bytes des Anzeige-RAMs.

 

Abbildung VIII.2

OR-Verknüpfung von Hintergrund-Farbregister und

Pixel-Daten zum Erhalten des endgültigen Farbwertes.

 

Modus 11 entspricht dem oben gezeigten Modus 9, außer daß bei diesem nicht 16 Helligkeiten einer Farbe, sondern 16 Farben in einer Helligkeit angezeigt werden können. ANTIC liefert dann die Pixel-Daten zur Auswahl der 16 Farbabstufungen. In BASIC wird das SETCOLOR-Kommando verwendet, um den Helligkeitswert aller Farben im unteren und den Farbwert im oberen Nybble auf Null zu setzen. Das Format für dieses Kommando lautet also:

 

     SETCOLOR 4,0,ìHelligkeitî

 

 

Die 4 wählt das Hintergrund-Register an. Die Null setzt das obere Nybble auf Null und der Helligkeitswert kann eine Zahl von 0 bis 15 sein. Wie bei anderen Graphik-Modi (ausgenommen Modus 9), ist das erste Bit der Helligkeit maßgebend. Daher sind nur gerade Zahlen und somit 8 Helligkeiten in diesem Modus möglich. Das COLOR-Kommando wird in diesem Modus benutzt, um einen der verschiedenen Farbwerte (0 bis 15) auszuwählen. Die Pixel-Daten von ANTIC werden mit dem oberen Nybble des Hinergrund-Registers oderiert, um den endgültigen Farbwert festzulegen. Ein BASIC-Programm muß daher mindestens die folgenden Schritte ausführen, um im Modus 11 arbeiten zu können:

 

     GRAPHICS 11          Modus 11 anwählen

     SETCOLOR 4,0,12      Hintergrund auf eine Helligkeit

                          setzen, in diesem Fall sehr hell.

     FOR I=0 TO 15        Beispiel für die Benutzung

     COLOR I              des COLOR-Be+ehls

     PLOT 4,I+10

     NEXT I

 

 

In Assembler muß die OS-Schatten-Adresse bei $2C8 des Hintergrund-Farbregisters benutzt werden, um die Helligkeit in den unteren vier Bit auf einen Wert zwischen $0 und $F zu setzen. Wird die CIO angesprungen, dann müßen die Pixel-Daten in ATACHR bei $2FB gespeichert werden. Hierdurch wird ein Farbwert von $0 bis $F ausgewählt. Liefert der Programmierer eigene Anzeige-Daten, so gehen die Pixel-Daten direkt in die linke oder rechte Hälfte des Bytes des Anzeige-Rams.

 

 

Abbildung VIII.3

 

OR-Verknüpfung von Hintergrund-Farbregister und Pixel-

Daten zum Erhalten des endgültigen Farbwertes

 

 

 

Modus 10 gestattet die gleichzeitige Benutzung aller 9Farbregister auf dem Playfield. In jedes Farbregister wird

hierbei eine Kombination aus Farb- und Helligkeitswert gespeichert. Die in diesem Modus von ANTIC kommenden Pixel-Daten werden zur Auswahl eines dieser 9 Register verwendet. In BASIC kann das SETCOLOR-Kommando, wie im BASIC-Referenz Manual beschrieben, zum Setzen der Hintergrund- und Playfield-Farbregister benutzt werden. Die Farbwerte dieser Register können aber auch mit Hilfe des POKE-Befehls für die Adressen 708-712 (Speicherstellen der Register) verwendet werden. Zum Setzen der Player/Missile-Farbregister muß das POKE-Kommando verwendet werden, dessen Speicherstellen zwischen 704 und 707 liegen.

 

Der COLOR-Befehl wird zum Auswählen des gewünschten Farbregisters verwendet, wobei die bedeutungsträchtigen Werte zwischen 0 und 8 inklusive liegen. Da von ANTIC in diesem Modus 4 Daten-Bits pro Pixel gesendet werden, wäre theoretisch eine Auswahl von 16 Farbregistern möglich. Ein nicht zulässiger Daten-Wert von 9 bis 15 resultiert daher in der Anzeige eines Farbregisters mit einem anderen Stellenwert. Ein BASIC-Programm, das den GTIA-Modus 10 benutzt, muß die folgenden Anweisungen enthalten:

 

1)

ein GRAPHICS 10-Kommando zum Anwählen des Modus;

 

2)

eine Reihe von POKE- oder SETCOLOR-Befehlen, um die gewünschten Werte in die Farbregister zu bringen und

 

3)

ein COLOR-Kommando zur Auswahl des gewünschten Farbregister.

 

In Assembler werden die Pixel-Daten, wie in Modus 9 und 11, in ATACHR ($2FB) oder direkt im Bildschirm-RAM gespeichert. In diesem Modus besitzen die Pixel-Daten einen Wert von 0 bis 8 und wählen somit eines der 9 Farbregister aus.

 

 

 

 

WERT DES COLOR-      BENUTZTES FARB-      OS-SCHATTEN-

BEFEHLS              REGISTER             ADRESSE

     0              D012                 2C0

     1              D013                 2C1

     2              D014                 2C2

     3              D015                 2C3

     4              D016                 2G4

     5              D017                 2C5

     6              D018                 2C6

     7              D019                 2C7

     8              D01A                 2C8

 

 

Abbildung VIII.4:

Farbregister-Nummern, -Speicherstellen

und COLOR-Befehl-‹bersicht

 

 

Eine wichtige Frage betrifft die Kompabilität des GTIAs zum CTIA. Der GTIA-Chip ist aufwärts voll kompatibel zum CTIA, so daß weiterhin Player/Missile-Graphiken, Kollisions-Register oder Display-List-Interrupts benutzt werden können. Sämtliche GTIA-Modi können durch das OS bearbeitet werden, daher laufen alle Utilities und Graphik-Kommandos, die mit dem CTIA funktionieren, auch auf dem GTIA-Chip.

 

Durch den GTIA wird das Anzeigen von noch mehr Farben gleichzeitig möglich. In einer Bildschirmzeile können 16 Farbänderungen erfolgen, ohne daß der 6502-Prozessor beeinflußt wird. Durch Display List Interrupts wäre ein absolutes Maximum von 128 Farbänderungen pro Zeile machbar. Durch den GTIA-Modus können Konturen und räumliche Tiefe besser dargestellt werden, so daß realistische 3-D Graphiken möglich werden.

 

Es gibt allerdings auch einige Nachteile dieser Graphik-Modi. Diese Betriebsarten sind Map-Modi, d.h. es kann kein Text auf den Bildschirm gebracht werden, wenn sie aktiviert sind. Um Zeichen darzustellen, muß eine neue Display-List aufgebaut werden. Zum Zweiten ist ein Fixel dieser MQdi ein langes horizontales Rechteck (ein Verhältnis von 4 zu 1 in Länge zu Höhe), daher können Kurven nicht gut gezeichnet werden. Weiterhin benötigt jedes Pixel 4 Informations-Bits, so daß ein GTIA-Modus fast 8K-RAM zum Arbeiten verbraucht. Schließlich ist der GTIA nicht abwärts kompatibel, d.h. Programme, die auf dem GTIA-Computer laufen, nicht unbedingt auf älteren CTIA-Modellen arbeiten. Graphiken sind zwar erkennbar, aber natürlich nicht so farbig. Ein Programm besitzt keine Möglichkeit festzustellen, ob es auf einem CTIA- oder GTIA-Computer läuft.