page 200 ; Simple polling drivers for ASCI0 and ASCI1 global as0init global as0ista,as0inp global as0osta,as0out global as1init global as1ista,as1inp global as1osta,as1out extrn as_init include config.inc include z180reg.inc dseg ;-------------------------------------------------------------- ; Init Serial I/O for input and output (ASCI 0/1) ; ; b: device number ; as0init: ld c,0 ;asci channel number jp as_init as1init: ld c,1 ;asci channel number jp as_init ;-------------------------------------------------------------- as0ista: in0 a,(stat0) and M_RDRF ret z or 0ffh ret as1ista: in0 a,(stat1) and M_RDRF ret z or 0ffh ret as0inp: in0 a,(stat0) bit RDRF,a jr z,as0inp in0 c,(rdr0) and a,M_OVRN+M_PERR+M_FE jr z,as0in_ex in0 a,(cntla0) res EFR,a out0 (cntla0),a as0in_ex: ld a,c ret as1inp: in0 a,(stat1) bit RDRF,a jr z,as1inp in0 c,(rdr1) and a,M_OVRN+M_PERR+M_FE jr z,as1in_ex in0 a,(cntla1) res EFR,a out0 (cntla1),a as1in_ex: ld a,c ret if 0 in0 a,(stat1) rlca jr nc,as1inp in0 a,rdr1 ret endif as0osta: in0 a,(stat0) and M_TDRE ret z or 0ffh ret as1osta: in0 a,(stat1) and M_TDRE ret z or 0ffh ret as0out: in0 a,(stat0) and M_TDRE jr z,as0out out0 (tdr0),c ld a,c ret as1out: in0 a,(stat1) and M_TDRE jr z,as1out out0 (tdr1),c ld a,c ret end