X-Git-Url: http://cloudbase.mooo.com/gitweb/ddt180.git/blobdiff_plain/9a7481b89a26f26fa5afa56e54c0a830996da686..25ba7c19777f6d5dad514864f40f57bbedcb3e13:/ddt180.z80 diff --git a/ddt180.z80 b/ddt180.z80 index 1bc4e1d..5e17667 100644 --- a/ddt180.z80 +++ b/ddt180.z80 @@ -2683,6 +2683,9 @@ lookup_opc: l1aa8h: inc hl ld c,(hl) + inc c + ret z + dec c inc hl ld e,(hl) inc hl @@ -2717,7 +2720,7 @@ b_1ab6_start: ; 1 byte opcodes ; Format: db mask, match, t_MNEMONICS-index -; dw argument formating fuction +; dw argument formating function b_1ad1_start: db 0c0h,040h,o_LD ;ld r,r dw p_arg_r_r @@ -2763,7 +2766,7 @@ b_1ad1_start: dw p_arg_r db 0ffh,008h,o_EX ;ex af,af' dw p_arg_ex_afaf - db 0cfh,009h,003h ;add hl,rr + db 0cfh,009h,o_ADD ;add hl,rr dw l1cd3h db 0efh,002h,o_LD ;ld (rr),a ;rr=bc,de dw l1cdch @@ -2857,17 +2860,13 @@ b_1bc9_start: db 0ffh ; b_1bf4_start: - db 0e7h,040h,o_IN ;in r,(c) ;r=b,c,d,e - dw p_arg_in_c ; - db 0f7h,060h,o_IN ;in r,(c) ;r=h,l + db 0ffh,070h,0ffh ;in (c) ; dw p_arg_in_c ; - db 0ffh,078h,o_IN ;in r,(c) ;r=a + db 0c7h,040h,o_IN ;in r,(c) ;r=b,c,d,e,h,l,a dw p_arg_in_c ; - db 0e7h,041h,o_OUT ;out (c),r ;r=b,c,d,e - dw p_arg_out_c ; - db 0f7h,061h,o_OUT ;out (c),r ;r=h,l + db 0ffh,071h,0ffh ;out (c),0 ; dw p_arg_out_c ; - db 0ffh,079h,o_OUT ;out (c),r ;r=a + 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 dw l1dcah ; @@ -2888,17 +2887,13 @@ b_1bf4_start: db 0 l228bh: - db 0e7h,000h,o_IN ;in0 r,(m) ;r=b,c,d,e + db 0ffh,030h,0ffh ;in0 (m) dw p_arg_r_m - db 0f7h,020h,o_IN ;in0 r,(m) ;r=h,l + db 0c7h,000h,o_IN ;in0 r,(m) ;r=b,c,d,e,h,l,a dw p_arg_r_m - db 0ffh,038h,o_IN ;in0 a,(m) - dw p_arg_r_m - db 0e7h,001h,o_OUT0 ;out0 (m),r ;r=b,c,d,e - dw p_arg_m_r - db 0f7h,021h,o_OUT0 ;out0 (m),r ;r=h,l + db 0ffh,031h,0ffh ;out0 (m),0 dw p_arg_m_r - db 0ffh,039h,o_OUT0 ;out0 (m),a + db 0ech,001h,o_OUT0 ;out0 (m),r ;r=b,c,d,e dw p_arg_m_r db 0ffh,064h,o_TST ;tst m dw l1d09h @@ -2906,14 +2901,13 @@ l228bh: dw l1d09h db 0 +; Prefix ED + 1 byte opcode + 2 byte address +; Format: db mask, match, t_MNEMONICS-index +; dw argument formating function b_1c40_start: - db 0efh,043h,o_LD ;ld (mn),ww ;ww=bc,de - dw p_arg_addr_ww - db 0ffh,073h,o_LD ;ld (mn),sp + db 0cfh,043h,o_LD ;ld (mn),ww ;ww=bc,de,hl,sp dw p_arg_addr_ww - db 0efh,04bh,o_LD ;ld ww,(mn) ;ww=bc,de - dw p_arg_ww_addr - db 0ffh,07bh,o_LD ;ld sp,(mn) + db 0cfh,04bh,o_LD ;ld ww,(mn) ;ww=bc,de,hl,sp dw p_arg_ww_addr db 0 @@ -3239,6 +3233,7 @@ 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 @@ -3268,6 +3263,19 @@ p_arg: p_arg0: jp pstr_sel +if 0 +p_bli: + ld a,(iy+000h) + rra + and 00ch + ld b,a + ld a,(iy+000h) + and 003h + or b + ld hl,t_mn_bli + jr p_arg +endif + ;------------------------------------------------------------------------------- opc_index defl 0 @@ -3285,83 +3293,98 @@ opc_offset defl opc_offset+$-pos t_MNEMONICS: - opc ADC - opc ADD - opc AND - opc BIT - opc CALL - opc CCF - opc CP - opc CPD - opc CPDR - opc CPI - opc CPIR - opc CPL - opc DAA +; 1-byte other + opc NOP + opc LD + opc INC opc DEC - opc DI opc DJNZ - opc EI - opc EX - opc EXX - opc HALT - opc IM - opc IN - opc INC - opc IND - opc INDR - opc INI - opc INIR - opc JP opc JR - opc LD - opc LDD - opc LDDR - opc LDI - opc LDIR - opc NEG - opc NOP + opc HALT + + opc RLCA + opc RRCA + opc RLA + opc RRA + opc DAA + opc CPL + opc SCF + opc CCF + +; 1-byte "alu" + opc ADD + opc ADC + opc SUB + opc SBC + opc AND + opc XOR opc OR - opc OTDR - opc OTIR - opc OUT - opc OUTD - opc OUTI + opc CP + + opc RET opc POP + opc JP + opc CALL opc PUSH - opc RES - opc RET - opc RETI - opc RETN - opc RL - opc RLA + opc RST + opc OUT + opc EXX + opc IN + opc EX + opc DI + opc EI +; CB opc RLC - opc RLCA - opc RLD - opc RR - opc RRA opc RRC - opc RRCA - opc RRD - opc RST - opc SBC - opc SCF - opc SET + opc RL + opc RR opc SLA opc SRA +; SLL opc SRL - opc SUB - opc XOR + opc BIT + opc RES + opc SET + +; ED + opc NEG + opc RETN + opc RETI + opc IM + opc RRD + opc RLD + +;Block instructions +t_mn_bli: + opc LDI + opc CPI + opc INI + opc OUTI + opc LDD + opc CPD + opc IND + opc OUTD + opc LDIR + opc CPIR + opc INIR + opc OTIR + opc LDDR + opc CPDR + opc INDR + opc OTDR + +;Z180 opc IN0 - opc MLT - opc OTDM - opc OTDMR - opc OTIM - opc OTIMR opc OUT0 - opc SLP opc TST + opc MLT opc TSTIO + opc SLP + opc OTIM + opc OTDM + opc OTIMR + opc OTDMR + DB 0 t_BCDEHL_HL_A: