Funkamateur 01/87 |
In diesem Beitrag wird ein kleines Ergänzungsprogramm für den
"AC1"-Monitor vorgestellt, das bei der Programmtestung
eine schrittweise Abarbeitung des Anwenderprogramms ermöglicht. Es
wurde softwaretechnisch realisiert und nimmt auf
die "AC1"-Monitor-Grundversion bezug.
Die in den "AC1"-Monitor integrierte Breakpunktlogik weist trotz ihrer
Leistungsfähigkeit in der Praxis einige
kleine Nachteile auf, da sie auf folgendem Prinzip basiert: Nach der
Aktivierung des Breakpunktes wird bei der
Abarbeitung des E-(execute)- oder G-(go on)-Befehls die entsprechende
Breakpunktadresse mit dem Systemruf "CALL
BREAKPUNKT (CDDF06H)" beschrieben. Daraus ergibt sich die erste
Einschränkung, das Anwenderprogramm muß in
einem RAM untergebracht sein. Die Testung von Programmen auf ROMs ist
nicht möglich, da o.g. Systemruf nicht in
dem ROM geschrieben werden kann.
Normalerweise wird nach Erreichen des Breakpunktes durch die
Breakpunktroutine der geänderte Speicherinhalt
wieder rekonstruiert, in dem die Breakpunktadresse mit dem
ursprünglichen Speicherinhalt beschrieben wird, und
die Kontrolle dann wieder an den Monitor zurückgeht. Wird aber
durch Programmfehler der Breakpunkt nicht erreicht
(z.B. durch ein "Festfahren" des Programms, falsch angegebene
Sprungdistanzen, das Setzen des Breakpunktes auf eine
Adresse, die nicht das erste Byte eines Befehls ist oder eine
Fehlerausschrift), so wird vorerst die Rekonstruktion
des geänderten Speicherinhalts unterbunden. Diese kann nun nur
noch durch den Wiederaufruf des korrigierten (!)
Programms mittels des J-Befehls, bis der Breakpunkt erreicht wird, oder
durch einen direkten Breakpunktansprung
(J - Breakpunktadresse) mit allen Konsequenzen, die sich aus der
weiteren Programmabarbeitung mit u.U. fehlerhaften
Registerinhalten usw. ergeben können, erreicht werden.
Anderenfalls zerstört jede weitere Benutzung des B-, E-, G-
oder I-Befehls das Anwenderprogramm, das dann manuell korrigiert werden
muß.
Außerdem ist die Benutzung des Breakpunktes in Programmschleifen
mit sehr viel Eingabeaufwand verbunden, da für
jeden Schleifendurchlauf zwei verschiedene Breakpunkte verwendet werden
müssen. Das Setzen eines Breakpunktes auf
einen gerade gearbeiteten Breakpunkt ist nicht möglich! Somit ist
zumindest die Breakpunktbenutzung für kleine
Breakpunktentfernungen bei häufiger Breakpunktbenutzung
unkomfortabel. Der nachfolgend beschriebene Schrittbetrieb
vermeidet die o.g. Nachteile.
Der Schrittbetrieb arbeitet mindestens einen (maximal 256) Befehle des Anwenderprogramms ab und wird softwaretechnisch in Verbindung mit dem CTC-IS, Kanal 0, realisiert. Nach Aufruf des Schrittbetriebs durch den Monitor wird CTC 0 als Zeitgeber mit Interrupterlaubnis initialisiert. Nach Einschreiben der Zeitkonstante wird in das Anwenderprogramm gesprungen. Noch vor Beendigung des ersten Anwenderbefehls meldet der CTC seinen Interrupt an, so daß nach Beendigung jenes Befehls in die CTC-Interruptroutine gesprungen wird. Diese trägt die Registerinhalte in die RSA des Monitors ein und springt nach einigen Korrekturen im Normalstack in die Breakpunktroutine des Monitors. Damit wurde genau ein Befehl des Anwenderprogramms abgearbeitet.
Das in Tabelle 1 abgedruckte Listing wurde für den RAM-Bereich 1880H...18E8H des "AC1" geschrieben. Es ist prinzipiell ROM-fähig und nach Änderung der Speicherplätze 18A8H und 18A9H für den Startpunkt der Interruptserviceroutine CTC 0 in andere Speicherbereiche verschiebbar. Tabelle 2 zeigt die vom Schrittbetrieb verwendeten RSA-Bereiche sowie die im Monitor verwendeten Einsprungpunkte. Das ist bei eventuellen Änderungen des "AC1"-Monitorprogramms zu beachten.
Dieser Schrittbetrieb wird bei der Programmtestung genutzt. In Verbindung mit der Breakpunktlogik hat er sich als eine leistungsfähige Testmöglichkeit erwiesen, speziell in Programmen, die viele Daten miteinander verknüpfen und die stark ineinander verschachtelte Schleifen besitzen. Auch die Möglichkeit, mehrere Befehle "in einem Ritt" abzuarbeiten, ist sehr von Nutzen.
[1] | Heyder, F.: Der Amateurcomputer "AC1", Teil 12, FUNKAMATEUR 34 (1985), H.1, S.42 |
[2] | Heyder, F.: Der Amateurcomputer "AC1", Beitragsfolge 1 bis
12, FUNKAMATEUR 32, 33, 34 (1983 bis 1985) |
[3] | Kieser/Meder: Mikroprozessortechnik, VEB Verlag Technik, Berlin 1985, 3. Auflage |
[4] | Bedienungsanleitung "LC 80", 1. Ausgabe November 1984, VEB Mikroelektronik "Karl Marx" Erfurt, S.20 |
66 KByte | 44 KByte | 29 KByte |
Tabelle 1 | Tabelle 2 | Tabelle 3 |