von Frederik Holst Oft steht man bei der Programmierung von einem Spiel oder Utility vor Problemen, die meistens in Kursen nicht behandelt werden. Bei der Programmierung der beiden Phantastic Journeys sind mir einige davon aufgefallen, weshalb ich meine Erkenntnisse anderen Usern nicht verheimlichen will. Anfangen will ich mit dem Titelscreen bei PJ2. Wie schon in der Laufschrift zu lesen ist, wird hier eine Menge gleichzeitig abgearbeitet, woher auch das Rucken bei langsamen RAM-Chips kommt. Bei mir zu Hause ist davon nichts zu sehen, bei einem anderen User aber schon. Auf jeden Fall kann das Programm nicht mehr mit normalen Mitteln angehalten werden, es erfolgt ein Absturz. Das einzige was half, war ein Warmstart. Der Resetvektor wurde auf eine Laderoutine umgelenkt, die das Hauptprogramm laden sollte, aber ohne Erfolg, das Resetprogramm wurde nicht angesprungen, sondern das Bibo-DOS. Deshalb mußte ich an der Stelle, an der das Bibo-DOS beginnt, einen Sprung zu meiner ROutine machen. Danach aber unbedingt (!) das Bibo-DOS wieder in den alten Zustand bringen. Dann kann man einen Sprung nach $70F machen, die Laderoutine des Bibo-DOS. Diese Methode ist zwar umständlich, aber es erlaubt einem, sehr Zeitaufwendige Dinge zu tun. Das zweite ist das Automapping, was aber einfach zu realisieren ist. Dazu reserviere ich zwei Variablen mit 800 Byte, die eine beinhaltet den Screeninhalt des ganzen Screens, die andere den des bereits erkundeten Screens. Wenn die Figur nun bewegt wird, werden von der ersten Variable drei Bytes über dem Cursor, dann drei auf der Cursorlinie und zum Schluß die drei unter dem Cursor an die gleiche Stelle in die zweite Variable kopiert. In Turbo-Basic sieht das ganze so aus: G und F sind eine Schleifen, die von -1 bis 1 zählen. X1 und Y1 sind Bildschirmkoordinaten. POKE DPEE (88) (Y1+ )*40 X1+F,PEEK(ADR(BILD$)+(Y1+G)*40+X1+F) MOVE DPEEK(88),ADR(BILD2$),800 BILD$ ist das Gesamtbild, BILD2$ das des sichtbaren Screens. Die letzte Anmerkung betrifft den Compiler, mit dem ich bei der Erstellung die meisten Probleme hatte. Das eine Betrifft Variablen bei denen die ersten drei oder vier Buchstaben gleich sind. Jedenfalls hatte ich die Variablen KOOR1 bis KOOR4 und er hat sie immer durcheinandergebracht. Da die Variablentafel voll war, mußte ich auf normale Speicherzellen ausweichen. Für Leute, die Kopierschütze einsetzen folgendes: Wenn Sie mit Hilfe von MC-Routinen einsetzen, die mit USR aufgerufen werden, so müssen Sie von der Variable 256 abziehen, damit im Compiler nacher das Ergebnis mit Turbo-Basic identisch ist. Außerdem scheint der DSOUND-Befehl als Tonquellen-Löscher im Compiler nicht einsetzbar zu sein. Wer sich fragt, wie die Sterne im Titelbild entstehen, dem sei folgendes gesagt: Es handelt sich um ein einziges Missile ! Im DLI wird es in jeder Zeile an eine andere Position gesetzt, die der VBI dann immer um eins erniedrigt. So, ich hoffe, daß diese Tips gerade bezüglich des Compilers, der zwar schnell ist, aber miserabel einzusetzen ist, ihre Schuldigkeit tun werden !