]> cloudbase.mooo.com Git - ddt180.git/commitdiff
Remove register name aliases and unused strings t_(tstfl_ZCPS). dissas opt (arg printing)
authorLeo C <erbl259-lmu@yahoo.de>
Mon, 10 Dec 2018 17:03:13 +0000 (18:03 +0100)
committerLeo C <erbl259-lmu@yahoo.de>
Mon, 10 Dec 2018 19:57:30 +0000 (20:57 +0100)
ddt180.z80
doc/ddtz-de-tiny.txt [new file with mode: 0644]

index 4f167f6cc34d60407d9a139e30e11cd1891eb8b6..cd6b3ffd07b27b98adc22ae1c8827665a7e3b695 100644 (file)
@@ -390,6 +390,14 @@ outchar:
        pop ix\r
        ret\r
 \r
+pstr_sel:\r
+       inc b\r
+       jr pstr_sel2\r
+pstr_sel1:\r
+       call sub_0345h\r
+pstr_sel2:\r
+       djnz pstr_sel1\r
+       ;fall thru\r
 pstr:\r
        ld a,(hl)\r
        inc hl\r
@@ -654,14 +662,6 @@ l0339h:
        pop bc\r
        ret\r
 \r
-sel_dc_string:\r
-       inc b\r
-l033eh:\r
-       dec b\r
-       ret z\r
-       call sub_0345h\r
-       jr l033eh\r
-\r
 sub_0345h:\r
        ld a,(hl)\r
        and a\r
@@ -1682,15 +1682,13 @@ cmd_X:
        jp nc,p_cpustat0\r
        call assert_eol\r
        ld a,b\r
-       cp 01eh\r
+       cp 25\r
        jr z,l0c5fh\r
-       cp 01fh\r
+       cp 26\r
        jr z,l0c4fh\r
-       cp 01dh\r
-       jp z,ERROR\r
        ex de,hl\r
        ld hl,t_reg_names\r
-       call sel_dc_string\r
+       call pstr_sel\r
        call l0c33h\r
 \r
        call outbl\r
@@ -1715,7 +1713,6 @@ l0c30h:
        ret\r
 \r
 l0c33h:\r
-       call pstr\r
        call    pstr_inl\r
        dc      '='\r
        ld a,(de)\r
@@ -1800,38 +1797,33 @@ sub_0caeh:
        ret\r
 \r
 t_reg_names:\r
-       DC      'BC'''\r
-       DC      'DE'''\r
-       DC      'HL'''\r
-       DC      'BC'\r
-       DC      'DE'\r
-       DC      'HL'\r
-       DC      'A'''\r
-       DC      'B'''\r
-       DC      'C'''\r
-       DC      'D'''\r
-       DC      'E'''\r
-       DC      'H'''\r
-       DC      'L'''\r
-       DC      'A'\r
-       DC      'B'\r
-       DC      'C'\r
-       DC      'D'\r
-       DC      'E'\r
-       DC      'H'\r
-       DC      'L'\r
-       DC      'IX'\r
-       DC      'IY'\r
-       DC      'SP'\r
-       DC      'PC'\r
-       DC      'X'\r
-       DC      'Y'\r
-       DC      'S'\r
-       DC      'P'\r
-       DC      'I'\r
-       DC      'IP'\r
-       DC      'F'''\r
-       DC      'F'\r
+       DC      'BC'''          ;0\r
+       DC      'DE'''          ;1\r
+       DC      'HL'''          ;2\r
+       DC      'BC'            ;3\r
+       DC      'DE'            ;4\r
+       DC      'HL'            ;5\r
+       DC      'A'''           ;6\r
+       DC      'B'''           ;7\r
+       DC      'C'''           ;8\r
+       DC      'D'''           ;9\r
+       DC      'E'''           ;10\r
+       DC      'H'''           ;11\r
+       DC      'L'''           ;12\r
+       DC      'A'             ;13\r
+       DC      'B'             ;14\r
+       DC      'C'             ;15\r
+       DC      'D'             ;16\r
+       DC      'E'             ;17\r
+       DC      'H'             ;18\r
+       DC      'L'             ;19\r
+       DC      'IX'            ;20\r
+       DC      'IY'            ;21\r
+       DC      'SP'            ;22\r
+       DC      'PC'            ;23\r
+       DC      'I'             ;24\r
+       DC      'F'''           ;25\r
+       DC      'F'             ;26\r
        DB      0\r
 \r
 b_0cfa_start:\r
@@ -1883,18 +1875,8 @@ b_0cfa_start:
        dw      reg_sp\r
        db      003h\r
        dw      reg.pc\r
-       db      003h\r
-       dw      reg.ix\r
-       db      003h\r
-       dw      reg.iy\r
-       db      003h\r
-       dw      reg_sp\r
-       db      003h\r
-       dw      reg.pc\r
        db      000h\r
        dw      reg.i\r
-       db      003h\r
-       dw      l004eh\r
        db      000h\r
        dw      reg.f2\r
        db      000h\r
@@ -2400,19 +2382,6 @@ p_max_high:
 CALL_HL:\r
        jp (hl)\r
 \r
-;-------------------------------------------------------------------------------\r
-\r
-\r
-\r
-\r
-b_176d_start:\r
-       DC      'AF,AF'''\r
-l1773h:\r
-       DC      'DE,HL'\r
-       DC      '(SP),HL'\r
-       DC      '(SP),IX'\r
-       DC      '(SP),IY'\r
-       db      0\r
 \r
 ;-------------------------------------------------------------------------------\r
 ; >>L [startaddr] [endaddr]\r
@@ -2464,21 +2433,13 @@ cmdl_p_line:
        ret\r
 \r
 p_disas_line:\r
-       call outbl2\r
        call out_hl\r
-       call z,outbl\r
-       call outbl\r
+       call outbl2\r
        sub a\r
        ld (con_col),a\r
        push    hl\r
        pop     iy\r
        call p_disas_instr\r
-       ret z\r
-\r
-       ld      c,15\r
-       call    p_goto_col\r
-       ; fall thru\r
-;-------------------------------------------------------------------------------\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -3026,8 +2987,9 @@ l1caeh:
        jr out_rparen\r
 \r
 p_arg_ex_dehl:\r
-       ld hl,l1773h\r
-       jp pstr\r
+       call pstr_inl\r
+       DC      'DE,HL'\r
+       ret\r
 \r
 l1cc1h:\r
        call pstr_inl\r
@@ -3035,8 +2997,9 @@ l1cc1h:
        jp p_arg_hlixiy\r
 \r
 p_arg_ex_afaf:\r
-       ld hl,b_176d_start\r
-       jp pstr\r
+       call pstr_inl\r
+       DC      'AF,AF'''\r
+       ret\r
 \r
 l1cd3h:\r
        call p_arg_hlixiy\r
@@ -3261,18 +3224,15 @@ p_arg_rs:
 p_arg_r0:\r
        and 007h\r
        cp 006h\r
