]> cloudbase.mooo.com Git - ddt180.git/blobdiff - ddt180.z80
Add CSIO interface.
[ddt180.git] / ddt180.z80
index ef1dd6c6138961eb2618ad3178f07b053e4f8258..20d7a141de444ea23dd9862e77160fdf1408b868 100644 (file)
@@ -395,29 +395,71 @@ as1out:
 \r
 ;-------------------------------------------------------------------------------\r
 \r
+\r
+csio_rx_tmp:   db      0ffh\r
+\r
 csio_ista:\r
+       ld      hl,csio_rx_tmp\r
+       ld      a,(hl)\r
+       cp      0ffh\r
+       jr      nz,csist_1\r
+       ld      a,01\r
+       call    csio_wr\r
+       call    csio_rd\r
+       call    csio_rd\r
+       ld      (hl),a\r
+       sub     a,0ffh\r
+       ret     z\r
+csist_1:\r
+       or      0ffh\r
+       ret\r
+\r
 csio_inp:\r
-csio_out:\r
-       xor     a\r
+       ld      hl,csio_rx_tmp\r
+       ld      a,(hl)\r
+       ld      (hl),0ffh\r
+       cp      0ffh\r
+       ret     nz\r
+csin_1:\r
+       ld      a,01\r
+       call    csio_wr\r
+       call    csio_rd\r
+       call    csio_rd\r
+       cp      0ffh\r
+       jr      z,csin_1\r
+       ret\r
+\r
+csio_rd:\r
+       ld      a,M_CSIO_RE\r
+       call    csio_cmd_wait\r
+       in0     a,(trdr)\r
        ret\r
 \r
+csio_out:\r
+       ld      a,02\r
+       call    csio_wr\r
+       call    csio_rd\r
+       call    csio_rd\r
+       or      a\r
+       jr      z,csio_out\r
 \r
-       ld      a,0ffh\r
-do_csio:\r
-       push    af\r
-       call    csio_wait_te\r
-       pop     af\r
+       ld      a,c\r
+       inc     a               ;ff..02 --> 00..03\r
+       cp      04h\r
+       jr      nc,csout_1\r
+       ld      a,00h\r
+       call    csio_wr\r
+csout_1:\r
+       ld      a,c\r
+csio_wr:\r
        out0    (trdr),a\r
        ld      a,M_CSIO_TE\r
+csio_cmd_wait:\r
        out0    (cntr),a\r
-       call    csio_wait_te\r
-       in0     a,(trdr)\r
-       ret\r
-\r
-csio_wait_te:\r
+cswr_wait:\r
        in0     a,(cntr)\r
-       and     M_CSIO_TE\r
-       jr      nz,csio_wait_te\r
+       and     M_CSIO_TE+M_CSIO_RE\r
+       jr      nz,cswr_wait\r
        ret\r
 \r
     endif ; CPM\r