summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2019-05-06 07:58:28 +0200
committerLeo C2019-05-06 07:58:28 +0200
commit998c0841e630a26996601f9e5f4400f28f1512d4 (patch)
treee377adeadb441159dec4a4953b0298837035ff99
parent70fd7dac5fcca8b277c4b63fd28579fb42e29a5d (diff)
downloadddt180-998c0841e630a26996601f9e5f4400f28f1512d4.zip
WIP
-rw-r--r--ddt180.z80116
1 files changed, 74 insertions, 42 deletions
diff --git a/ddt180.z80 b/ddt180.z80
index 3e6f95f..f8b82b8 100644
--- a/ddt180.z80
+++ b/ddt180.z80
@@ -2725,9 +2725,9 @@ b_1ad1_start:
dw p_cc
db 0c7h,0c7h,o_RST ;rst
dw p_arg_rst
- db 0cfh,0c1h,o_POP ;pop rr
+ db 0cfh,0c1h,o_POP ;pop rp2
dw p_rp2
- db 0cfh,0c5h,o_PUSH ;push rr
+ db 0cfh,0c5h,o_PUSH ;push rp2
dw p_rp2
db 0ffh,0e3h,o_EX ;ex (sp),hl
dw l1ca0h
@@ -2737,27 +2737,27 @@ b_1ad1_start:
dw p_arg_ex_dehl
db 0ffh,0f9h,o_LD ;ld sp,hl
dw l1cc1h
- db 0cfh,003h,o_INC ;inc rr
+ db 0cfh,003h,o_INC ;inc rp
dw p_rp
- db 0cfh,00bh,o_DEC ;dec rr
+ db 0cfh,00bh,o_DEC ;dec rp
dw p_rp
- db 0c7h,004h,o_INC ;inc r
+ db 0c7h,004h,o_INC ;inc r[y]
dw p_ry
- db 0c7h,005h,o_DEC ;dec r
+ db 0c7h,005h,o_DEC ;dec r[y]
dw p_ry
db 0ffh,008h,o_EX ;ex af,af'
dw p_arg_ex_afaf
- db 0cfh,009h,o_ADD ;add hl,rr
- dw l1cd3h
- db 0efh,002h,o_LD ;ld (rr),a ;rr=bc,de
+ db 0cfh,009h,o_ADD ;add hl,rp
+ dw l1dcah
+ db 0efh,002h,o_LD ;ld (rp),a ;rp=bc,de
dw l1cdch
- db 0efh,00ah,o_LD ;ld a,(rr) ;rr=bc,de
+ db 0efh,00ah,o_LD ;ld a,(rp) ;rp=bc,de
dw l1ce5h
db 0
; 2 byte opdodes
b_1b54_start:
- db 0c7h,006h,o_LD ;ld r,nn
+ db 0c7h,006h,o_LD ;ld r[y],nn
dw l1cfah
db 0ffh,0c6h,o_ADD ;add a,nn
dw l1cf5h
@@ -2841,17 +2841,17 @@ b_1bc9_start:
db 0ffh ;<end mark>
b_1bf4_start:
- db 0ffh,070h,0ffh ;in (c) ;
- dw p_arg_in_c ;
+ db 0ffh,070h,o_IN ;in (c) ;
+ dw p_arg_in_c_0 ;
db 0c7h,040h,o_IN ;in r,(c) ;r=b,c,d,e,h,l,a
dw p_arg_in_c ;
db 0ffh,071h,0ffh ;out (c),0 ;
dw p_arg_out_c ;
db 0c7h,041h,o_OUT ;out (c),r ;r=b,c,d,e,h,l,a
dw p_arg_out_c ;
- db 0cfh,042h,o_SBC ;sbc hl,rr
+ db 0cfh,042h,o_SBC ;sbc hl,rp
dw l1dcah ;
- db 0cfh,04ah,o_ADC ;adc hl,rr
+ db 0cfh,04ah,o_ADC ;adc hl,rp
dw l1dcah ;
db 0ffh,046h,o_IM ;im 0
dw l1d85h ;
@@ -2967,10 +2967,6 @@ p_arg_ex_afaf:
DC 'AF,AF'''
ret
-l1cd3h:
- call p_arg_hlixiy
- call p_char_comma
- jp p_rp
l1cdch:
call sub_1ce8h
call p_char_comma
@@ -3103,6 +3099,7 @@ t_arg_IR:
p_arg_in_c:
call p_ry
call p_char_comma
+p_arg_in_c_0:
ld hl,t__C_
jp pstr
@@ -3135,35 +3132,30 @@ p_arg_addr:
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:
+ call get_cb_opc
push af
rra
rra
rra
and 007h
- add a,'0'
- call outchar
+; add a,'0'
+; call outchar
+ call out_dgt
call p_char_comma
pop af
jr p_r0
p_rz_cb:
+ call get_cb_opc
+ jr p_r0
+
+get_cb_opc:
ld a,(isprefix_ixiy)
and a
- jr nz,l1e0eh
ld a,(iy+001h)
- jr l1e11h
-l1e0eh:
+ ret z
ld a,(iy+002h)
-l1e11h:
- jr p_r0
+ ret
p_ry:
ld a,(iy+000h)
@@ -3463,15 +3455,55 @@ pria_1: ;
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 fi_rz,0 ;op r[z]
+ db fi_ccy,0 ;op cc[y]
+ db fi_rst,0 ;
+ db fi_rp2,0 ;rp2[p]
+ db '(SP),',fi_hlixiy,0 ;ex (sp),hl
+ db fi_hlixiy,0 ;jp (hl)
db 'DE,HL',0
- db 'AF,AF''',0
- db fi_hlixiy,0
- db fi_rp ;rp[p]
- db fi_rp2 ;rp2[p]
+ db 'SP,',fi_hlixiy,0 ;ld SP,HL
+ db fi_rp,0 ;rp[p]
+ db fi_ry,0 ;inc r[y]
+ db 'AF,AF''',0 ;ex af,af'
+ db fi_hlixiy,fi_rp,0 ;add hl,rp
+ db '(',fi_rp,'),A',0 ;ld (rp),a ;rp=bc,de
+ db 'A,(',fi_rp,')',0 ;ld a,(rp) ;rp=bc,de
+
+ db fi_ry,fi_n,0 ;ld r[y],n
+ db 'A,',fi_n,0 ;op a,n
+ db fi_n,0 ;op n
+ db fi_j,0 ;jr j
+ db fi_ccy2,fi_j,0 ;jr cc,j ;cc = nz,z,nc,c
+ db '(',fi_n,'),',fi_ry,0 ;out (n),a
+ db fi_ry,',(',fi_n,')',0 ;in a,(n)
+
+ db fi_ccy,fi_nn,0 ;op cc[y],nn
+ db fi_rp,fi_nn,0 ;ld rp[p],nn
+ db fi_nn,0 ;jp nn
+ db '(',fi_nn,'),',fi_hlixiy,0 ;ld (nn),hl
+ db fi_hlixiy,',(',fi_nn,')',0 ;ld hl,(nn)
+ db '(',fi_nn,'),A',0 ;ld (nn),a
+ db 'A,(',fi_nn,')',0 ;ld a,(nn)
+
+ db fi_ry,'(C)',0 ;in r[y],(c)
+ db '(C)',0 ;in (c)
+ db '(C)',fi_ry,0 ;out (c),r[y]
+ db '0',0 ;im 0
+ db '1',0 ;im 1
+ db '2',0 ;im 2
+ db fi_ir,0 ;ld a,i ... r,a
+
+ db fi_ry,'(',fi_n,')',0 ;in0 r[y],(n)
+ db '(',fi_n,')',0 ;in0 (n)
+ db '(',fi_n,')',fi_ry,0 ;out0 (n),r[y]
+
+ db '(',fi_nn,'),',fi_rp,0 ;ld (nn),rp
+ db fi_rp,',(',fi_nn,')',0 ;ld rp,(nn)
+
+ db fi_rz_cb,0 ;op r[z]
+ db fi_y,',',fi_rz_cb,0 ;op y,r[z]
+
;-------------------------------------------------------------------------------