File: L180V3.PA of Tape: Various/System-Tapes/s5
(Source file text) 

/LOGABAX HANDLER;@ ACUAG

		/BY W.V.D.MARK

	/HEADER BLOCK

	*0

	-1	/ONE DEVICE IN THIS HANDLER

	DEVICE LGBX
	DEVICE LPT
	1040
	4000		/ENTRY POINT ZERO,TWO PAGE
	ZBLOCK 2

/HANDLER FOR LOGABAX LX180 MATRIX LINE-PRINTER
/BECAUSE THE BUFFERING OF CHARACTERS DOES
/NOT SEEM TO WORK, I WILL TRY TO CIRCUMVENT
/THE FATAL CRASH BY SOME SOFTWARE QUIRK

/THE SOFTWARE ALSO HANDLES HOR. AND VER. TABS
/THE LOGIC BOX SHOULD HANDLE FORM FEEDS,
/CARRIAGE RETURNS AND LINE FEEDS IN AN 
/INTELLIGENT WAY.

	DBCO=6575
	DBSO=6576
	DBSK=6572
	BSW=7002
	MQL=7421
	MQA=7501
	SWP=7521
	*200

LPT,	03	/ENTRY POINT ZERO
LPT770,	7700		/"SMA" CLEARS AC
LPTTMP,	0		/MUST BE LESS THAN 777
	JMP LPTSET	/INIT. BECOMES "RDF"
	TAD LPTCDI	/FORM CIF CDF CALLING
	DCA LPTXIT	/SAVE CALLING FIELD
	TAD I LPT	/GET FUNCTION WORD
	AND LPT070	/MASK FIELD BITS
	TAD LPTCDF	/MAKE "CDF BUFFER"
	DCA LPTBUF
	CLA CLL CML RAR
	TAD I LPT	/LINK GOES ON IF WRITE
	AND LPT770	/GET COUNT BITS
	CMA
	DCA LPTWC	/SAVE WC (DIVIDED BY 2 -1)
	ISZ LPT
	TAD I LPT	/GET BUFFER ADRESS
	DCA LPTCA	/AND SAVE IT
	ISZ LPT
	TAD I LPT	/GET BLOCK #, CHECK 0
LPTCDF,	CDF 0		/WE ARE IN FLD 0
	ISZ LPT		/AT ERROR RETURN
	SNL		/READ REQUESTED
	JMP LPTERR	/IF ZERO LINK
LP7640,	SZA CLA		/TEST IF BLOCK 0
	JMP NOINIT
	JMP NOINIT	/NO FORM FEEDS RECOGNIZED NOW;ELSE "TAD CARRET"
	JMS I LPTIN1
	TAD LPTSET	/ISSUE F.F.
	JMS I LPTIN1
	DCA LPTTMP	/CLEAR ANY RESIDUAL LINEHOLD
NOINIT,	TAD LPM200
	DCA I LPTIN2	/RESET LPLPTR
LPTFIL,	TAD LPTTMP	/NUMBER OF SPACES TO FILL UP
	SNA CLA
	JMP LPT070	/NO MORE
	TAD LP7640	/SPACE
	JMS I LPTIN1
	CLA CLL CMA	/-1
	TAD LPTTMP
	DCA LPTTMP
	JMP LPTFIL	/MORE?
LPTBUF,	HLT		/BECOMES CDF BUFF
	TAD I LPTCA	/GET WORD #1
	MQL		/1 IN MQ
	MQA
	AND LP7400	/HIGH ORDER WORD #3
	CLL RTR
	DCA LPTMP2	/SAVE IT
	ISZ LPTCA
LP7400,	7400
	TAD I LPTCA	/GET WORD #2
	AND LP7400	/LOW ORDER #3
	BSW
	TAD LPTMP2	/ADD HIGH ORDER
	CLL RTR
	DCA LPTMP2	/RESAVE
	TAD I LPTCA	/WORD #2
	SWP
	JMS I LPTIN1	/RESETS DATA FIELD
	SWP
	JMS I LPTIN1
	TAD LPTMP2
	JMS I LPTIN1
	ISZ LPTCA
LPT070,	70
	ISZ LPTWC	/MORE?
	JMP LPTBUF	/YEAH
LPRTRN,	TAD I LPTIN2	/X-200
	TAD LPT200	/X CHARS. PRINTED
	DCA LPTTMP	/SAVE FOR NEXT USE
	TAD LPTTMP
	SZA CLA		/TEST
	TAD LPTCTN	/GIVE OUT CTRLN FOR CR. ONLY
	JMS I LPTIN1
	ISZ LPT		/BUMP PAST ERROR
LPTXIT,	HLT		/HERE COMES CIF CDF RETURN
	JMP I LPT
LPTERR,	CLA CLL CML RAR	/FATAL ERROR
	JMP LPTXIT
