*******************************************
* PIA21
*  Device Driver for MC6821 PIAs
*
* By J.Bird [APRMCS] (C) 1992
*
* Uses Side A for i/p & side B for o/p
* CA2 & CB2 Control Strobe lines
* Non-interrupt driven
*

 nam PIA21
 ttl MC6821 PIA Device Driver

 ifp1
 use /d0/defs/os9defs
 use /d0/defs/iodefs
 use /d0/defs/scfdefs
 endc

***********************
* Edition History
*
* #   date     Comments
* - -------- -------------------------------
* 1 05.05.92  Driver first written. JRB

Edition  equ 1
Revision equ 1
 org V.SCF
PST equ .

 mod PEND,PNAM,Drivr+Objct,Reent+Revision,PENT,PST
 fcb READ.+WRITE.
PNAM fcs /PIA21/
 fcb Edition

PENT lbra INIT
 lbra READ
 lbra WRITE
 lbra GETSTA
 lbra PUTSTA
 lbra TERM

**********************
* INIT
*   Setup the PIA
*
INIT ldx V.PORT,U
 clr 1,x
 clr ,x
 lda #47
 sta 1,x
 clr 3,x
 lda #$ff
 sta 2,x
 lda #47
 sta 3,x
 lda ,x
 clrb
 rts

**********************
* READ
*   Read a byte from Port A
*
READ ldx V.PORT,U
readlp tst 1,x
 bmi readbyte
 pshs x
 ldx #1
 os9 f$sleep
 puls x
 bra readlp
readbyte lda ,x
 clrb 
 rts

**********************
* WRITE
*   Write a byte to Port B
*
WRITE ldx V.PORT,U
 sta 2,x
writlp tst 3,x
 bmi wrt
 pshs x
 ldx #1
 os9 f$sleep
 puls x
 bra writlp
wrt clrb
 rts

**********************
* GETSTA
*   Return OK for data ready & EOF
*
GETSTA cmpa #1
 beq wrt
 cmpa #6
 beq wrt
 comb
 ldb #E$UnkSVC
 rts

**********************
* PUTSTA
*   No status requests impl
*
PUTSTA comb
 ldb #E$UnkSVC
 rts

**********************
* TERM
*   Terminate Driver
*
TERM rts

 emod
PEND equ * 

 

