Anhand der Briefe, die wir täglich von unseren Lesern
bekommen, stellen wir manchmal Probleme fest, die bei
verschiedenen Lesern gleichermaßen auftreten. Eines
dieser Probleme ist:" Wie kann ich erstellte Zeichensätze in eigene Programme einbauen?"
Dieses Problem wollen wir in dieser Ausgabe ausführlich behandeln.
Grundsätzlich gibt es zwei Arten von Zeichensätzen:
Einfarbige ( das sind die normalen Zeichensätze mit
einer Zeichenfarbe und einer Hintergrundfarbe, wobei
man die Zeichenfarbe über Steuerzeichen einstellen
kann) und Multicolorzeichensätze. Während bei einfarbigen Zeichen jedes Zeichen nur eine Vorderund eine
Hintergrundfarbe annehmen kann, lassen sich bei den
Multicolorzeichen immer vier Farben pro Zeichen programmieren ( drei Zeichenfarben und eine Hintergrundfarbe) . Die Hintergrundfarbe ist bei allen Zeichen
gleich - es ist die Farbe, die sich mit POKE 53281, xx
einstellen läßt, also die normale Bildschirmhintergrundfarbe.
Zunächst wollen wir erklären, wie man Zeichensätze
überhaupt einladen und aktivieren kann.
Der Normale Commodore-Zeichensatz befindet sich im
ROM und kann dort nicht verändert werden. Wir müssen
uns also einen anderen Platz für unsere Aktivitäten
suchen; irgendwo im RAM. Dabei müssen wir beachten, daß der Zeichensatz nicht mit dem Basicprogramm kollidiert - ein irreparabler Datensalat wäre die fatale
Folge!
Die niedrigste Stelle, an der sich ein Zeichensatz
befinden kann, ist $2000 oder dezimal 8192 . Dahin
wollen wir unseren Zeichensatz auch laden. Wie geht
das?
Nun, Leser der " ersten Stunde", d. h. Leser der allerersten Magic Disk-Ausgabe vom Dezember 1987 erinnern
sich vielleicht noch an ein Programm mit dem Namen
" UNI-LOAD/ SAVE", das wir damals veröffentlichten.
Keine Angst wenn Sie diese Ausgabe nicht besitzen, das Programm befindet sich auch in dieser Ausgabe.
UNI-LOAD/ SAVE ist ein Programm, mit dem man bestimmte
Speicherbereiche abSAVEn kann. Außerdem kann man bereits abgespeicherte Programme an ganz bestimmte
Stellen im Speicher laden. Dazu laden Sie zunächst
das Ladeprogramm, und zwar nicht aus dem Game-Menü, sondern " von Hand" :
LOAD"UNI-LOAD/SAVE",8,1
Nach dem Laden tippen Sie unbedingt NEW ein. Und zum
Schluß folgt noch ein SYS850, um das Programm einzuschalten. Sie haben jetzt neben den normalen LOADund SAVE-Funktionen, die nach wie vor wie gewohnt
funktionieren die erweiterten Funktionen zur Hand:
LOAD" NAME",8,1, Startadresse
SAVE" NAME",8,1, Startadresse, Endadresse
Für Startund Endadresse setzen Sie jeweils die
erste und letzte Adresse des abzusavenden Bereichs
ein; beim Laden nur die Startadresse, also wohin das
Programm geladen werden soll.
Besitzer eines Commodore 128 im 128 er-Modus haben es
hier übrigens viel leichter. Genau diese Funktionen
übernehmen da nämlich die Befehle BLOAD und BSAVE.
Dies sei aber nur am Rande bemerkt. Im 64 er-Modus
stehen leider auch beim C128 diese Befehle nicht zur
Verfügung und man muß sich mit der beschriebenen
Methode begnügen.
Wollen wir z. B. einen Zeichensatz nach 8192(=$2000) laden, so geben wir ein:
LOAD"ZEICHENSATZ",8,1,8192
Nun müssen wir noch den Basic-Anfang hochsetzen, damit ein Basicprogramm nicht den geladenen Zeichensatz überschreibt. Den Basicanfang legen wir nach
$3000 oder dezimal 12288 . So haben wir bei 8192 sogar
Platz für zwei Zeichensätze:
POKE43,1:POKE44,48:POKE12288,0:NEW
Jetzt können wir ein Basicprogramm schreiben, daß den
Zeichensatz garantiert nicht mehr " belästigt" .
So weit so gut. Von " Hand" geht das alles sehr einfach. Wollen wir aber diese Schritte in einem Programm zusammenfassen, so stoßen wir auf große Probleme: Erstens wird nach einem im Programm ausgeführten LOAD-Befehl anschließend ein RUN ausgeführt und
zweitens wird unser Programm spätestens nach den NEW-Befehl gelöscht.
Man bedient sich deswegen eines Tricks. Ein Programm
schreibt die oben angegebene Befehlsfolge als Printtext auf den Bildschirm. Dann wird der Tastaturpuffer
mit einigen CHR$(13) gefüllt, was soviel heißt wie
RETURN. Wenn dann das Programm beendet wird, führt
der Computer nun im Direktmodus diese geprinteten
Zeilen aus und erledigt die Arbeit, die in einem Programm nicht möglich wäre.
Zugegeben, das ganze klingt nicht eben einfach. Wir
haben deswegen für Sie ein kleines " Ladeprogramm" geschrieben, daß Sie unter dem Namen " LADER" von der
Rückseite der Magic Disk laden können. Wenn Sie dieses Programm vor Ihre eigenen Programme hängen, haben
Sie alle Probleme beseitigt.
Das Programm " LADER" lädt zunächst einen Zeichensatz
" ZEICHENSATZ" und danach Ihr Basicprogramm mit dem
Namen " HAUPTPROGRAMM" . Dieses wird dann durch RUN
gestartet. Falls Ihnen die Namen " ZEICHENSATZ" und
" HAUPTPROGRAMM" nicht gefallen, so können Sie sie
natürlich ändern, und zwar in den ersten beiden Programmzeilen vom " LADER" . Setzen Sie einfach Namen
Ihrer Wahl ein. Natürlich müssen diese entsprechenden
Programmnamen sich auch auf der Diskette befinden!
Schreiben Sie zunächst Ihr Basicprogramm wie gewohnt
und speichern Sie es dann auf Diskette unter einem
beliebigen Namen ab. Nun laden Sie " LADER" von der
Magic Disk, geben LIST ein und verbessern gegebenenfalls die Namen " ZEICHENSATZ" und " HAUPTPROGRAMM" durch die von Ihnen gewählten Namen. Nun speichern
Sie den LADER wieder auf Diskete ab. Zum Starten
Ihres Programms starten Sie künftig nur noch das Programm " LADER" .
Nun aber schnell zurück zum Zeichensatzproblem.
Den Zeichensatz haben Sie nun geladen, er steht ab
Speicherzelle 8192 . Um ihn einzuschalten, geben Sie
folgenden Befehl ein:
POKE53272,25
Haben Sie noch einen zweiten Zeichensatz ab $2800( dez 10240) geladen, so können Sie diesen entweder
durch:
POKE53272,27
aktivieren oder einfacher durch Drücken der SHIFTund COMMODORE-Taste. Der gleiche Vorgang also wie
beim Umschalten von Grafikauf Kleinschriftzeichensatz im normalen Betrieb.
Den normalen Zeichensatz erreichen Sie übrigens durch POKE53272,21 .
Ein durch POKE53272,25 oder POKE53272,27 eingeschalteter Zeichensatz ist zunächst einfarbig, d. h. nur
eine Farbe pro Zeichen ist möglich. Jetzt gibt es oft
das Problem, mehrfarbige Zeichen darzustellen. Aber
auch hier gibt es wieder zwei Möglichkeiten:
Erste Möglichkeit: Man kann einen Zeichensatz erstellen, der nur aus 64 Zeichen besteht. Diese haben dann
die Bildschirmcodes 0 bis 63 . Diese Zeichen kann man
dann auf vier verschiedenen Hintergrundfarben erscheinen lassen. Normalerweise ist die Hintergrurndfarbe ja über den ganzen Bildschirm gleich.
Diese vier Hintergrundfarben erreichen Sie durch:
POKE 53265,PEEK (53265) OR 2↑6
Vor diesem Befehl löschen Sie bitte den Bildschirm
mit SHIFT HOME und setzen den Cursor einige Zeilen
nach unten ( durch Drücken von RETURN oder CURSOR
DOWN) . Nun tippen Sie noch folgende Zeile:
FOR I=0 TO 255 : POKE I+1024,I : NEXT
Es erscheinen nun alle 255 Zeichen auf dem Bildschirm. Nun stellen Sie mit dem beschriebenen POKE-Befehl die Betriebsart mit vier Hintergründen ein.
Die Wirkung brauche ich Ihnen nicht zu beschreiben, da sie eindeutig zu sehen ist. Die Hintergrundfarben
können Sie nun durch bePOKEn der Speicherzellen 53281 bis 53284 verändern. Einsetzen können Sie Werte von 0 bis 15 .
Zweite Möglichkeit: Man kann neben den vier Hintergrundfarben auch Zeichen erscheinen lassen, die aus
vier Farben bestehen. Bei der eben beschriebenen
Methode hatte ja jedes Zeichen wieder nur eine Farbe
und eine Hintergrundfarbe. Mit dem Programm " MULTI-CHANGE" aus Ausgabe 12/88 können Sie solche Zeichensätze entwerfen.
Zum Einschalten eines solchen Zeichensatzes - das
vorherige Laden ist natürlich auch hier vorausgesetzt
- geben Sie folgenden Befehl ein:
POKE 53270,PEEK (53270) OR 2↑4
. . . und schon sind die Zeichen echt vierfarbig. Zurück
zu einfarbigen Zeichen gelangen Sie durch:
POKE 53270,200
Die vier Farben können Sie genauso einstellen wie schon bei der ersten Möglichkeit beschrieben: In den Speicherzellen 53281 bis 53284 .
Wir wünschen Ihnen viel Spaß beim Experimentieren mit
Zeichensätzen. Zum Test befindet sich auf der Rückseite der Magic Disk außerdem noch ein Zeichensatz, damit Sie gleich " loslegen" können. Und zu Demonstrationszwecken dürfen Sie gleich einmal das Programm " LADER" starten.