C 64
Tips & Tricks

Variablen-Dump für Anspruchsvolle

Interrupt-gesteuert läßt »Dump« die Ausgabe aller Variablen inklusive Systemvariablen und sämtlicher Arrays zu. Der Variablen-Dump kann aus einem laufenden Programm heraus, entweder auf dem Bildschirm oder einem Drucker ausgegeben werden.

Software-Tools wie TRACE, HELP und so weiter, gibt es in Hülle und Fülle. Eine komfortable Dump-Routine, die neben den normalen Variablen auch die Systemvariablen (TI$, TI, ST) und die Arrayvariablen ausgibt, haben wir bisher leider in keiner einzigen Basic-Erweiterung finden können. Aber gerade durch falsche Wertzuweisungen an Variable innerhalb von Basic-Programmen können Fehler auftreten, die nur sehr schwer zu orten sind. Des Rätsels Lösung ist eine Routine, die auf Tastendruck oder durch SYS-Aufruf einen Variablen-Dump auf Drucker oder Bildschirm zaubert.

Nachdem »Dump« mit dem MSE eingegeben wurde und auf der Diskette gespeichert ist, muß das Programm mit LOAD "DUMP" ,8,1 absolut geladen werden. Die anschließende Eingabe von NEW<RETURN> sorgt dafür, daß die Basic-Zeiger auf die richtigen Werte eingestellt werden.

Folgende Ausgabemöglichkeiten existieren: Nach der Initialisierung mit SYS 51968 (hex $CB00) kann ein Basic-Programm geladen und gestartet werden. Das Basic-Programm darf den Bereich von $CB00 bis $CFFF nicht benutzen, da sonst Dump zerstört wird. Schalten Sie nun auch Ihren Drucker ein. Durch gleichzeitiges Drücken von <CTRL+F1> wird ein Dump der Systemvariablen, der normalen und der Arrayvariablen auf dem Drucker ausgegeben. Die Ausgabe kann mit der <CTRL>-Taste verlangsamt, mit der <CBM>-Taste angehalten und durch Drücken der <SHIFT>-Taste abgebrochen werden. Gibt man vor dem Starten des Basic-Programms »POKE 52025,3« ein, so geht die Ausgabe beim Drücken von <CTRL+F1> auf den Bildschirm. Diese Option ist für die Nichtbesitzer von Druckern gedacht. Dabei wird jedoch der bestehende Bildschirminhalt zerstört. Im Normalfall enthält die Speicherstelle 52025 den Wert 4.

Die Ausgabe erfolgt in der Reihenfolge System-, String-, Real-, Integervariablen und die entsprechenden Arrays. Nach der Ausgabe wird das Basic-Programm fortgesetzt, als wäre nichts geschehen. Während ein Basic-Programm auf Diskette zugreift, sollte diese Art der Dump-Ausgabe vermieden werden, da sich sonst die verschiedenen Kanäle (Drucker, Floppystation) ins Gehege kommen können. In einem solchen Fall sind die Dump-Routinen mittels SYS-Befehle aufzurufen. Unter Simons Basic sind ebenfalls nur Ausgaben auf diese Art möglich, da die Basic-Erweiterung den Interruptvektor verstellt.

Durch entsprechende Aufrufe mit SYS-Befehlen können selbstverständlich auch einzelne Variablentypen angezeigt werden. Der Aufruf der verschiedenen Dump-Routinen ist im Direktmodus und natürlich auch innerhalb von Basic-Programmen möglich:

SYS 52071:  Ausgabe aller Variablen
SYS 52083:  Nur Arrayvariablen
SYS 52093:  Ausgabe von TI$, TI, ST
SYS 52273:  Stringvariablen
SYS 52287:  Realvariablen
SYS 52300:  Integervariablen
SYS 52429:  String-Arrays
SYS 52443:  Real-Arrays
SYS 52456:  Integer-Arrays

