CHAR (BASIC 3.5)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. CHAR (Begriffsklärung).
CHAR (BASIC 3.5)
Syntax: CHAR [<Farbquelle>], <Spalte>, <Zeile>, <Ausgabezeichen> [, <Invers>]
Parameter
<Farbquelle>: Zahlenausdruck
<Spalte>: Zahlenausdruck
<Zeile>: Zahlenausdruck
<Ausgabezeichen>: Zeichenkettenausdruck
<Invers>: Zahlenausdruck
Einordnung
Typ: Anweisung
Kontext: Grafik-, Textverarbeitung
Aufgabe: Zeichen auf Grafik- oder Textschirmen darstellen
Abkürzung: chA
Token: $e0 (224)
Verwandte Befehle

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl CHAR ab Commodore BASIC V3.5 oder höher.


Die Anweisung CHAR (engl. für Zeichen) dient zur Ausgabe eines Textes an einer bestimmten Position sowohl auf den Text- als auch den Grafikbildschirm.

Parameter[Bearbeiten | Quelltext bearbeiten]

CHAR hat folgende Parameter:

  • <Farbquelle>: Ein optionaler, ganzzahliger Wert von 0 bis 1 im Text- und Hires-Modus bzw. von 0 bis 3 im Multicolor-Modus. Vorgabewert ist 1, Werte außerhalb des erlaubten Bereiches lösen einen ?ILLEGAL QUANTITY ERROR aus. Die Auswirkung dieses Parameters hängt von der BASIC-Version, dem Darstellungsmodus (Text-, Hires-, oder Multicolor-Modus) sowie dem Wert des Parameters <Invers> ab.
  • <Spalte>: Ein ganzzahliger Wert von 0 bis 39 (bzw. 0 bis 79 im 80-Zeichen-Modus des C128), der die Startspalte angibt, ab der die Ausgabe beginnt. Werte außerhalb des erlaubten Bereiches lösen einen ?ILLEGAL QUANTITY ERROR aus.
  • <Zeile>: Ein ganzzahliger Wert von 0 bis 24, der die Ausgabezeile festlegt
  • <Ausgabezeichen>: Ein Ausdruck mit der Zeichenkette, die ausgegeben werden soll. Unter BASIC 3.5 muss dieser Parameter angegeben werden, darf aber leer sein. Unter BASIC 7.0 ist der Parameter optional; wenn er fehlt wird einfach nur der Textcursor auf die angegebene Position gesetzt. Ist der Parameter keine Zeichenkette, wird ein ?TYPE MISMATCH ERROR ausgegeben. In der Zeichenkette dürfen sämtliche Zeichencodes von 0 bis 255 verwendet werden, Steuerzeichen werden aber nur im Textmodus interpretiert (Ausnahme sind unter BASIC 7.0 die Steuerzeichen zur Umschaltung zwischen Groß/Grafik- und Klein/Groß-Schrift). In den Grafikmodi werden Steuerzeichen wie normale Zeichen ausgegeben, wobei z.B. ein Control-A (ASCII-Code 1) als A (ASCII-Code 65) ausgegeben wird.
  • <Invers>: Das Invers-Flag, ein optionaler Wert zwischen 0 und 255, legt fest, ob die Zeichenkette normal oder invertiert ausgegeben wird. Gerade Zahlen bedeuten normale, ungerade Zahlen inverse Darstellung. Werte außerhalb des erlaubten Bereiches führen zu einem ?ILLEGAL QUANTITY ERROR. Wenn nicht angegeben, wird 0 verwendet. Die genaue Auswirkung dieses Parameters hängt von der BASIC-Version, dem Darstellungsmodus (Text-, Hires-, oder Multicolor-Modus) sowie dem Wert des Parameters <Farbquelle> ab.

Benutzung im Textmodus[Bearbeiten | Quelltext bearbeiten]

Die Auswirkung der Parameter <Farbquelle> und <Invers> hängen von BASIC-Version und Darstellungsmodus ab:

  • Im Textmodus unter BASIC 3.5 werden Farbquelle und Invers-Flag ignoriert, die Ausgabe erfolgt immer in der aktuellen Vordergrundfarbe (Farbquelle 1).
  • Im Textmodus unter BASIC 7.0 wird die Farbquelle ignoriert und die Farbe der Farbquelle 5 (Textfarbe) benutzt. Ein gesetztes Invers-Flag bewirkt die inverse Darstellung des Textes.

