view os9/level1/printer.asm @ 31:bd2b07db8917 cocoos9lv2v3

CoCoOS9 version
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Jul 2018 15:16:13 +0900
parents
children
line wrap: on
line source

* Original OS9 printer driver
* The PIA address is hardcoded
* Only output is possible
         nam   PRINTER
         ttl   Standard printer driver for OS9

         ifp1
         use   os9defs
         use   scfdefs
         endc
pia0a    equ   $FF00
pia0b    equ   $FF02
pia1a    equ   $FF20
pia1b    equ   $FF22
tylg     set   Drivr+Objct
atrv     set   ReEnt+rev
rev      set   $01
         mod   PEND,PNAM,tylg,atrv,PENT,size
         rmb   29
size     equ   .
         fcb   READ.+WRITE.

PNAM     fcs   /PRINTER/
         fcb   $01     Sandsynligvis revision, som sættes automatisk

PENT     lbra  INIT
         lbra  READ
         lbra  WRITE
         lbra  GETSTA
         lbra  PUTSTA
         lbra  TERM
**************
* INIT
INIT     pshs  cc
         orcc  #$50
         ldx   #pia1a
         ldb   $01,x
         clr   $01,x
         lda   #$FE
         sta   ,x
         stb   $01,x
         ldx   #pia1b
         ldb   $01,x
         clr   $01,x
         lda   ,x
         anda  #$FE
         sta   ,x
         stb   $01,x
         puls  cc
         clrb
         rts
**************
* READ
*   This module doesn't do reads
*
READ     ldb   #E$BMode
         orcc  #$01
         rts
**************
* WRITE
*
WRITE    pshs  a
L0053    ldb   #$08
L0055    lda   >pia1b
         lsra
         bcc   L006C
         nop
         nop
         decb
         bne   L0055
         pshs  x
         ldx   #$0001
         os9   F$Sleep    sleep for one clock tick
         puls  x
         bra   L0053
L006C    puls  a
         pshs  cc
         orcc  #$50
         sta   >pia0b
         lda   >pia1a
         ora   #$02
         sta   >pia1a
         anda  #$FD
         sta   >pia1a
         puls  pc,cc
**************
* GETSTA
*
GETSTA   cmpa  #SS.Ready
         bne   chkeof
allok    clrb
         rts
chkeof   cmpa  #SS.EOF
         beq   allok
**************
* PUTSTA
*
PUTSTA   comb
         ldb   #E$UnkSvc
         rts
**************
* TERM
*   Terminate driver
*
TERM     rts
         emod
PEND     equ   *