Auf diese Weise können an einer bestimmten Stelle des Basic-Programms alle bis dahin definierten Variablen überprüft werden. Auch hier kann die Ausgabe mit der <CTRL>-Taste verlangsamt, mit der Commodore-Taste angehalten und durch Drücken von <SHIFT>abgebrochen werden. Wenn Sie vor einem Dump-Aufruf einen Druckerkanal, zum Beispiel mit »OPEN 1,4,0: CMD 1« öffnen, kann die Variablenausgabe auf einen Drucker gelenkt werden.

(Martin Pietsch/ah)
PROGRAMM : DUMP $CB00     CB00 CE54
-----------------------------------
CB00 : 78 A9 12 A2 CB 8D 14 03   A5
CB08 : 8E 15 03 A9 00 8D 85 CC   33
CB10 : 58 60 AD 8D 02 C9 04 D0   D5
CB18 : 4B A5 C5 C9 04 D0 45 AD   18
CB20 : 85 CC D0 40 EE 85 CC A2   DB
CB28 : FF B5 00 9D 00 CF CA D0   01
CB30 : F8 86 C6 E8 86 CC A9 78   A0
CB38 : A2 04 A0 00 20 BA FF A9   30
CB40 : 00 20 BD FF 20 C0 FF A2   0D
CB48 : 78 20 C9 FF 20 67 CB A9   02
CB50 : 78 20 C3 FF 20 CC FF A2   77
CB58 : FF BD 00 CF 95 00 CA D0   56
CB60 : F8 CE 85 CC 4C 31 EA 20   F4
CB68 : 7D CB 20 31 CC 20 3F CC   5D
CB70 : 20 4C CC 20 CD CC 20 DB   69
CB78 : CC 20 E8 CC 60 A0 06 B9   BF
CB80 : BE CB 20 D2 FF 88 10 F7   FB
CB88 : 20 48 AF 20 21 AB A0 07   BC
CB90 : B9 C5 CB 20 D2 FF 88 10   92
CB98 : F7 38 20 7B AF 20 36 CD   93
CBA0 : A9 0D 20 D2 FF A0 05 B9   BF
CBA8 : CD CB 20 D2 FF 88 10 F7   32
CBB0 : 20 9A AF 20 36 CD A9 0D   A0
CBB8 : 20 D2 FF 4C D7 CB 22 20   6F
CBC0 : 3D 20 24 49 54 20 3D 20   BB
CBC8 : 20 49 54 0D 22 20 3D 20   9C
CBD0 : 20 54 53 A5 B0 F0 2F A9   46
CBD8 : A4 A0 27 20 D2 FF 88 D0   8B
CBE0 : FA A9 0D 20 D2 FF 4C D2   FA
CBE8 : FF 8D 23 CC 8E 24 CC 8C   67
CBF0 : 12 CC A9 00 85 B0 A6 2D   A6
CBF8 : A5 2E 86 58 85 59 C5 30   FC
CC00 : D0 05 E4 2F D0 01 60 A0   4A
CC08 : 00 B1 58 10 1F 85 45 C8   BE
CC10 : B1 58 10 18 85 46 A9 01   28
CC18 : 85 B1 20 7D CD C6 B1 20   48
CC20 : 75 CC 20 AA AA A9 0D 85   90
CC28 : B0 20 D2 FF 20 59 CC D0   3E
CC30 : D6 A9 30 8D 0B CC A0 10   52
CC38 : A9 F8 A2 CC 4C E9 CB A9   36
CC40 : 30 8D 0B CC A8 A9 20 A2   31
CC48 : CD 4C E9 CB A9 10 8D 0B   96
CC50 : CC A8 A9 3F A2 CD 4C E9   60
CC58 : CB 18 A5 58 69 07 85 58   39
CC60 : A5 59 69 00 85 59 C5 30   A7
CC68 : D0 1A A5 58 C5 2F D0 14   FB
CC70 : 68 68 4C D3 CB 20 7D CC   E7
CC78 : A9 3D 20 D2 FF A9 20 20   30
CC80 : D2 FF A9 00 60 00 A6 2F   BB
CC88 : A5 30 86 5F 85 60 C5 32   AA
CC90 : D0 06 E4 31 D0 02 68 68   52
CC98 : 60 8D B9 CC 8E BA CC 8C   D2
CCA0 : B1 CC 20 86 CC 20 4F CD   37
CCA8 : B1 5F 30 14 85 45 C8 B1   A0
CCB0 : 5F 10 0D 85 46 20 7D CD   02
CCB8 : 20 AA AA 20 26 CE D0 F5   E4
CCC0 : A6 9E 86 5F A5 9F 85 60   71
CCC8 : 20 8E CC D0 D8 A9 30 8D   33
CCD0 : AA CC A0 10 A9 F5 A2 CC   79
CCD8 : 4C 99 CC A9 30 8D AA CC   0D
CCE0 : A8 A9 2F A2 CD 4C 99 CC   BC
CCE8 : A9 10 8D AA CC A8 A9 3C   83
CCF0 : A2 CD 4C 99 CC A0 00 0C   A9
CCF8 : A0 02 A9 22 20 D2 FF B1   44
CD00 : 58 F0 18 85 03 C8 B1 58   75
CD08 : 85 04 C8 B1 58 85 05 A0   FF
CD10 : 00 B1 04 20 47 AB C8 C6   70
CD18 : 03 D0 F6 A9 22 4C D2 FF   46
CD20 : 18 A5 58 69 02 48 A5 59   FA
CD28 : 69 00 A8 68 4C 33 CD A5   A9
CD30 : 58 A4 59 20 A2 BB 20 DD   79
CD38 : BD 4C 1E AB A0 00 0C A0   94
CD40 : 02 B1 58 48 C8 B1 58 A8   07
CD48 : 68 20 95 B3 4C 36 CD A0   8B
CD50 : 04 B1 5F 85 0C 85 0B 0A   E3
CD58 : AA A9 00 9D 54 CE CA 10   92
CD60 : FA 20 94 B1 A0 02 B1 5F   65
CD68 : 48 C8 B1 5F AA 68 18 65   86
CD70 : 5F 85 9E 8A 65 60 85 9F   39
CD78 : A0 00 84 B1 60 AD 8D 02   1D
CD80 : C9 02 F0 F9 C9 01 D0 05   B8
CD88 : 68 68 68 68 60 A5 46 29   EA
CD90 : 7F D0 03 20 7D CC 48 A5   E7
CD98 : 45 29 7F 20 D2 FF 68 20   65
CDA0 : D2 FF A5 46 30 04 A9 20   AE
CDA8 : 10 09 A5 45 30 03 A9 24   59
CDB0 : 0C A9 25 20 D2 FF A5 B1   05
CDB8 : F0 01 60 A9 28 20 D2 FF   45
CDC0 : A0 00 B9 55 CE 85 62 B9   8F
CDC8 : 54 CE 85 63 84 04 20 D1   DE
CDD0 : BD C6 0B F0 0B A9 2C 20   C0
CDD8 : D2 FF A4 04 C8 C8 D0 E2   2F
CDE0 : A9 29 20 D2 FF 20 75 CC   F1
CDE8 : 20 21 CE A2 00 A5 0C 0A   12
CDF0 : 18 69 03 A8 FE 54 CE D0   02
CDF8 : 03 FE 55 CE BD 55 CE D1   0F
CE00 : 5F 90 1E D0 09 C8 BD 54   BF
CE08 : CE D1 5F 90 14 88 A9 00   D5
CE10 : 9D 54 CE 9D 55 CE C6 0B   3C
CE18 : F0 07 E8 E8 88 88 4C F4   CB
CE20 : CD A5 0C 85 0B 60 A9 0D   E8
CE28 : 20 D2 FF A2 05 A5 45 10   B8
CE30 : 01 CA A5 46 10 02 CA CA   9A
CE38 : 8A 18 65 58 85 58 A5 59   97
CE40 : 69 00 85 59 C5 9F D0 0B   E8
CE48 : A5 58 C5 9E D0 05 20 D7   C4
CE50 : CB A9 00 60               D0
Listing. »Dump« — eine Variablendokumentation für den Basic-Programmierer
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →