/027 INTERRRRRUPT OUTPUT HANDLER /WITH HEAD-TAIL COUPLED BUFFER / /INITIALIZE ONCE BUFIPT:=BUFOT:=BUFFER / BUFIBO:=0 / / /CHARACTER HANDLER / /CALL :JMS BUFINP WITH CHAR IN AC / RETURN AC=0 / / BUFINP, 0 DCA BUFTMP /TEMP. STORAGE TAD BUFIBO /INPTR BE@HND OUTPTR? SNA CLA JMP BUFPUT /NO,STORE CHARACTER TAD BUFIPT /YES CIA TAD UFOPT /INPTR = OUTPRT ? SNA CLA JMP BUFINP+2 /YES, WAIT FOR PLACE TO STORE BUFPT, TAD BUFTMP /NO,GET CHAR DCA I BUFIPT ISZ BUFIPT TAD BUFBUS /PRINTER BUSY? NA CLA 6046 /NO,INIT WITH AC=0 IAC /YES,SET PRINTER BUSY DCA BUFBUS TAD BFIPT TAD BUFBND /END OF BUFFER? SZA CLA JMP I BUFINP /NO,EXIT TAD BUFADR /YE,POINTER TO HEAD DCA BUFIPT IAC /AND SET INPTR BEHIND OUTPTR DCA BUFIBO JMP BUFINP /EXIT /028 DEVICE INTERRUPT HHNDLER / /CALL :JMP BUFOUT /DEVICE INTERRUPT DETECTED! / ROUTINE RETURNS TO INTERRRPT RESTORE "EXIT" / BUFOUT, CLA 6042 /CLEAR DEVICE FLAG TAD BUFIPT CIA TAA BUFOPT /INPTR = OUTPTR ? SZA CLA JMP BUFGET /NO,GET CHAR AND PRINT TAD BUFIBO/YES,INPTR BEHIND OUTPTR? SZA CLA JMP BUFGET /YES,GET AND PRINT DCA BUFBUS /NO,PRINTER READY JMP EXIT / BUFGET, TAD I BUFOPT /GET CHAR ISZ BUFOPT 6044 /PRIT CHAR CLA TAD BUFOPT TAD BUFBND /END OF BUFFER? SZA CLA JMP EXIT /NO,END F ROUTINE TAD BUFADR /YES,POINTER TO HEAD DCA BUFOPT DCA BUFIBO /RESET INPTR BEEIND OUTPTR JMP EXIT /END OF HANDLING / /GENERAL INTERRUPT RETURN ROUTINE / EXII, CLA CLL / TAD LINK / RAL /RESTORE LINK / TAD ACCU /RESTORE ACCU / ION /INTERRUPT ON / JMP I 0 /VARIABLES BUFTMP,0 BUFIBO,0 BUFIPT,0 BUFOPT,0 BUFBUS,0 BUFFND,-BUFEND BUFADR,BUFFER BUFFER,0 / *BUFFER+200 BUFEND,0