Der MOS 6567/6569 Videocontroller (VIC-II) und seine Anwendung im Commodore 64
Inhalt 3. Funktionsweise des VIC 3.7. Text-/Bitmapdarstellung
3.7.3. Grafikmodi |
Der Grafikdatensequenzer beherrscht 8 verschiedene Grafikmodi, die über die Bits ECM, BMM und MCM (Extended Color Mode, Bit Map Mode und Multi Color Mode) in den Registern $d011 und $d016 ausgewählt werden (von den 8 möglichen Bitkombinationen sind 3 "ungültig" und erzeugen die gleiche Ausgabe, nämlich nur die Farbe Schwarz). Der Idle-Zustand ist ein Spezialfall, da darin keine c-Zugriffe stattfinden und der Sequenzer "0"-Bits als Videomatrix-Daten verwendet. Der Sequenzer gibt die Grafikdaten in jeder Rasterzeile im Bereich der Anzeigespalte aus, sofern das vertikale Rahmenflipflop gelöscht ist (siehe Abschnitt 3.9.). Außerhalb der Anzeigespalte und bei gesetztem Flipflop wird die letzte aktuelle Hintergrundfarbe dargestellt (dieser Bereich ist normalerweise vom Rahmen überdeckt). Kernstück des Sequenzers ist ein 8-Bit-Schieberegister, das mit jedem Pixel um 1 Bit weitergeschoben und nach jedem g-Zugriff mit den gelesenen Pixeldaten geladen wird. Mit XSCROLL aus Register $d016 läßt sich das Laden des Schieberegisters um 0-7 Pixel verzögern und dadurch die Anzeige um bis zu 7 Pixel nach rechts verschieben. Der Adreßgenerator für die Text-/Bitmap-Zugriffe (c- und g-Zugriffe) besitzt bei den g-Zugriffen im wesentlichen 3 Modi (die c-Zugriffe erfolgen immer nach dem selben Adreßschema). Im Display-Zustand wählt das BMM-Bit entweder Zeichengenerator-Zugriffe (BMM=0) oder Bitmap-Zugriffe (BMM=1) aus, im Idle-Zustand erfolgen die g-Zugriffe immer an Videoadresse $3fff. Bei gesetztem ECM-Bit schaltet der Adreßgenerator bei den g-Zugriffen die Adreßleitungen 9 und 10 immer auf Low, bei ansonsten gleichem Adreßschema (z.B. erfolgen dann die g-Zugriffe im Idle-Zustand an Adresse $39ff). Die 8 Grafikmodi werden nun einzeln behandelt und die erzeugten Adressen und die Interpretation der gelesenen Daten bei c- und g-Zugriffen beschrieben. Anschließend folgt noch eine Beschreibung der Besonderheiten des Idle-Zustands. Um das Nachschlagen zu erleichtern, wurden bei jedem Modus die Adressen explizit hingeschrieben, obwohl z.B. die c-Zugriffe immer gleich ablaufen.
3.7.3.1. Standard-Textmodus (ECM/BMM/MCM=0/0/0) 3.7.3.2. Multicolor-Textmodus (ECM/BMM/MCM=0/0/1) 3.7.3.3. Standard-Bitmap-Modus (ECM/BMM/MCM=0/1/0) 3.7.3.4. Multicolor-Bitmap-Modus (ECM/BMM/MCM=0/1/1) 3.7.3.5. ECM-Textmodus (ECM/BMM/MCM=1/0/0) | 3.7.3.6. Ungültiger Textmodus (ECM/BMM/MCM=1/0/1) 3.7.3.7. Ungültiger Bitmap-Modus 1 (ECM/BMM/MCM=1/1/0) 3.7.3.8. Ungültiger Bitmap-Modus 2 (ECM/BMM/MCM=1/1/1) 3.7.3.9. Idle-Zustand