Der im Emulator enthaltene Trace auf Quellebene ist ein wirksames Hilfsmittel, Assembler-Programme lauffähig und fehlerfrei zu machen.
Gleichzeitig dient er auch als Anschauungsmaterial, wie die Befehle des TR440 intern arbeiteten.
Im Trace wird jeder Befehl in einer Zeile dargestellt - falls möglich zusammen mit der Zeile, wie er in der Quelle stand (incl. Kommentaren etc.). Dazu werden alle Register protokolliert, die durch ihn verändert wurden.
Das kann wahlweise Befehl für Befehl im Einzelschritt am Bildschirm durchgeführt werden oder komplett als Dateitrace in eine Windows-Textdatei, die anschließend im Standard-Editor angesehen werden kann (Dateien im Unterverzeichnis Trace mit der Extension .TRAC ).
Was alles protokolliert werden soll, kann eingestellt werden. Diese Einstellungen betreffen sowohl das Tracen von laufenden Programmen als auch den TAS-Interpreter. Darüberhinaus gibt es auch noch einige Debug-Steuerungen, die keine Entsprechung im Menü haben. Das Zeichen davor kann jeweils auch während des schrittweisen Traces ohne Menü direkt eingegeben werden :
- 0 allen Trace ausschalten
es wird nichts mehr protokolliert - dient dazu, Befehlssequenzen vom Trace auszuschließen, bis ein bestimmter Trigger eintritt
- 1 allen Trace einschalten
alle Befehle werden mit allen Zusatzangaben protokolliert
- X Normal-Trace einschalten
es werden die Protokollierungen eingeschaltet, die man normalerweise bei der Fehlersuche benötigt (Geschmack des Entwicklers ~ den Zusatz-Steuerungen 0EBQRY)
- - Trace nicht auf Bildschirm
dadurch wird in der Folge nur noch in die Trace-Datei protokolliert (geht dramatisch schneller, weil das Scrollen im Windows-Fenster die meiste Zeit beansprucht)
- Trace ein bei Programmstart
Da man normalerweise die Befehle des Entschlüsslers nicht mit protokolliert haben möchte, wird hierdurch der Trace ausgeschaltet, bis ein Programmstart erfolgt (normalerweise der des eigenen Programms) - dann wird in den Einzelschritt-Trace gewechselt.
- Trace ein bei Alarm/SSR-Fehlern
der Trace wird ausgeschaltet, bis ein Alarm auftritt oder ein SSR-Fehler - dann wird in den Einzelschritt-Trace gewechselt.
- Zusatz-Steuerungen
dadurch werden zusätzliche Protokollierungen eingeschaltet
- Datei-Trace
dadurch wird der Umfang des Datei-Traces eingestellt
Als Zusatz-Steuerungen kann eingestellt werden :
- E Einzelschritt ein
- B Befehle tracen
- Q Quellzeilen zeigen
- R Registeränderungen zeigen
- Y SSR-Protokoll mit Versorgungsblock zeigen
- F Einzelschritt ein bei Alarm/SSR-Fehlern
- T Takt-Anzahlen zeigen
zu jedem Befehl werden die benötigten Takte angezeigt
Trace-Zeilen haben beispielhaft folgenden Aufbau:
Adresse
Befehl
Quellzeile
A-Register
Q-Register
D-Register
H-Register
B-register
Modifikator etc.
Takte
17F2
DC0001
BAR 256,
A=1 000000000100
H=2 000000000010
T=3
17F3
961611
R MCF H,
B=0010
mod1=0010
T=7
17F4
990030
SBA 30,
A=1 0000000000D2
D=1 00000000002E
T=21
17F5
725B66
BQ ZUSTAND1,
Q=3 100005078000
T=11
Die folgenden Zusatz-Steuerungen betreffen Protokolle im SEBtrace-Fenster, nicht im Trace-Protokoll :
- L Lesen tracen
jeder KSP-Lesevorgang wird angezeigt
- S Speichern tracen
jeder KSP-Speichervorgang wird angezeigt
- A Befehlsauslese tracen
die Vorgänge in der Befehls-Auslesephase werden protokolliert
- I Indexzugriffe tracen
jeder Zugriff auf ein Indexregister wird protokolliert
- C Assoziativ-Register tracen
die Vorgänge in den 4 Index-Assoziativ-Registern werden protokolliert
- Z Zweitbefehle tracen
die in Ersetzungs- oder Modifizierungs-Befehlen angestoßenen Zweitbefehle werden zusätzlich protokolliert
- D Dateizugriffe zeigen
alle Zugriffe auf Windows-Dateien werden protokolliert
- P Assembler-Protokoll zeigen
beim Assemblieren selbst werden interne Vorgänge im Emulator-Assembler protokolliert
- M Memory-Alloc/Dealloc zeigen
die internen Vorgänge bei der Bearbeitung der Seiten-Kachel-Tabelle, beim Einmappen von Gebieten etc. werden protokolliert
Steuerungen für den Datei-Trace :
- Dateitrace einschalten
der Trace soll in die Programm-namensgleiche Trace-Datei geschrieben werden (Voreinstellung)
- Dateitrace ausschalten
der Trace soll nicht mehr in die Trace-Datei geschrieben werden
- ohne Backtrace
die Trace-Datei wird immer weiter fortgeschrieben (das kann sehr viel Information werden : ohne Bildschirmprotokoll ca 1 Mio Befehls-Zeilen pro Sekunde)
- normaler Backtrace ~ 1 Mio Befehle (Voreinstellung)
es werden nur maximal die letzten 1 Mio Befehlszeilen in der Trace-Datei gespeichert - die älteren werden jeweils wieder entfernt
- erweiterter Backtrace ~ 10 Mio Befehle
es werden maximal die letzten 10 Mio Befehlszeilen in der Trace-Datei gespeichert - die älteren werden jeweils wieder entfernt
Debug-Steuerungen ohne Menü-Punkt :
In der schrittweisen Programm-Überwachung (Trace) auf dem Bildschirm kann man beim Anhalten folgende Zeichen eingeben :
? | Liste der möglichen Eingabezeichen zeigen |
# | Vorrang-Befehle anfordern |
0 | (Ziffer 0) Trace aus - weiter laufen ohne Trace |
1 | allen Trace einschalten |
- | Trace auf Bildschirm ausschalten - nur noch in Trace-Datei ausgeben |
Return-Taste | einen Befehl weitergehen |
2 .. 9 | zwei bis neun Befehle weiter springen mit Trace |
R | nächsten Befehl und alle Register zeigen |
O | (Buchstabe O) Step-Over : Trace ohne Unterprogramm-Aufruf-Trace |
X | Standard-Trace ein |
. | (Punkt) Wiederholung des letzten Break-Befehles |
ESC-Taste | sofortiger Abbruch des Programmlaufes |
In der Debug-Phase gibt es Vorrang-Befehle, die im schrittweisen Trace mittels # angefordert werden. Die Vorrang-Befehle werden nach Vorrang: eingegeben :
? | Liste der möglichen Vorrang-Befehle zeigen |
Trace xxx | Trace-Bedingungen setzen / löschen |
Trace | Liste der möglichen Trace-Bedingungen zeigen |
Memory | Speicherbelegung zeigen wie beim Menü Memory Aufbau zeigen |
Disasm adr | Speicher befehlsweise ab angegebener Adresse disassemblieren |
Show adr | Speicherinhalt ganzwortweise binär ab Adresse zeigen (bei ungerader Adresse halbwortweise) |
Show X | alle 256 Indexzellen binär anzeigen |
Starte prog | gemerktes / gespeichertes Programm im Vorrang starten (nur in der Grundstufe, solange noch kein Kommando-Entschlüssler läuft, also noch kein #XBG da war) |
Put adr,wert | Halbwort-Wert auf Adresse speichern |
Break adr | Programm-Fortsetzung bis zu der Adresse |
Break befehl | Programm-Fortsetzung bis zu dem Befehl |
Break von:bis | Programm-Fortsetzung, Trace auf Adressbereich beschränken |
Break Cadr | Programm-Fortsetzung bis die Zelle mit der angegebenen Adresse ihren Inhalt ändert |
REG | alle Register zeigen |
ESC-Taste | zurück aus Vorrangstufe |