summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2019-04-06 18:45:32 +0200
committerLeo C2019-04-06 18:45:32 +0200
commit8320b8eb180987df7af6be0dda317a7e8830df9d (patch)
tree881919fa1b5409b86282dcae217732a8bb515098
parenta370992be42fbb19a2b182f8b1a71be2c3e49346 (diff)
downloadddt180-8320b8eb180987df7af6be0dda317a7e8830df9d.zip
Remove disas_arg_16, disas_argtype
-rw-r--r--ddt180.z80437
1 files changed, 414 insertions, 23 deletions
diff --git a/ddt180.z80 b/ddt180.z80
index c743588..1946b1c 100644
--- a/ddt180.z80
+++ b/ddt180.z80
@@ -1183,8 +1183,7 @@ l063eh:
ld iy,(reg.pc)
call p_disas_instr
pop de
- ex (sp),hl
- push af
+ pop hl
call crlf
call p_f2
call outbl2
@@ -1192,8 +1191,6 @@ l063eh:
l065bh:
call p_regs
djnz l065bh
- pop af
- pop hl
jp crlf
p_f:
@@ -1201,13 +1198,13 @@ p_f:
call p_flags
ld a,(reg.iff)
cp 0f3h
- jp z,outbl
+ jr z,outbl_1
ld a,'E'
jp outchar
p_f2:
ld a,(reg.f2)
call p_flags
- jp outbl
+ jr outbl_1
p_flags:
push hl
@@ -1256,10 +1253,10 @@ l06deh:
ld a,(de)
call out_hex
l06e2h:
- call outbl
pop de
pop hl
- ret
+outbl_1:
+ jp outbl
b_06e9_start:
DC 'A '
@@ -2439,8 +2436,6 @@ p_disas_line:
;-------------------------------------------------------------------------------
p_disas_instr:
- sub a
- ld (disas_argtype),a
call disas_get_instrlen
jr nc,l197fh
push bc
@@ -2452,9 +2447,6 @@ p_disas_instr:
ex de,hl
call CALL_HL ;print arguments
pop bc
- ld a,(disas_argtype)
- ld hl,(disas_arg_16)
- or a
scf
ret
@@ -3050,10 +3042,6 @@ p_arg_mn:
ld l,(iy+001h)
ld h,(iy+002h)
l1d4eh:
- ld a,002h
-sub_1d50h:
- ld (disas_argtype),a
- ld (disas_arg_16),hl
jp out_hl
p_arg_ww_mn:
@@ -3150,8 +3138,6 @@ 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:
@@ -3431,6 +3417,415 @@ t__C_:
DB 0
;-------------------------------------------------------------------------------
+;-------------------------------------------------------------------------------
+if 0
+
+lookup_argstr:
+ ;todo
+ ret
+
+
+pr_instr_args:
+ ld hl,t_argf
+ call lookup_argstr
+
+ ret z
+
+pria_l:
+ ld a,(hl) ;get next token
+ inc hl
+ or a
+ ret z ;
+ jp m,pria_1
+ call outchar ;print as normal character
+ jr pria_l
+
+pria_1: ;
+ push hl
+ ld hl,do_arg_n
+ and 07fh
+ add a,a
+ call add_hl_a
+ ld a,(hl)
+ inc hl
+ ld h,(hl)
+ ld l,a
+ call CALL_HL
+ pop hl
+ jr pria_l
+
+;
+; | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+; | x | y | z |
+; | p | q |
+;
+
+t_argf:
+ db fi_ry,',',fi_rz,0 ;ld r[y],r[z]
+ db 'A,',fi_rz,0 ;op A,r[z]
+ db fi_ry,',(',fi_m8,')',0 ;in a,(m8)
+ db '(',fi_m8,'),',fi_ry,0 ;out (m8),a
+ db fi_rst,0
+ db '(SP),',fi_hlixiy,0 ;
+ db 'DE,HL',0
+ db 'AF,AF''',0
+ db fi_hlixiy,0
+
+
+;-------------------------------------------------------------------------------
+
+argpf_index defl 0
+
+argpf macro x
+fi_&x equ 80h+argpf_index
+ dw p_&x
+argpf_index defl argpf_index+1
+ endm
+
+do_arg_n:
+ argpf ry
+ argpf rz
+ argpf m8
+ argpf rst
+ argpf hlixiy
+
+p_ry:
+p_rz:
+p_m8:
+p_rst:
+p_hlixiy:
+
+;-------------------------------------------------------------------------------
+
+p_arg_ry_rz:
+ call p_arg_r
+ call p_char_comma
+ jp p_arg_rs
+p_arg_a_r:
+ call p_A_comma
+ jp p_arg_rs
+
+p_arg_r_m:
+ call p_arg_r
+ call p_char_comma
+ jp sub_1d2ch
+
+p_arg_m_r:
+ call sub_1d2ch
+ call p_char_comma
+ jp p_arg_r
+
+p_arg_rst:
+ ld a,(iy+000h)
+ and 038h
+ jp out_hex
+
+l1ca0h:
+ call pstr_inl
+ DC '(SP),'
+ jp p_arg_hlixiy
+
+l1caeh:
+ call p_char_lparen
+ call p_arg_hlixiy
+ jr out_rparen
+
+p_arg_ex_dehl:
+ call pstr_inl
+ DC 'DE,HL'
+p_arg_none:
+ ret
+
+l1cc1h:
+ call pstr_inl
+ DC 'SP,'
+ jp p_arg_hlixiy
+
+p_arg_ex_afaf:
+ call pstr_inl
+ DC 'AF,AF'''
+ ret
+
+l1cd3h:
+ call p_arg_hlixiy
+ call p_char_comma
+ jp p_arg_ww
+l1cdch:
+ call sub_1ce8h
+ call p_char_comma
+ jp p_char_A
+
+l1ce5h:
+ call p_A_comma
+sub_1ce8h:
+ call p_char_lparen
+ call p_arg_ww
+ jr out_rparen
+
+l1cf5h:
+ call p_A_comma
+ jr l1d09h
+l1cfah:
+ call p_arg_r
+ call p_char_comma
+ ld a,(isprefix_ixiy)
+ and a
+ ld a,(iy+002h)
+ jr nz,l1d0ch
+l1d09h:
+ ld a,(iy+001h)
+l1d0ch:
+ jp out_hex
+
+p_arg_cc_jrel:
+ ld a,(iy+000h)
+ and 018h
+ call p_arg_cc0
+ call p_char_comma
+p_arg_jrel:
+ ld c,(iy+001h)
+ ld a,c
+ rla
+ sbc a,a
+ ld b,a
+ push iy
+ pop hl
+ add hl,bc
+ inc hl
+ inc hl
+ jr l1d4eh
+
+l1d29h:
+ call p_A_comma
+sub_1d2ch:
+ call p_char_lparen
+ ld a,(iy+001h)
+p_arg_nn_rp:
+ call out_hex
+out_rparen:
+ jr p_char_rparen
+
+l1d37h:
+ call sub_1d2ch
+ jr p_char_comma_A
+
+p_arg_cc_mn:
+ call p_arg_cc
+ call p_char_comma
+p_arg_mn:
+ ld l,(iy+001h)
+ ld h,(iy+002h)
+l1d4eh:
+ ld a,002h
+sub_1d50h:
+ ld (disas_argtype),a
+ ld (disas_arg_16),hl
+ jp out_hl
+
+p_arg_ww_mn:
+ call p_arg_ww
+ call p_char_comma
+ jr p_arg_mn
+
+p_arg_addr_hl:
+ call p_arg_addr
+ call p_char_comma
+ jp p_arg_hlixiy
+
+p_arg_hl_addr:
+ call p_arg_hlixiy
+ call p_char_comma
+ jp p_arg_addr
+
+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'
+ db 021h
+l1d85h:
+ ld a,'0'
+ db 021h
+l1d89h:
+ ld a,'1'
+ db 021h
+l1d8dh:
+ ld a,'2'
+ db 021h
+p_char_rparen:
+ ld a,')'
+ db 021h
+p_char_lparen:
+ ld a,'('
+ jp outchar
+
+p_arg_IR:
+ ld a,(iy+000h)
+ rra
+ rra
+ rra
+ and 03
+ ld hl,t_arg_IR
+ jp p_arg
+
+t_arg_IR:
+ DC 'I,A'
+ DC 'R,A'
+ DC 'A,I'
+ DC 'A,R'
+ db 0
+
+p_arg_in_c:
+ call p_arg_r
+ call p_char_comma
+ ld hl,t__C_
+ jp pstr
+
+p_arg_out_c:
+ ld hl,t__C_
+ call pstr
+ call p_char_comma
+ jr p_arg_r
+
+l1dcah:
+ call p_arg_hlixiy
+ call p_char_comma
+ jp p_arg_ww
+
+p_arg_addr_ww:
+ call p_arg_addr
+ call p_char_comma
+ jp p_arg_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)
+ and a
+ jr nz,l1defh
+ ld a,(iy+001h)
+ jr l1df2h
+l1defh:
+ ld a,(iy+002h)
+l1df2h:
+ push af
+ rra
+ rra
+ rra
+ and 007h
+ add a,'0'
+ call outchar
+ call p_char_comma
+ pop af
+ jr p_arg_r0
+
+l1e03h:
+ ld a,(isprefix_ixiy)
+ and a
+ jr nz,l1e0eh
+ ld a,(iy+001h)
+ jr l1e11h
+l1e0eh:
+ ld a,(iy+002h)
+l1e11h:
+ jr p_arg_r0
+
+p_arg_r:
+ ld a,(iy+000h)
+ rra
+ rra
+ rra
+ jr p_arg_r0
+p_arg_rs:
+ ld a,(iy+000h)
+p_arg_r0:
+ and 7o
+ cp 6o
+ ld b,a
+ ld hl,t_BCDEHLMA
+ jr nz,p_arg0
+ ld a,(isprefix_ixiy)
+ and a
+ jr z,p_arg0
+ ld hl,t_lp_IXIY
+ dec a
+ call p_arg
+ ld a,(iy+001h)
+ push af
+ rlca
+ ld a,'+'
+ jr nc,l1e61h
+ pop af
+ neg
+ push af
+ ld a,'-'
+l1e61h:
+ call outchar
+ pop af
+ jp p_arg_nn_rp
+
+t_lp_IXIY:
+ DC '(IX'
+ DC '(IY'
+
+p_arg_hlixiy:
+ ld a,(isprefix_ixiy)
+ ld hl,t_HL.IX.IY
+ jr p_arg
+
+p_arg_zz:
+ ld hl,t_BC.DE.HL.AF
+ jr l1e8eh
+p_arg_ww:
+ ld hl,t_BC.DE.HL.SP
+l1e8eh:
+ ld a,(iy+000h)
+ rra
+ rra
+ rra
+ rra
+ and 003h
+ cp 002h
+ jr z,p_arg_hlixiy
+ jr p_arg
+
+p_arg_cc:
+ ld a,(iy+000h)
+p_arg_cc0:
+ rra
+ rra
+ rra
+ and 007h
+ ld hl,t_tstfl_ZCPS
+p_arg:
+ ld b,a
+p_arg0:
+ jp pstr_sel
+
+endif
+;-------------------------------------------------------------------------------
+;-------------------------------------------------------------------------------
tc_set_bp:
ld hl,(reg.pc)
@@ -3765,10 +4160,6 @@ isprefix_ixiy:
db 0
last_L:
dw TPA
-disas_arg_16:
- dw 0
-disas_argtype:
- db 0
pbl_loop_adr:
dw 0