summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2019-04-09 22:49:10 +0200
committerLeo C2019-04-09 22:57:26 +0200
commit100f82420f8ed5e873dea8d00b309b6e81532706 (patch)
treec0bca45002d26f96df1fa05947800ace4197a2b8
parent6bc52899c7a32a3ead532511537c082be3105082 (diff)
downloadddt180-100f82420f8ed5e873dea8d00b309b6e81532706.zip
jp --> jr (3 bytes). Remove duplicated code
-rw-r--r--ddt180.z80460
1 files changed, 66 insertions, 394 deletions
diff --git a/ddt180.z80 b/ddt180.z80
index e17ecfd..e8fa484 100644
--- a/ddt180.z80
+++ b/ddt180.z80
@@ -2457,7 +2457,7 @@ disas_get_instrlen:
ld (isprefix_ixiy),a
ld a,(iy+000h)
cp 0edh
- jp z,disas_pfx.ED
+ jr z,disas_pfx.ED
cp 0ddh
jr z,l19abh
cp 0fdh
@@ -2465,8 +2465,8 @@ disas_get_instrlen:
sub_19a0h:
ld a,(iy+000h)
cp 0cbh
- jp z,disas_pfx.CB
- jp disas_nopfx
+ jr z,disas_pfx.CB
+ jr disas_nopfx
l19abh:
ld a,1
jr l19b1h
@@ -2486,6 +2486,64 @@ l19b1h:
;-------------------------------------------------------------------------------
+disas_nopfx:
+ ld hl,b_1b54_start ;2 byte opcodes
+ call lookup_op_arg
+ ld b,2
+ ret c
+ ld hl,b_1ab6_start ;1 byte opcodes (no parameters)
+ call lookup_op
+ ld b,1
+ ret c
+ ld hl,b_1ad1_start ;1 byte opcodes
+ call lookup_op_arg
+ ld b,1
+ ret c
+ ld hl,b_1b9b_start ;3 byte opcodes
+ call lookup_op_arg
+ ld b,3
+ ret
+
+;-------------------------------------------------------------------------------
+
+disas_pfx.ED:
+ inc iy
+ ld hl,b_1bc9_start ;1 byte opcode, no arguments
+ call lookup_op
+ ld b,2
+ ret c
+ ld hl,b_1bf4_start
+ call lookup_op_arg
+ ld b,2
+ ret c
+
+ ld hl,l228bh
+ call lookup_op_arg
+ ld b,3
+ ret c
+ ld hl,b_1c40_start
+ call lookup_op_arg
+ ld b,4
+ ret
+
+;-------------------------------------------------------------------------------
+
+disas_pfx.CB:
+ push iy
+ inc iy
+ ld a,(isprefix_ixiy)
+ and a
+ jr z,l1a42h
+ inc iy
+l1a42h:
+ ld hl,b_1c55_start
+ call lookup_op_arg
+ pop iy
+ ld b,2
+ ret
+
+;-------------------------------------------------------------------------------
+
disas_pfx.DDFD:
inc iy
ld hl,b_19ef_start
@@ -2562,65 +2620,7 @@ l1a0ah:
;-------------------------------------------------------------------------------
-disas_pfx.ED:
- inc iy
- ld hl,b_1bc9_start
- call sub_1a72h
- ld b,2
- ret c
- ld hl,b_1bf4_start
- call lookup_opc
- ld b,2
- ret c
-
- ld hl,l228bh
- call lookup_opc
- ld b,3
- ret c
- ld hl,b_1c40_start
- call lookup_opc
- ld b,4
- ret
-
-;-------------------------------------------------------------------------------
-
-disas_pfx.CB:
- push iy
- inc iy
- ld a,(isprefix_ixiy)
- and a
- jr z,l1a42h
- inc iy
-l1a42h:
- ld hl,b_1c55_start
- call lookup_opc
- pop iy
- ld b,2
- ret
-
-;-------------------------------------------------------------------------------
-
-disas_nopfx:
- ld hl,b_1b54_start
- call lookup_opc
- ld b,2
- ret c
- ld hl,b_1ab6_start
- call sub_1a72h
- ld b,1
- ret c
- ld hl,b_1ad1_start
- call lookup_opc
- ld b,1
- ret c
- ld hl,b_1b9b_start
- call lookup_opc
- ld b,3
- ret
-
-;-------------------------------------------------------------------------------
-
-sub_1a72h:
+lookup_op:
ld a,(hl)
cp 0ffh
ret z
@@ -2628,7 +2628,7 @@ sub_1a72h:
jr z,l1a7fh
inc hl
inc hl
- jr sub_1a72h
+ jr lookup_op
l1a7fh:
ld de,p_arg_none
inc hl
@@ -2646,7 +2646,7 @@ test_DDFD:
scf
ret
-lookup_opc:
+lookup_op_arg:
ld a,(iy+000h)
and (hl)
inc hl
@@ -2658,7 +2658,7 @@ lookup_opc:
inc hl
ld a,(hl)
and a
- jr nz,lookup_opc
+ jr nz,lookup_op_arg
ret
l1aa8h:
@@ -3489,334 +3489,6 @@ 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
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
@@ -3841,7 +3513,7 @@ tc_set_bp:
call bp_trace_enter
ld iy,(reg.pc)
ld hl,t_op_branch
- call lookup_opc
+ call lookup_op_arg
ccf
ret c
ex de,hl