Der VIC-II-Chip (nachfolgend VIC genannt) im C64 ist der Nachfolger des VIC-I,
der im Commodore VIC-20 eingesetzt wurde. Gegenüber seinem Vorgänger hat sich
seine Leistungsfähigkeit drastisch erhöht, so verfügt er jetzt über eine höhere
Auflösung, einen hochauflösenden Grafikmodus, Sprites und vieles mehr.
Der Chip übernimmt auch den
Refresh des Dynamischen RAMs indem er alle Speicherstellen regelmäßig ausliest,
sowie die Takterzeugung für den Prozessor. An
seinem Ausgang liegen ein Composite und ein SVHS-Signal an.
Speicherorganisation
Der VIC besitzt einen 16 KByte großen Adressraum, der beim C64 in 16 KByte
Schritten an vier verschiedenen Positionen liegen kann.
Mittels der zweiten CIA kann die gewünschte Position gewählt werden - allerdings
sind diese nicht gleichwertig. In der ersten und dritten Position wird immer das
Zeichensatz-ROM ausgelesen, umgekehrt muß in der zweiten und vierten Position
ein Zeichensatz ins RAM kopiert werden.
Innerhalb des VIC-Adressraums befindet sich: Der Grafikbildschirm, der Textbildschirm, der
Zeichengenerator, die Spritezeiger sowie die Sprites selbst. Das sogenannte
Farb-RAM, das einen Teil der Farbinformationen des Bildes enthält befindet
sich beim C64 fest an der Adresse $D800, und umfaßt 1024 Bytes. Tatsächlich
befindet sich ein eigener Speicherchip für das Farb-RAM auf der Platine des
Rechners, der an dieser Stelle eingeblendet wird.
Grundsätzlich verfügt der VIC-Chip über zwei Grafikmodi: Den Hires-Modus und
den Multicolor-Modus. Im Hires-Modus wird ein Bit pro Pixel für die
Farbinformation verwendet. Im Multicolormodus werden zwei benachbarte Pixel zu
einem zusammengefaßt, wodurch zwar die Horizontale Auflösung halbiert, die
Bitzahl pro Pixel aber auf zwei verdoppelt wird und so mehr Farben möglich
werden. Dies gilt für alle vom VIC erzeugten Grafiken, egal ob Sprites,
Text- oder Grafikmodus.
Farben
16 Farben stehen zur Verfügung, diese kommen aus einer festen Palette. Diese Farben wurden von den Chipentwicklern festgelegt.
Die Farberzeugung erfolgt intern nicht mittels RGB Werten, sondern mittels YUV - Farbton, Sättigung und Helligkeit. Daher gibt es etwa bei
Emulatoren auf PCs immer Farbabweichungen vom Original. Auch spielt die Qualität des Ausgabegerätes eine Rolle. Aus all diesen Gründen
besteht diese Farbtabelle nur aus Annäherungen, sollte aber dennoch einen brauchbaren Eindruck über die verfügbaren Farben vermitteln.
Diese Farbtabelle gilt für alle Farbregister des Chips sowie das Farb-RAM.
Die Textmodi
Die Zeichenauflösung ist im Textmodus in beiden Farbmodi dieselbe, nämlich 40
Spalten * 25 Zeilen, was in 1000 verschiedenen Bildchirmpositionen resultiert.
Da jedes Byte für ein Zeichen steht, benötigt der Textmodus 1000 Bytes für
einen kompletten Bildschirminhalt. Dieser Bildschirmspeicher kann innerhalb
des VIC-Adreßraums in 1 KByte Schritten an 16 verschiedene Positionen
verschoben werden. Die Zeichen selbst besitzen im Hires-Modus eine Auflösung
von 8 x 8 Pixeln und im Multicolor-Modus 4 x 8 Pixel. Die
Zeichensatzinformationen stammen aus einem 4 KByte großen Speicherbereich, der
8 Byte pro Zeichen reserviert welche die Pixelmatrix von jedem einzelnen
Zeichen beinhalten. Ein Byte entspricht
einer Pixelzeile eines Zeichens.
In 4 KByte lassen sich auf diese Weise die Pixelinformationen von 512 Zeichen
speichern, angezeigt werden können aber nur 256. Daher bietet der Chip die
Möglichkeit, zwischen zwei verschiedenen Zeichensätzen mit je 256 Zeichen
umzuschalten. Die Zeichen können beliebig verändert werden sofern sie erst
einmal aus dem Zeichensatz-ROM
ins RAM kopiert worden sind.
Die Farbinformationen kommen im Hochauflösenden Textmodus einmal aus einem
VIC-Register für die einheitliche Hintergrundfarbe, und aus dem Farb-RAM,
welches für jedes einzelne der 1000 Zeichen eine eigene Farbe speichern kann.
Im Multicolormodus werden noch zwei VIC-Register hinzugezogen, die die beiden
Bitkombinationen 01 und 10 mit einer Farbinformation versorgen. Die Farbe für
die Kombination 00 kommt wie im Hochauflösenden Modus aus der Hintergrundfarbe
und die Kombination 11 bezieht ihre Information aus dem Farb-RAM.
Im Multicolormodus gibt es noch eine Besonderheit: das oberste Bit aus dem Farb-RAM
schaltet für jedes Zeichen zwischen Multicolor (Bit ist 1) und Hires (Bit ist 0) um.
Dies hat allerdings zur Folge, dass im Farb-RAM nur die 8 untersten Farben verwendet werden können.
Dazu gibt es noch in beiden Modi den Extended Background Color Mode, bei dem die obersten
beiden Bits jedes Bytes im Bildschirmspeicher als Zeiger auf ein
Hintergrundfarbregister dienen. Dabei bleiben jedoch nur 6 Bits für den
Zeichencode, weshalb man in diesem Modus nur
64 Zeichen verwenden kann.
Der VIC verfügt über vier besondere Hintergrundfarbregister, die je nach Modus
verschiedene Bedeutungen haben:
Standard-Adresse: |
Hires-Modus |
Multicolor-Modus |
Extended Background Color Modus |
$d020 (53280) |
Rahmenfarbe |
Rahmenfarbe |
Rahmenfarbe |
$d021 (53281) |
Hintergrundfarbe |
Hintergrundfarbe |
Hintergrundfarbe 1 |
$d022 (53282) |
- |
Vordergrundfarbe 2 |
Hintergrundfarbe 2 |
$d023 (53283) |
- |
Vordergrundfarbe 3 |
Hintergrundfarbe 3 |
$d024 (53284) |
- |
- |
Hintergrundfarbe 4 |
Die Grafikmodi
Die Grafikmodi verfügen über dieselbe Pixelauflösung wie die Textmodi (also
320 x 200 im Hires- und 160 x 200 im Multicolor-Modus), mit dem Unterschied
dass jedes Pixel einzeln angesprochen werden kann. Leider steigt der
Speicherbedarf dabei um das achtfache auf 8000 Bytes für einen
Bildschirminhalt. Der Anfang dieses Bereichs kann innerhalb des VIC-Adreßraums
an zwei Stellen stehen, genau am Anfang oder genau in der Mitte. Im Hires-
Modus kommt das Farb-RAM für die Vordergrundfarbe und der Speicher des
Textmodus für die Hintergrundfarbe zum Einsatz. Die Beschränkung auf die
Einfärbung von 8 x 8 Pixel großen Bildteilen besteht auch hier, mit dem
Unterschied dass auch die Hintergrundfarbe
frei gewählt werden kann.
Im Multicolormodus stammt die Hintergrundfarbe (Bitkombination 00) wieder aus
dem ersten Hintergrunfarbregister des VIC, die Vordergrundfarbe
(Bitkombitation 11) aus dem Farb-RAM. Die beiden anderen Bitkombinationen
nehmen ihre Farbinformationen aus den entsprechenden Bytes des Textmodus-
Videospeichers, und zwar die oberen 4 Bits für 01, und die unteren 4 für 10.
Man hat also 3 frei wählbare Farben und eine einheitliche Hintergrundfarbe
pro 4 x 8 Pixelblock zur Verfügung.
Sonderfunktionen
Der VIC verfügt im Textmodus über Hardwarescrolling. Dazu wird das sichtbare
Textfenster auf 38 Spalten x 24 Zeilen verringert, die tatsächliche
Textauflösung beträgt aber nach wie vor 40 Spalten x 25 Zeilen. Innerhalb des
sichtbaren Textfensters kann der Texbildschirm jetzt um je 8 Pixel vertikal
und Horizontal verschoben werden. Dies hat einen ganz einfachen Grund: Hat man um 8 Pixel
gescrollt muß der gesamte Inhalt des Textschirmes in die entgegengesetzte Scrollrichtung
verschoben werden und am anderen Ende muß neuer Inhalt hinzugefügt werden. Würde man den gesamten Bildschirm anzeigen
könnte man dem Neuaufbau quasi "zuschauen" was einen nicht sehr professionellen Eindruck hinterlassen würde.
Mittels des sogenannten Rasterzeileninterrupts kann man den Prozessor in
seiner Arbeit unterbrechen und in den Interrupthandler springen lassen wenn
der Elektronenstrahl eine bestimmte Rasterzeile erreicht hat. Damit lassen
sich Spezialeffekte wie ein geteilter Text- und Grafikbildschirm oder vertikale
Farbverläufe realisieren.
Der VIC holt sich in bestimmten Abständen seine Informationen aus dem Video-RAM,
wofür er den Prozessor für 40 Taktzyklen anhält. Dies passiert erst einmal alle 8 Zeilen, und
wird auch als "Badline" bezeichnet. Man kann den Bildschirm mittels eines
VIC-Registers abschalten, woraufhin auch der Prozessor nicht mehr vom VIC angehalten wird.
Natürlich sieht man dann nichts mehr, aber für spezielle Laderoutinen, die sehr
Timing-Kritisch sind sowie für langwierige Berechnungen ist diese Möglichkeit sehr wichtig.
Sprites
Sprites sind kleine Grafiken, die vom Hintergrund unabhängig auf dem
Bildschirm bewegt werden können. Man kann so etwa ein Raumschiff vor einer
Mondlandschaft vorbeifliegen lassen ohne den Grafikspeicher mit langwierigen
Pixeländerungen zu modifizieren, sondern man ändert lediglich die Position des
Sprites, der Videochip erledigt den Rest. Der VIC besitzt 8 Sprites, die
jeweils 24 x 21 Bildpunkte groß sein können. Die Unterscheidung in Hires-Modus
und Multicolormodus besteht auch hier, wobei die Auflösung im Multicolormodus
wie gewohnt horizontal halbiert wird (12 x 21).
Das Setzen und Löschen der Bildpunkte funktioniert ähnlich wie im Textmodus,
nur dass hier nicht 8 sondern 24 Pixel nebeneinander liegen und so auch drei
Bytes statt einem benötigt werden um eine Pixelzeile zu definieren. Der
Gesamtspeicherbedarf liegt bei 21 * 3 Bytes, also 63 Bytes. Innerhalb des VIC-
Adreßraums liegen nun 8 Sprite-Zeiger, mit denen man die Anfangsadresse der
Bitmuster aller acht Sprites in 64 Byte Schritten definieren kann. Daraus
resultiert eine (theoretische) Maximalzahl von 256 Sprite-Grafiken innerhalb
des 16 KByte Adreßraums des VIC (16384 / 64). So kann man beispielsweise durch
periodisches Ändern von nur einem Byte eine Sprite-Animation abspielen. Die
Sprite-Zeiger liegen immer exakt 1000 Bytes nach dem Beginn des Textschirms,
wenn dieser also woandershin verschoben wird werden die Spritezeiger
mitverschoben.
Die Farbverteilung läuft etwas anders ab. Die Hintergrundfarbe wird
grundsätzlich transparent, also hat man im Hires-Modus lediglich eine Farbe
zur Verfügung. Im Multicolormodus hat man 3 Farben, wobei zwei davon bei allen
Sprites identisch sind und die dritte frei gewählt werden kann.
Es besteht auch die Möglichkeit, die Sprites auf Kollision untereinander und
mit dem Hintergrund zu überprüfen. Dabei wird jeweils ein Interrupt generiert
und die Kollisionsregister des VIC entsprechend gesetzt. Ferner kann man die
Spritegröße in X und Y Richtung verdoppeln, wobei die Auflösung gleich bleibt.
Die Überlappungsreihenfolge der Sprites ist festgelegt. Sprite 0 hat die höchste
und Sprite 7 die niedrigste Priorität. Dafür kann man bei jedem Sprite einzeln
festlegen ob es vor oder hinter der Hintergrundgrafik erscheinen soll.
Tricks
Der VIC-II hat bestimmte Eigenschaften und kleine Bugs die im Laufe der Zeit ans Licht kamen.
Viele davon können benutzt werden um dem Chip Möglichkeiten zu verleihen die er eigentlich gar nicht
besitzt. Zwei davon sollen hier beschrieben werden.
FLI - Flexible Line Interrupt: Normalerweise holt sich der VIC nur alle 8 Zeilen seine Farbinformationen
aus dem Farbspeicher (die vorher besprochene Badline). Indem man ein bestimmtes Register rechtzeitig beschreibt kann man
den Chip dazu zwingen in jeder Zeile seine Farbinfos zu lesen. Dies erfordert genaues Timing, ermöglicht
aber eine fast uneingeschränkte Verwendung aller 16 Farben des Chips.
Rahmen Öffnen: Eigentlich kann der VIC keine Sprites und Grafikdaten im Rahmen darstellen. Man kann aber durch
geschickte Registermanipulationen dafür sorgen, dass der Chip quasi "vergißt" den Rahmen einzuschalten, und als
Resultat kann man Grafik und Sprites im Rahmen darstellen. Das nennt man auch "den Rahmen öffnen".
Darstellungsmodi
Dies sind nur die "offiziellen" Auflösungen, wie unter "Tricks" erwähnt gibt es noch mehr Möglichkeiten.
Art |
Auflösung |
Farben |
Text |
40 x 25 |
2 aus 16 |
Grafik |
160 x 200 |
4 aus 16 pro 4 x 8-Pixel Block |
Grafik |
320 x 200 |
2 aus 16 pro 8 x 8-Pixel Block |
Modellübersicht
Die meisten Unterschiede zwischen den Versionen betreffen die Fernsehnorm sowie die Herstellungsart. Technisch
anders sind nur die Versionen für den C128, da diese zwei zusätzliche Register besitzen.
Bezeichnung |
Fernsehnorm |
Besonderes |
Verwendet in |
6569 |
PAL-B (Europa) |
NMOS Version |
C64 |
6572 |
PAL-N (Argentinien) |
NMOS Version |
C64 |
6573 |
PAL-M (Brasilien) |
NMOS Version |
C64 |
8565 |
? |
HMOS-II Version |
C64c |
8566 |
PAL-B (Europa) |
HMOS-II Version |
C128 |
8569 |
PAL-N (Argentinien) |
HMOS-II Version |
C128 |
6566 |
NTSC |
NMOS Version |
MAX Machine / VC 10 |
6567 |
NTSC |
NMOS Version |
C64, CBM 500 |
8562 |
NTSC |
HMOS-II Version |
C64c |
8564 |
NTSC |
HMOS-II Version |
C128 |
Register
Register 0 / $0: |
76543210 |
RW |
Sprite 0 X-Position |
|
|
Register 1 / $1: |
76543210 |
RW |
Sprite 0 Y-Position |
|
|
Register 2 / $2: |
76543210 |
RW |
Sprite 1 X-Position |
|
|
Register 3 / $3: |
76543210 |
RW |
Sprite 1 Y-Position |
|
|
Register 4 / $4: |
76543210 |
RW |
Sprite 2 X-Position |
|
|
Register 5 / $5: |
76543210 |
RW |
Sprite 2 Y-Position |
|
|
Register 6 / $6: |
76543210 |
RW |
Sprite 3 X-Position |
|
|
Register 7 / $7: |
76543210 |
RW |
Sprite 3 Y-Position |
|
|
Register 8 / $8: |
76543210 |
RW |
Sprite 4 X-Position |
|
|
Register 9 / $9: |
76543210 |
RW |
Sprite 4 Y-Position |
|
|
Register 10 / $a: |
76543210 |
RW |
Sprite 5 X-Position |
|
|
Register 11 / $b: |
76543210 |
RW |
Sprite 5 Y-Position |
|
|
Register 12 / $c: |
76543210 |
RW |
Sprite 6 X-Position |
|
|
Register 13 / $d: |
76543210 |
RW |
Sprite 6 Y-Position |
|
|
Register 14 / $e: |
76543210 |
RW |
Sprite 7 X-Position |
|
|
Register 15 / $f: |
76543210 |
RW |
Sprite 7 Y-Position |
|
|
Register 16 / $10: 9. Bit für Sprite-X-Position |
7....... |
RW |
Sprite 7 X-Position 9. Bit |
|
.6...... |
RW |
Sprite 6 X-Position 9. Bit |
|
..5..... |
RW |
Sprite 5 X-Position 9. Bit |
|
...4.... |
RW |
Sprite 4 X-Position 9. Bit |
|
....3... |
RW |
Sprite 3 X-Position 9. Bit |
|
.....2.. |
RW |
Sprite 2 X-Position 9. Bit |
|
......1. |
RW |
Sprite 1 X-Position 9. Bit |
|
.......0 |
RW |
Sprite 0 X-Position 9. Bit |
|
|
Register 17 / $11: Steuerregister 1 |
7....... |
RW |
Rasterzeile für Rasterzeileninterupt 9. Bit, siehe Register 18 |
|
.6...... |
RW |
Extended Background Mode: |
0 = Aus, 1 = An |
..5..... |
RW |
Grafikmodus: |
0 = Aus, 1 = An |
...4.... |
RW |
Bildschirmanzeige: |
0 = Aus, 1 = An |
....3... |
RW |
Textzeilenanzahl: |
0 = 24 Zeilen, 1 = 25 Zeilen |
.....210 |
RW |
Y-Scrollposition: |
0 - 7 |
|
Register 18 / $12: |
76543210 |
RW |
Rasterzeile für Rasterzeileninterupt, siehe Register 17 |
|
|
Register 19 / $13: |
76543210 |
RW |
Lichtgriffel X-Position |
|
|
Register 20 / $14: |
76543210 |
RW |
Lichtgriffel Y-Position |
|
|
Register 21 / $15: Spriteschalter |
7....... |
RW |
Sprite 7: |
0 = Aus, 1 = An |
.6...... |
RW |
Sprite 6: |
0 = Aus, 1 = An |
..5..... |
RW |
Sprite 5: |
0 = Aus, 1 = An |
...4.... |
RW |
Sprite 4: |
0 = Aus, 1 = An |
....3... |
RW |
Sprite 3: |
0 = Aus, 1 = An |
.....2.. |
RW |
Sprite 2: |
0 = Aus, 1 = An |
......1. |
RW |
Sprite 1: |
0 = Aus, 1 = An |
.......0 |
RW |
Sprite 0: |
0 = Aus, 1 = An |
|
Register 22 / $16: Steuerregister 2 |
765..... |
RW |
Ungenutzt |
|
...4.... |
RW |
Multicolormodus: |
0 = Aus, 1 = An |
....3... |
RW |
Textspaltenanzahl: |
0 = 38 Spalten, 1 = 40 Spalten |
.....210 |
RW |
X-Scrollposition: |
0 - 7 |
|
Register 23 / $17: Spritegröße vertikal verdoppeln |
7....... |
RW |
Sprite 7: |
0 = Aus, 1 = An |
.6...... |
RW |
Sprite 6: |
0 = Aus, 1 = An |
..5..... |
RW |
Sprite 5: |
0 = Aus, 1 = An |
...4.... |
RW |
Sprite 4: |
0 = Aus, 1 = An |
....3... |
RW |
Sprite 3: |
0 = Aus, 1 = An |
.....2.. |
RW |
Sprite 2: |
0 = Aus, 1 = An |
......1. |
RW |
Sprite 1: |
0 = Aus, 1 = An |
.......0 |
RW |
Sprite 0: |
0 = Aus, 1 = An |
|
Register 24 / $18: |
7654.... |
RW |
Adresse des Textspeichers |
|
....321. |
RW |
Adresse des Zeichenspeichers |
|
.......0 |
RW |
Auswahl des Zeichensatzes: |
0 = 1. Zeichensatz, 1 = 2. Zeichensatz |
|
Register 25 / $19: Interruptstatusregister |
7....... |
RW |
Interrupt-Flag: |
0 = Kein Interrupt, 1 = Interrupt ist erfolgt |
.654.... |
RW |
Ungenutzt |
|
....3... |
RW |
Lichtgriffel-Interrupt: |
0 = ist nicht erfolgt, 1 = ist erfolgt |
.....2.. |
RW |
Sprite/Sprite-Kollision: |
0 = ist nicht erfolgt, 1 = ist erfolgt |
......1. |
RW |
Sprite/Hintergrund-Kollision: |
0 = ist nicht erfolgt, 1 = ist erfolgt |
.......0 |
RW |
Rasterzeileninterrupt: |
0 = ist nicht erfolgt, 1 = ist erfolgt |
|
Register 26 / $1a: Interrupt Maskenregister |
7....... |
RW |
Interrupts sind generell erlaubt: |
0 = Nein, 1 = Ja |
.654.... |
RW |
Ungenutzt |
|
....3... |
RW |
Lichtgriffelinterrupt erlaubt: |
0 = Nein, 1 = Ja |
.....2.. |
RW |
Sprite/Sprite-Kollisionsinterrupt erlaubt: |
0 = Nein, 1 = Ja |
......1. |
RW |
Sprite/Hintergrund-Kollisionsinterrupt erlaubt: |
0 = Nein, 1 = Ja |
.......0 |
RW |
Rasterzeileninterrupt erlaubt: |
0 = Nein, 1 = Ja |
|
Register 27 / $1b: Sprite Hintergrundpriorität |
7....... |
RW |
Sprite 7: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
.6...... |
RW |
Sprite 6: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
..5..... |
RW |
Sprite 5: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
...4.... |
RW |
Sprite 4: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
....3... |
RW |
Sprite 3: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
.....2.. |
RW |
Sprite 2: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
......1. |
RW |
Sprite 1: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
.......0 |
RW |
Sprite 0: |
0 = Hinter Hintergrund, 1 = Vor Hintergrund |
|
Register 28 / $1c: Sprite Multicolormodus |
7....... |
RW |
Sprite 7: |
0 = Aus, 1 = An |
.6...... |
RW |
Sprite 6: |
0 = Aus, 1 = An |
..5..... |
RW |
Sprite 5: |
0 = Aus, 1 = An |
...4.... |
RW |
Sprite 4: |
0 = Aus, 1 = An |
....3... |
RW |
Sprite 3: |
0 = Aus, 1 = An |
.....2.. |
RW |
Sprite 2: |
0 = Aus, 1 = An |
......1. |
RW |
Sprite 1: |
0 = Aus, 1 = An |
.......0 |
RW |
Sprite 0: |
0 = Aus, 1 = An |
|
Register 29 / $1d: Sprite horizontal verdoppeln |
7....... |
RW |
Sprite 7: |
0 = Aus, 1 = An |
.6...... |
RW |
Sprite 6: |
0 = Aus, 1 = An |
..5..... |
RW |
Sprite 5: |
0 = Aus, 1 = An |
...4.... |
RW |
Sprite 4: |
0 = Aus, 1 = An |
....3... |
RW |
Sprite 3: |
0 = Aus, 1 = An |
.....2.. |
RW |
Sprite 2: |
0 = Aus, 1 = An |
......1. |
RW |
Sprite 1: |
0 = Aus, 1 = An |
.......0 |
RW |
Sprite 0: |
0 = Aus, 1 = An |
|
Register 30 / $1e: Sprite/Sprite-Kollision aktiv |
7....... |
RW |
Sprite 7: |
0 = Aus, 1 = An |
.6...... |
RW |
Sprite 6: |
0 = Aus, 1 = An |
..5..... |
RW |
Sprite 5: |
0 = Aus, 1 = An |
...4.... |
RW |
Sprite 4: |
0 = Aus, 1 = An |
....3... |
RW |
Sprite 3: |
0 = Aus, 1 = An |
.....2.. |
RW |
Sprite 2: |
0 = Aus, 1 = An |
......1. |
RW |
Sprite 1: |
0 = Aus, 1 = An |
.......0 |
RW |
Sprite 0: |
0 = Aus, 1 = An |
|
Register 31 / $1f: Sprite/Hintergrund-Kollision aktiv |
7....... |
RW |
Sprite 7: |
0 = Aus, 1 = An |
.6...... |
RW |
Sprite 6: |
0 = Aus, 1 = An |
..5..... |
RW |
Sprite 5: |
0 = Aus, 1 = An |
...4.... |
RW |
Sprite 4: |
0 = Aus, 1 = An |
....3... |
RW |
Sprite 3: |
0 = Aus, 1 = An |
.....2.. |
RW |
Sprite 2: |
0 = Aus, 1 = An |
......1. |
RW |
Sprite 1: |
0 = Aus, 1 = An |
.......0 |
RW |
Sprite 0: |
0 = Aus, 1 = An |
|
Register 32 / $20: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Rahmenfarbe: |
0 - 15 |
|
Register 33 / $21: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Hintergrundfarbe 1: |
0 - 15 |
|
Register 34 / $22: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Hintergrundfarbe 2: |
0 - 15 |
|
Register 35 / $23: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Hintergrundfarbe 3: |
0 - 15 |
|
Register 36 / $24: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Hintergrundfarbe 4: |
0 - 15 |
|
Register 37 / $25: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite Multicolorregister 0: |
0 - 15 |
|
Register 38 / $26: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite Multicolorregister 1: |
0 - 15 |
|
Register 39 / $27: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 0 Farbe: |
0 - 15 |
|
Register 40 / $28: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 1 Farbe: |
0 - 15 |
|
Register 41 / $29: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 2 Farbe: |
0 - 15 |
|
Register 42 / $2a: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 3 Farbe: |
0 - 15 |
|
Register 43 / $2b: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 4 Farbe: |
0 - 15 |
|
Register 44 / $2c: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 5 Farbe: |
0 - 15 |
|
Register 45 / $2d: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 6 Farbe: |
0 - 15 |
|
Register 46 / $2e: |
7654.... |
RW |
Ungenutzt |
|
....3210 |
RW |
Sprite 7 Farbe: |
0 - 15 |
|
Register 47 / $2f: NUR C128 Varianten (8564 / 8566): Keyboard Control Register |
7654.... |
R |
Ungenutzt (immer 1) |
|
....3210 |
RW |
Status der vier Keyboard Interface Pins |
|
|
Register 48 / $30: NUR C128 Varianten (8564 / 8566): 2 Mhz Modus |
7654321. |
RW |
Ungenutzt |
|
.......0 |
RW |
2 Mhz-Modus: |
0 = Aus, 1 = An |
|