Der MOS 6567/6569 Videocontroller (VIC-II) und seine Anwendung im Commodore 64
Inhalt 2. Die Architektur des Commodore 64 2.4. Speicher
2.4.1. Speicheraufteilung aus Sicht des 6510 |
Der 6510 kann mit seinen 16 Adreßleitungen 64KB linear adressieren. Mit Hilfe eines speziellen PAL-Bausteins im C64 können über die Leitungen des 6510-I/O-Ports und über Steuersignale am Erweiterungsport viele verschiedene Speicherkonfigurationen eingestellt werden (siehe dazu [3]). Hier soll jedoch nur die Standardeinstellung beschrieben werden. Die anderen Konfigurationen ändern die Lage der verschiedenen Bereiche nicht, sondern blenden nur zusätzliche Bereiche des Hauptspeichers ein. Hier also die Speicherkarte aus Sicht des 6510: Die 64KB Hautpspeicher stehen im Prinzip linear zur Verfügung, aber sie sind an verschiedenen Stellen von ROM- und Register-Bereichen überlagert. Ein Schreibzugriff auf einen ROM-Bereich speichert das Byte im "darunterliegenden" RAM. Bei Adresse $0000 und $0001 liegen Datenrichtungsregister und Datenregister des 6510-I/O-Ports. Im Bereich von $d000-$dfff erscheinen wahlweise die Register der I/O-Chips und das Farb-RAM oder das Zeichengenerator-ROM, je nach Zustand des Signals CHAREN (dies ist Bit 2 des 6510-I/O-Ports). Das Farb-RAM ist im Adreßbereich $d800-$dbff untergebracht und mit den unteren 4 Datenbits verbunden. Die oberen 4 Datenbits sind offen und liefern beim Lesen "zufällige" Werte. Die beiden mit "I/O 1" und "I/O 2" bezeichneten Bereiche sind für Erweiterungskarten reserviert und normalerweise ebenfalls offen, ein Lesezugriff liefert auch hier "zufällige" Daten (daß diese Daten gar nicht so zufällig sind, wird in Kapitel 4 noch ausführlich erklärt. Ein Lesen von offenen Adressen liefert nämlich auf vielen C64 das zuletzt vom VIC gelesene Byte zurück!). Die 47 Register des VIC sind ab $d000 in den Adreßraum eingeblendet. Aufgrund der unvollständigen Dekodierung wiederholen sie sich alle 64 Bytes im Bereich von $d000-$d3ff.