Der MOS 6567/6569 Videocontroller (VIC-II) und seine Anwendung im Commodore 64
Inhalt 3. Funktionsweise des VIC
3.9. Die Rahmenstufe |
Der VIC benutzt zwei Flipflops, um den Rahmen um das Anzeigefenster herum zu erzeugen: Ein Haupt-Rahmenflipflop und ein vertikales Rahmenflipflop. Das Haupt-Rahmenflipflop steuert die Darstellung des Rahmens. Ist es gesetzt, stellt der VIC die in Register $d020 angegeben Farbe dar, sonst die Farbe, die der Prioritätsmultiplexer vom Grafik- oder Spritedatensequenzer durchschaltet. Der Rahmen überlagert also sowohl die Text-/Bitmapgrafik als auch die Sprites. Er hat die höchste Anzeigepriorität. Das vertikale Rahmenflipflop dient zur Unterstützung bei der Darstellung des oberen/unteren Rahmens. Ist es gesetzt, kann das Haupt-Rahmenflipflop nicht gelöscht werden. Außerdem steuert das vertikale Rahmenflipflop den Ausgang des Grafikdatensequenzers. Dieser liefert nur bei gelöschtem Flipflop Daten, ansonsten stellt er die Hintergrundfarbe dar. Dies dient vermutlich dazu, im Rahmen Sprite-Grafik-Kollisionen zu verhindern. Zu jedem der beiden Flipflops gehören 2×2 Komparatoren. Diese Komparatoren vergleichen die X-/Y-Position des Rasterstrahls mit einem von zwei festverdrahteten Werten (je nach Zustand der CSEL/RSEL-Bits) um die Flipflops zu steuern. Die Vergleiche fallen nur dann positiv aus, wenn der jeweilige Wert genau erreicht wird. Es findet kein Vergleich mit einem Intervall statt.
horizontale Vergleichswerte:
| CSEL=0 | CSEL=1
Links | 31 ($1f) | 24 ($18)
Rechts | 335 ($14f) | 344 ($158)
| vertikale Vergleichswerte:
| RSEL=0 | RSEL=1
Oben | 55 ($37) | 51 ($33)
Unten | 247 ($f7) | 251 ($fb)
Die Flipflops werden nach den folgenden Regeln geschaltet: Erreicht die X-Koordinate den rechten Vergleichswert, wird das Haupt-Rahmenflipflop gesetzt. Erreicht die Y-Koordinate den unteren Vergleichswert in Zyklus 63, wird das vertikale Rahmenflipflop gesetzt. Erreicht die Y-Koordinate den oberern Vergleichswert in Zyklus 63 und ist das DEN-Bit in Register $d011 gesetzt, wird das vertikale Rahmenflipflop gelöscht. Erreicht die X-Koordinate den linken Vergleichswert und die Y-Koordinate den unteren, wird das vertikale Rahmenflipflop gesetzt. Erreicht die X-Koordinate den linken Vergleichswert und die Y-Koordinate den oberen und ist das DEN-Bit in Register $d011 gesetzt, wird das vertikale Rahmenflipflop gelöscht. Erreicht die X-Koordinate den linken Vergleichswert und ist das vertikale Rahmenflipflop gelöscht, wird das Haupt-Flipflop gelöscht. Die Y-Koordinate wird also ein- oder zweimal innerhalb jeder Rasterzeile geprüft: In Zyklus 63 und wenn die X-Koordinate den linken Vergleichswert erreicht. Man kann durch geeignetes Umschalten der CSEL/RSEL-Bits verhindern, daß einer oder mehrere der Vergleichswerte erreicht werden und damit den Rahmen ganz oder teilweise abschalten (siehe 3.14.1.).