BCKGNDS

Aus C64-Wiki
Wechseln zu: Navigation, Suche
BCKGNDS
Format: 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
Verwandte Befehle
COLOUR - FCOL - NRM


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

Typ: Anweisung 
Syntax: BCKGNDS <b1>, <b2>, <b3>, <b4>

BCKGNDS aktiviert den so genannten Extended-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 (s. auch MEM) kann man wunderschöne Benutzeroberflächen gestalten, da sich auch die Farbe als Informationsträger einsetzen lässt.

Nachteil des Extended 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 hier auch betroffen ist, hat der Befehl COLOUR nach BCKGNDS konkurrierende Wirkung (er beeinflusst ebenfalls $D021). Man kann ihn einsetzen, um die globale Hintergrundfarbe zu ändern, ohne nochmals BCKGNDS bemühen zu müssen.

NRM schaltet den Extended 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.

Ein Demo für den Extended Color Modus
Beispiel: 

 100 PRINT "{clear}{ctrl-n}";:
     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

(erzeugt das Beispielbild)

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 (Z. 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.