APPLICATIONSPROGRAMMATION ★ BASMON - Ein Utility für Basic-Programmierer|Schneider Magazin) ★

BASMON (Schneider Magazin)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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.)

  • Modus = 0 -> Beim Aufruf des Monitors wird immer Mode 0 eingeschaltet (wenig sinnvoll). Modus = 1 -> Beim Aufruf des Monitors wird immer Mode 1 eingeschaltet.
  • Modus = 2 -> Beim Aufruf des Monitors wird immer Mode 2 eingeschaltet.
  • Modus > 2 -> Beim Aufruf des Monitors wird der vom Hauptprogramm eingeschaltete Mode beibehalten.

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:

  1. BasicPC oder PC: Er zeigt auf den nächsten auszuführenden Befehl.
  2. ListPC: Er zeigt auf den nächsten zu listenden Befehl.
  3. LListPC (LastListPC): Er zeigt auf den letzten gelisteten Befehl.

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

NDer Befehl, auf den der BasicPC zeigt, wird ausgeführt. Danach weist der BasicPC auf den nächsten. Damit ist es möglich, Programme im Einzelschritt durchzugehen.
STEPDas Programm wird Schritt für Schritt ausgeführt, beginnend mit dem Befehl, auf den der BasicPC zeigt. Nach jedem Kommando wird angehalten und auf einen Tastendruck gewartet. Mit ESC läßt sich dann die Ausführung abbrechen.
GODas Programm wird ab der Stelle fortgeführt, auf die der PC zeigt. Trifft es auf einen Breakpoint, erfolgt ein Abbruch und die Rückkehr nach BASMON.
CONTDas Programm wird ab der Stelle fortgeführt, auf die der PC zeigt. Breakpoints werden jedoch nicht erkannt, weil der Basic-Interpreter wieder die Kontrolle über das Programm übernimmt.
BREAKMit diesem Befehl können Sie Breakpoints ansehen, setzen, ändern und löschen. Nachdem Sie ihn eingegeben haben, wird der erste Breakpoint angezeigt. Drücken Sie ENTER, so wird dieser auf den LListPC gesetzt, d.h. auf das letzte gelistete Kommando. Wurde noch kein L- oder LN-Befehl ausgeführt, so wird der Breakpoint gelöscht. Wenn Sie den ListPC mit LISTPC verändert haben, so zeigt der LListPC immer noch auf den zuletzt gelisteten Befehl! Mit LN können Sie ihn entsprechend verändern. Drücken Sie DEL, wird dieser Breakpoint gelöscht; über ESC gelangen Sie wieder in die Haupteingabeschleife. Betätigen Sie eine beliebige andere Taste, wird dieser Breakpoint nicht verändert, und der nächste gelangt zur Anzeige.

Achtung: Breakpoints werden weder beim Verlassen von BASMON noch beim Einsprung von BASMON gelöscht! Wenn Sie im Direktmodus des Basic-Interpreters Zeilen ändern oder neue eingeben, kann es sein, daß Breakpoints verschoben werden und dadurch Unsinn bei der Anzeige der Breakpoints erscheint. Sie müssen dann die falschen neu setzen.

ENDDamit kehrt man wieder ins Basic zurück. Das Programm wird abgebrochen und der Originalbildschirm wiederhergestellt.
STOPsiehe END
SWAPDer ursprüngliche Bildschirminhalt wird so lange eingeblendet, bis Sie eine Taste drücken. Dieses Kommando erwartet eine zweite Eingabe. Sie können einen Basic-Befehl verwenden (z. B. eine Bildschirmmanipulation wie PRINT), der dann auf dem Originalbildschirm ausgeführt wird. Wenn Sie nur ENTER drücken, wird lediglich der alte Bildschirminhalt angezeigt.
LDer nächste auszuführende Befehl gelangt zur Anzeige. Der ListPC und der LListPC werden entsprechend neu gesetzt.
LNDer Befehl, auf den der ListPC zeigt, wird angezeigt. Der LListPC zeigt danach auf dieses Kommando, der ListPC auf das folgende. Sie können damit ein Programm Befehl für Befehl auflisten.
LLDer zuletzt angezeigte Befehl wird noch einmal gelistet (also der, auf den der LListPC zeigt). ListPC und LListPC erfahren keine Veränderung.
BEFPRINT1Bei N und STEP wird der Befehl vor der Ausführung angezeigt. Er bleibt so lange aktiv, bis er mit PRINTOFF abgeschaltet wird
BEFPRINT2Wie BEFPRINT1. Vor der Ausführung des Befehls wird jedoch auf einen Tastendruck gewartet. Mit ESC läßt sich die Ausführung abbrechen.
PRINTOFFDie Befehle BEFPRINT1 und BEFPRINT2 werden abgeschaltet.
LISTPCDieser Befehl erwartet eine zweite Eingabe. Drücken Sie nur ENTER, so wird die Zeile angezeigt, auf die der ListPC gerade zeigt. Geben Sie eine Zeilennummer ein, so wird der ListPC auf diese Zeile gesetzt. Mit LN können Sie sich dann den ersten Befehl dieser Zeile an-zeigen lassen
PCAuch dieser Befehl erwartet eine zweite Eingabe. Drücken Sie nur ENTER, erscheint die Zeile, auf die der BasicPC gerade zeigt. Geben Sie ListPC ein, wird der BasicPC auf das Kommando gesetzt, auf das der LListPC zeigt, d. h. auf das zuletzt gelistete. Geben Sie eine Zeilennummer ein, so wird der BasicPC auf.diese Zeile gesetzt.
LISTEntspricht dem Basic-Befehl LIST. (Bitte beachten Sie das beschriebene Eingabeformat!)
EDITEntspricht dem Basic-Befehl EDIT. (Bitte beachten Sie das beschriebene Eingabeformat!)

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
Schreibstift: POKE adr+&bb8,x:POKE adr+&bb9,x
Border: POKE adr+&bb0,x:POKE adr+&bb1,x

Bei adr handelt es sich um die Adresse, an die Sie BASMON geladen haben.

Markus Bühler, Schneider Magazin

★ PUBLISHER: Schneider Magazin
★ YEARE: 1987 , 1988
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Markus Bühler
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» BASMON    (464-664-6128)    (Schneider  Magazin)    GERMANDATE: 2020-06-07
DL: 203
TYPE: ZIP
SiZE: 17Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Catalogeur de Cassettes (Microstrad)
» Applications » Top Cataloguer
» Applications » DMancat - Catalogue discs
» Applications » Catalog v7
» Applications » Extended Disc Catalogue (Draysoft)
» Applications » RSX Disk-Katalog (CPC Amstrad International)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 535 millisecondes et consultée 852 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.