C 64
Tips & Tricks

Fehlersuche leicht gemacht

Fehlersuche in Programmen ist nicht einfach. Der LIST-Befehl des C 64 bietet dabei auch nicht gerade eine große Erleichterung. Dieses Programm schafft Abhilfe.

Wen ärgert es nicht, wenn man nach mühseliger Abtipperei eines Programmlistings feststellen muß, daß es nach »RUN« nicht richtig läuft? Nun geht es an die Fehlersuche und die ist mit dem normalen LIST-Befehl nicht gerade einfach. Wenn man keine gute Reaktion an den Tag legt, sind einige Zeilen oben aus dem Bildschirm verschwunden, bevor man »RUN/STOP« gedrückt hat. Und hat man erst einmal RUN/STOP gedrückt, dann muß man wieder einen neuen LIST-Befehl mit Zeilennummer eingeben, um weiter aufzulisten. Auch die »CTRL«-Taste bringt keinen besonderen Vorteil, denn so oft ich mich auch bemüht habe, das Rennen gegen den C 64 zu gewinnen, bis heute ist es mir noch nicht gelungen, ein gedrucktes Listing mit dem des C 64 so zu vergleichen, daß ich ohne RUN/STOP ausgekommen wäre. Dies gilt im verstärkten Maße, wenn DATA-Zeilen mit im Spiel sind.

Um nun dieses Problem zu lösen, habe ich das LIST-STOP-Programm entwickelt. Mit diesem ist es möglich, ein Listing zu kontrollieren oder zu vergleichen, ohne in Zeitnot zu geraten oder jedesmal erneut einen LIST-Befehl einzugeben.

Ist das Programm aktiviert, dann wird die Routine mit »Pfeil links« und dann RETURN — entspricht CHR$ (95) und CHR$ (13) — aufgerufen. Es wird jetzt solange aufgelistet, bis ein Bildschirm voll ist. Hat der C 64 gestoppt, so ist er wieder im Eingabemodus und man kann alle Editiermöglichkeiten in Anspruch nehmen, um Fehler zu korrigieren, Zeilen einzufügen oder zu entfernen.

Will man nun das Listen weiterlaufen lassen, braucht man nur CHR$ (133) beziehungsweise F1 zu drücken und es geht bei der Zeilennummer weiter, bei der vorher gestoppt wurde (auch wenn etwas verbessert wurde!), so lange, bis wieder ein Bildschirm voll ist.

Zu beachten ist, daß der neue LIST-STOP-Befehl einen LIST-Befehl simuliert und man ihn auch als solchen behandeln kann. Um bestimmte Zeilennummern aufzulisten, kann folgende Eingabe verwendet werden:
»Pfeil links« 20 - 130, RETURN.

Jetzt werden nur die Zeilen zwischen 20 und 130 mit der LIST-STOP-Routine behandelt.

Der normale LIST-Befehl kann weiterhin benutzt werden. Die zwei Zeichen, die mehrfach zu sehen sind (CHR$ (113) und CHR$ (64), ≙ geschlossener Kreis und »Klammeraffe«), sind Steuerzeichen für das Programm (keine Fehler).

Der Grund dafür, daß CHR$ (95) »Pfeil links« als Basic-Befehl erkannt wird, liegt darin, daß mit dem Aufruf des Programms durch SYS 40704 der Vektor für die Basic-Befehlsadresse auf meine eigene Abfrageroutine gesetzt wird. Erkennt diese Routine das Zeichen, wird der LIST-Befehl ausgeführt.

Programmierhinweis

Nachdem das Programm abgetippt wurde, sollte man es unbedingt vor dem ersten Lauf abspeichern, da sich das Basicprogramm selbsttätig löscht, nachdem LIST-STOP aktiviert wurde.

Ist ein Fehler in den DATA-Zeilen so meldet der Computer den Fehler und bricht das Programm ab, damit man den Fehler beheben kann. Als Erleichterung habe ich für jede DATA-Zeile die Summe aufgeführt. Das Maschinenprogramm ist ab dez. 40704 abgelegt und wird durch Zeile 10 vor dem Überschreiben geschützt.

(Manfred Selke/rg)

Prüfsummen

Zeile Summe Zeile Summe
111 1 707 117 2 745
112 1 935 118 1 938
113 2 432 119 2 446
114 2 996 120 1 863
115 2 252 121 2 143
116 2 134 122 226
Die Prüfnummern für die einzelnen DATA-Zeilen
0 rem ************************
1 rem ***    list - stop   ***
2 rem ***       c-64       ***
3 rem ***     (c) 1984     ***
4 rem *** by manfred selke ***
5 rem ***   neumuenster    ***
6 rem ************************
7 rem
8 rem
10 poke56,159:poke55,0:clr:a=40703
20 a=a+1:readb:s=s+b:ifb=-1then40
30 pokea,b:goto20
40 ifs<>24817thenprint"fehler in data's !":end
50 sys40704:new
100 rem
105 rem *** data's fuer list-stop ***
110 rem
111 data169,19,141,8,3,169,159,141,9,3,141,1,3,169,185,141,0,3,96,32,115
112 data0,201,95,208,33,169,155,141,0,2,169,105,141,20,3,169,159,141,21,3
113 data169,81,141,254,159,141,112,7,169,24,133,214,32,121,0,76,231,167,201
114 data64,208,246,173,254,159,201,81,208,239,173,252,159,133,20,173,253
115 data159,133,21,32,19,166,173,250,159,133,20,173,251,159,133,21,169,81
116 data141,112,7,169,24,133,214,76,201,166,173,0,4,201,81,208,39,165,20
117 data141,250,159,165,21,141,251,159,160,2,177,95,141,252,159,200,177,95
118 data141,253,159,169,0,133,20,133,21,169,32,141,0,4,169,154,141,20,3,76
119 data49,234,165,197,201,4,208,247,169,105,141,20,3,32,68,229,169,64,141
120 data119,2,169,13,141,120,2,169,2,133,198,76,49,234,24,165,20,5,21,201
121 data0,240,15,169,49,141,20,3,169,234,141,21,3,169,0,141,254,159,76,139
122 data227,0,-1
Der Basic-Lader von »LIST-STOP«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →