mod.PrintTo4Bit

v1.18 17.03.21


PRINT konvertieren

Hires 1×1-Font

Hires 2×2-Font

Multi 2×2-Font
oben: Modul zum Konvertieren von PRINT-Screens
unten: Zeichensätze aus der Anzeige mit "Show Font":
("5×5" Hires, "Broadway" Hires, "Chrome" Multi)

PrintTo4Bit verwandelt die Bildschirmausgabe eines (speziell vorbereiteten) BASIC-Programms in ein 4Bit-Bild oder in die Beschriftung eines im 4Bit-Speicher bereits vorhandenen Bildes.

Dieser Modifier soll dazu dienen, Blockgrafikbilder (auch PETSCII-Art genannt), in BASIC programmierte Bedienungsoberflächen oder Spiele-Bildschirme (die sich allerdings auf PRINT-bare Zeichen beschränken müssen) auf relativ einfache Weise für eine Begutachtung bei der Programmentwicklung oder bei der Veröffentlichung von Informationsmaterial zur Verfügung zu stellen.


Bedienung des Moduls:

Zuerst ein BASIC-Programm wie unten beschrieben vorbereiten und auf einen Datenträger speichern.

Replace öffnet GoDots Filerequester zum Auswählen dieses BASIC-Programms. Vor dem Laden löscht GoDot hier den 4Bit-Speicher in der Farbe schwarz. Danach wird das geladene BASIC-Programm in den nun leeren Bildspeicher hineinkonvertiert.

Auch mit Overlay wird ein BASIC-Programm geladen, GoDot schreibt aber dessen PRINT-Anweisungen direkt in das im 4Bit-Speicher vorhandene Bild hinein ("beschriftet" das Bild damit, s. Beispiele 1 und 2). Stellen, die per Steuerzeichen übersprungen werden, bleiben unberührt. Hinweis: Wenn das BASIC-Programm den Bildschirm nicht löscht, wird der aktuelle Inhalt des GoDot-Bildschirms mitkonvertiert (also der Bildschirm mit dem PrintTo4Bit-Filerequester).

Mit dem Font-Gadget (steht hier rechts im Screenshot auf "GoDot Font") wählt man einen der drei in GoDot "fest verdrahteten" Zeichensätze aus: den GoDot-Font mit allen Umlauten und den Rahmenzeichen für die Gadgets, den C64-Zeichensatz mit den Grafikzeichen (heißt hier: "C64 Upper") oder den C64-Zeichensatz mit den Kleinbuchstaben (heißt hier: "C64 Lower").

Mit Get aktiviert man diesen Zeichensatz für PrintTo4Bit. Er wird dabei an die Speicheradressse $2000 transferiert (in die GoDot-Bildanzeige also, die dadurch zerstört wird) und dann oben im Requester namentlich ausgewiesen (hier allerdings: "chrome 2×2").

Über das Ld-Font-Gadget lädt man einen systemfremden, neuen Zeichensatz nach GoDot (ebenfalls an die Adresse $2000; Beispiele dafür siehe Bilder oben rechts). In diesem nun aktivierten Zeichensatz werden die Zeichen des BASIC-Programms dann dargestellt. Der Name des geladenen Sets wird oben angezeigt (hier also "chrome 2×2").

Da es bei diesem Modifier um PRINT-Anweisungen geht, sind Zeichen, die mit PRINT nicht darstellbar sind (z.B. Zeichen, die von der Tastatur aus nicht eingegeben werden können), für PrintTo4Bit unbrauchbar. Bei Spiele-Zeichensätzen kommt das z.B. häufiger vor, da die meisten Zeichen dort oft für andere Zwecke verwendet werden (Hintergrund-"Grafik" u.ä.) PrintTo4Bit kann BASIC-Programme mit solchen Zeichen also nicht immer zufriedenstellend verarbeiten.

Der geladene Zeichensatz bleibt so lange erhalten, wie nicht neu gerendert wurde (wenn man zwischendurch das Modul verlässt und nicht neu rendert, bleibt zur Erinnerung die Anzeige des Zeichensatznamens bestehen).

Mit dem Modus-Gadget (es zeigt entweder Multi oder Hires an, hier: Multi) legt man fest, in welchem Modus der nachgeladene Zeichensatz ins 4Bit-Bild eingearbeitet wird. Der Modifier startet bei Multi beim ersten Aufruf des Modifiers mit einer Farbvorgabe, von der wir meinen, dass sie Multi-Fonts gut zur Geltung bringen kann (siehe Bild oben und Beispiel 1). Die Farben können aber individuell gesetzt werden, indem man die jeweilige Farbe in der Anzeige hinter MC1, MC2 und FGr anklickt (dabei wechselt die Farbe zyklisch). Auch BGr ist anwählbar (für die Darstellung bei "Show Font"), der Hintergrund wird jedoch in jedem Fall beim Auslösen des Modifiers (mit Replace oder Overlay) transparent gerendert. Im Modus Hires ist keine Farbwahl möglich und die Gadget-Beschriftung wird ausgegraut.