-       jr nz,p_arg_r1\r
+       ld b,a\r
+       ld hl,t_BCDEHL_HL_A\r
+       jr nz,p_arg0\r
        ld a,(isprefix_ixiy)\r
        and a\r
-       ld a,006h\r
-       jr z,p_arg_r1\r
-       ld hl,b_1e78_start\r
-       ld a,(isprefix_ixiy)\r
+       jr z,p_arg0\r
+       ld hl,t_lp_IXIY\r
        dec a\r
-       jr z,l1e4dh\r
-       ld hl,l1e7bh\r
-l1e4dh:\r
-       call pstr\r
+       call p_arg\r
        ld a,(iy+001h)\r
        push af\r
        rlca\r
@@ -3287,13 +3247,8 @@ l1e61h:
        pop af\r
        jp p_arg_nn_rp\r
 \r
-p_arg_r1:\r
-       ld hl,t_BCDEHL_HL_A\r
-       jr p_arg\r
-\r
-b_1e78_start:\r
+t_lp_IXIY:\r
        DC      '(IX'\r
-l1e7bh:\r
        DC      '(IY'\r
 \r
 p_arg_hlixiy:\r
@@ -3326,8 +3281,8 @@ p_arg_cc0:
        ld hl,t_tstfl_ZCPS\r
 p_arg:\r
        ld b,a\r
-       call sel_dc_string\r
-       jp pstr\r
+p_arg0:\r
+       jp pstr_sel\r
 \r
 ;-------------------------------------------------------------------------------\r
 \r
@@ -3430,13 +3385,11 @@ t_BC.DE.HL.SP:
 t_BC.DE.HL.AF:\r
        DC      'BC'\r
        DC      'DE'\r
-\r
        DC      'HL'\r
        DC      'AF'\r
        DB      0\r
 t_HL.IX.IY:\r
        DC      'HL'\r
-\r
        DC      'IX'\r
        DC      'IY'\r
        DB      0\r
@@ -3449,12 +3402,6 @@ t_tstfl_ZCPS:
        DC      'PE'\r
        DC      'P'\r
        DC      'M'\r
-       DC      'NE'\r
-       DC      'EQ'\r
-       DC      'GE'\r
-       DC      'LT'\r
-       DC      'NV'\r
-       DC      'V'\r
        DB      0\r
 t__C_:\r
        DC      '(C)'\r
@@ -3481,7 +3428,7 @@ tc_set_bp:
        add hl,bc\r
        call bp_trace_enter\r
        ld iy,(reg.pc)\r
-       ld hl,b_2039_start\r
+       ld hl,t_branch_instr\r
        call lookup_opc\r
        ccf\r
        ret c\r
@@ -3495,15 +3442,14 @@ l2037h:
 \r
 ;-------------------------------------------------------------------------------\r
 \r
-b_2039_start:\r
+t_branch_instr:\r
        db 0ffh,0ddh,000h       ;Prefix DD\r
        dw l20a7h\r
        db 0ffh,0fdh,000h       ;Prefix FD\r
        dw l20ach\r
        db 0ffh,0edh,000h       ;Prefix ED\r
        dw l20b8h\r
-\r
-b_2048_start:\r
+t_branch_instr0:\r
        db 0ffh,0cdh,000h       ;call mn\r
        dw l2080h\r
        db 0ffh,0c3h,000h       ;jp mn\r
