Der MOS 6567/6569 Videocontroller (VIC-II) und seine Anwendung im Commodore 64
Inhalt 3. Funktionsweise des VIC
3.2. Register |
Der VIC besitzt 47 Schreib-/Leseregister zur Steuerung seiner Funktionen durch den Prozessor:
# | Adr. | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Funktion
0 | $d000 | M0X | X-Koordinate Sprite 0
1 | $d001 | M0Y | Y-Koordinate Sprite 0
2 | $d002 | M1X | X-Koordinate Sprite 1
3 | $d003 | M1Y | Y-Koordinate Sprite 1
4 | $d004 | M2X | X-Koordinate Sprite 2
5 | $d005 | M2Y | Y-Koordinate Sprite 2
6 | $d006 | M0X | X-Koordinate Sprite 0
7 | $d007 | M2Y | Y-Koordinate Sprite 2
8 | $d008 | M3X | X-Koordinate Sprite 3
9 | $d009 | M4Y | Y-Koordinate Sprite 4
10 | $d00a | M4X | X-Koordinate Sprite 4
11 | $d00b | M5Y | Y-Koordinate Sprite 5
12 | $d00c | M6X | X-Koordinate Sprite 6
13 | $d00d | M6Y | Y-Koordinate Sprite 6
14 | $d00e | M7X | X-Koordinate Sprite 7
15 | $d00f | M7Y | Y-Koordinate Sprite 7
16 | $d010 | M7X8 | M6X8 | M5X8 | M4X8 | M3X8 | M2X8 | M1X8 | M0X8 | MSBs der X-Koordinaten
17 | $d011 | RST8 | ECM | BMM | DEN | RSEL | YSCROLL | Steuerregister 1
18 | $d012 | RASTER | Rasterzähler
19 | $d013 | LPX | Lichtgriffel X
20 | $d014 | LPY | Lichtgriffel Y
21 | $d015 | M7E | M6E | M5E | M4E | M3E | M2E | M1E | M0E | Sprite angeschaltet
22 | $d016 | - | - | RES | MCM | CSEL | XSCROLL | Steuerregister 2
23 | $d017 | M7YE | M6YE | M5YE | M4YE | M3YE | M2YE | M1YE | M0YE | Sprite Y-Expansion
24 | $d018 | VM13 | VM12 | VM11 | VM10 | CB13 | CB12 | CB11 | - | Speizerzeiger
25 | $d019 | IRQ | - | - | - | ILP | IMMC | IMBC | IRST | Interruptregister
26 | $d01a | - | - | - | - | ELP | EMMC | EMBC | ERST | Interrupt angeschaltet
27 | $d01b | M7DP | M6DP | M5DP | M4DP | M3DP | M2DP | M1DP | M0DP | Sprite-Daten-Priorität
28 | $d01c | M7MC | M6MC | M5MC | M4MC | M3MC | M2MC | M1MC | M0MC | Sprite Multicolor
29 | $d01d | M7XE | M6XE | M5XE | M4XE | M3XE | M2XE | M1XE | M0XE | Sprite X-Expansion
30 | $d01e | M7M | M6M | M5M | M4M | M3M | M2M | M1M | M0M | Sprite-Sprite-Kollision
31 | $d01f | M7D | M6D | M5D | M4D | M3D | M2D | M1D | M0D | Sprite-Daten-Kollision
32 | $d020 | - | - | - | - | EC | Rahmenfarbe
33 | $d021 | - | - | - | - | BOC | Hintergrundfarbe 0
34 | $d022 | - | - | - | - | B1C | Hintergrundfarbe 1
35 | $d023 | - | - | - | - | B2C | Hintergrundfarbe 2
36 | $d024 | - | - | - | - | B3C | Hintergrundfarbe 3
37 | $d025 | - | - | - | - | MM0 | Sprite Multicolor 0
38 | $d026 | - | - | - | - | MM1 | Sprite Multicolor 1
39 | $d027 | - | - | - | - | M0C | Farbe Sprite 0
40 | $d028 | - | - | - | - | M1C | Farbe Sprite 1
41 | $d029 | - | - | - | - | M2C | Farbe Sprite 2
42 | $d02a | - | - | - | - | M3C | Farbe Sprite 3
43 | $d02b | - | - | - | - | M4C | Farbe Sprite 4
44 | $d02c | - | - | - | - | M5C | Farbe Sprite 5
45 | $d02d | - | - | - | - | M6C | Farbe Sprite 6
46 | $d02e | - | - | - | - | M7C | Farbe Sprite 7
Hinweise: Die mit '-' gekennzeichneten Bits sind unbelegt. Beim Lesen liefern sie eine "1" Die VIC-Register wiederholen sich im Bereich $d000-$d3ff alle 64 Bytes, d.h. Register 0 ist an Adresse $d000, $d040, $d080 etc. verfügbar Die nicht belegten Adressen $d02f-$d03f liefern beim Lesen den Wert $ff, ein Schreibzugriff ist ohne Wirkung Die Register $d01e und $d01f sind nicht beschreibbar und werden bei einem Lesezugriff automatisch gelöscht Das RES-Bit (Bit 5) von Register $d016 ist bei den bisher untersuchten VIC 6567/6569 ohne Funktion. Beim 6566 dient dieses Bit dazu, den VIC zu stoppen. Bit 7 in Register $d011 (RST8) ist Bit 8 von Register $d012. Beide zusammen werden im folgenden mit "RASTER" bezeichnet. Ein Schreibzugriff in diese Bits legt die Vergleichszeile für den Rasterinterrupt fest (siehe Abschnitt 3.12.).