8. DU 1520 (SCPX) ----------------- 8.1 Einfuehrung --------------- DU (Debugger) unterstuetzt das dynamische Testen von Programmen, die in Z80- Mnemonik geschrieben sind. Bei Vorhandensein einer Symboltabelle (SYM-Datei) fuer das zu testende Programm ist ein symbolisches Testen moeglich. DU wird durch Eintasten eines der nachfolgenden SCP-Kommandos: (1) DU (2) DU p.COM (3) DU p.COM p.SYM geladen, wobei p den Namen des mit DU zu ladenden und zu testenden Programmes bezeichnet, bei (3) wird zusaetzlich die Symboltabelle geladen. Anstatt einer COM-Datei kann auch eine beliebige andere Datei geladen werden. Nach dem Start meldet sich DU mit: DU 1520 (SCPX) V x.y U880-Debugger SYMBOLS NEXT PC END nnnn pppp eeee , wobei x.y die Versionsnummer, nnnn die Adresse des naechsten freien Speicherplatzes nach dem zu testenden Programm, pppp den durch das zu testende Programm initialisierten Befehlszaehlerstand und eeee die Adresse des letzten freien Speicherplatzes hexadezimal angibt. Falls keine Symboltabelle geladen wird, entfaellt "SYMBOLS". Wird DU ohne das zu testende Programm geladen, so werden nur die ersten beiden Zeilen ausgegeben. Anschliessend wird durch "#" angezeigt, dass DU eine Kommandoeingabe erwartet. Jedes DU- Kommando besteht aus dem Kommando- Typ (ein Buchstabe) und optionalen Spezifikationen, die durch Leerzeichen oder Komma getrennt sind. Alle Kommando- Zeilen koennen 64 Zeichen lang sein und werden durch <ENTER> beendet. Danach wird das Kommando ausgefuehrt. DU wird mit Warmstart (^C) beendet. Folgende Kommando-Typen enthaelt DU: A (Assemble) Assemblieren C (Call) Aufruf Unterprogramm D (Display) Anzeige Speicher F (Fill Memory) Fuellen Speicher G (Go) Echtzeitabarbeitung H (Hex) Hexa-Rechnung I (Input Line) Vorbereitung Datei-Eingabe L (List Mnemonics) Reassemblieren M (Move) Transport Speicherbereich P (Pass Point) Durchlauf-Punkt R (Read) Dateieingabe S (Set Memory) Speichermanipulation T (Trace) Protokollierung U (Untrace) kein Protokollieren X (Examine) CPU-Registermanipulation 8.2. DU-Kommandos ----------------- Die in den Kommandospezifikationen enthaltenen Zahlen koennen in verschiedener Form dargestellt werden, wobei der Zahlenbereich 0 - 65535 betraegt. Zahlen, die diesen Bereich uebersteigen, werden modulo 65536 interpretiert. - Hexadezimale Darstellung (Standartdarstellung) Verwendet werden die Ziffern 0 - 9 und die Buchstaben A - F. Gross- und Kleinbuchstaben sind gleichberechtigt, z.B. 3f,FF3e. - Dezimale Darstellung Dezimalzahlen werden durch ein vorangestelltes Zeichen "#" ge- kennzeichnet und bestehen aus den Ziffern 0 - 9. Beispiele fuer Dezimalzahlen sind: #48, #9873, #0. - String-Darstellung Verwendet werden ASCII-Zeichen, die in Apostrophe einge- schlossen werden. Der Code des am weitesten rechts stehenden Zeichens wird dabei als niederer Wert angesehen. Beispiele: 'A' ist aequivalent mit dem Hexwert 41 bzw. #65, '*B' entspricht 2A42. Ein Apostroph wird im String als Apostrophenpaar dargestellt: '#''' entspricht dem Hexawert 2327. - Symbol-Darstellung Ist eine Symboltabelle geladen, koennen auch Symbol-Bezuege verwendet werden. Beispiele: .s Adresse des Symbols s @s 2-Byte-Wert von .s =s 1-Byte-Wert von .s Es sei zum Beispiel der Adresse 0104 das Symbol T1 in der Symbol- tabelle zugeordnet und der Inhalt des entsprechenden Speicher- platzes <0104>=14 und <0105>=5A, so entsprechen in Hexa-Darstel- lung .T1 - 0104 @T1 - 5A14 =T1 - 14 - Ausdruecke Ausdruecke bestehen aus einer von links nach rechts verlaufen- den Folge von Hexazahlen, Dezimalzahlen, Strings und Symbol-Be- zugnahmen, verbunden durch die Operanden + oder -. Die einzelnen Werte werden entsprechend der verwendeten Operatoren addiert oder subtrahiert und ergeben den Zahlenwert. Ein fuehrendes Minus, wie in -x, wird wie 0-x verrechnet. Ein fuehrendes Plus, wie +x, wird verrechnet als x'+x, wobei x' der Wert des vorhergehenden Ausdrucks ist. Beispiele: 100 #100+2-'A' .T1+5 Weitere Beispiele werden zu den einzelnen Kommandos gegeben. 8.2.1 A-Kommando ---------------- Das A-Kommando gestattet ein befehlsweises Sofortuebersetzen. Es ist zu beachten, dass die Quellanweisungen in Z80-Mnemonik erfolgen muessen (Unterschiede zur U880-Mnemonik!). Moegliche Formen des A-Kommandos: (1) As (2) A (3) -A Bei (1) beginnt die Assemblierung ab der Speicheradresse s, die nach der Uebersetzung des Befehls um die Laenge des Befehls erhoeht wird. (2) beginnt bei der aktuellen Adresse entsprechend der letzten Assembler-, Trace-, oder Listadresse. Bei Form (3) werden Assembler-, und Disassembler-Teil von DU ueberschrieben, damit wird der freie Speicherbereich um etwa 4K Byte erhoeht. Nachfolgend sind keine A- und L-Kommandos mehr moeglich, bei Protokollierung (T-, U-Kommandos) wird nur der Befehlscode angezeigt. Das A-Kommando wird durch die Eingabe eines Punktes "." anstelle des naechsten Befehls beendet. Beispiele: A100 A#100 A.T1+5 A@T1+@T2-=T3 A+10 Nachfolgend ein Beispiel fuer die Befehlseingabe. Die Operanden koennen aus symbolischen Adressen bestehen, wenn die zugehoerige Symboltabelle eingegeben wurde. Angenommen es wurde A100 eingegeben und die Symbole T1 und T2 existieren, so sind folgende Eingaben gueltig: LD A,B LD A,0FC LD B,#149 LD (HL),'a' LD HL,'ab' JP 200 CALL.T1 JP z,@T2 LD HL,@T1+=T2 Es ist zu beachten, dass keine Pseudo-Operationen erlaubt sind und Marken nicht eingefuegt werden koennen. LD HL,'ab' fuellt H mit 'a' und L mit 'b'. Bei Relativspruengen muss die Angabe der Zieladresse folgen. 8.2.2. C-Kommando ------------------ Das C-Kommando bewirkt das Abarbeiten eines Unterprogrammes im zu testenden Programm im Echtzeitbetrieb bis zum abschliessenden Ruecksprung in den aufrufenden Programmteil. Form des C-Kommandos: Cs s ist dabei die Ansprungadresse des Unterprogrammes. Beispiele: C.T1 C20A 8.2.3. D-Kommando ----------------- Das D-Kommando bewirkt die Anzeige des Inhaltes eines zusammen- haengenden Speicherbereiches in Hexa-Darstellung und als ASCII- Zeichen. In einer Zeile wird eine Speichergruppe bis zur End- adresse f (max. 16 Byte) angezeigt, darunter in der Folgezeile das entsprechende ASCII-Zeichen.Nichtdruckbare Zeichen werden als Punkt dargestellt. Formen des Kommandos: (1) Ds (2) Ds,f (3) D (4) D,f Bei (1) beginnt die Anzeige ab Adresse s, es werden sechs auf- einanderfolgende Speichergruppen (12 Zeilen) angezeigt. Bei (2) endet die Anzeige bei Adresse f. Bei (3) erfolgt die Anzeige entsprechend (1), aber ab dem zuletzt angezeigten Speicherplatz oder dem Inhalt des HL-Registers nach vorherigem T- oder U-Kommando. Bei (4) erfolgt die Anzeige mit der Anfangsadresse wie bei (3) und endet bei der Adresse f. Ausserdem besteht die Moeglichkeit der Anzeige im Adress-Format, d.h. zwei aufeinanderfolgende Bytes werden als Adresse inter- pretiert und (gedreht) in der Darstellung H-, L-Teil angezeigt. Die zugehoerigen ASCII-Zeichen werden speichergerecht angezeigt. Formen: (5) DWs (6) DWs,f (7) DW (8) DW,f (5) bis (8) wirken entsprechend (1) bis (4). Beispiele: DF3F D#100,#200 D.T1,.T2+#20 d,.T1 DW@T1,+#96 8.2.4. F-Kommando ----------------- Das F-Kommando bewirkt, dass einem zusammenhaengenden Speicher- bereich, beginnend mit Adresse s und endend mit Adresse f der Wert d (1 Byte) zugewiesen wird. Formen des Kommandos: Fs,f,d Beispiele: f200,+#10,41 f200,+3,'B' F.T1,.T2,=T1 8.2.5. G-Kommando ----------------- Mit dem G-Kommando erfolgt die Abarbeitung des zu testenden Programmes im Echtzeitbetrieb. (1) G (2) Gp (3) G,a (4) Gp,a (5) G,a,b (6) Gp,a,b (1) startet das zu testende Programm ab der aktuellen Befehls- adresse. Bei (2) erfolgt der Programmstart ab Befehlsadresse p. (3) wirkt wie (1), es wird aber ein temporaerer Haltepunkt bei a gesetzt. Bei (4) wird das zu testende Programm von p bis zur Adresse a abgearbeitet. (5) und (6) wirken wie (3) und (4), es kann aber ein zweiter Haltepunkt b angegeben werden. Beim Erreichen eines Haltepunktes (oder der Abarbeitung eines RST7 im zu testeten Programm) wird seine Adresse in der Form *nnnn angezeigt und die Haltepunkte werden geloescht, d.h. es ist gegebenenfalls eine Neueingabe erforder- lich. Der bei der Haltepunkt-Adresse beginnende Befehl ist dabei noch nicht ausgefuehrt. Sind Pass-Punkte gesetzt (s. P-Kommando), so erfolgt bei (1) bis (6) bei jedem Durchlauf eines Pass-Punktes eine Protokollierung. Hat der Pass-Zaehler den Wert 1, so erfolgt ein Programmstop und damit das Beenden des G-Kommandos. Soll bei gesetzten Pass- Punkten ein Protokollierung nur erfolgen, wenn der zugehoerige Pass-Zaehler den Wert 1 besitzt, so ist analog (1)-(6) (7)-G... als Kommando einzugeben. Ist ein Haltepunkt in einem Unterprogramm erreicht, so setzt G, einen naechsten Haltepunkt an der Rueckkehradresse in dem das Unterprogramm aufrufenden Programm. Beispiele: G100 G100,103 G.T1,.T2,#1416 G@T1+=T2,.A1,.A2 -G100,+20,+20 8.2.6. H-Kommando ----------------- Das H-Kommando unterstuetzt das Rechnen mit Hexawerten. Formen des Kommandos: (1) Ha,b (2) Ha (3) H (1) liefert die hexadezimale Summe (a+b) und die Differenz (a-b) der Operanden a und b. (2) liefert den Wert von a im Format hhhh .ssss #dddd ,wobei hhhh den Hexawert von a, .ssss die symbolische Adresse (falls vorhanden) und #dddd den Dezimalwert bezeichnen. (3) gibt eine Liste der Adressen jedes Elements der Symboltabelle (falls vorhanden) hexadezimal aus. Beispiele: H200,300 H#2000,#1617 H.T1+=T2,@T3-#10 H#67 H@T1+=T2-5 8.2.7 I-Kommando ---------------- Das I-Kommando initialisiert den Standart-Dateisteuerblock (FCB) mit Dateinamen c1,c2,...cn: Form des Kommandos: Ic1,c2,...cn Wird als Datei eine COM- bzw. SYM-Datei spezifiziert, kann ein zu testendes Programm in Verbindung mit dem R-Kommando eingelesen werden. Beispiele: Ix.dat ix.inp y.out Ia:x.inp b:y.out ITEST.COM ITEST.COM TEST.SYM 8.2.8. L-Kommando ----------------- Das L-Kommando wird benutzt, um Speicherinhalte in Assembler- sprachmnemonik aus einem bestimmten Programmbereich aufzulisten. Formen des Kommandos: (1) Ls (2) Ls,f (3) L (4) -L... (1) listet den disassemblierten Maschinencode, beginnend bei s, (2) von s bis f. (3) beginnt ab der letzten gelisteten, assemblierten oder getracten Adresse. (4) wird wie (1)-(3) angewendet,aber Marken und symbolische Operanden werden nicht ausgegeben. Nicht-Z80-Mnemoniks werden als ??=hhhh ausgegeben, wobei hhhh der Hexawert des entsprechenden Speicherplatzes ist. Beispiele: L100 L#1213,#1304 L.TEST L@T1,+20 -L.PUFF+=T1,+'B' 8.2.9. M-Kommando ------------------ Mit dem M-Kommando koennen zusammenhaengende Speicherbereiche verschoben werden. Form des Kommandos: Ms,h,d Das Kommando transportiert den Inhalt des Speicherbereiches mit der Anfangsadresse s und der Endadresse h byteweise nach dem bei der Adresse d beginnenden Bereich. Beispiele: M100,20F,400 M.A,.B,.C M.AB,+FF,.CD M@A+=B,+#30,+200 8.2.10. P-Kommando ------------------ Mit dem P-Kommando koennen bestimmte Stellen im zu testenden Programm als "Pass-Punkte" definiert werden. Jeder Pass-Punkt erhaelt einen Zaehler, den Pass-Zaehler (1-FF), der jedesmal dann dekrementiert wird, wenn das Programm den am Pass-Punkt beginnenden Befehl ausfuehrt. Hat der Zaehler den Wert 1 erreicht, wird der Pass-Punkt zum staendigen Protokollier- und Haltepunkt und behaelt den Zaehler- Wert 1. Im Gegensatz zum temporaeren Unterbrechungspunkt beim G-Kommando unterbrechen die Pass-Punkte mit dem Pass-Zaehler 1 das Abarbeiten des zu testenden Programms n a c h Abarbeiten des am Pass-Punkt beginnenden Befehls. Formen des P-Kommandos: (1) Pp (2) Pp,c (3) P (4) -P (5) -P (1) setzt einen Pass-Punkt auf Adresse p mit dem Zaehler-Anfangs- wert 1, (2) initialisiert den Zaehler-Anfangswert c (1-FF). Form (3) bringt die aktivierten Pass-Punkte mit den zugehoerigen Zaehlerwerten zur Anzeige. (4) loescht den Pass-Punkt auf p, waehrend bei (5) alle Pass- Punkte geloescht werden. Es koennen bis zu 8 Pass-Punkte gleichzeitig aktiviert werden. Beim Erreichen eines Pass-Punktes erfolgt bei Protokollierung eine Ausschrift der Art nn PASS hhhh .ssss ,wobei nn den Pass-Zaehlerwert, hhhh die Pass-Punkt-Adresse und ssss das entsprechende Symbol des Pass-Punktes (falls vorhanden) angeben. Dazu werden die CPU-Register-Inhalte angezeigt, ausser bei den Kommandos -G oder -U, falls der Pass-Zaehler groesser 1 ist. Beispiele: P200,ff P.T1 P@T1+30,#11 -P.T1 8.2.11. R-Kommando ------------------ Das R-Kommando laedt die beim I-Kommando angegeben Dateien. Formen des Kommandos: (1) R (2) Rd (1) liest die mit dem I-Kommando spezifizierte Datei und speichert sie ab 0100H, mit (2) wird die Datei ab 0100H+d gespeichert. Mit der Kommandofolge Ix.COM x.SYM R werden sowohl die COM-Datei x als auch die zugehoerige Symboltabelle in den Speicher geladen. Soll die Symboltabelle nachgeladen werden, ohne die ab 0100H ge- speicherte COM-Datei zu ueberschreiben, dann muss die Kommandofolge I* x.SYM R eingegeben werden. Wenn eine Symbol-Datei spezifiziert wurde, zeigt die Ausschrift SYMBOLS den Start der Leseoperation. Ein Fragezeichen "?" vor der Ausschrift SYMBOLS kennzeichnet einen Fehler beim Lesen des Maschinencodes, waehrend ein "?" nach der Ausschrift einen Fehler beim Lesen der Symbol-Datei anzeigt. Beispiele: ITEST.COM R ITEST.COM TEST.SYM R1000 I* TEST.SYM R-#256 8.2.12. S-Kommando ------------------ Mit dem S-Kommando koennen Speicherplaetze geprueft und beliebig geaendert werden. Formen des Kommandos: (1) Ss (2) SWs Form (1) gibt den Speicherplatz s im Byte-Format an, (2) im Adress-Format, d.h. sei: S100 - 34 101 - 12 , so erfolgt bei unveraenderten Speicherinhalten mit Form (2) folgende Anzeige: SW100 - 1234 . Wenn keine Eingabe erfolgt, wird der Inhalt nicht veraendert und die naechste Adresse angezeigt. Wird ein Wert eingegeben, so ueberschreibt er den vorherigen Inhalt und die naechste Adresse wird angezeigt. Das Kommando endet mit irgendeiner fehlerhaften Eingabe oder der Eingabe eines Punktes "." . Mit (1) koennen auch ASCII-Zeichenketten eingegeben werden. Dies geschieht durch Eingabe eines Anfuehrungszeichens ("), gefolgt von der Zeichenkette. Beendet wird die Eingabe durch <ENTER>. In den folgenden Beispielen werden die Tastatureingaben durch <> gekennzeichnet. <S100> 0100 C3 <34> 0101 24 <#253> 0102 BD < > 0103 4A <"Test> 0107 2E <=T1+5> 0108 14 <.> <sw.T1+#10> 1200 005A <33F> 1202 4A12 <@TEST> 1204 1101 < > 1206 AB1C <0+.T1+=T2-#10> 1208 186B <.> 8.2.13. T-Kommando ------------------ Das T-Kommando gestattet wahlweises Protokollieren der Programm- abarbeitung von 1 bis 65535 Programmschritten. Formen: (1) Tn (2) T (3) Tn,c (4) -T... (5) TW... (6) -TW... Form (1) protokolliert n Programmschritte, wobei der CPU-Status bei jedem Schritt angezeigt wird, waehrend (2) nur einen Schritt protokolliert. Form (3) wird in Verbindung mit den DU-Zusatzfunktionen HIST und TRACE benutzt und "ruft" die Zusatzfunktion c bei jedem Schritt. Form (4) wirkt wie (1)-(3), aber ohne Anzeige der Symbole. Form (5) wirkt ebenfalls wie (1)-(3), aber ohne Protokollierung der durch "call" aufgerufenen Unterprogramme. (6) wirkt wie (5), aber ohne Symbolanzeige. Beispiele: T200 T#10,.COLLECT Das Protokollieren erfolgt bis zum Erreichen von BDOS und wird nach Rueckkehr aus dem BDOS-Teil ins aufrufende Programm fortgesetzt. 8.2.14. U-Kommando ------------------ Das U-Kommando wirkt wie das T-Kommando mit der Ausnahme, dass grundsaetzlich Zwischenprogrammschritte nicht protokolliert werden. Formen des Kommandos: (1) U... (2) -U... (3) UW... (4) -UW... U fuehrt die gleichen Funktionen wie T aus, es wird aber nur der CPU-Status vor Ausfuehrung des ersten Befehls angezeigt. Bei (2) und (4) jedoch erfolgt keine Protokollierung dazwischenliegender Pass-Punkte, wenn deren Zaehler den Wert 1 noch nicht erreicht hat. Beispiele: Ufa24 U#100,.COLLECT UW=SUMME,.COLLECT 8.2.15. X-Kommando ------------------ Mit dem X-Kommando kann der CPU-Status angezeigt und veraendert werden. Formen des Kommandos: (1) X (2) Xf (3) Xr (1) zeigt den CPU-Status im Format: f A=a B=b D=d H=h S=s P=p i y A' B' D' H' X Y an, wobei f den Flag-Status, a den Inhalt des Akkumulators A, b den Inhalt des Doppelregisters BC, d den DE-Inhalt, h den Inhalt von HL, s den Wert das Stack-Pointers und p den PC-Wert bezeichnet. i stellt die Mnemonik des bei p beginnenden Befehls und y die symbolische Adresse dar. A', B', D', H' bezeichnen den Zweitregistersatz und X, Y die Doppelregister IX und IY. Der Flag-Status wird durch Striche "-" bei Wert 0 dargestellt oder den entsprechenden Kennbuchstaben ( C arry Z ero M inus E ven parity I nterdigit carry) bei Wert 1. (2) ermoeglicht eine Aenderung des Flag-Status, f ist einer der Buchstaben C, Z, M, E oder I. Der aktuelle Status wird angezeigt (entweder "-" oder der entsprechende Buchstabe) und eine 1 oder 0 eingegeben bzw. bei einer Leereingabe der Status beibehalten. (3) ermoeglicht ein Aendern des Registerinhaltes, wobei r einer der Buchstaben A, B, D, H, S, A', B', D', H', X, Y oder P ist. Die Form "=mm" wird bei speicherbezogenen Befehlen (z.B. ADD A,(HL)) angezeigt, wobei mm der Speicherinhalt vor Ausfuehrung des Befehls ist. Beispiele: Eingabe in <> <XM> H <0> <XB> 2A04 <1B23> <XP> 0100 <.TEST+3> 8.3. DU-Zusatzfunktionen ------------------------ Die Zusatzfunktionen von DU gestatten weitere Testmoeglich- keiten. Eine Zusatzfunktion wird zusammen mit DU durch die Eingabe von DU x.UTL geladen, wobei x den Namen der Zusatzfunktion bezeichnet. Nach dem Laden ist die Zusatzfunktion zur Ausfuehrung mit DU bereit und antwortet mit .INTIAL=iiii .COLLECT=cccc .DISPLAY=dddd , wobei iiii, cccc und dddd die Absolutadressen der Eintritts- punkte der Zusatzfunktion fuer die Initialisierung, des Sammeln von Testdaten und die Anzeige der gesammelten Informationen dar- stellen. Eine interne DU-Symbol-Tabelle enthaelt diese drei symbolischen Eintrittsnamen (auch wenn keine SYM-Datei geladen wurde). Eine Zusatzfunktion wird durch die Eingabe von Ciiii oder G.INITIAL neu initialisiert. Die Anzeige der gesammelten Informationen er- folgt durch Cdddd oder C.DISPLAY , waehrend das Sammeln der Daten bei Ausfuehrung eines T- oder U-Kommandos erfolgt, bei dem als zweites Argument die COLLECT- Adresse angegeben ist. Beispiele: Uffff,.collect U#1000,AA24 TW500,.COLLECT UW@TEST,.COLLECT Die spezielle Initialisierung, Datensammlung und Anzeige ist von der jeweiligen Zusatzfunktion abhaengig. 8.3.1. HIST ----------- Die Zusatzfunktion HIST erzeugt ein Histogramm der Programmaus- fuehrung zwischen zwei bei der Initialisierung vorgegebenen Punkten. Die Daten werden waehrend der Ausfuehrung eines U- oder T-Kommandos gesammelt und koennen zu beliebiger Zeit angezeigt werden. Nach dem Einlesen oder Neuinitialisierung meldet sich HIST mit der Ausschrift TYPE HISTOGRAM BOUNDS: Es wird die Eingabe zweier Speicheradressen aaaa und bbbb er- wartet, zwischen denen ein Histogramm erzeugt werden soll. Beispiel: <DU HIST.UTL> TYPE HISTOGRAM BOUNDS <100,A00> .INITIAL = AA21 .COLLECT = AA24 .DISPLAY = AA27 <#I TEST.COM TEST.SYM> #R SYMBOLS <Uff,.collect> (Anzeige der Register und Stop nach Kommando-Ausfuehrung) <#C.DISPLAY> (Anzeige Histogramm) <#C.INITIAL> (Histogramm-Grenzen neu festlegen) ........... 8.3.2. TRACE ------------ Die Zusatzfunktion TRACE ermoeglicht ein Rueckprotokollieren von maximal 256 Befehlen, das am aktuellen Unterbrechungspunkt endet. Die Sammlung der entsprechenden Adressen erfolgt nur mit dem T- oder U-Kommando. Es koennen Pass-Punkte waehrend der Datensammlung gesetzt sein. Sie fuehren zur Unterbrechung, wenn der Pass-Zaehler den Wert 1 erreicht hat. Beim Initialisieren werden die gesammelten Informationen geloescht, beim Sammeln der Daten erfolgt das Einspeichern der Adressen der abgearbeiteten Befehle in einen zyklischen Puffer und bei der Anzeige die Rueckprotokollierung in mnemonischer Form mit Symbolbezuegen, wenn sie vorhanden sind. Wurde vor Aktivierung von TRACE das A-Kommando abgearbeitet, so werden nur die Befehlsadressen protokolliert. In diesem Fall ist TRACE durch folgende Eingabe zu laden: <DU> <#-A> <#I TRACE.UTL> <#R> "-A" IN EFFECT, ADRESS BACKTRACE .... Beispiele: (fuer die normale Anwendung) <DU TRACE.UTL> READY FOR SYMBOLIC BACKTRACE <#I TEST.COM TEST.SYM> <#R> <#Ufff,.collect> (Registeranzeige, Stop nach Kommandoausfuehrung) #C.DISPLAY (symbolische Rueckprotokollierung wird angezeigt) ........ 8.4. Abschlussbemerkungen ------------------------- DU benoetigt einen Speicherbereich von etwa 10K Bytes und verschiebt sich selbst direkt unter BDOS (ueberlagert den CCP- Bereich). Die Symboltabelle wird speicherabwaerts ab DU-Beginn angelegt. Entsprechend der Tabellenbelegung veraendert sich die BDOS-Sprungadresse, die den reduzierten freien Bereich kennzeichnet. Die Programme, die einen grossen Speicherbereich benoetigen und die BDOS-Sprungadresse benutzen, sollten nicht vor dem Laden der Symboltabelle gestartet werden. Das "-A"-Kommando erhoeht den freien Bereich um etwa 4K Bytes.