\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