Der "Show Font"-Button schaltet um auf die Grafikanzeige, damit man sich den Zeichensatz vor dem Konvertieren des BASIC-Programms ansehen kann. Die Zeichendaten befinden sich ausschließlich im oberen Teil des Bildschirms (mal mehr, mal weniger umfangreich, s. Bilder rechts oben). Show Font beachtet bei der Darstellung den gewählten Grafikmodus.

Leave verlässt das Modul. Wenn man nicht neu rendert, bleibt der zuvor geladene Zeichensatz erhalten.


Informationen zum Erstellen der BASIC-Programme:

1. Damit GoDot die Screen-Ausgabe eines BASIC-Programms bearbeiten kann, muss das Programm im Wesentlichen auf die PRINT-Befehle reduziert werden. Außer PRINT-Anweisungen mit nachfolgenden Textkonstanten (Text in Anführungszeichen, keine Stringvariablen!) dürfen nur die BASIC-Befehle POKE, WAIT, GET und IF im Programmtext auftauchen (die allerdings keinerlei Auswirkungen auf das gerenderte Ergebnis haben; was hinter IF folgt, ist ebenfalls völlig egal, ab IF wird überlesen). Die Textkonstanten können dabei beliebige Bildschirmsteuerzeichen zur Positionierung der Schrift oder zur Farbgebung enthalten. Zusätzlich sind die Einrückungsfunktionen TAB und SPC sowie das Tabulatorkomma erlaubt. Ein Semikolon am Ende einer PRINT-Anweisung verhält sich genauso wie in BASIC (der Cursor bleibt in der aktuellen Bildschirmzeile). Beispiel (siehe auch unten, Beispiel 3):

100 PRINT "Dies ist ein Beispiel. "
110 PRINT "Eine Zeile tiefer. ";
120 PRINT "Gleiche Zeile."
130 GET a$: IF a$="" THEN 130

(In der Wirkung identisch wäre hier:   130 WAIT 198,255 )
140 POKE 53281,6: POKE 53280,14: POKE 646,14

Der Text wird (mit den Zeichen des ausgewählten Zeichensatzes) genauso in die Grafik "geschrieben", wie der BASIC-Interpreter das Programm ausführen würde.

2. Für besondere Fälle haben wir die REM-Anweisung mit zusätzlichen Features versehen, mit REM lassen sich nun farbige Texte auf den Bildschirm schreiben, wenn hinter REM als erstes Zeichen das Anführungszeichen folgt. Die vertikale Positionierung erfolgt über den Wert der Zeilennummer (sie darf bei REM+Anführungszeichen daher 24 nicht überschreiten).

Nach einem REM und folgendem Anführungszeichen setzt man zuerst drei Ziffern, deren erste die horizontale Positionierung (in Grenzen) regelt, die anderen zwei setzen die Farben:

Ziffer 1 Ausrichtung 0 = linksbündig (Vorgabe)
1 = rechtsbündig
2 = zentriert
Ziffer 2 Vordergrundfarbe 0 bis f (Vorgabe: 1 = weiß)
Ziffer 3 Hintergrundfarbe 0 bis f (Vorgabe: transparent)
(transparent: alles außer 0 bis f, z.B. "t" oder "<Space>")

So hat man es z.B. leichter, das Zeichen in der rechten unteren Bildschirmecke (das man sonst mit POKE setzen müsste) zu erreichen (s. Beispiel 4 unten).

Darauf folgen ein Doppelpunkt und der gewünschte Text. Für die Ausgabe eines Sterns ganz unten rechts (die Stelle, die von PRINT nicht erreicht werden kann, ohne den Bildschirm zu verschieben), schreibt man also:

24 REM"1e6:*"

Dies erzeugt einen hellblauen Stern (e) auf dunkelblauem Hintergrund (6) in der rechten unteren Ecke (1 in (BASIC- gleich Bildschirm-)Zeile 24).

Hinweise:
· Die Einstellung Multi wirkt nicht auf die Angaben bei REM.
· PRINT und REM arbeiten im Basicprogramm unabhängig voneinander (erst REM, dann PRINT).
· Die Angabe REM":beliebiger text (ohne Parameter) verwendet die zuletzt bei REM+Anführungszeichen gewählten Parameter erneut.
  (Wenn diese Steuersequenz gleich beim ersten Vorkommen so eingegeben wird, erhält man die Voreinstellung).
· Parameter können also weggelassen werden, und zwar von rechts her: REM"26: würde also die Zentrierung und blau als Vordergrundfarbe einschalten, den Hintergrund aber erhalten.
· Der Bildschirm mit der GoDot-Oberfläche wird für die Konvertierung der PRINT-Anweisungen gelöscht und der Fortschritt der Bearbeitung durch Punkte in der Vorgabefarbe (weiß) auf dem Screen markiert.
· Kommen im BASIC-Programm keine Farbsteuerzeichen vor, bleibt es auch hier bei den Vorgabefarben.
· Anders als in BASIC v2 wird bei SPC ein aktiviertes RVS on (Steuerzeichen CTRL-9) beibehalten, was man am echten C64 mit POKE 19,3 am Programmanfang ebenfalls erreichen kann (am Ende - am besten vor einer Warteschleife zur Anzeige des Ergebnisses - mit POKE 19,0 wieder ausschalten).


Beispiele:

Zuerst Beschriftungen: In Multi...

Zeichensatz

Programm
Beispiel 1: Dieses Programm schreibt den Text "GODOT" im
2x2-Multicolor-Zeichensatz "Chrome" von Subchrist unten rechts
in die Ecke des Bildes. Die Doppelzeichen stehen in den BASIC-
Zeilen 140 und 160.
Ergebnis
Beschriftet! (Dies ist ein AFLI-Bild aus dem Demo "Recycle" von Focus, hier von GoDot gerendert in Multicolor.)

...und Hires

Zeichensatz

Programm
Beispiel 2: Die Texte "FRANQUIN" (der Name des Urhebers, Zeilen
125 und 140) und "GASTON" (der Name des Bildes, Zeilen 135 und
160) im 2x2-Hires-Zeichensatz "Broadway" von Subchrist sollen
unten ins Bild geschrieben werden.
Ergebnis
Ebenfalls beschriftet! (Dies ist ein Art-Studio-Bild, gerendert in Hires.)

Tipps:

· Bei 2×2-Zeichensätzen (wie in Beispiel 1 und 2) ist das Leerzeichen meistens anderweitig belegt und dessen Inhalt muss vor dem Auslösen von Replace bzw. Overlay im Zeichensatz an eine andere Stelle verschoben werden, weil sonst alle Leerzeichen auf dem BASIC-Bildschirm mit diesem Zeichen beschrieben würden. Dazu muss man PrintTo4Bit verlassen, EditMask aufrufen, dort in das Editierfenster klicken, mit CBM t in die rechte obere Ecke des Bildes wechseln und viermal CBM CRSR← eingeben. Das Zeichen in der jetzt sichtbaren linken oberen Ecke des Editierfensters ist das Leerzeichen eines normalen Zeichensatzes (also die achtletzte Kachel der obersten Kachelzeile an Position X: 32 Y: 0). Dieses Zeichen wird mit CBM + aufgenommen und danach mit CBM £ gelöscht (ggf. erst CBM m, um auf "Erase" umzuschalten). Damit ist dieses Zeichen jetzt wirklich leer. Im nächsten Schritt tippen wir CBM h (für Home) und fügen dort das eben aufgenommene Zeichen mit CBM - wieder ein, damit es nicht verloren geht.
· Beim Beschriften im Hires-Modus sollte man darauf achten, dass an der Stelle, an der der Text im Bild eingefügt wird, ein einfarbiger Hintergrund vorherrscht, sonst sieht das Ergebnis wegen der Farbbeschränkungen des C64 weniger gut aus.


Dann ganze Bilder: Replace...

Programm
Beispiel 3: Dieses BASIC-Programm war einmal 2. Sieger in einem
Blockgrafikwettbewerb des 64'er Magazins. Übrigens: POKE 19,3
(Zeile 109) sorgt dafür, dass ein RVS on auch bei Ausgabe von SPC
erhalten bleibt. Die Einstellung muss am Ende mit POKE 19,0
rückgängig gemacht werden.
Anzeige
Und dies kommt mit PrintTo4Bit dabei heraus: exakt wie das Original, nur als Hires-Grafik.

...und Overlay

Programm
Beispiel 4a: Der erste Preis sah als Programm so aus.
Anzeige
Und als Bild genau wie hier, in GoDot. Beachten Sie die REM-Zeile, sie füllt das 1000. Byte rechts unten.
Für dieses Bild wurde der 4Bit-Speicher zunächst mit Weiß gelöscht (ClipWorks/ClrClp) und das BASIC-
Programm dann als Overlay geladen.

Programm
Beispiel 4b: Unser Beispielprogramm für den ursprünglichen
ldr.BasicTxt aus der ersten GoDot-Distribution.
Anzeige
Die blaue Schrift rechts unten wurde per REM eingefügt (Zeilen 23 und 24, wobei in Zeile 24 die
Angabe 16 auch hätte weggelassen werden können, da sie erhalten bleibt). Die Hintergrundfarbe
dunkelgrau wurde zunächst vorbereitet wie bei Beispiel 4a die Farbe weiß. Hier wurde eine
Nicht-C64-System-Schriftart verwendet (s. Ld Font).

Ein starkes Werkzeug!


zurück - zum Standardmodifier-Menü

Arndt Dettke
support@godot64.de