LOW COL

Aus C64-Wiki
Zur Navigation springenZur Suche springen
LOW COL
Syntax: LOW COL <f1>, <f2>, <f3>
Parameter
Farbe <f1> für Hires-Bit 1 bzw. Multi-Bits 01
Farbe <f2> für Hires-Bit 0 bzw. Multi-Bits 10
Farbe <f3> für Multi-Bits 11
Einordnung
Typ: Anweisung
Kontext: Grafik
Aufgabe: Setzen der Malfarben für Hires- bzw. Multicolor-Grafik
Abkürzung: keine (TSB: loW)
Token: $64 $76 (100 118)
Verwandte Befehle
CSET - HIRES - NRM - COLOUR - MULTI - HI COL


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

Typ: Anweisung 
Syntax: LOW COL <f1>, <f2>, <f3> TSB-Syntax: LOW COL <f1>, <f2>, [128 +] <f3>

Die ersten beiden Parameter nehmen jeweils Werte von 0 bis 15, der dritte einen Wert von 0 bis 255 an, allerdings wird für das Setzen der Farbe nur 0 bis 15 benutzt.


Ohne LOW COL malt jeder schreibende Grafikbefehl in den Farben, die durch COLOUR, HIRES und MULTI festgelegt wurden. Der C64 kann aber nicht nur mit zwei (Hires) bzw. vier (Multi) aus 16 Farben für den ganzen Bildschirm arbeiten, sondern mit zwei bzw. vier aus 16 Farben pro Kachel. Es dürfen also insgesamt alle 16 Farben auf dem Bildschirm vorkommen. Da die genannten Befehle aber ausschließlich den ganzen Bildschirm betreffen, bietet Simons' Basic mit LOW COL eine Anweisung, die eine "lokale" Malfarbenveränderung bewirkt. Zurück zu den "globalen" Malfarben kommt man mit dem Befehl HI COL.

Die drei Farbangaben hinter LOW COL funktionieren wie folgt:

  • Im Multicolor Bitmap-Modus wie nach dem Befehl MULTI, d.h. Farbe <f1> beeinflusst die Multicolor-Bitkombination %01 (Hinibble in $C000), Farbe <f2> die Kombination %10 (Lonibble in $C000) und Farbe <f3> diejenige, die aus %11 (in $D800) besteht.
  • Im Hires Bitmap-Modus wie nach dem Befehl HIRES, also gehört Farbe <f1> zum Bit "1" (Zeichenfarbe, Hinibble in $C000), Farbe <f2> zum Bit "0" (Hintergrundfarbe, Lonibble in $C000). Mit Farbe <f3> wird zwar das Farb-RAM verändert, für die Hires-Grafik hat das aber keine Bedeutung (und kann in TSB verhindert werden, s. Hinweis).

Bei der Farbgebung muss man gut nachdenken, denn die LOW-COL-Farben dürfen den HIRES- bzw. MULTI-Farben nicht "widersprechen" (siehe dazu die Beispiele).

Hinweis: In TSB (ab v2.20.324) kann man die Änderung des Farbrams verhindern, indem der dritte Parameter größer als 127 gewählt wird. Dann trägt LOW COL nichts ins Farbram ein, wodurch z.B. Bildschirmmasken im Textmodus nicht zerstört werden.

Beachten: LOW COL ist beim Befehl BLOCK unwirksam.

Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?BAD MODE ERROR.


Beispiele[Bearbeiten | Quelltext bearbeiten]

Multicolor

10 COLOUR 5,7
20 HIRES 10,1
30 MULTI 12,15,1
40 BLOCK 0,0,50,100,2
50 LOW COL 5,15,0
60 LINE 0,100,50,0,1
70 LINE 0,0,50,100,3
80 WAIT 198,255
  
  
Schaltet die Grafik an und malt in Farbe <f2> ein hellgraues Quadrat (<f2> = 15) auf gelbem Hintergrund (7 von COLOUR), dann wird per LOW COL umgefärbt in grün, hellgrau und schwarz; die beiden Linien erscheinen in der LOW-COL-Farbe 1 (grün) und 3 (schwarz), wie der letzte Parameter von LINE angibt; Farbe 2 (hellgrau) ist im Quadrat der Hintergrund, daher muss auch bei LOW COL für <f2> hellgrau eingetragen werden, um Farbtreppen zu vermeiden.
So sieht das Ergebnis des Beispielprogramms aus

Hires

100 PRINT CHR$(147): COLOUR 6,15,0
110 HIRES 15,0
120 BLOCK 0,0,159,99,1
130 BLOCK 160,100,319,199,1
140 LOW COL 6,7,0
150 FOR I=1 TO 3
160 IF D=0 THEN REC I*40,I*25,319-80*I,199-50*I,I-1
170 IF D>0 THEN REC I*40,I*24,319-80*I,199-48*I,I-1
180 NEXT
190 COLOUR 14,15,0
200 POKE 198,0:WAIT 198,255
210 IF D=0 THEN D=1:GOTO 100
220 NRM: COLOUR 12,15,0
230 END

Das Hires-Programm färbt zuerst die Bildschirm-Viertel oben links und unten rechts in der Zeichenfarbe hellgrau (<f1> = 15), während die anderen Bereiche schwarz (<f2> = 0) bleiben. Nun werden mit LOW COL die Zeichenfarbe blau (<f1> = 6) und die Hintergrundfarbe gelb (<f2> = 7) eingeschaltet und drei ineinandergeschachtelte Rechtecke gezeichnet. Das äußere in Farbe 0 (Hintergrund), das mittlere in Farbe 1 (Vordergrund) und das innere in Farbe 2 (invertiert). Beim Zeichnen der Rechtecklinien werden immer auch die Farben in den benutzten Kacheln aktualisiert. Man sieht im Hires-Bild 1 die Farbprobleme, die entstehen, da die senktrechte Einteilung (50er-Schritte) nicht durch 8 teilbar ist.
Nach Tastendruck startet das Programm von vorn und dann werden alternative Rechtecke gezeichnet, welche die Kachelgrenzen berücksichtigen. Das Ergebnis zeigt Hires-Bild 2.