home *** CD-ROM | disk | FTP | other *** search
/ Serious Magazine 11 / Serious_Magazine_11_2002_Dial_pl_Disk_2_of_2_Side_B.atr / rom_02.lzh / PRINTER.TXT < prev    next >
Text File  |  2002-05-26  |  3KB  |  1 lines

  1. 09       .OPT NO LIST¢10 ;  SAVE #D1:PRINTER.M65¢20 ;¢30 ;¢40 ;  LOAD #D1:ROMTEST.M65¢50 ;¢60 ; labels localized 14 Oct 94¢66 ;¢70 ;  *= $FE99¢80       .PAGE "Printer Handler"¢81        LIST  ¢90       .LOCAL ¢065177 PIN LDA #30   Printer init¢065179   STA PTIMOT  Set time for¢065182   RTS         status call¢065183 ?ADRSTT .WORD DVSTAT¢065185 ?ADRPRT .WORD PRNBUF¢065187 STATUS.P LDA #4 Buffer len and¢065189   STA PBUFSZ  adr for status¢065192   LDX ?ADRSTT ; (ldx #<dvstat)¢065195   LDY ?ADRSTT+1 ;(ldy #>dvstat)¢065198   LDA #'S¢065200   STA DCOMND  In DAux1 causes¢065203   STA DAUX1   sideways (at820)¢065206   JSR ?SETDCB¢065209   JSR SIOV    Execute status¢065212   BMI NOFUNC.P Exit if bad¢065214   JSR ?SETTIM else set timeout¢065217 NOFUNC.P RTS ¢065218 OPEN.P JSR STATUS.P Open Prtr¢065221   LDA #0      Check status and¢065223   STA PBPNT   reset buffer ptr¢065226   RTS ¢065227 PUT.P PHA     Put Byte: Save¢065228   LDA ICDNO,X on stack and¢065231   STA ICDNOZ  set device num¢065233   JSR ?BUFLEN Do buffer length¢065236   LDX PBPNT   Set index¢065239   PLA         Recover byte¢065240   STA PRNBUF,X Add to buffer¢065243   INX         Bump index and,¢065244   CPX PBUFSZ  if at maximum,¢065247   BEQ ?PRTBUF print it out.¢065249   STX PBPNT   Else save index¢065252   CMP #155    Was byte a CR?¢065254   BEQ ?GOTCR  If so pad buffer¢065256   LDY #1      Else just return¢065258   RTS         for next byte.                ---  Exit, line incomplete¢065259 ?GOTCR LDA #32 Pad with spaces¢065261 ?PADLOOP STA PRNBUF,X Pad out¢065264   INX         printer buffer¢065265   CPX PBUFSZ  with character¢065268   BNE ?PADLOOP in accumulator.¢065270 ?PRTBUF LDA #0 Reset index for¢065272   STA PBPNT   next call.¢065275   LDX ?ADRPRT ; (ldx #<prnbuf)¢065278   LDY ?ADRPRT+1 ;(ldy #>prnbuf)¢065281   JSR ?SETDCB Reset DCB, prt¢065284   JMP SIOV    line and exit¢065287 CLOSE.P JSR ?BUFLEN Close P:              --------  If buffer is not¢065290   LDA #155    empty, pad with¢065292   LDX PBPNT   CR's, then print¢065295   BNE ?PADLOOP and exit via Sio¢065297   LDY #1      Else just exit¢065299   RTS ¢065300 ?SETDCB STX DBUFLO Set up DCB¢065303   STY DBUFHI  Buffer address¢065306   LDA #$40    Sio device = P1:¢065308   STA DDEVIC  (if P2: then $4F)¢065311   LDA ICDNOZ  Cio device as¢065313   STA DUNIT   set by caller.¢065316   LDA #$80    Flag Sio output¢065318   LDX DCOMND¢065321   CPX #'S     except on Status¢065323   BNE ?SETDIR¢065325   LDA #$40    which is input.¢065327 ?SETDIR STA DSTATS¢065330   LDA PBUFSZ  Finish up DCB¢065333   STA DBYTLO¢065336   LDA #0¢065338   STA DBYTHI¢065341   LDA PTIMOT¢065344   STA DTIMLO¢065347   RTS ¢065348 ?SETTIM LDA DVSTAT+2 Get time-¢065351   STA PTIMOT  out from Status¢065354   RTS ¢065355 ?BUFLEN LDY #'W Command in Y¢065357   LDA ICAX2Z  Check Icax2¢065359 ?NORM? CMP #'N Normal width?¢065361   BNE ?WIDE?¢065363   LDX #40     Yes, line len 40¢065365   BNE ?SETLEN Go always¢065367 ?WIDE? CMP #'D Double width?¢065369   BNE ?SIDE?¢065371   LDX #20     Yes, line len 20¢065373   BNE ?SETLEN¢065375 ?SIDE? CMP #'S at820 sideways?¢065377   BNE ?DEFLT¢065379   LDX #29     Yes, line len 29¢065381 ?SETLEN STX PBUFSZ¢065384   STY DCOMND¢065387   STA DAUX1   Icax2->Daux1¢065390   RTS ¢065391 ?DEFLT LDA #'N Make it normal¢065393   BNE ?NORM?  Go always¢