]> cloudbase.mooo.com Git - ddt180.git/commitdiff
WIP
authorLeo C <erbl259-lmu@yahoo.de>
Mon, 6 May 2019 05:58:28 +0000 (07:58 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Mon, 6 May 2019 05:58:28 +0000 (07:58 +0200)
ddt180.z80

index 3e6f95f84a134c877370bc0a06e48551623cd011..f8b82b865ccbddc9812d036684862753cb8f0bb5 100644 (file)
@@ -2725,9 +2725,9 @@ b_1ad1_start:
        dw p_cc\r
        db 0c7h,0c7h,o_RST      ;rst\r
        dw p_arg_rst\r
-       db 0cfh,0c1h,o_POP      ;pop rr\r
+       db 0cfh,0c1h,o_POP      ;pop rp2\r
        dw p_rp2\r
-       db 0cfh,0c5h,o_PUSH     ;push rr\r
+       db 0cfh,0c5h,o_PUSH     ;push rp2\r
        dw p_rp2\r
        db 0ffh,0e3h,o_EX       ;ex (sp),hl\r
        dw l1ca0h\r
@@ -2737,27 +2737,27 @@ b_1ad1_start:
        dw p_arg_ex_dehl\r
        db 0ffh,0f9h,o_LD       ;ld sp,hl\r
        dw l1cc1h\r
-       db 0cfh,003h,o_INC      ;inc rr\r
+       db 0cfh,003h,o_INC      ;inc rp\r
        dw p_rp\r
-       db 0cfh,00bh,o_DEC      ;dec rr\r
+       db 0cfh,00bh,o_DEC      ;dec rp\r
        dw p_rp\r
-       db 0c7h,004h,o_INC      ;inc r\r
+       db 0c7h,004h,o_INC      ;inc r[y]\r
        dw p_ry\r
-       db 0c7h,005h,o_DEC      ;dec r\r
+       db 0c7h,005h,o_DEC      ;dec r[y]\r
        dw p_ry\r
        db 0ffh,008h,o_EX       ;ex af,af'\r
        dw p_arg_ex_afaf\r
-       db 0cfh,009h,o_ADD      ;add hl,rr\r
-       dw l1cd3h\r
-       db 0efh,002h,o_LD       ;ld (rr),a ;rr=bc,de\r
+       db 0cfh,009h,o_ADD      ;add hl,rp\r
+       dw l1dcah\r
+       db 0efh,002h,o_LD       ;ld (rp),a ;rp=bc,de\r
        dw l1cdch\r
-       db 0efh,00ah,o_LD       ;ld a,(rr) ;rr=bc,de\r
+       db 0efh,00ah,o_LD       ;ld a,(rp) ;rp=bc,de\r
        dw l1ce5h\r
        db 0\r
 \r
 ; 2 byte opdodes\r
 b_1b54_start:\r
-       db 0c7h,006h,o_LD       ;ld r,nn\r
+       db 0c7h,006h,o_LD       ;ld r[y],nn\r
        dw l1cfah\r
        db 0ffh,0c6h,o_ADD      ;add a,nn\r
        dw l1cf5h\r
@@ -2841,17 +2841,17 @@ b_1bc9_start:
        db 0ffh                 ;<end mark>\r
 \r
 b_1bf4_start:\r
-       db 0ffh,070h,0ffh       ;in (c)    ;\r
-       dw p_arg_in_c           ;\r
+       db 0ffh,070h,o_IN       ;in (c)    ;\r
+       dw p_arg_in_c_0         ;\r
        db 0c7h,040h,o_IN       ;in r,(c)  ;r=b,c,d,e,h,l,a\r
        dw p_arg_in_c           ;\r
        db 0ffh,071h,0ffh       ;out (c),0 ;\r
        dw p_arg_out_c          ;\r
        db 0c7h,041h,o_OUT      ;out (c),r ;r=b,c,d,e,h,l,a\r
        dw p_arg_out_c          ;\r
-       db 0cfh,042h,o_SBC      ;sbc hl,rr\r
+       db 0cfh,042h,o_SBC      ;sbc hl,rp\r
        dw l1dcah               ;\r
-       db 0cfh,04ah,o_ADC      ;adc hl,rr\r
+       db 0cfh,04ah,o_ADC      ;adc hl,rp\r
        dw l1dcah               ;\r
        db 0ffh,046h,o_IM       ;im 0\r
        dw l1d85h               ;\r
@@ -2967,10 +2967,6 @@ p_arg_ex_afaf:
        DC      'AF,AF'''\r
        ret\r
 \r
-l1cd3h:\r
-       call p_arg_hlixiy\r
-       call p_char_comma\r
-       jp p_rp\r
 l1cdch:\r
        call sub_1ce8h\r
        call p_char_comma\r
@@ -3103,6 +3099,7 @@ t_arg_IR:
 p_arg_in_c:\r
        call p_ry\r
        call p_char_comma\r
+p_arg_in_c_0:\r
        ld hl,t__C_\r
        jp pstr\r
 \r
@@ -3135,35 +3132,30 @@ p_arg_addr:
        jr p_char_rparen\r
 \r
 p_arg_bitop:\r
-       ld a,(isprefix_ixiy)\r
-       and a\r
-       jr nz,l1defh\r
-       ld a,(iy+001h)\r
-       jr l1df2h\r
-l1defh:\r
-       ld a,(iy+002h)\r
-l1df2h:\r
+       call get_cb_opc\r
        push af\r
        rra\r
        rra\r
        rra\r
        and 007h\r
-       add a,'0'\r
-       call outchar\r
+;      add a,'0'\r
+;      call outchar\r
+       call out_dgt\r
        call p_char_comma\r
        pop af\r
        jr p_r0\r
 \r
 p_rz_cb:\r
+       call get_cb_opc\r
+       jr p_r0\r
+\r
+get_cb_opc:\r
        ld a,(isprefix_ixiy)\r
        and a\r
-       jr nz,l1e0eh\r
        ld a,(iy+001h)\r
-       jr l1e11h\r
-l1e0eh:\r
+       ret z\r
        ld a,(iy+002h)\r
-l1e11h:\r
-       jr p_r0\r
+       ret\r
 \r
 p_ry:\r
        ld a,(iy+000h)\r
@@ -3463,15 +3455,55 @@ pria_1:                         ;
 t_argf:\r
        db      fi_ry,',',fi_rz,0       ;ld r[y],r[z]\r
        db      'A,',fi_rz,0            ;op A,r[z]\r
-       db      fi_ry,',(',fi_m8,')',0  ;in a,(m8)\r
-       db      '(',fi_m8,'),',fi_ry,0  ;out (m8),a\r
-       db      fi_rst,0\r
-       db      '(SP),',fi_hlixiy,0     ;\r
+       db      fi_rz,0                 ;op r[z]\r
+       db      fi_ccy,0                ;op cc[y]\r
+       db      fi_rst,0                ;\r
+       db      fi_rp2,0                ;rp2[p]\r
+       db      '(SP),',fi_hlixiy,0     ;ex (sp),hl\r
+       db      fi_hlixiy,0             ;jp (hl)\r
        db      'DE,HL',0\r
-       db      'AF,AF''',0\r
-       db      fi_hlixiy,0\r
-       db      fi_rp                   ;rp[p]\r
-       db      fi_rp2                  ;rp2[p]\r
+       db      'SP,',fi_hlixiy,0       ;ld SP,HL\r
+       db      fi_rp,0                 ;rp[p]\r
+       db      fi_ry,0                 ;inc r[y]\r
+       db      'AF,AF''',0             ;ex af,af'\r
+       db      fi_hlixiy,fi_rp,0       ;add hl,rp\r
+       db      '(',fi_rp,'),A',0       ;ld (rp),a ;rp=bc,de\r
+       db      'A,(',fi_rp,')',0       ;ld a,(rp) ;rp=bc,de\r
+\r
+       db      fi_ry,fi_n,0            ;ld r[y],n\r
+       db      'A,',fi_n,0             ;op a,n\r
+       db      fi_n,0                  ;op n\r
+       db      fi_j,0                  ;jr j\r
+       db      fi_ccy2,fi_j,0          ;jr cc,j        ;cc = nz,z,nc,c\r
+       db      '(',fi_n,'),',fi_ry,0   ;out (n),a\r
+       db      fi_ry,',(',fi_n,')',0   ;in a,(n)\r
+\r
+       db      fi_ccy,fi_nn,0          ;op cc[y],nn\r
+       db      fi_rp,fi_nn,0           ;ld rp[p],nn\r
+       db      fi_nn,0                 ;jp nn\r
+       db      '(',fi_nn,'),',fi_hlixiy,0 ;ld (nn),hl\r
+       db      fi_hlixiy,',(',fi_nn,')',0 ;ld hl,(nn)\r
+       db      '(',fi_nn,'),A',0       ;ld (nn),a\r
+       db      'A,(',fi_nn,')',0       ;ld a,(nn)\r
+\r
+       db      fi_ry,'(C)',0           ;in r[y],(c)\r
+       db      '(C)',0                 ;in (c)\r
+       db      '(C)',fi_ry,0           ;out (c),r[y]\r
+       db      '0',0                   ;im 0\r
+       db      '1',0                   ;im 1\r
+       db      '2',0                   ;im 2\r
+       db      fi_ir,0                 ;ld a,i ... r,a\r
+\r
+       db      fi_ry,'(',fi_n,')',0    ;in0 r[y],(n)\r
+       db      '(',fi_n,')',0          ;in0 (n)\r
+       db      '(',fi_n,')',fi_ry,0    ;out0 (n),r[y]\r
+\r
+       db      '(',fi_nn,'),',fi_rp,0  ;ld (nn),rp\r
+       db      fi_rp,',(',fi_nn,')',0  ;ld rp,(nn)\r
+\r
+       db      fi_rz_cb,0              ;op r[z]\r
+       db      fi_y,',',fi_rz_cb,0     ;op y,r[z]\r
+\r
 \r
 ;-------------------------------------------------------------------------------\r
 \r