summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2018-11-26 01:07:52 +0100
committerLeo C2018-11-26 01:07:52 +0100
commit836f48abced5e144dc61515cb2bdac71c77e43f3 (patch)
tree9396ce453b6f54d11f5f7dc8e574a68fb0616afe
parentd1d6fee5bb2d081bc54378ed610ab021fd768128 (diff)
downloadddt180-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.z80125
-rw-r--r--doc/ddt180-ref-cb.txt233
2 files changed, 295 insertions, 63 deletions
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 |