diff options
author | Leo C | 2018-11-26 01:07:52 +0100 |
---|---|---|
committer | Leo C | 2018-11-26 01:07:52 +0100 |
commit | 836f48abced5e144dc61515cb2bdac71c77e43f3 (patch) | |
tree | 9396ce453b6f54d11f5f7dc8e574a68fb0616afe | |
parent | d1d6fee5bb2d081bc54378ed610ab021fd768128 (diff) | |
download | ddt180-836f48abced5e144dc61515cb2bdac71c77e43f3.zip |
Rewrite p_flags; refactor out_rparen,p_A_comma,p_arg_a_addr,p_arg_addr,p_arg_nn_rp,p_char_comma,p_char_lparen,p_char_rparen
-rw-r--r-- | ddt180.z80 | 125 | ||||
-rw-r--r-- | doc/ddt180-ref-cb.txt | 233 |
2 files changed, 295 insertions, 63 deletions
@@ -402,10 +402,6 @@ outbl: ld a,' '
jr outchar
-p_char_lparen:
- ld a,'('
- jr outchar
-
outquote:
ld a,''''
outchar:
@@ -1458,24 +1454,25 @@ p_f2: jp outbl
p_flags:
- ld b,a
- ld a,'S'
- call sub_06aah
- ld a,'Z'
- call sub_06aah
- rl b
- ld a,'H'
- call sub_06aah
- rl b
- ld a,'V'
- call sub_06aah
- ld a,'N'
- call sub_06aah
- ld a,'C'
-sub_06aah:
- rl b
- jp c,outchar
- jp outbl
+ push hl
+ ld hl,t_flag_names+7
+ ld c,a
+ ld b,8
+fl_loop:
+ ld a,' '
+ cp (hl)
+ ld a,c
+ rlca
+ ld c,a
+ jr z,fl_skip
+ ld a,(hl)
+ call c,outchar
+ call nc,outbl
+fl_skip:
+ dec hl
+ djnz fl_loop
+ pop hl
+ ret
p_regs:
push de
@@ -5277,8 +5274,7 @@ l1ce5h: sub_1ce8h:
call p_char_lparen
call p_arg_ww
-out_rparen:
- jp p_char_rparen
+ jr out_rparen
l1cf5h:
call p_A_comma
@@ -5318,7 +5314,11 @@ l1d29h: sub_1d2ch:
call p_char_lparen
ld a,(iy+001h)
- jp l1e6bh
+p_arg_nn_rp:
+ call out_hex
+out_rparen:
+ jr p_char_rparen
+
l1d37h:
call sub_1d2ch
jr p_char_comma_A
@@ -5355,27 +5355,30 @@ p_arg_addr_a: call p_arg_addr
p_char_comma_A:
call p_char_comma
+ jr p_char_A
+
+p_A_comma:
+ call p_char_A
+p_char_comma:
+ ld a,','
+ db 021h
p_char_A:
ld a,'A'
- jr outchar1
-p_arg_a_addr:
- call p_A_comma
- jp p_arg_addr
+ db 021h
l1d85h:
ld a,'0'
- jr outchar1
+ db 021h
l1d89h:
ld a,'1'
- jr outchar1
+ db 021h
l1d8dh:
ld a,'2'
- jr outchar1
-
-p_A_comma:
- call p_char_A
-p_char_comma:
- ld a,','
-outchar1:
+ db 021h
+p_char_rparen:
+ ld a,')'
+ db 021h
+p_char_lparen:
+ ld a,'('
jp outchar
l1d92h:
@@ -5426,7 +5429,16 @@ p_arg_addr_ww: p_arg_ww_addr:
call p_arg_ww
call p_char_comma
- jr p_arg_addr
+
+p_arg_a_addr:
+ call p_A_comma
+p_arg_addr:
+ call p_char_lparen
+ ld l,(iy+001h)
+ ld h,(iy+002h)
+ ld a,001h
+ call sub_1d50h
+ jr p_char_rparen
p_arg_bitop:
ld a,(isprefix_ixiy)
@@ -5459,17 +5471,6 @@ l1e0eh: l1e11h:
jr p_arg_r0
-p_arg_addr:
- call p_char_lparen
- ld l,(iy+001h)
- ld h,(iy+002h)
- ld a,001h
- call sub_1d50h
-
-p_char_rparen:
- ld a,')'
- jp outchar
-
p_arg_r:
ld a,(iy+000h)
rra
@@ -5494,20 +5495,18 @@ p_arg_r0: l1e4dh:
call pstr
ld a,(iy+001h)
- and a
- jp m,l1e61h
- call pstr_inl
- dc '+'
- ld a,(iy+001h)
- jr l1e6bh
-l1e61h:
- call pstr_inl
- dc '-'
- ld a,(iy+001h)
+ push af
+ rlca
+ ld a,'+'
+ jr nc,l1e61h
+ pop af
neg
-l1e6bh:
- call out_hex
- jr p_char_rparen
+ push af
+ ld a,'-'
+l1e61h:
+ call outchar
+ pop af
+ jp p_arg_nn_rp
p_arg_r1:
ld hl,t_BCDEHL_HL_A
diff --git a/doc/ddt180-ref-cb.txt b/doc/ddt180-ref-cb.txt new file mode 100644 index 0000000..e96b124 --- /dev/null +++ b/doc/ddt180-ref-cb.txt @@ -0,0 +1,233 @@ +Kurzreferenz zu DDT180 - Ein erweiterter DDTZ + +Änderungen zum Original DDTZ [8101] sind mit "|" am | +rechten Rand markiert. | + +Zusammenfassung der Kommandos +----------------------------- + +> @ + examine [substitute] displacement register @ + Anzeigen und eventuell Ändern des Displacement-Registers + +> A [startadresse] + Assemble Zilog Z180 mnemonics + Assemblieren von Z180-Befehlen + +> B + display all breakpoints + Anzeigen aller Breakpoints +> B breakp [breakp..] + set breakpoints + Breakpoints setzen +> BX + clear all breakpoints + Löschen aller Breakpoints +> BX adresse [adresse..] + clear breakpoints + Breakpoints löschen + +>>C[N][J] [befehlsanzahl] +>>C[N][J] W ausdruck +>>C[N][J] U ausdruck + trace over calls [No list] [Jumps only] /.While./.Until. + Tracen über CALLs [ohne Ausgabe] [nur Sprungbefehle] + /.solange./.bis. + +>>D [startadr] [endadr] + Display memory in hex and ASCII + Auslisten des Speichers in HEX und ASCII + +> Fkommandozeile | + specifiy filenames and command line | + File-Controlblocks und CP/M-Kommandozeile spezifizieren | + +> G [startadr] [;breakp..] + Go [to start] [with temporary breakpoints] + Starte ein geladenes Programm, eventuell mit temporären + Breakpoints + +> H | + display high and maximal size of files | + Höchste Adresse der zuletzt geladenen Datei, höchste | + Adresse aller geladenen Dateien (Max) und Ende des | + verfügbaren Speichers (Top) anzeigen. | +> HS | + display symbol list | + Liste der geladenen Symbole anzeigen | +> H ausdruck + compute hex and other expressions + Berechnen eines Ausdrucks +> H ausdruck ausdruck + Hex and other sum and difference + Summe und Differenz zweier Ausdrücke + +>>I [port] + Input a byte from port + Einlesen eines Daten-Bytes von einem Port + +>>L [startadr] [endadr] + List disassembled code + Listen eines Speicherbereichs in Z80-Mnemonics + +> M[V] startadr endadr zieladr + Move memory [and verify] + Umladen eines Speicherbereiches in einen anderen, evtl. + Vergleichen + +>>O [byte] [port] + Output a byte to a port + Ausgeben eines Datenbytes an einen Ausgabeport + +> Q[J] startadr endadr bytes + Query memory for a byte string [Justified] + Durchsuchen des Speichers nach einer gegebenen Folge von + Bytes + +> R [displacement] | + Read a binary or hex file and or symbol file [add displacement] | + Einlesen einer Binär- oder HEX-File und/oder einer Symboldatei | + in den Speicher, evtl. um "displacement" verschoben | + +> S [startadr] + Substitute Memory + Anzeigen und Ändern von Daten im Speicher + +>>T[N][J] [befehlsanzahl] +>>T[N][J] W ausdruck +>>T[N][J] U ausdruck + Trace [no List] [Jumps only] / .While. / .Until. + Tracen [ohne Ausgabe] [nur Sprungbefehle] /.solange./.bis. + +> Vstartadr endadr zieladr + Verify (compare) two memory areas + Vergleichen zweier Speicherbereiche + +> Wstartadr endadr + Write a file to disk + Ausschreiben eines Speicherbereichs in eine File + +> X + eXamine all cpu registers + Anzeigen aller Register und des Befehls, auf den der + Programmzähler zeigt +> X register + eXamine (and substitute) a register + Anzeigen und eventuell Modifizieren eines Registers + +> Y + examine all Y variables + Anzeigen aller Y-Variablen +> Yziffer0bis9 + examine [and substitute] an Y variable + Anzeigen und eventuell Modifizieren einer Y-Variablen + +> Z startadr endadr bytes + Zap (fill) memory with a byte string + Vorbesetzen eines Speicherbereiches mit einer Byte-Folge + + +Registernamen +------------- + +A , F , B , C , D , E , H , L ,BC , DE , HL +A', F', B', C', D', E', H', L',BC', DE', HL' +IX oder X , IY oder Y , Sp oder S , PC oder P , I + +Flags des F- und des F'-Registers: + +S Sign Vorzeichen +Z Zero Null +H Half carry Uebertrag von Bit 3 nach Bit 4 +V oVerflow/parity Ueberlauf/ gerade Parität +N Negation NEG, DEC, SUB o.ä. wurde ausgeführt +C Carry Uebertrag von Bit 7 +E Interrupt Enabled Das Interrupt-Flag wird im DDTZ wie + ein Flag des F-Registers behandelt. + +Variablen und Konstanten +------------------------ + +L Low Benutzerspeicher-Anfang. Festwert 100H +H High Höchste Adresse der letzten gelesenen + File +M Max Maximale Adresse aller gelesenen Files +T Top Oberes Ende des Benutzerspeichers +Z Zbase Basis/Startadresse von von DDT180 | + Wenn keine Symbole geladen: Z = T | +@ Displacement Register +$ beim Assemblieren Anfangsadresse des + Befehls sonst = PC +Y0..Y9 Frei verwendbare Variablen +^register Inhalt eines Registers +(adresse) Inhalt eines Speicherplatzes (Byte) +(adresse). Inhalt eines Speicherplatzes (Wort) + +Ausdrücke +---------- + +In allen Situationen, in denen Zahlen eingegeben werden können, +ist auch die Eingabe von Ausdrücken erlaubt. + +Ausdrücke sind im allgemeinen arithmetische Ausdrücke, können +aber auch (zum Formulieren von Bedingungen) Relationen sein. +Relationen bestehen aus zwei arithmetischen Ausdrücken, zwischen +denen einer der folgenden Relationsoperatoren steht: += <> > >= <= < + +Relationen haben den Wert -1 (=0FFFFH), wenn die Relation wahr +ist, 0 sonst. +z.B. der Ausdruck 1+2=3 hat den Wert -1, und 'A'>'B' den Wert 0 + +Ein arithmetischer Ausdruck hat die folgende Form + + faktor arithmetikoperator faktor arith... faktor + +Die Arithmetikoperatoren sind ++ - * / % Addition, Subtraktion, Mult., Division, Modulo +& ! # bitweise AND, OR, XOR + +Ein Faktor hat die Form +[ausdruck] geklammerter Ausdruck ++faktor +-faktor Negation +~faktor bitweise NOT (1er-Komplement) +'a' Wert eines ASCII-Zeichens (a=druckbares Zeichen) +'a'. " mit gesetzem Bit 7 +'ab' Wert zweier ASCII-Zeichen (a,b=druckbare Zeichen) +'ab'. " das letzte Zeichen mit gesetztem Bit 7 +(ausdruck) ein Byte im Speicher +(ausdruck). ein Wort im Speicher +hhhh[H] Hex-Zahl (h=0..9,A..F oder a..f) +ddddd. Dezimal-Zahl (d=0..9) +bbbbbbbb"bbbbbbbb" Binär-Zahl (beliebig mit '"' unterteilt (b=0,1) +.symbol Wert aus Symboltabelle | +.s1:s2: ... :sn "Qualifiziertes Symbol" | + +Enthält ein Ausdruck einen Relationsoperator, so werden erst die +beiden arithmetischen Ausdrücke berechnet und dann die Relation. +Ein arithmetischer Ausdruck wird von links nach rechts berechnet, +also ohne Beachtung "Punktrechnung vor Strichrechnung", die +Reihenfolge kann jedoch mit Klammern '[' und ']'geändert werden. +Ein Pluszeichen darf, wenn dabei der Ausdruck eindeutig bleibt, +weggelassen werden; z.B. ist @1000 dasselbe wie @+1000. +Ausdrücke dürfen keine Leerzeichen enthalten! + +Parameter +--------- + +Am Beginn von DDTZ/DDT180 sind einige Werte gespeichert, die vom +Benutzer angepaßt werden können. + +Adr Default Bedeutung +-------------------------------------------------------------------- +Z3 'RST30' Opcode für Breakpoint (RST8 - RST38 möglich) +Z4 'NOP' Wird beim Entritt in DDTZ ausgeführt. Kann durch + EI oder DI Opcode (FB/F3) ersetzt werden. +Z5 'RET' Nicht ändern! +Z6 'JP BDOS' Nicht ändern! | +Z9 80 (50H) Bildschirmbreite | +ZA 16 (10H) Maximal erlaubte Symbol-Länge | +ZB 00 Bit 0=1: Gross/Kleinschrift von Symbolen beachten | + Bit 1=1: Symbole beim Laden konvertieren | + Bit 2=1: In Kleinbuchstaben konvertieren | |