Benutzung im Grafikmodus[Bearbeiten | Quelltext bearbeiten]

  • Die Ausgabe von CHAR im Grafikmodus wird nicht durch die eingestellte Bildschirmskalierung beeinflusst.
  • Die Position des Pixelcursors wird durch CHAR nicht verändert.

Aus den folgenden Tabellen kann die Darstellung in den Grafikmodi entnommen werden. Das Schema der formalen Beschreibung sieht folgendermaßen aus:

HP/VP, [F0, F1, F2, F3]
  • HP ist die Farbquelle, die ein gelöschtes (Hintergrund)-Pixel erhält.
  • VP ist die Farbquelle, die ein gesetztes (Vordergrund)-Pixel erhält.
  • F0 - F3: Wird die Farbe einer Farbzelle geändert, so steht hier die Farbquelle, deren aktuell zugewiesene Farbe benutzt wird. Ändert sich die Farbquelle einer Farbzelle nicht, steht hier x. Erhält beispielsweise die Hintergrundfarbe der Farbzelle den aktuell der Vordergrundfarbe zugewiesenen Wert, erhält die Position F0 den Wert 1.

Bedeutung der Parameter im Hires-Grafikmodus[Bearbeiten | Quelltext bearbeiten]

Farb-
quelle
Invers-
Flag
BASIC 3.5 BASIC 7.0
0 0
0/1, [0, 0]

Zeichen wird normal dargestellt, Hinter- und Vordergrundfarbe der Farbzelle werden auf die aktuell eingestellte Hintergrundfarbe geändert (der Text ist also unsichtbar).

0/1, [0, x]

Zeichen wird normal dargestellt, die Hintergrundfarbe (HF) der Farbzelle erhält die aktuell eingestellte HF, die Vordergrundfarbe (VF) bleibt unverändert.

1
1/0, [0, 0]

Zeichen wird invers dargestellt, HF und VF der Farbzelle werden auf die aktuell eingestellte HF geändert (der Text ist also unsichtbar).

1/0, [0, x]

Zeichen wird invers dargestellt, die HF der Farbzelle erhält die aktuell eingestellte HF.

1 0
0/1, [0, 1]

Zeichen wird normal dargestellt, die HF der Farbzelle erhält die aktuell eingestellte HF, die VF der Farbzelle erhält die aktuell eingestellte VF.

0/1, [x, 1]

Zeichen wird normal dargestellt, die HF der Farbzelle bleibt unverändert, die VF der Farbzelle erhält die aktuell eingestellte VF.

1
1/0, [0, 1]

Zeichen wird invers dargestellt, die HF der Farbzelle erhält die aktuell eingestellte HF, die VF der Farbzelle erhält die aktuell eingestellte VF.

1/0, [x, 1]

Zeichen wird invers dargestellt, die HF der Farbzelle bleibt unverändert, die VF der Farbzelle erhält die aktuell eingestellte VF.

Bedeutung der Parameter im Multicolor-Grafikmodus[Bearbeiten | Quelltext bearbeiten]

Farb-
quelle
Invers-
Flag
BASIC 3.5 BASIC 7.0
0 0
2/1, [x, 1, 2, x]

Hintergrundpixel des Zeichens erhalten die Multicolorfarbe 1 (=Farbquelle 2), Vordergrundpixel erhalten die aktuelle Vordergrundfarbe (=Farbquelle 1). Die VF der Farbzelle erhält die aktuelle VF, die MC1 der Farbzelle die aktuelle MC1.

2/1, [x, x, x, x]

Hintergrundpixel des Zeichens erhalten die Multicolorfarbe 1 (=Farbquelle 2), Vordergrundpixel erhalten die aktuelle Vordergrundfarbe (=Farbquelle 1). Die Farbzellen bleiben unverändert.

1
3/1, [x, 1, 2, x]

Hintergrundpixel des Zeichens erhalten die Multicolorfarbe 2 (=Farbquelle 3), Vordergrundpixel erhalten die aktuelle Vordergrundfarbe (=Farbquelle 1). Die VF der Farbzelle erhält die aktuelle VF, die MC1 der Farbzelle die aktuelle MC1.

3/1, [x, x, x, x]

