★ APPLICATIONS ★ PROGRAMMATION ★ BASMON - Ein Utility für Basic-Programmierer|Schneider Magazin) ★ |
BASMON (Schneider Magazin) | Applications Programmation |
Sicher wollten auch Sie schon einmal ein größeres Basic-Programm debuggen und erinnern sich nur noch ungern an die dabei auftretenden Probleme. Damit Sie das nächste Mal nicht wieder verzweifeln müssen, stellen wir Ihnen heute BASMON als "Anwendung des Monats” vor. Dieses für jeden Basic-Programmierer nützliche Utility wurde von Markus Bühler erdacht. Er ist 20 Jahre alt und studiert Elektrotechnik an der Universität Karlsruhe. Sein erster Rechner war ein CPC 464, mit dem er heute noch arbeitet. Hier programmiert er inzwischen eifrig in Maschinensprache, da ihm Basic zu langsam wurde. Vielseitig wie Markus nun einmal ist, besitzt er neben seinem Schneider-Rechner noch einen Amiga 2000. Jeder Assembler-Programmierer kennt Monitorprogramme und Debugger, die bei der Fehlersuche eine große Hilfe darstellen. Man kann damit Speicherbereiche und Register ansehen, Breakpoints setzen, Routinen im Einzelschrittmodus testen usw. In Basic läßt sich zwar mit den Befehlen STOP und TRON auch auf Fehlersuche gehen, doch ist das teilweise sehr umständlich und mühsam. Mit BASMON eröffnen sich nun ähnliche Möglichkeiten wie mit einem Debugger für Maschinenspracheprogramme. Man kann Breakpoints setzen, Programme im Einzelschritt ausführen lassen, Variabein ansehen und verändern. Als besonderer Leckerbissen wird nach Verlassen des Monitors der ursprüngliche Bildschirminhalt wiederhergestellt, so daß das Programm weiterlaufen kann, als ob man es nie unterbrochen hätte. Es ist sogar möglich, Basic-Zeilen während des Programmablaufs zu ändern oder einzufügen. Mit ein paar Befehlen läßt es sich dann an der alten Stelle fortsetzen. Weitere Möglichkeiten erfahren Sie bei der Beschreibung der Befehle. Besitzer von VDOS 2.0 müssen allerdings eine kleine Einschränkung in Kauf nehmen. Befehle wie ”ERA, TEST.BAK” funktionieren nicht mehr in gewohnter Weise. Man muß sie wie bei AMSDOS oder VDOS 1.0 folgendermaßen eingeben: a$ = ”TEST.BAK”:|ERA, @a$Nach Verlassen des Monitors können Sie mit POKE &AC04, &C3 die alte Funktionsweise wiederherstellen. BASMON enthält eine Relozierroutine, d. h. Sie können das Programm an jede beliebige Speicherstelle oberhalb von &4000 laden. Durch CALL ladeadresse wird es als erstes reloziert, und dann erfolgt die Initialisierung der RSX-Befehle, Da man die Relozierroutine nun nicht mehr benötigt, verkürzt es sich um &300 Byte. Sie sollten es nicht an eine zu hohe Adresse laden, weil sonst der Floppy-Bereich überschrieben werden könnte. Nach der Initialisierung stehen Ihnen drei RSX-Befehle zur Verfügung: |Window, linke Spalte, rechte Spalte, erste Zeile, letzte Zeile, @x%, Modus Mit diesem Kommando können Sie den Bildschirmausschnitt festlegen, in dem Sie mit BASMON arbeiten. Die Koordinaten linke Spalte und rechte Spalte entsprechen denen in Mode 0, d.h. , Spalte 15 entspricht in Mode 2 der Spalte 60, in Mode 1 der Spalte 30 und in Mode 0 der Spalte 15. BASMON benötigt zur Speicherung des Bildschirminhalts natürlich etwas Platz. Es berechnet diesen selbständig und legt ihn unterhalb des Programms. In x% wird dann die Adresse zurückgegeben, an welcher der Bildschirmspeicher beginnt. Sie können dann mit "Memory x% -1” den verfügbaren Basic-Speicher neu setzen. Die Variable x% sollten Sie vor Aufruf des Befehles initialisieren (z.B. mit x% = 10). Je größer Sie den Bildschirmbereich für das Window wählen, desto größer wird, der erforderliche Speicherplatz. Mein Vorschlag wäre folgender: |window, 5, 15, 10, 16, @x%, 2. So haben Sie ein ausreichend großes Window, und es wird nicht allzuviel Speicherplatz benötigt. Modus ist die letzte Variable des Befehls. Mit ihr können Sie festlegen, in welchen Modus beim Einsprung in BASMON gewechselt wird.(Beim Wechseln des Bildschirmmodus wird der Bildschirm natürlich nicht gelöscht.)
Wählt man z.B. Modus = 2, so läßt es sich auch, wenn ein Programm in Mode 0 läuft, in einem relativ kleinen Window vernünftig arbeiten. Der ursprüngliche Bildschirminhalt sieht dann zwar etwas seltsam aus, aber man kann immer noch das meiste erkennen. Nach Verlassen von BASMON wird natürlich wieder der ursprüngliche Modus eingeschaltet. |SCREENRAM, adresse Mit diesem Befehl können Sie die Adresse für den Bildschirmspeicher neu festlegen, falls Sie den von Window errechneten Speicherplatz für andere Maschinenprogramme benötigen. (Der für den Bildschirm benötigte Speicherplatz errechnet sich nach folgender Formel: Speicherplatz = Ladeadresse + &300 -x%.) |BASMON Mit diesem Kommando springen Sie nach BASMON, in dem drei Zeiger auf das Basic-Programm existieren, die in der folgenden Beschreibung der Anweisungen auftauchen werden. Deshalb wollen wir sie auch kurz erklären:
Wenn Sie sich im BASMON befinden, können alle Ba-sic-Befehle außer den Sprunganweisungen (GOTO, GOSUB, RETURN usw.) im Direktmodus ausgeführt werden. Ihre Syntax entspricht genau der im Ba-sic-Interpreter. Es läßt sich aber immer nur ein Kommando auf einmal ausführen, d.h., eine Verknüpfung mit: ist nicht möglich. Dies gilt auch für SWAP. BASMON-Befehle können in Klein- oder Großbuchstaben eingegeben werden. Sie dürfen keine Leerzeichen enthalten. Dies gilt vor allem für diejenigen mit gleichem Namen wie Basic-Kommandos (z.B. LIST oder EDIT), weil diese sonst als solche interpretiert werden und nach der Ausführung in den Basic-In-terpreter zurückspringen. Ein Befehl wird immer mit ENTER abgeschlossen, d.h. ohne Leerzeichen und ohne Parameter! Sollte er Parameter erwarten, erscheint nach ENTER der Cursor um ein Zeichen versetzt nochmals in der gleichen Zeile. Sie können nun die Parameter eingeben. Hierzu zwei Beispiele: LIST< ENTER >30-50< ENTER > Die Zeilen 30 bis 50 werden ausgegeben. EDIT< ENTER >50< ENTER > Zeile 50 wird editiert. Normalerweise wird der RSX-Befehl |BASMON in ein Basic-Programm eingebaut. Sie können ihn aber auch im Direktmodus aufrufen. Dann ist aber der BasicPC auf die erste Zeile zu setzen. Die Befehle
Bei der Einfügung und Änderung (auch mit EDIT) von Basic-Zeilen werden sämtliche Zeiger auf den Programmanfang gesetzt und sämtliche Breakpoints gelöscht. Das müssen Sie unbedingt beachten! Nun noch ein Tip, wenn Ihnen die Farbeinstellungen nicht gefallen sollten. Sie können diesem mit ein paar Pokes ändern: Hintergrund: POKE adr+&baa,x:POKE adr+&bab,x Bei adr handelt es sich um die Adresse, an die Sie BASMON geladen haben. Markus Bühler, Schneider Magazin
|