/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