Hintergrundpixel des Zeichens erhalten die Multicolorfarbe 2 (=Farbquelle 3), Vordergrundpixel erhalten die aktuelle Vordergrundfarbe (=Farbquelle 1). Die Farbzellen bleiben unverändert.

1 0
0/1, [x, 1, 2, x]

Hintergrundpixel des Zeichens erhalten die HF (=Farbquelle 0), Vordergrundpixel erhalten die VF (=Farbquelle 1). Die VF der Farbzelle erhält die aktuelle VF, die MC1 der Farbzelle die aktuelle MC1.

0/1, [x, 1, x, x]

Hintergrundpixel des Zeichens erhalten die HF (=Farbquelle 0), Vordergrundpixel erhalten die VF (=Farbquelle 1). Die VF der Farbzelle erhält die aktuelle VF, die anderen Farbquellen bleiben unverändert.

1
1/0, [x, 1, 2, x]

Hintergrundpixel des Zeichens erhalten die VF (=Farbquelle 1), Vordergrundpixel erhalten die HF (=Farbquelle 0). Die VF der Farbzelle erhält die aktuelle VF, die MC1 der Farbzelle die aktuelle MC1.

1/0, [x, 1, x, x]

Hintergrundpixel des Zeichens erhalten die VF (=Farbquelle 1), Vordergrundpixel erhalten die HF (=Farbquelle 0). Die VF der Farbzelle erhält die aktuelle VF, die anderen Farbquellen bleiben unverändert.

2 0
0/2, [x, 2, 2, x]

Hintergrundpixel des Zeichens erhalten die HF (=Farbquelle 0), Vordergrundpixel erhalten die MC1 (=Farbquelle 2). Die VF und MC1 der Farbzelle erhält die aktuelle MC1, die anderen Farbquellen bleiben unverändert.

0/2, [x, x, 2, x]

Hintergrundpixel des Zeichens erhalten die HF (=Farbquelle 0), Vordergrundpixel erhalten die MC1 (=Farbquelle 2). Die MC1 der Farbzelle erhält die aktuelle MC1, die anderen Farbquellen bleiben unverändert.

1
2/0, [x, 2, 2, x]

Hintergrundpixel des Zeichens erhalten die MC1 (=Farbquelle 2), Vordergrundpixel erhalten die HF (=Farbquelle 0). Die VF und MC1 der Farbzelle erhält die aktuelle MC1, die anderen Farbquellen bleiben unverändert.

2/0, [x, x, 2, x]

Hintergrundpixel des Zeichens erhalten die MC1 (=Farbquelle 2), Vordergrundpixel erhalten die HF (=Farbquelle 0). Die MC1 der Farbzelle erhält die aktuelle MC1, die anderen Farbquellen bleiben unverändert

3 0
0/3, [x, 3, 2, x]

Hintergrundpixel des Zeichens erhalten die HF (=Farbquelle 0), Vordergrundpixel erhalten die MC2 (=Farbquelle 3). Die VF der Farbzelle erhält die aktuelle MC2, die MC1 der farbzelle die aktuelle MC1.

0/3, [x, x, x, 3]

Hintergrundpixel des Zeichens erhalten die HF (=Farbquelle 0), Vordergrundpixel erhalten die MC2 (=Farbquelle 3). Die MC2 der Farbzelle erhält die aktuelle MC2, die anderen Farbquellen bleiben unverändert

1
3/0, [x, 3, 2, x]

Hintergrundpixel des Zeichens erhalten die MC2 (=Farbquelle 3), Vordergrundpixel erhalten die HF (=Farbquelle 0). Die VF der Farbzelle erhält die aktuelle MC2, die MC1 der Farbzelle die aktuelle MC1.

3/0, [x, x, x, 3]

Hintergrundpixel des Zeichens erhalten die MC2 (=Farbquelle 3), Vordergrundpixel erhalten die HF (=Farbquelle 0). Die MC2 der Farbzelle erhält die aktuelle MC2, die anderen Farbquellen bleiben unverändert.

Anmerkungen:

  • Da im Multicolor-Modus nur 4 Pixelspalten pro Zeichen vorhanden sind, wird in diesem Modus jede zweite Pixelspalte des Zeichens ausgelassen.

Beispiele[Bearbeiten | Quelltext bearbeiten]

CHAR 1,0,5,"ABCD"
 





ABCD

Gibt in der 6. Zeile ab der ersten Spalte den Text ABCD aus.