U T I L I T I E S ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Neben Spielen finden Sie auf der Magic disk 64 auch sinnvolle Anwendungen, mit denen Sie mehr aus Ihrem C64 machen kön- nen. Diese Utilities wollen wir Ihnen nun beschreiben, damit Sie sie problem- los bedienen können. Wenn Sie eine be- stimmte Beschreibung suchen, so entneh- men Sie die entsprechende Seitenzahl bitte der folgenden Liste:
Interupt Module 1.0..................02 Protector............................08 Packer...............................10 Sprite Editor........................17 Picture Starter......................18
Interupt Module 1.0 ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Beim Interupt Module 1.0 handelt es sich um eine Basicerweitung, die mit LOAD "INTERUPT MODULE",8,1 geladen und mit SYS 64738 oder dem Drücken eines Reset- tasters gestartet wird. Wenn das geschehen ist, so meldet sich die Erweiterung mit ihrer Einschalt- meldung und einem hellgrauen Bildschirm- hintergrund, der auch durch RUN/STOP- RESTORE nicht geändert wird. Das alte Commodore Basic funktioniert auch weiterhin, es sind jedoch einige Befehle hinzugekommen, die sich zur Sicherung von Programmen als sehr nütz- lich erweisen und oft unerwartete Effek- te erzeugen.
Die neuen Befehle sind:
ON RESET GOTO x ON RUNSTOP GOTO x ON NMI GOTO x ON LIST GOTO x ON BRK GOTO x ON ERR GOTO x
Ganz neu ist die Form dieser Befehle sicher nicht, denn ON a GOTO x gab es bisher ja auch schon. Neu ist aber, daß die Befehle nur einmal am Anfang des Ba- sicprogramms stehen müssen und trotzdem erst dann ausgeführt werden, wenn das entsprechende Ereignis eintritt. Zum Beispiel...
ON RESET GOTO:
Nachdem dieser Befehl durchlaufen wurde, ist der Resettaster 'umprogrammiert'. Wenn von jetzt ab Reset gedrückt wird, um Ihr Programm zu unterbrechen, so wird statt dessen die Zeile angesprungen, die nach dem GOTO festgelegt wurde. ON NMI GOTO: Der Effekt ist der gleiche wie bei Reset, nur daß hier die entsprechende Zeile durchlaufen wird, wenn man die Restoretaste drückt. NMI heißt es nur deswegen, weil die Restoretaste an die NMI-Leitung des C64 angeschlossen ist.
ON BRK GOTO: Wenn Sie schon einmal SYS2048 eingetippt haben, dann wissen sie sicherlich, daß das zu einer Reaktion des Computers führt, die RUN/STOP-RESTORE gleichkommt. Gelegentlich wird dieser Effekt, der immer auftritt, wenn ein Maschinen- programm auf ein Byte mit dem Inhalt 00 stößt, dazu benutzt, um in die Listings von Programmen zu kommen. Mit diesem Be- fehl können Sie Ihr Progamm davor schüt- zen, indem Sie mit dem GOTO eine Stelle in Ihrem Programm bestimmen, zu der der Computer springt, wenn er normalerweise einen solchen 'Break' (-daher der Name BRK) durchführen würde.
ON RUNSTOP GOTO:
Der Sinn ist sicher jedem klar: Wer das Drücken der Run/Stop-Taste verhindern will, der POKEt 808,225. Jetzt gibt es aber zusätzlich noch die Möglichkeit, auf den Versuch, Ihr Programm zu unter- brechen, mit einer eingebauten Routine Ihrer Wahl zu reagieren. ON LIST GOTO: Sinnvoll können alle Schützereien natür- lich nur dann sein, wenn man das Pro- gramm nicht mehr auflisten kann. Dafür ist dieser Befehl. Anstatt zu LISTen wird die festgelegte Programmzeile ange- sprungen.
ON ERR GOTO: Einige mögen diesen Befehl schon kennen. Wenn ein Fehler im Programm auftritt, so wird das Programm nicht mehr abgebro- chen, sondern es wird eine Unterroutine durchlaufen, die im Programm enthalten ist. Lange und breite Erklärungen sind für diese Befehle wohl nicht nötig. Auf der Diskette befindet sich aber ein Bei- spielprogramm, welches die einzelnen Effekte gut demonstriert. Bitte beachten Sie aber, daß die Erweiterung nach ein- maligem Starten des Beispielprogramms aktiv wird und ein Auflisten oder Ähn- liches nicht mehr möglich ist.
Protector ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Mit dem Interupt Module 1.0 haben wir ja schon eine gute Möglichkeit vorgestellt, Basicprogramme vor fremdem Zugriff zu schützen. Hier nun eine weitere: Der Protector wird mit LOAD "PROTEC- TOR",8,1 geladen. Nach NEW sollte das zu schützende Basicprogramm geladen werden. Dann startet man den Protector mit SYS 49152. Es erscheint eine Anzeige auf dem Bildschirm, auf der Sie erkennen können, welche Zeile des Programms gerade ge- schützt wird. Wenn Sie nur einen Teil Ihres Programms schützen wollen, so drücken Sie vor der entsprechenden Zeile RUN/STOP. Ansonsten halten Sie eine be- liebige Taste solange gedrückt, bis das ganze Programm geschützt ist. Ein Auf-
listen ergibt zwar die Darstellung der Zeilennummern, die Zeilen selbst aber sind verschwunden und lassen sich nicht mehr zurückholen. Später eingefügte Zei- len bleiben sichtbar und lassen sich bei Bedarf nochmal mitschützen. Eine Sicherheitskopie des Basicprogramms sollten Sie sich natürlich vorher schon machen.
Packer/Depacker ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Ein weiteres Utility ist in diesem Monat ein sog. "PACKER" bzw. "DEPACKER". Was kann man aber mit diesem Programm anfan- gen? Kurz gesagt: Man kann damit einige Programme erheblich verkürzen, was sich darin äußert, daß diese "gepackten" Pro- gramme weniger kostbaren Speicherplatz auf der Diskette benötigen. Gepackt werden können alle Basic- und Maschinenprogramme, die nicht aus mehre- ren Teilen bestehen, beim normalen Ba- sicanfang (=2049, =$0801) beginnen und nicht mit einem Autostart arbeiten.
Kurz gesagt, alle Programme, die sich nach dem Einschalten des C64 mit LOAD"NAME",8 und RUN starten lassen. Wie kann man nun ein Programm packen? Nun, zunächst schalten Sie bitte Ihren C64 aus und wieder an, damit dessen Ar- beitsspeicher gelöscht wird. Laden Sie dann das Packer/Depackerprogramm mit:
LOAD"PACKER/DEPACKER",8,1
Erscheint die Meldung READY auf dem Bildschirm, so geben sie bitte NEW ein und drücken RETURN. Das Packer/Depacker- paket ist jetzt installiert.
Jetzt schieben Sie die Diskette in das Laufwerk, die das Programm enthält, das Sie packen möchten, und laden das Pro- gramm wie gewohnt:
LOAD"PROGRAMMNAME",8
Nach READY geben Sie jedoch nicht RUN ein, denn das Programm soll ja jetzt nicht starten, sondern gepackt werden. Stattdessen starten Sie den Packer mit: SYS 50000 ... worauf sich der Packer melden müßte und von Ihnen den Namen des gepackten Programms verlangt. Das ist der Name,
unter dem das gepackte Programm auf Diskette abgespeichert wird. Schieben Sie also jetzt erst eine Diskette, die noch genügend Speicherplatz enthält und ohne Schreibschutz ist, in Ihr Laufwerk. Danach geben Sie bitte den gewünschten Namen ein (maximal 16 Zeichen) und drücken RETURN. Hinweis: Es hat sich als praktisch er- wiesen, das gepackte Programm mit einem ähnlichen Namen wie das Originalprogramm zu bezeichnen. Beispielsweise mit dem Originalnamen, dem die Zeichen "P/" vor- angestellt werden.
Haben Sie den Namen eingegeben, beginnt das Programm mit dem Packen. Auf dem Bildschirm stehen drei Hexadezimalzah- len. Die linke ($0801) bezeichnet den Programmstart (entspricht 2049), die rechte Zahl dementsprechend das Pro- grammende. Die Mittlere schließlich zeigt dem Programmierer, an welcher Stelle im Speicher der Packer gerade packt. Hat diese Zahl die rechte Grenze erreicht, so ist Ihr Programm fertig ge- packt und der Computer meldet sich mit READY.
Wenn sie noch weitere Programme packen möchten, so verfahren Sie wie oben be- schrieben. Das Programm "PACKER/DEPAK- KER" müssen Sie nun nicht nochmal laden. Wenn Sie nun einen Blick auf das In- haltsverzeichnis der Diskette werfen, so können Sie feststellen, ob das gepackte Programm kürzer ist als das Original. Ist das der Fall, so hat sich das Packen gelohnt. Das "Entpacken" funktioniert ähnlich. Geben Sie dazu 'SYS 51000' ein, worauf sich der Depacker meldet und den Namen des gepackten Programms verlangt. Dieses wird dann von der Diskette gelesen, ent-
packt und im Speicher des C64 abgelegt. Sie können es nach READY ganz normal mit RUN starten. Zum Packen eignen sich am besten Spiele, die auf einem relativ großen Spielfeld aufbauen. Das legendäre Spiel "FORT APOCALYPSE" ist so ein Programm. Es braucht in der Originalversion 157 Blocks auf der Diskette. In gepackter Version sind es nur noch 90!
Sprite Generator ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Mit diesem wohl einmaligen Programm können Sie im Speicher befindliche Spri- tes verändern und aufstöbern. Natürlich können Sie auch eigene Sprites erstel- len. Vor allem die vielen komfortablen Funktionen wie invertieren, kopieren, spiegeln, scrollen, mischen und überla- gern machen das Programm zum unentbehr- lichen Werkzeug eines jeden Programmie- rers. Weitere Beschreibungen zu Sprite Generator sind nicht nötig, da sich das Programm selbst erklärt.
Picture-Starter ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Fast alle Spiele, die es zu kaufen gibt, sind mit einem Autostarter ausgestattet, d.h. Sie müssen nicht das lästige RUN eingeben, um das Programm zu starten. Das übernimmt der Computer für Sie. Mit dem Picture-Starter können Sie nun endlich auch Ihre Basicprogramme mit einem derartigen Startsystem versehen. Und was noch besser ist: Sie können so- gar noch eine ganze Bildschirmseite aus- geben. Auf dieser Bildschirmseite können dann Aufforderungen wie 'PLEASE WAIT' oder 'BITTE WARTEN' stehen.
U T I L I T I E S ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Ein weiteres kleines Utility diesen Mo- nat ist eine Routine für alle, die auf ihrem C128 vorwiegend im C64-Modus pro- grammieren. Dabei ist es nämlich lästig, daß der extra Zahlenblock rechts von der normalen Tastatur im C64-Modus nicht zu verwenden ist. Das Utility "ZEHNERBLOCK" schafft da Abhilfe. Es wird mit: LOAD"ZEHNERBLOCK",8,1 geladen. Danach geben Sie bitte NEW ein und aktivieren die Zehnertastatur mit: SYS 53100. Sie können jetzt alle Tasten des Zehner- blocks (mit Ausnahme des Dezimalpunktes) sowie die Cursortasten oben verwenden. Ausgeschaltet wird die Zehnertastatur mit RUNSTOP + RESTORE.