BCKGNDS

Aus C64-Wiki
Zur Navigation springenZur Suche springen
BCKGNDS
Syntax: BCKGNDS <b1>, <b2>, <b3>, <b4>
Parameter
b1: Hintergrundfarbe 1 (0..15)
b2: Hintergrundfarbe 2 (0..15)
b3: Hintergrundfarbe 3 (0..15)
b4: Hintergrundfarbe 4 (0..15)
Einordnung
Typ: Anweisung
Kontext: Bildschirmkontrolle
Aufgabe: Färben des Textbildschirms
Abkürzung: keine (TSB: bC)
Token: $64 $65 (100 101)
Verwandte Befehle
COLOUR - FCOL - NRM


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort BCKGNDS.

Typ: Anweisung 
Syntax: BCKGNDS <b1>, <b2>, <b3>, <b4> TSB-Syntax: BCKGNDS [128 + ] <f1>, <f2>, <f3>, <fx>

BCKGNDS aktiviert den so genannten Extended-Background-Color-Modus des C64 und setzt die dafür erforderlichen Farbinformationen in die VIC-Register $D021 (<b1>), $D022 (<b2>) usw. ein. Jedes Zeichen auf dem Bildschirm kann nun eine aus diesen vier verschiedenen Hintergrundfarben erhalten. Mit diesem Befehl und einem vielleicht extra für diese Zwecke erstellten Zeichensatz (siehe auch MEM) kann man wunderschöne Benutzeroberflächen gestalten, da sich auch die Farbe als Informationsträger einsetzen lässt.

Nachteil des Extended-Background-Color-Modus ist, dass die Anzahl verschieden aussehender Zeichen auf ein Viertel reduziert ist, da die oberen zwei Bits der Zeichencodierung für die Zuordnung zu den vier Hintergrundfarben Verwendung finden.

Da das normale Hintergrundfarbregister $D021 bei BCKGNDS auch betroffen ist, hat der Befehl COLOUR nach BCKGNDS konkurrierende Wirkung (er beeinflusst ebenfalls $D021). Man kann COLOUR einsetzen, um die globale Hintergrundfarbe zu ändern, ohne nochmals BCKGNDS bemühen zu müssen.

NRM schaltet den Extended-Background-Color-Modus wieder aus.

Wird ein Parameter bei der Eingabe weggelassen, so erscheint die Fehlermeldung ?SYNTAX ERROR, ein falscher Wert bleibt unbeachtet und wird behandelt als wäre ein AND 15 vorgenommen worden.

In TSB kann BCKGNDS dazu verwendet werden, die Farben im Multicolor-Textmodus zu setzen, und zwar ohne gleichzeitig den Extended-Background-Color-Modus einzuschalten. Dazu muss zum ersten Parameter (für das Register $D021) lediglich 128 addiert werden. Der vierte Parameter spielt in diesem Fall keine Rolle und kann beliebig beschickt werden (man darf ihn aber nicht weglassen): BCKGNDS 128+3,10,9,x für Zeichen in hellrot (10) und braun (9) auf einem Cyan-Hintergrund (3). Siehe dazu das Beispiel 3 von MULTI.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Einfaches Beispiel[Bearbeiten | Quelltext bearbeiten]

10 PRINT CHR$(147):COLOUR 15,12
20 BCKGNDS 12,1,5,7
30 Z=35:REM ZEICHEN "#"
40 FCHR 1,1,1,1,Z
50 FCHR 1,3,2,1,Z+64
60 FCHR 1,6,1,2,Z+128
70 FCHR 1,8,2,2,Z+192
80 WAIT 198,255:NRM

Demo[Bearbeiten | Quelltext bearbeiten]

Ein Demo für den Extended-Color-Modus
 100 CLS: CSET 1: COLOUR 0,0: 
     DIM C%(2,3)
 105 CENTRE " BCKGNDS DEMO ":
     INSERT "+-+! !+-+",1,1,38,23,0
 110 FOR I=0 TO 2:
       FOR J=0 TO 3:
         READ C%(I,J):
       NEXT 
 115   FILL 2,2,36,21,32,0
 120   BCKGNDS C%(i,0),C%(i,1),C%(i,2),C%(i,3)
 130   FOR SP=2 TO 37:
         FOR ZL=2 TO 22
 135       BC=INT(RND(1)*256)
 140       FCHR ZL,SP,1,1,BC
 165     NEXT :
       NEXT 
 170   PAUSE 5
 175 NEXT 
 180 NRM:
     COLOUR 11,12:
     POKE 646,0
 185 PRINT AT(0,22)"";
 190 DATA 6,4,14,3
 195 DATA  11,12,15,1
 200 DATA  9,2,8,10

Dies erzeugt das Demo-Bild.

Kommentar: Das Programm zeigt drei verschiedene Farbzusammenstellungen (bläulich, grau und rötlich), die in den DATA-Zeilen geändert werden können. In den Zeilen 135 und 140 erzeugt es zufällige Bildschirmcode-Werte zwischen 0 und 255 und schreibt sie per FCHR in den Screen.
Zuletzt zeigt es den Bildschirm im normalen Modus mit mittelgrau als Hintergrundfarbe (Zeile 180).

Hinweis: Der INSERT-Befehl in Zeile 105 funktioniert nur unter TSB und erzeugt einen schwarzen Rahmen. Unter Simons' Basic kann er einfach weggelassen werden, da er nur der Optik dient.