diff --git a/doc/ddtz-de-tiny.txt b/doc/ddtz-de-tiny.txt
new file mode 100644 (file)
index 0000000..9e85e9c
--- /dev/null
@@ -0,0 +1,800 @@
+\r
+\r
+\r
+        ***************************************\r
+        *****                             *****\r
+        *****             DDTZ            *****\r
+        *****                             *****\r
+        ***************************************\r
+\r
+        Ein  Programmentwicklungs- und  Fehlersuch-Werkzeug  fuer Z180-\r
+        Mikrocomputer\r
+\r
+\r
+        Einfuehrung\r
+        ===========\r
+\r
+        Das  DDTZ  ist  ein komfortables Werkzeug  zum  Entwickeln  und\r
+        Austesten von Z180-Programmen, sowie zum Ueberpruefen des Zusam-\r
+        menwirkens zwischen Programm und Hardware-System.\r
+\r
+        Folgende Komponenten sind im DDTZ enthalten:\r
+\r
+        - Disassembler zum Rueck-Uebersetzen von Maschinenprogrammen.\r
+        - Tracer  zum Ausfuehren von Programmen in Einzelschritten.\r
+        - Ausdruck-Interpreter  erlaubt bei allen Kommandos die Verwen-\r
+          dung   von arithmetischen und logischen Ausdruecken mit HEX-,\r
+          Dezimal-,   Binaer- und  ASCII-Werten,   sowie  Speicher- und\r
+          Registerinhalten und Variablen.\r
+\r
+        Das   DDTZ  laeuft  unter   [todo]\r
+        Es  benoetigt eine Z80- oder Z180-CPU und belegt [todo] KBytes\r
+        Speicher.\r
+\r
+        Der Gebrauch des DDTZ\r
+        =====================\r
+\r
+        Der Aufruf  [todo]\r
+        ----------\r
+\r
+       relokation\r
+\r
+          um dem  Anwenderprogramm  die\r
+        durch  das  DDTZ verringerte Speichergroesse  mitzuteilen.  Der\r
+        urspruenglich  vom  DDTZ belegte Speicher  wird  daraufhin  mit\r
+        Nullen geloescht.  [todo]\r
+\r
+        HW-Initialisierung\r
+\r
+        Nach  Ausgabe  des Prompt-Zeichens '>' ist das  DDTZ  betriebs-\r
+        bereit.\r
+\f\r
+        Die Kommandos\r
+        -------------\r
+\r
+        Jede Taetigkeit des DDTZ, z.B. Disassemblieren  eines Programm-\r
+        Abschnittes usw.  wird mit  einem  Kommando\r
+        eingeleitet.  Kommandos koennen  immer dann eingegeben  werden,\r
+        wenn  das  DDTZ  mit dem Prompt-Zeichen '> '  oder  '>>'  seine\r
+        Bereitschaft anzeigt.\r
+\r
+        Kommandos beginnen mit einem der Zeichen ''  [todo] bis 'Z', eventuell\r
+        gefolgt von weiteren optionalen Buchstaben,  sowie  Argumenten.\r
+        Bei  einigen Kommandos sind alle Argumente obligat,  d.h.  alle\r
+        Argumente muessen angegebnen werden. Bei anderen Kommandos sind\r
+        jedoch  die Argumente alle oder zum  Teil  optional,  d.h.  sie\r
+        koennen  entweder explizit angegeben werden,  duerfen aber auch\r
+        weggelassen werden.  Wird eine optionale Anfangsadresse  wegge-\r
+        lassen,  so  wird  die Adresse benutzt,  bei der  das  Kommando\r
+        zuletzt beendet wurde. Wird eine optionale Endadresse weggelas-\r
+        sen, so wird das Kommando (z.B. L oder D) so lange ausgefuehrt,\r
+        bis etwa ein Bildschirm vollgeschrieben ist.  Ein weggelassenes\r
+        optionales  Argument,  hinter  dem weitere Argumente  angegeben\r
+        werden sollen,  muss durch ein Komma ersetzt werden.  Optionale\r
+        Elemente  sind in den folgenden  Kommando-Beschreibungen  durch\r
+        eckige  Klammern  gekennzeichnet (die Klammern sind also  nicht\r
+        mit einzugeben).  Zwischen zwei Argumenten muss ein Blank\r
+        oder ein Komma stehen.\r
+\r
+        Argumente  werden  im allgemeinen  als  HEX-Zahlen  eingegeben,\r
+        duerfen  aber  auch als Dezimal- und Binaerzahlen,  als  ASCII-\r
+        Werte,  Variablen oder in Form arithmetischer Ausdruecke einge-\r
+        geben  werden.  HEX-Zahlen  sind im DDTZ Zahlen,  die  aus  den\r
+        Ziffern  0  bis  9 und den Buchstaben A bis F (oder  a  bis  f)\r
+        bestehen  und nicht durch weitere Zusaetze (z.B.  Buchstabe  H)\r
+        als HEX-Zahl gekennzeichnet sein muessen.  Im Gegensatz zu  den\r
+        meisten  Assemblern sind HEX-Zahlen,  deren erstes Zeichen  ein\r
+        Buchstabe  ist,  im  DDTZ erlaubt.  Dezimal-Zahlen  werden  zur\r
+        Unterscheidung  mit einem Punkt abgeschlossen und  Binaerzahlen\r
+        tragen  am Ende ein doppeltes Anfuehrungszeichen.  Naeheres zur\r
+        Eingabe  von Zahlen,  Variablen und Ausdruecken finden Sie  bei\r
+        der Beschreibung des H-Kommandos und im Anhang.\r
+\r
+        Bei Kommandos,  die eine Start- und eine Endadresse  erfordern,\r
+        kann  anstelle der Endadresse auch der Buchstabe  'S',  gefolgt\r
+        von einer Laengenangabe verwendet werden.\r
+          z.B. bedeutet            D 1000 S 100  oder  D1000s100\r
+               das selbe wie       D 1000 10FF   oder  d1000,10ff\r
+\r
+        Bei  allen Eingaben ist es einerlei,  ob Gross- oder Kleinbuch-\r
+        staben verwendet werden.  Die einzige Ausnahme ist die  Eingabe\r
+        von ASCII-Zeichen und Zeichenketten.\r
+\f\r
+        Die Wiederhol-Funktion\r
+        ----------------------\r
+\r
+        Beim  Gebrauch  des DDTZ kommt es oefters vor,  dass man  einen\r
+        Befehl nicht nur einmal benutzt und danach einen anderen Befehl\r
+        anwendet,  sondern  das man ein und denselben  Befehl  mehrmals\r
+        wiederholen  will.  Moechte  man z.B.  ein Programm in  Einzel-\r
+        schritten ausfuehren lassen, um nach jedem Schritt die Register\r
+        zu inspizieren,  so waere fuer jeden Schritt die Eingabe  eines\r
+        Trace-Kommandos  ohne  Argumente notwendig (also der  Buchstabe\r
+        'T' und die Return-Taste). Ein weiteres Beispiel ist das Ueber-\r
+        pruefen  der Hardware eines Ausgabeports:  Will man  mit  einem\r
+        Oszilloskop  Signale eines Ausgabeports ueberpruefen,  so waere\r
+        es  sehr laestig,  zur wiederholten Ausgabe eines Testbytes  an\r
+        den Port waehrend der Beobachtung des Oszilloskops immer wieder\r
+        das 'O'-Kommando eingeben zu muessen.\r
+        Aus  diesen  Gruenden besitzt das DDTZ  die  Wiederholfunktion.\r
+        Diese bewirkt, dass bei einer leeren Eingabe (nur Return-Taste)\r
+        das letzte Kommando ohne Argumente wiederholt wird. Die Bereit-\r
+        schaft der Wiederhol-Funktion wird durch einen doppelten Prompt\r
+        '>>' anstelle des einfachen '> ' angezeigt.\r
+\f\r
+        Die Kommandos des DDTZ\r
+        ======================\r
+\r
+        Im  Folgenden werden alle Kommandos des DDTZ erklaert  und  mit\r
+        Beispielen verdeutlicht.  Im Bereich der Computertechnik hat es\r
+        sich  international eingebuergert,  englische Bezeichnungnen zu\r
+        benutzen.  Deshalb  sind auch beim DDTZ die  Kommandos  Abkuer-\r
+        zungen  englischer  Woerter.  Diese sind neben einer  deutschen\r
+        Bezeichnung am Anfang jeder Kommando-Erklaerung mit angegeben.\r
+        Zur Einarbeitung empfiehlt es sich,  an dieser Stelle des  DDTZ\r
+        schon einmal zu starten und die im kommenden Abschnitt erklaer-\r
+        ten  Kommandos der Reihe nach auszuprobieren.  Assemblieren Sie\r
+        ein simples Testprogramm mit dem A-Kommando,\r
+ [todo]\r
+        z.B.:    > s100\r
+                0100 00  3E 00 3D C2  02 01 C3 00  00\r
+                0109 00  .\r
+\r
+        Listen  Sie das Programm dann mit dem L-Kommando  in  disassem-\r
+        blierter  Form aus,\r
+\r
+                 > l100 108\r
+                0100 LD   A,00\r
+                0102 DEC  A\r
+                0103 JP   NZ,0102\r
+                0106 JP   0000\r
+\r
+        setzen Sie einen Breakpoint auf Adresse  0\r
+        mit  dem B-Kommando und starten Sie es mit dem G-Kommando  usw.\r
+        Nach  einigem Ausprobieren und Spielen mit dem DDTZ werden  Sie\r
+        sicher  schnell  die vielen Moeglichkeiten dieses  komfortablen\r
+        Werkzeugs kennen und nutzen koennen.\r
+\r
+\r
+        B\r
+        -\r
+\r
+        Anzeigen aller Breakpoints.\r
+        (display all breakpoints)\r
+\r
+        Die  Adressen aller  gesetzten Breakpoints werden aufgelistet.\r
+\r
+\r
+        B breakp [breakp..]\r
+        -------------------\r
+\r
+        Breakpoints setzen.\r
+        (set breakpoints)\r
+\r
+        Zum Austesten eines Programms ist es erforderlich, das Programm\r
+        nicht nur starten zu koennen,  sondern der Ablauf des Programms\r
+        muss  sich auch bequem verfolgen und beobachten  lassen.  Neben\r
+        den  Tracen (siehe Kommando T) ist das Setzen von Break-\r
+        points (Unterbrechungspunkten) eine sehr komfortable  Moeglich-\r
+        keit, den Programmablauf zu verfolgen.\r
+        Ein  Breakpoint  wird  auf das erste Byte  (den  Opcode)  eines\r
+        Maschinenbefehls  gesetzt und bewirkt,  dass der Programmablauf\r
+        unterbrochen wird, sobald der Programmzaehler bei dieser Adres-\r
+        se angekommen ist.  Man kann dann die Registerinhalte inspizie-\r
+        ren,  Speicherinhalte  kontrollieren usw.,  um danach den  Pro-\r
+        grammablauf  fortzusetzen oder an einer anderen Stelle  fortzu-\r
+        fahren.\r
+\r
+\f\r
+        Wird  ein  Breakpoint auf eine Adresse gesetzt,  auf  der  sich\r
+        bereits ein Breakpoint befindet, so wird der bereits vorhandene\r
+        automatisch geloescht.\r
+        Achtung:  Breakpoints  koennen nur im RAM  gesetzt  werden;  in\r
+        Programmen  die  in  ROM's oder EPROM's  enthalten  sind,  sind\r
+        Breakpoints nicht moeglich (Siehe folgenden Abschnitt).\r
+\r
+        Interne Breakpointbehandlung des DDTZ:\r
+\r
+        Wird ein Programm mit dem G-Kommando gestartet,  so ersetzt das\r
+        DDTZ alle Opcodes, auf die eine Breakpoint-Adresse zeigt, durch\r
+        einen Restart-Befehl RST n und bewahrt die Opcodes auf.  In die\r
+        Adresse n,  auf die der RST-Befehl springt,  wird ein Sprungbe-\r
+        fehl eingesetzt, der in den Breakpoint-Handler des DDTZ fuehrt.\r
+        Nach  einem Programmstop werden die Opcodes wieder  eingesetzt,\r
+        sodass das Programm immer dann,  wenn es dem Benutzer  zugaeng-\r
+        lich ist,  unmodifiziert ist. Als RST-Adresse ist 38H oder 30H\r
+        voreingestellt. Ist die voreingestellte Adresse jedoch fuer\r
+        andere Zwecke bereits vergeben, so kann der RST-Befehl geaendert\r
+        werden, z.B. auf\r
+        30H:\r
+                  > LT4S1\r
+                    xxx9 RST  38\r
+                  >>ST4\r
+                  xxx9 F7  F7\r
+                  xxxA 00  .\r
+                  > LT4S1\r
+                    xxx9 RST  30\r
+\r
+\f\r
+        BX\r
+        --\r
+\r
+        Loeschen aller Breakpoints.\r
+        (clear all breakpoints)\r
+\r
+        BX adresse [adresse..]\r
+        ----------------------\r
+\r
+        Loeschen der Breakpoints an den angegebenen Adressen.\r
+        (clear breakpoints)\r
+\r
+        D [startadr] [endadr]\r
+        ---------------------\r
+\r
+        Auslisten des Speichers in HEX und ASCII\r
+        (Display memory in hex and ASCII)\r
+\r
+        Der Speicher-Inhalt wird beginnend bei der Startadresse bis zur\r
+        Endadresse  in HEX und ASCII auf der Konsole  ausgelistet.  Die\r
+        ASCII-Anzeige ignoriert das Bit 7 des jeweiligen Bytes. Ist der\r
+        Wert  eines  Bytes nicht als ASCII-Zeichen  druckbar,  so  wird\r
+        statt dessen ein Punkt ausgegeben.\r
+\f\r
+        G [startadr] [;breakp..]\r
+        ------------------------\r
+\r
+        Starte ein geladenes Programm, eventuell mit temporaeren Breakpoints.\r
+        (Go [to start] [with temporary breakpoints])\r
+\r
+        Wird  eine Startadresse angegeben,  so wird der Programmzaehler\r
+        des  Z80 auf diese Adresse gesetzt,  andernfalls wird  bei  dem\r
+        letzten Programmzaehlerstand fortgefahren.  Im G-Kommando koen-\r
+        nen temporaere Breakpoints angegeben werden.  Sie werden in der\r
+        gleichen  Form wie die permanenten Breakpoints beim  B-Kommando\r
+        spezifiziert  und haben auch die gleiche Wirkung mit dem Unter-\r
+        schied,  dass  bei einem Programmstop an einem der  temporaeren\r
+        oder  permanenten Breakpoints die temporaeren  automatisch  ge-\r
+        loescht werden.\r
+        z.B. Vollstaendiges  Abarbeiten eines CP/M-Programms,  das  mit\r
+             JP 0 endet:\r
+               > GL;0\r
+\r
+        H\r
+        -\r
+\r
+        Groesse und maximale Groesse von Files anzeigen.\r
+        (display High and maximal size of files)\r
+\r
+        Die  hoechste von der zuletzt eingelesenen File belegte Adresse\r
+        wird angezeigt,  sowie die hoechste von irgendeiner der  einge-\r
+        lesenen  Files belegte Adresse.  Erstere ist auch in der Varia-\r
+        blen H,  letztere in der Variablen M enthalten.  (Siehe auch\r
+        R-Kommando)\r
+\r
+        H ausdruck\r
+        ----------\r
+\r
+        Berechnen eines Ausdrucks.\r
+        (compute expression / Hex and other)\r
+\r
+        Wird ein Ausdruck angegeben,  so zeigt das DDTZ dessen Ergebnis\r
+        an Ergebnisse werden in HEX,  als  negative\r
+        HEX-Zahl,  in Dezimal,  als negative Dezimalzahl, in Binaer und\r
+        das  niederwertige  Byte zusaetzlich als  ASCII-Zeichen  darge-\r
+        stellt. Nicht druckbare ASCII-Zeichen werden dabei als Control-\r
+        Zeichen in der Form '^x' angezeigt.\r
+\r
+        Wie  Ausdruecke formuliert werden,  ist der  Uebersichtlichkeit\r
+        halber im Anhang angegeben.\r
+\r
+        z.B.: Was  ist die Endadresse eines 17 KByte langen  Programms,\r
+              das bei Adresse 100H beginnt?\r
+                > H17.*1024.+100\r
+                4500  -BB00  17664. -47872. 01000101"00000000"  '^@'\r
+              Der freie Speicher beginnt also bei 4500H.\r
+        z.B.: Beim  Disassemblieren  eines unbekannten  Programms  wird\r
+              eine Subroutine gefunden, die nacheinander mit den Werten\r
+              D8F0H,  FC18H,  FF9CH  usw.  in den Registern  aufgerufen\r
+              wird. Was kann das fuer eine Routine sein?\r
+                > HD8F0\r
+                D8F0  -2710  55536. -10000. 11011000"11110000"  'p'.\r
+                > H fc18\r
+                FC18  -03E8  64536. -1000   11111100"00011000"  '^X'\r
+                > H FF9CH\r
+                FF9C  -0064  65436. -100    11111111"10011100"  '^\'.\r
+              Bei  den  Werten handelt es sich offenbar  um  dezimal  -\r
+              10000,  -1000  usw.;  die Routine hat also wahrscheinlich\r
+              etwas mit einer Binaer-zu-Dezimal-Umrechnung zu tun.\r
+\r
+        I [port]\r
+        --------\r
+\r
+        Einlesen eines Daten-Bytes von einem Port.\r
+        (input a byte from port)\r
+\r
+        Zum Austesten der Computer-Hardware koennen mit diesem Kommando\r
+        Bytes  von  Ports eingelesen und in HEX  und  binaer  angezeigt\r
+        werden.  Wird  die  Portadresse nicht angegeben,  so  wird  der\r
+\r
+        zuletzt  in  einem frueheren I-Kommando angegebene  Port  ange-\r
+        sprochen. Die Moeglichkeit, bei Z80-I/O-Befehlen hardwareseitig\r
+        auch  die Adressleitungen A15 bis A8 zur  Informationsuebertra-\r
+        gung mitzuverwenden,  ist im DDTZ realisiert.  DDTZ-intern wird\r
+        die  Portadresse   als   Zwei-Byte-Wort  in   das   BC-Register\r
+        geladen und mit IN A,(C) der Port gelesen.\r
+        Bei diesem Kommando zeigt zeigt sich besonders der Vorteil  der\r
+        Wiederholungsfunktion  des DDTZ:  Nachdem einmal das I-Kommando\r
+        explizit  gegeben wurde,  kann man,  waehrend man  verschiedene\r
+        Pegel  an  die Anschluesse des Ports  anlegt,  durch  einfaches\r
+        Druecken der Return-Taste die Portabfrage wiederholen.\r
+\f\r
+        L [startadr] [endadr]\r
+        ---------------------\r
+\r
+        Listen eines Speicherbereichs in Z180-Mnemonics.\r
+        (List disassembled code)\r
+\r
+        Dieses Kommando disassembliert im Speicher stehende Programme.\r
+        (Beispiel: siehe Q-Kommando)\r
+\r
+\r
+        M[V] startadr endadr zieladr\r
+        ----------------------------\r
+\r
+        Umladen eines Speicherbereichs in einen anderen, eventuell ver-\r
+        gleichen. (Move memory [and verify])\r
+\r
+        Der  Speicherinhalt beginnend bei der angegebenen  Startadresse\r
+        bis (einschliesslich) zur angegebenen Endadresse wird in  einen\r
+        anderen  Bereich,  beginnend  bei der angegebenen  Zieladresse,\r
+        kopiert.  Wird der optionale Buchstabe V gegeben,  so wird  die\r
+        Kopie mit dem Original verglichen und etwaige Diffrenzen in HEX\r
+        ausgelistet.  Differenzen  koennen  bei defektem Speicher  ent-\r
+        stehen oder dann,  wenn versehentlich in Bereiche kopiert wird,\r
+        die kein RAM enthalten.  Das M-Kommando wird auch dann  korrekt\r
+        ausgefuehrt,  wenn  der Quell- und der Zielbereich  gegenseitig\r
+        ueberlappen.  In  diesem  Fall ist ein  Vergleichen  allerdings\r
+        nicht moeglich,  da beim Kopieren ja ein Teil des Quellbereichs\r
+        ueberschrieben wird.\r
+        Achten Sie bei diesem Kommando besonders darauf, dass Sie nicht\r
+        das  DDTZ  oder das Disk Operating System versehentlich  ueber-\r
+        schreiben.\r
+\r
+        O [byte] [port]\r
+        ---------------\r
+\r
+        Ausgeben eines Datenbytes an einen Ausgabeport.\r
+        (Output a byte to a port)\r
+\r
+        Zum Austesten der Computer-Hardware koennen mit diesem Kommando\r
+        Bytes an Ports des Computersystems ausgegeben werden.\r
+        Achtung:  Im Gegensatz zu dem Z80-Befehl OUT port,byte ist hier\r
+        aus folgendem Grund erst das Datenbyte und dann die Portadresse\r
+        anzugeben:\r
+        Die Portadresse kann weggelassen werden, falls ein Datenbyte an\r
+        den  selben Port,  wie in einem vorherigen O-Kommando  spezifi-\r
+        ziert, ausgegeben werden soll.\r
+        Die Moeglichkeit,  bei Z80-I/O-Befehlen hardwareseitig auch die\r
+        Adressleitungen A15 bis A8 zur Informationsuebertragung  mitzu-\r
+        verwenden,  ist im DDTZ realisiert.  DDTZ-intern wird die Port-\r
+        adresse  als Zwei-Byte-Wort in das BC-Register geladen und  mit\r
+        OUT (C),A das Byte an den Port ausgegeben.\r
+\f\r
+        Q startadr endadr bytes\r
+        --------------------------\r
+\r
+        Durchsuchen des Speichers nach einer gegebenen Folge von Bytes.\r
+        (Query memory for a byte string)\r
+\r
+        Der Speicher wird beginnend bei der angegebnen Startadresse und\r
+        endet (einschliesslich) bei der angegebenen Endadresse auf eine\r
+        angegebene  Byte-Folge hin durchsucht.  Fundstellen werden  wie\r
+        beim  D-Kommando  in HEX und ASCII ausgelistet.  Das erste  ge-\r
+        suchte  Byte steht dabei jeweils am linken Bildrand. Die Byte-\r
+        Folge kann wie  beim  S-Kommando  eine Folge von HEX-Zahlen,\r
+        Ausdruecken, Worten und Text-Strings sein.\r
+\r
+        z.B. Ein  zu untersuchendes Programm gibt an  einem  bestimmten\r
+             Punkt  seines Ablaufes aus unbekannter Ursache die Meldung\r
+             "Hardware  error" auf die Konsole aus  und  stoppt.  Woher\r
+             kommt diese Meldung ?\r
+[todo]          > QJ l h 'Hardwar'\r
+                1502   73 74 65 64  24 4E 6F 20  48 61 72 64  77 61 ...\r
+             Der Text "Hardware error beginnt also bei Adresse 150A. Wo\r
+             wird er ausgegeben ?\r
+                > QJ l h w150a\r
+                >\r
+             (Keine  Meldung)  Auf die Adresse wird also  nicht  direkt\r
+             zugegriffen.   Vielleicht  haben  wir  Glueck,  indem  wir\r
+             suchen,  wo  'No Hardware error" ausgegeben  wird.  Dieser\r
+             Text beginnt bei 1507H.\r
+                > QJ l h w1507\r
+                08FE   00 00 00 00  00 AF C9 21  07 15 CD 65  07 30 ...\r
+                > L8FE+7\r
+                0905  LD   HL,1507\r
+                0908  CALL 0765\r
+                090B  JR   NC,0910\r
+                090D  INC  HL\r
+                090E  INC  HL\r
+                090F  INC  HL\r
+                0910  CALL 0654\r
+             Die  Subroutine,  die  bei  Adresse 908  aufgerufen  wird,\r
+             fuehrt  also  offenbar einen Test durch und  meldet  einen\r
+             Fehler im Carry-Flag.  Der Text wird dann bei Adresse  910\r
+             ausgegeben.\r
+\r
+        R [displacement]\r
+        ----------------\r
+[todo console/reader]\r
+        Einlesen einer HEX-File in den Speicher, eventuell verschoben.\r
+        (Read a hex file [add displacement])\r
+\r
+        Eine Intel-Hex-File wird von der (seriellen) Reader-Schnittstelle\r
+        in den Speicher eingelesen.\r
+        Die Daten werden bei den in der File enthaltenen\r
+        Adressen im Speicher abgelegt.\r
+        Wird  im  R-Kommando ein Displacement angegeben,  so wird  eine\r
+        HEX-File  bei  der entsprechenden Adresse erhoeht um  das  Dis-\r
+        placement abgelegt. Nach\r
+        dem  Einlesen  der File wird erst die hoechste von dieser  File\r
+        belgte  Speicheradresse ausgelistet und dann die  hoechste  von\r
+        irgendeiner  File seit Starten des DDTZ belegte Adresse.  Falls\r
+        das DDTZ statt dessen ein Fragezeichen ausgibt, wurde beim Lesen\r
+        ein Checksummenfehler entdeckt,  oder die File belegt Speicher-\r
+        plaetze ausserhalb des Bereichs L bis T.\r
+\r
+        S [startadr]\r
+        ------------\r
+\r
+        Anzeigen und Aendern von Daten im Speicher\r
+        (Substitute memory)\r
+\r
+        Die  Startadresse,  oder wenn diese nicht angegeben wurde,  die\r
+        Adresse bei der das letzte S-Kommando beendet wurde,  wird  auf\r
+        der Konsole ausgegeben, und danach wird das an dieser Stelle im\r
+        Speicher  befindliche  Byte  in  HEX  angezeigt.  Anschliessend\r
+        erwartet  das  DDTZ  eine Eingabe,  und zwar gibt  es  folgende\r
+        Moeglichkeiten:\r
+          -  Eine leere Eingabe (nur Return-Taste) schreitet ohne Spei-\r
+             cheraenderung zur naechsten Adresse weiter.\r
+          -  Ein   Minus-Zeichen  geht  ohne  Speicheraenderung   einen\r
+             Adressschritt zurueck.\r
+          -  Ein Punkt (alleine in einer Zeile) beendet das Kommando.\r
+          -  Ein  Datenbyte oder eine Folge von von Datenbytes wird  in\r
+             den Speicher eingetragen.\r
+\r
+        Datenbytes koennen folgendermassen eingegeben werden:\r
+          -  Ausdruecke  (im  einfachsten Fall HEX-Zahlen)  werden  der\r
+             Reihe nach berechnet und eingetragen.\r
+          -  Ein  Apostroph,   gefolgt  von  ASCII-Zeichen  und   einem\r
+             weiteren  Apostroph  bewirkt  ein Eintragen  einer  ASCII-\r
+             Zeichenfolge.  Kommt der Apostroph selbst in der  Zeichen-\r
+             folge  vor,  so  muss  er zweimal  gegeben  werden.  Folgt\r
+             auf den abschliessenden Apostroph ein Punkt,  so wird  das\r
+             Bit 7 des      letzten Zeichens auf Eins gesetzt.\r
+        z.B. der Programmteil\r
+                  0200 CALL 1234H\r
+                  0203 DM   'Test ''1'''        ; Test '1'\r
+             kann mit dem S-Kommando folgendermassen eingegeben werden:\r
+                  > S200\r
+                  0200 00  cdW1234\r
+                  0203 00  'Test ''1'''.\r
+                  020B 00  -\r
+                  020A A7  .\r
+\f\r
+        T [befehlsanzahl]\r
+        -----------------\r
+\r
+        Tracen\r
+        (Trace)\r
+\r
+        Im  Gegensatz  zum Starten eines Programms mit dem  G-Kommando,\r
+        bei dem die Kontrolle voll dem auszufuehrenden Programm  ueber-\r
+        geben  wird  und erst bei einem Breakpoint dem DDTZ  zurueckge-\r
+        geben  wird,  behaelt beim Tracen das DDTZ die ganze  Zeit  die\r
+        Kontrolle. Das wird dadurch erreicht, dass das DDTZ automatisch\r
+        hinter  jedem Befehl,  bevor er ausgefuehrt wird,  einen Break-\r
+        point einsetzt und nach Ausfuehrung des Befehls wieder loescht.\r
+        Bei bedingten Spruengen werden sogar zwei Breakpoints  gesetzt,\r
+        einer  hinter dem Sprungbefehl,  der andere am Sprungziel.  Das\r
+        Programm wird also in Einzelschritten ausgefuehrt.  Nach  jedem\r
+        Schritt  legt  das DDTZ die aktuellen Werte aller  Register  in\r
+        Speicherplaetze  innerhalb  des DDTZ ab,  sodass die  Register-\r
+        inhalte jederzeit ueberwacht werden koennen.\r
+        Das Tracen beginnt jeweils beim derzeitigen Stand des Programm-\r
+        zaehlers.  Soll an einer anderen Stelle mit dem Tracen begonnen\r
+        werden,  so  muss  der Programmzaehler mit dem  X-Kommando  neu\r
+        gesetzt werden.\r
+        Nach jedem Schritt werden alle Registerinhalte und der naechste\r
+        Z80-Befehl wie beim X-Kommando angezeigt.\r
+        Die  einfachste  Form des T-Kommandos ist nur der  Buchstabe  T\r
+        (gefolgt von der Return-Taste), worauf ein Einzelschritt ausge-\r
+        fuehrt wird.  Falls das letzte Kommando bereits ein  T-Kommando\r
+        war,  genuegt  wegen  der Wiederholfunktion des DDTZ  auch  die\r
+        Return-Taste  alleine,  was  das Einzelschritt-Tracen sehr  er-\r
+        leichtert.\r
+        Wird  im  T-Kommando eine Befehlsanzahl  angegeben,  so  werden\r
+        entsprechend  viele  Schritte  hintereinander  ausgefuehrt.  In\r
+        diesem  Fall kann der Trace-Vorgang durch  Druecken\r
+        einer   beliebigen  Taste  der  Konsole  vorzeitig  abgebrochen\r
+        werden.  Das  Tracen  wird unabhaengig  von  einer  angegebenen\r
+        Befehlsanzahl  oder Bedingung abgebrochen,  wenn ein Breakpoint\r
+        erreicht wird.\r
+\f\r
+        Achtung:  Da  die Einzelschritt-Abarbeitung durch automatisches\r
+        Setzen von Breakpoints erreicht wird,  ist es unmoeglich,  Pro-\r
+        gramme in ROMs zu tracen.  Subroutinen in ROMs koennen mit  dem\r
+        G-Kommando  und geeigneten Breakpoints oder mit dem  C-Kommando\r
+        uebersprungen  werden.  Falls  Teile des BIOS in  ROMs  stehen,\r
+        stoert  dies nicht,  solange das zu untersuchende Programm  nur\r
+        BDOS-Aufrufe  enthaelt.  Bei BDOS-Aufrufen wird der Trace-Modus\r
+        verlassen  und  erst  nach der Rueckkehr aus  dem  BDOS  wieder\r
+        aufgenommen.\r
+\r
+\r
+        V startadr endadr zieladr\r
+        -------------------------\r
+        Vergleichen zweier Speicherbereiche.\r
+        (Verify (compare) two memory areas)\r
+\r
+        Der  Inhalt des Speichers beginnend bei der angegebenen  Start-\r
+        adresse  bis (einschliesslich) zur angegebenen Endadresse  wird\r
+        mit  dem Inhalt eines gleich langen Bereichs beginnend bei  der\r
+        angegebenen Zieladresse verglichen.  Unterschiede werden in HEX\r
+        ausgelistet. Das Auslisten kann durch Druecken einer beliebigen\r
+        Taste der Konsole abgebrochen werden.\r
+\r
+\r
+        X\r
+        -\r
+\r
+        Anzeigen aller Register und des Befehls,  auf den der Programm-\r
+        zaehler zeigt.\r
+        (eXamine all cpu registers)\r
+\r
+        Jedesmal,  wenn  ein  Breakpoint angelaufen wird oder ein  Pro-\r
+        grammschritt getraced wird,  legt das DDTZ die  Registerinhalte\r
+        in  einem  innerhalb des DDTZ befindlichen Speicherbereich  ab.\r
+        Wird mit G oder T die Ausfuehrung des Programms fortgesetzt, so\r
+        laedt das DDTZ vorher diese Daten wieder in die  Register.  Mit\r
+        dem  X-Kommando  koennen diese abgespeicherten  Registerinhalte\r
+        jederzeit kontrolliert werden.  Die Anzeige erfolgt,  wie immer\r
+        im DDTZ, in HEX.\r
+        Die sechs gueltigen Bits des F- und des F'-Registers werden als\r
+        Buchstaben dargestellt. Das Interrupt-Flag wird wie ein Bit des\r
+        F-Registers angezeigt.\r
+        Der Z180-Befehl, auf den der Programmzaehler zeigt, wird in dis-\r
+        assemblierter Form ausgegeben.\r
+        z.B. Alle Flags seien gesetzt, der Interrupt sei eingeschaltet\r
+             und die Register enthalten willkuerliche Werte:\r
+             > X\r
+             SZHVNCE  A =12 BC =3456 DE =789A HL =BCDE SP=F012 PC=3456..\r
+             SZHVNC   A'=78 BC'=9ABC DE'=DEF0 HL'=1234 IX=5678 IY=9ABC..\r
+             Nach  einem  Neustart  des  DDTZ  enthalten  die  Register\r
+             folgende Werte:\r
+                   E  A =00 BC =0000 DE =0000 HL =0000 SP=AC00 PC=0100..\r
+                      A'=00 BC'=0000 DE'=0000 HL'=0000 IX=0000 IY=0000..\r
+        Das  Interrupt-Enabled-Flag ist gesetzt,  falls beim Start  des\r
+        DDTZ  der Interrupt eingeschaltet war.  Das I-Register enthaelt\r
+        den Wert,  den es beim Start des DDTZ enthielt.  Der  Programm-\r
+        zaehler steht auf 100H, zeigt also auf den Anfang des Benutzer-\r
+        speichers.  Der  Stackpointer zeigt auf das obere Ende des  Be-\r
+        nutzerspeichers,  abgerundet  auf volle 100H.  Alle anderen Re-\r
+        gister enthalten Nullen.\r
+\r
+        X register\r
+        ----------\r
+\r
+        Anzeigen und eventuell modifizieren eines Registers.\r
+        (eXamine [and substitute] a register)\r
+\r
+        Nach  Eingabe des Buchstabens X,  gefolgt von  einem  Register-\r
+        namen,  wird  der betreffende Registerinhalt ausgegeben und ein\r
+        neuer Wert angefordert.  Eine leere Eingabe (nur  Return-Taste)\r
+        laesst  den Registerinhalt unveraendert;  ein eingegebener Wert\r
+        oder Ausdruck wird in das Register eingetragen.  Ist das  ange-\r
+        waehlte  Register das F- oder F'-Register,  so werden die Flags\r
+        als Buchstaben angezeigt. Daraufhin koennen durch Eingabe neuer\r
+        Buchstaben  in beliebiger Reihenfolge die entsprechenden  Flags\r
+        gesetzt  werden,  wobei  nicht  gegebene  Flags  zurueckgesetzt\r
+        werden.  Das  Interrupt-Flag wird im DDTZ wie ein Flag  des  F-\r
+        Registers behandelt.\r
+\r
+        Die  Namen  der Register und der Flags der F-Register  sind  im\r
+        Anhang aufgelistet.\r
+\r
+        z.B. Setzen des HL-Registers auf ABCDH, des C-Registers auf den\r
+             ASCII-Wert 'A',  und Setzen des Carryflags des F-Registers\r
+             und des Interrupt-Flags:\r
+                  > Xhl\r
+                  HL=1234 abcd\r
+                  > Xc\r
+                  C=40 'A'\r
+                  > Xf\r
+                  S  VNCE ce\r
+\r
+\r
+\r
+        Z startadr endadr bytes\r
+        -----------------------\r
+\r
+        Vorbesetzen eines Speicherbereiches mit einer Byte-Folge.\r
+        (Zap (fill) memory with a byte string)\r
+\r
+        Der  Speicher  wird beginnend bei der angegebenen  Startadresse\r
+        bis (einschliesslich) zur angegebenen Endadresse mit der  ange-\r
+        gebenen  Bytefolge belegt.  Die Bytefolge wird genauso wie beim\r
+        S-Kommando  angegeben.  Ist sie kuerzer als der  zu  besetzende\r
+        Speicher,  so wird die Bytefolge wiederholt, bis die Endadresse\r
+        erreicht ist.\r
+        z.B. Loeschen des gesamten Benutzerspeichers mit Nullen:\r
+                  > Z l t 0\r
+        z.B. Fuellen eines bei der Adresse 1000H beginnenden, 10H Bytes\r
+             langen  Puffers  mit dem Text  'leer!',  Carriage  Return,\r
+             Linefeed:\r
+                  > Z1000s10 'leer!',d,a\r
+                  > D1000s12\r
+                  1000  6C 65 65 72  21 0D 0A 6C  65 65 72 21  0D 0A 6C..\r
+                  1010  00 00 ..\r
+        z.B. Durchfuehren eines einfachen Speichertests:  Erst wird der\r
+             gesamte  Benutzerspeicher mit einer krummen  Anzahl,  z.B.\r
+             sieben,  Testbytes gefuellt und dann der Speicher mit sich\r
+             selbst,  um die Laenge der Testbytefolge verschoben,  ver-\r
+             glichen:\r
+                  > Zl t 0 ff aa 55 a5 5a 0f\r
+                  > Vl t-7 l+7\r
+\f\r
+        ANHANG\r
+        ======\r
+\r
+        Zusammenfassung der Kommandos\r
+        -----------------------------\r
+\r
+        > B\r
+             display all breakpoints\r
+             Anzeigen aller Breakpoints\r
+        > B breakp [breakp..]\r
+             set breakpoints\r
+             Breakpoints setzen\r
+        > BX\r
+             clear all breakpoints\r
+             Loeschen aller Breakpoints\r
+        > BX adresse [adresse..]\r
+             clear breakpoints\r
+             Breakpoints loeschen\r
+\r
+        >>D [startadr] [endadr]\r
+             Display memory in hex and ASCII\r
+             Auslisten des Speichers in HEX und ASCII\r
+\r
+        > G [startadr] [;breakp..]\r
+             Go [to start] [with temporary breakpoints]\r
+             Starte ein geladenes Programm,  eventuell mit  temporaeren\r
+             Breakpoints\r
+\r
+        > H\r
+             display High and maximal size of files\r
+             Groesse und maximale Groesse von Files anzeigen\r
+        > H ausdruck\r
+             compute hex and other expressions\r
+             Berechnen eines Ausdrucks\r
+\r
+        >>I [port]\r
+             Input a byte from port\r
+             Einlesen eines Daten-Bytes von einem Port\r
+\r
+        >>L [startadr] [endadr]\r
+             List disassembled code\r
+             Listen eines Speicherbereichs in Z180-Mnemonics\r
+\r
+        > M startadr endadr zieladr\r
+             Move memory\r
+             Umladen  eines Speicherbereiches in einen  anderen\r
+\r
+        >>O [byte] [port]\r
+             Output a byte to a port\r
+             Ausgeben eines Datenbytes an einen Ausgabeport\r
+\r
+        > Q startadr endadr bytes\r
+             Query memory for a byte string\r
+             Durchsuchen  des Speichers nach einer gegebenen Folge  von\r
+             Bytes\r
+\r
+        > R [displacement]\r
+             Read a hex file ]add displacement]\r
+             Einlesen oder  HEX-File in  den  Speicher, evtl. verschoben\r
+\r
+        > S [startadr]\r
+             Substitute Memory\r
+             Anzeigen und Aendern von Daten im Speicher\r
+\r
+        >>T [befehlsanzahl]\r
+             Trace\r
+             Tracen\r
+\r
+        > Vstartadr endadr zieladr\r
+             Verify (compare) two memory areas\r
+             Vergleichen zweier Speicherbereiche\r
+\r
+        > X\r
+             eXamine all cpu registers\r
+             Anzeigen aller Register und des Befehls,  auf den der Pro-\r
+             grammzaehler zeigt\r
+        > X register\r
+             eXamine [and substitute] a register\r
+             Anzeigen und eventuell Modifizieren eines Registers\r
+\r
+        > Z startadr endadr bytes\r
+             Zap (fill) memory with a byte string\r
+             Vorbesetzen eines Speicherbereiches mit einer Byte-Folge\r
+\r
+\f\r
+        Registernamen\r
+        -------------\r
+\r
+        A , F , B , C , D , E , H , L ,BC , DE , HL\r
+        A', F', B', C', D', E', H', L',BC', DE', HL'\r
+        IX oder X , IY oder Y , Sp oder S , PC oder P , I\r
+\r
+        Flags des F- und des F'-Registers:\r
+\r
+        S    Sign                Vorzeichen\r
+        Z    Zero                Null\r
+        H    Half carry          Uebertrag von Bit 3 nach Bit 4\r
+        V    oVerflow/parity     Ueberlauf/ gerade Paritaet\r
+        N    Negation            NEG, DEC, SUB o.ae. wurde ausgefuehrt\r
+        C    Carry               Uebertrag von Bit 7\r
+        E    Interrupt Enabled   Das Interrupt-Flag wird im DDTZ wie\r
+                                 ein Flag des F-Registers behandelt.\r
+\r
+        Variablen und Konstanten\r
+        ------------------------\r
+\r
+        L    Low                 Benutzerspeicher-Anfang. Festwert 100H\r
+        H    High                Hoechste Adresse der letzten gelesenen\r
+                                 File\r
+        M    Max                 Maximale Adresse aller gelesenen Files\r
+        T    Top                 Oberes Ende des Benutzerspeichers\r
+        ^register                Inhalt eines Registers\r
+        (adresse)                Inhalt eines Speicherplatzes (Byte)\r
+        (adresse).               Inhalt eines Speicherplatzes (Wort)\r
+\r
+        Ausdruecke\r
+        ----------\r
+\r
+        In allen Situationen,  in denen Zahlen eingegeben werden  koen-\r
+        nen, ist auch die Eingabe von Ausdruecken erlaubt.\r
+\r
+        Ausdruecke sind im allgemeinen arithmetische Ausdruecke.\r
+\r
+        Ein arithmetischer Ausdruck hat die folgende Form\r
+\r
+                  faktor arithmetikoperator faktor arith... faktor\r
+\r
+\f\r
+        Die Arithmetikoperatoren sind\r
+        + - * / %           Addition, Subtraktion, Mult., Division, Modulo\r
+        & ! #               bitweise AND, OR, XOR\r
+\r
+        Ein Faktor hat die Form\r
+        [ausdruck]          geklammerter Ausdruck\r
+        +faktor\r
+        -faktor             Negation\r
+        ~faktor             bitweise NOT (1er-Komplement)\r
+        'a'                 Wert eines ASCII-Zeichens (a=druckbares Zeichen)\r
+        'a'.                  "  mit gesetzem Bit 7\r
+        'ab'                Wert zweier ASCII-Zeichen (a,b=druckbare Zeichen)\r
+        'ab'.                 "  das niederwertige Zeichen mit gesetztem Bit 7\r
+        (ausdruck)          ein Byte im Speicher\r
+        (ausdruck).         ein Wort im Speicher\r
+        hhhh[H]             Hex-Zahl (h=0..9,A..F oder a..f)\r
+        ddddd.              Dezimal-Zahl (d=0..9)\r
+        bbbbbbbb"bbbbbbbb"  Binaer-Zahl (beliebig mit '"' unterteilt (b=0,1)\r
+\r
+        Ein  arithmetischer  Ausdruck  wird von links nach  rechts  be-\r
+        rechnet,  also  ohne Beachtung "Punktrechnung  vor  Strichrech-\r
+        nung",  die  Reihenfolge  kann jedoch mit Klammern '[' und  ']'\r
+        geaendert werden.\r
+        Ein Pluszeichen darf, wenn dabei der Ausdruck eindeutig bleibt,\r
+        weggelassen werden; z.B. ist L10 dasselbe wie L+10.\r
+        Ausdruecke duerfen keine Leerzeichen enthalten!\r