Hintergrundfarbe
Als Hintergrundfarbe wird auf dem C64 die Farbe bezeichnet, die überall dort zu sehen ist, wo keine Pixel gesetzt sind (Ausnahme: Hires-Modus, s.u.). Beim C64 und anderen Commodore-Heimcomputern (z.B. Plus/4) wird außerdem noch zwischen Hintergrundfarbe und Rahmenfarbe unterschieden. Beim C64 ist die Standard-Hintergrundfarbe dunkelblau, die Standard-Rahmenfarbe hellblau. Die Textfarbe ist ebenfalls hellblau, wobei die Farbe jedes einzelnen Zeichens mittels Farb-RAM definiert wird. Rasterbars, welche oft in Intros oder Demos zu sehen sind, verändern in Maschinensprache die Hintergrundfarbe (und in der Regel auch die Rahmenfarbe) in jeder Zeile, so dass das typische Erscheinungsbild von bunten Balken entsteht.
Hintergrundfarbe im Textmodus[Bearbeiten | Quelltext bearbeiten]
Im Textmodus wird die Hintergrundfarbe über das VIC-Register bei $D021 (53281) eingestellt. Sie kann also unter BASIC mit POKE 53281,X
verändert werden, wobei X eine von 16 möglichen Farben (siehe Farbtabelle) annehmen kann.
Beispielprogramm:
10 X = X +1: IF X>15 THEN X=0 20 POKE 53281,X: POKE 646,X 30 PRINT " * C64-WIKI DEMO "; 40 FOR Z=0 TO 150: NEXT Z: GOTO 10
Dieses C64-Wiki-Demo-Programm verändert dauernd die Hintergrund- und Zeichenfarbe der möglichen 16 Farben. Abbruch durch Drücken der Taste RUN/STOP
Hintergrundfarbe im Multicolor-Modus[Bearbeiten | Quelltext bearbeiten]
Im Grafikmodus Multicolor wird jeder Pixel durch ein Bitpaar repräsentiert. Sind beide Bits Null, ist an der Stelle die Hintergrundfarbe zu sehen.
Hintergrundfarbe im Hires-Modus[Bearbeiten | Quelltext bearbeiten]
Im Grafikmodus Hires ist die Hintergrundfarbe, so wie sie in den anderen Modi existiert, nicht zu sehen. Stattdessen liest der VIC für jede Kachel das entsprechende Byte aus dem Bildschirmspeicher und verwendet das High-Nibble als Farbe für gesetzte Bits in der Bitmap, das Low-Nibble als Farbe für nicht gesetzte.
Erweiterter Hintergrundfarbenmodus[Bearbeiten | Quelltext bearbeiten]
Zusätzlich gibt es beim C64 einen erweiterten Hintergrundfarbenmodus (Englisch: ECM für Extended Color Mode, weniger gebräuchlich: Extended Background Color), der es erlaubt, im Textmodus drei zusätzliche Hintergrundfarben für Zeichen zu benutzen. Wird dieser Modus aktiviert, sind aus dem gerade aktiven Zeichensatz aber nur noch die ersten 64 Zeichen zu benutzen. Die "geshifteten", "reversen" und "reversen geshifteten" Zeichen entsprechen dann den ersten 64 Zeichen, aber jeweils mit anderer Hintergrundfarbe.
- Erweiterten Hintergrundfarbenmodus einschalten:
POKE 53265,PEEK(53265) OR 64
- Erweiterten Hintergrundfarbenmodus ausschalten:
POKE 53265,PEEK(53265) AND 191
Für die erweiterten Hintergrundfarben stehen die Speicheradressen 53282 bis 53284 des VIC zur Verfügung, die über den BASIC-Befehl POKE eingestellt werden können.
Beim Setzen der Zeichen mit den zusätzlichen Hintergrundfarben über den Bildschirmspeicher (ab Adresse 1024/hex. $0400) muss jeweils zum Wert des Zeichens 64 ("geshiftet"), 128 ("revers") oder 192 ("revers geshiftet") hinzu addiert werden. Beispiel für das Zeichen "@":
POKE 1024,0
ergibt normale HintergrundfarbePOKE 1024,64
Hintergrundfarbe 1POKE 1024,128
Hintergrundfarbe 2POKE 1024,192
Hintergrundfarbe 3
Zeichencode | Speicheradresse | Farbe |
---|---|---|
0-63 | 53281 ($D021) | normal |
64-127 | 53282 ($D022) | 1 |
128-191 | 53283 ($D023) | 2 |
192-255 | 53284 ($D024) | 3 |
Beispielprogramm:
10 POKE 53281,1 : REM FARBE NORMAL: WEISS 20 POKE 53282,2 : REM FARBE 1: ROT 30 POKE 53283,5 : REM FARBE 2: GRUEN 40 POKE 53284,6 : REM FARBE 3: BLAU 50 POKE 53265, PEEK(53265) OR 64 : REM ERW. HINTERGRUNDFARBMODUS EIN 60 PRINT "abc ABC "+CHR$(18)+"abc"+CHR$(146)+" "+CHR$(18)+"ABC"
Bildschirmausgabe:
abc abc abc abc
Notemaker wie Facenoter machen auf eine besondere Art Gebrauch von diesem Modus: Sie invertieren den genutzten Zeichensatz, so dass vier verschiedene vom Farb-RAM unabhängige Zeichenfarben entstehen, welche dann durch zyklisches Schreiben von Werten aus einer Farbtabelle in eines der Register verändert werden, um Blinkeffekte für einzelne Wörter oder Absätze zu realisieren.
Einige Demos sowie das Diskettenmagazin Metal Force gehen noch weiter und bauen sogar Rasterbars im Text mithilfe dieses Modus auf, wodurch auf einer Zeile unterschiedlich farbige Effekte für Schrift möglich werden. Ein ähnlicher Effekt ist alternativ nur mittels Rastersplit innerhalb der Standard-Hintergrundfarbe ($D021) möglich. Diese Art Farbänderung von Zeichen ist aufgrund der Anforderungen an das Timing allerdings nicht von BASIC aus realisierbar, sondern kann nur mit Maschinensprache programmiert werden.