Magic Disk 64

home to index to text: MD8903-TIPS_+_TRICKS-2.1.txt

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.

Valid HTML 4.0 Transitional Valid CSS!