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 Zeichen- sätze in eigene Programme einbauen?" Dieses Problem wollen wir in dieser Ausgabe ausführ- lich 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 einfar- bigen Zeichen jedes Zeichen nur eine Vorder- und eine Hintergrundfarbe annehmen kann, lassen sich bei den Multicolorzeichen immer vier Farben pro Zeichen pro- grammieren (drei Zeichenfarben und eine Hintergrund- farbe). Die Hintergrundfarbe ist bei allen Zeichen gleich - es ist die Farbe, die sich mit POKE 53281,xx einstellen läßt, also die normale Bildschirmhinter- grundfarbe. 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 kol- lidiert - 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 aller- ersten 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 be- reits 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 einzu- schalten. Sie haben jetzt neben den normalen LOAD- und 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 Start- und 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 128er-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 64er-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 Zeichen- satz ü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 ein- fach. Wollen wir aber diese Schritte in einem Pro- gramm zusammenfassen, so stoßen wir auf große Pro- bleme: Erstens wird nach einem im Programm ausgeführ- ten 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 Print- text 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 Pro- gramm 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 die- ses 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 Pro- grammzeilen 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 gegebenen- falls 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 Pro- gramm "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 SHIFT- und COMMODORE-Taste. Der gleiche Vorgang also wie beim Umschalten von Grafik- auf Kleinschriftzeichen- satz im normalen Betrieb. Den normalen Zeichensatz erreichen Sie übrigens durch POKE53272,21. Ein durch POKE53272,25 oder POKE53272,27 eingeschal- teter 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 erstel- len, der nur aus 64 Zeichen besteht. Diese haben dann die Bildschirmcodes 0 bis 63. Diese Zeichen kann man dann auf vier verschiedenen Hintergrundfarben er- scheinen lassen. Normalerweise ist die Hintergrurnd- farbe 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 Bild- schirm. 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 Hinter- grundfarben 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 Zeichen- sä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ück- seite der Magic Disk außerdem noch ein Zeichensatz, damit Sie gleich "loslegen" können. Und zu Demon- strationszwecken dürfen Sie gleich einmal das Pro- gramm "LADER" starten.