From 836f48abced5e144dc61515cb2bdac71c77e43f3 Mon Sep 17 00:00:00 2001 From: Leo C Date: Mon, 26 Nov 2018 01:07:52 +0100 Subject: 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 --- ddt180.z80 | 125 ++++++++++++++------------- doc/ddt180-ref-cb.txt | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 295 insertions(+), 63 deletions(-) create mode 100644 doc/ddt180-ref-cb.txt diff --git a/ddt180.z80 b/ddt180.z80 index 3d4e6e7..ed3d7f2 100644 --- a/ddt180.z80 +++ b/ddt180.z80 @@ -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 | -- cgit v1.2.3