LPTCDI,	CIF CDF 0
LPT200,	200
LPTCTN,	16
CARRET,	212		/ITS A LINEFEED
LPTSET,	RDF		/PAGE 1 INIT
	TAD LPTCDF
	DCA LPTSE1	/FOR RESETTING D.F.
	CDF 0
	JMS .		/FIND OUT WHERE WE GOT LOADED
LPBASE,	TAD LPTIN1
	SPA		/NEGATIVE ENDS LIST
	JMP LPNXIN	/GO PREPARE NEXT PAGE
LPTWC,	TAD LPBASE-1	/REL. + BASE = ABSOLUTE
LPTCA,	DCA LPTIN1	/USE SOME OF THESE LOCS.
LPTMP2,	ISZ .-1
	ISZ LPBASE
	JMP LPBASE
LPNXIN,	JMS I LPTIN3
	TAD LPTSET
	DCA LPT+3	/PUT A RDF
LPTSE1,	HLT		/THIS CHANGES BACK TO CALL. D. F.
	JMP LPT+3
LPTIN1,	LPTPCH-LPBASE
LPTIN2,	LPLPTR-LPBASE
LPTIN3,	LPTINI-LPBASE
LPM200,	-200		/ENDS LIST

	PAGE

	/SECOND PAGE OF LX180 HANDLER

LPTPCH,	0		/ROUTINE FOR CHECKING CHARS.
	CDF 0		/BACK TO THIS FIELD
	AND LPT177	/PARITY OFF
	SNA		/IGNORE NULL
	JMP LP7600
	TAD LPM140	/AND .GE. 140
	SMA
	TAD LPM40	/CHANGE LOWER CASE TO UPPER CASE;ELSE TO IGNORE "JMP LP7600"
	TAD LPT106
	SNA
	JMP LPTCTZ	/CONTROL Z
	TAD LPT13	/NOW WE HAVE CHAR - 17
	CLL
	TAD LPT6	/CHARS 11-16 SET LINK
	SZL SNA
	JMP LPTCTL	/OUT COMES 0-5:HOR. TAB - CNTRL N
	TAD LPT11	/RESTORE
	JMS LPWAIT
LP7600,	7600		/"CLA"
	JMP I LPTPCH

LPWAIT,	0
	AND LPT177
	TAD LP7600	/GOD KNOWS WHY
	DBCO
	DBSO		/CRAZY IOT'S
LPCLCL,	CLA CLL
	TAD LP7600
	KRS		/CHECK FOR CTRLC
	TAD LPT175
	SNA CLA
	KSF		/YES, IS THE FLAG UP?
	JMP .+3
	CIF CDF 0	/OK, BACK TO THE
	JMP I LP7600	/OLD KEYBOARD MONITOR
	DBSK		/DID OUR FLAG COME UP?
	JMP LPCLCL	/NO
	ISZ LPLPTR	/BUMP LINE-POINTER
	JMP I LPWAIT
LPLF,	CLA CLL CMA RAL
LPTFF,	TAD LPT214
LPTCR,	DCA LPLPTR	/LET'S NOT GIVE IT ANOTHER L.F.
	TAD LPLPTR
	JMS LPWAIT
	TAD LP7600	/RESET TO -200 (128 CHARS.)
	DCA LPLPTR
	JMP I LPTPCH
LPTTAB,	TAD LPM140	/SPACE
	JMS LPWAIT
	TAD LPLPTR
	AND LPT7	/MODULO 8
	SNA CLA
	JMP I LPTPCH
LPJTAB,	JMP LPTTAB	/LIST OF CTL'S
	JMP LPLF
	JMP LPTVTB
	JMP LPTFF
	JMP LP7600	/IGNORE C.R.
	TAD LPT215
	JMP LPTCR	/CNTRL.N IS C.R. WITHOUT L.F.
LPTJMP,	JMP LPJTAB
LPTCTL,	TAD LPTJMP
	DCA .+1
LPTXXX,	HLT
LPTVTB,	TAD LPTM15	/13 L.F'S
	DCA LPLPTR
	TAD LPTLF
	JMS LPWAIT
	JMP .-2
LPTCTZ,	TAD LPT214
	CLA		/DON'T OUTPUT FF;ELSE "JMS LPTPCH" FOR END OF FILE FF
	JMP I LPRTRX
LPTINI,	0		/PAGE 2 INIT
	CLA CLL
	TAD LPTINI
	TAD LPRTRX
LPLPTR,	DCA LPRTRX
	JMP I LPTINI
LPRTRX,	LPRTRN-LPNXIN-1
LPT177,	177
LPM140,	-140
LPT106,	106
LPT13,	13
LPT6,	6
LPT11,	11
LPT175,	175
LPT214,	214
LPT7,	7
LPT215,	215
LPTM15,	-15
LPTLF,	212
LPM40,	-40

	PAGE

$$$$$