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

/SIMULATED LPT HANDLER V3 (2-PAGE)

/W.V.D.M.

	PSE=6027	/SKIP ON PUNCH ERROR
	RCR=6015	/CLEAR ERROR
	MQL=7421
	MQA=7501
	BSW=7002

	FIXTAB

	*0		/HEADER BLOCK

	-1		/ONE HANDLER IN THIS FILE

	/DESCRIPTOR BLOCK

	DEVICE SILP
	DEVICE LPT
	1040
	4000
	ZBLOCK 2

	*200

LPT,	02
	CLA
LPT214,	JMP LPTSET	/BECOMES RDF
	TAD LPTCIF
	DCA LPTXIT
	CLL CML RAR
	TAD I LPT	/FOR WRITE STL
	AND LP7700	/GET # OF PAGES
	CMA
	DCA LPTWC	/LPTWC=WC/2-1
	TAD I LPT
	AND LPT70
	TAD LP6201
	DCA LPTCDF	/FIX DATAFLD
	ISZ LPT
	TAD I LPT
	DCA LPTCA	/FIX START
	ISZ LPT
	TAD I LPT	/GET BLOCK #
	ISZ LPT		/AT ERROR RETURN
LP6201,	CDF 0
	MQL
	TAD LPTCDF
	DCA I LPXXIT	/DF TO SCND PAGE
	MQA
	SNL		/IF LNK NOT SET:ERROR
	JMP LPTERR
	SZA CLA
	JMP LPT70
	RCR		/CLEAR ERROR ON FIRST BLOCK
LP7700,	7700		/INTERFACE SKIPS (WILL GET CHANGED EVENTUALLY)
	TAD LPT214
	JMS I LPXCH	/FF IF RECORD 0
	JMP LPT70
LPTCDF,	HLT
LPTLP,	TAD I LPTCA
	JMS I LPXCH	/FIRST CHAR
	TAD I LPTCA	/LPXCH RETURNS DF
	AND LP7400
	DCA LPTCDF	/STORE CHAR 2A TEMPORARY
	ISZ LPTCA
LP7400,	7400
	TAD I LPTCA	/SECOND CHAR
	JMS I LPXCH
	TAD I LPTCA
	AND LP7400
	CLL RTR
	RTR
	TAD LPTCDF
	RTR
	RTR
	JMS I LPXCH	/THIRD CHAR
	ISZ LPTCA
LPT70,	70
	ISZ LPTWC
	JMP LPTLP
LPRTRN,	ISZ LPT
LPTXIT,	HLT		/THIS GETS CDI N
	JMP I LPT
LPTCA,	0
LPTWC,	0
LPWAIT,	0
	PLS
LP7600,	7600		/CLA!
	KRS
	TAD LPM203	/CHECK FOR ^C
	SNA CLA
	KSF
	JMP .+3
LPTCIF,	CDF CIF 0
	JMP I LP7600
	PSF
	JMP LP7600
	PSE		/ERROR CHECK
	JMP I LPWAIT
LPTERR,	CLA CLL CML RAR	/FATAL ERROR
	JMP LPTXIT

LPTSET,	RDF		/INIT CODE
	TAD LP6201
	DCA LPTSE1
	CDF 0
	JMS .		/FIND OUT LOC
LPTBS1,	TAD LPXXIT
	SPA		/NEGATIVE ENDS LIST
	JMP LPNXIN
	TAD LPTBS1-1
	DCA LPXXIT
	ISZ .-1
	ISZ LPTBS1
	JMP LPTBS1
LPNXIN,	JMS I LPXIN2	/TO NEXT PAGE INIT
LPBS2,	TAD LPTSET
	DCA LPT214	/SET THE RDF
LPTSE1,	HLT		/RESTORE CALLING FIELD
	JMP LPT214

LPXXIT,	LPEXIT-LPTBS1
LPXIN2,	LPTIN2-LPTBS1
LPXCH,	LPTCH-LPTBS1
LPM203,	-203		/END OF LIST!
LPTTBL,	0001;7707;0406;3702;1011;1213;1415;1617
	2021;2223;2425;2627;3031;3233;3435;3676
	0541;4243;4445;4647;5051;5253;5455;5657
	6061;6263;6465;6667;7071;7273;7475;0340
LPLINE,	0		/ALL THIS OUTPUTS
	DCA LPEXTR
	TAD LPT215	/CR
	JMS I LPXWT
	TAD LPT212	/LF
	JMS I LPXWT
	TAD LPEXTR	/CONTROL CHAR
	JMS I LPXWT
	TAD LPM200
	DCA LPLPTR
	DCA LPSWIT	/ZERO SWITCH FOR CR
	JMP I LPLINE

LPEXIT,	HLT		/RESTORE DF
LPM200,	7600		/CLA!!
	JMP I .+1
LPTCH,	0
	CDF 0
	AND LPT177
	MQL
	MQA
	AND LPT140
	SNA CLA
	JMP LPTCTL
	ISZ LPSWIT
	JMP LPCHAR		/NO CR OUT BEFORE
	TAD LPT253	/CR ONLY;C.C.:+
	JMS LPLINE
LPCHAR,	MQA CLA
	TAD LPM140
LPT770,	SMA CLA
	JMP LPEXIT	/IGNORE LOWER CASE
	MQA CLA		/7-BIT ASCII
	CLL RAR		/X/2;REST IN LINK
	TAD LPTTAD	/ADRESS OF TBL-20
	DCA LPEXTR	/SET POINTER
	TAD I LPEXTR	/GET WORD
	SZL		/SHIFT?
	BSW		/NO;2 TIMES BSW
	AND LPT770
	BSW
	TAD LPT240	/MAKE IT ASCII
	JMS I LPXWT
	ISZ LPLPTR	/IS LINE FULL?
	JMP LPEXIT	/NO;GET NEXT
	JMS LPLF
	JMP LPEXIT
LPLF,	0
	TAD LPT240	/CONTROL CHAR:SPACE
	JMS LPLINE
	ISZ LPLNBR
	JMP I LPLF

LPTFF,	TAD LPT261	/FF;CONTROL CHAR:1
	JMS LPLINE
	TAD LPT770	/RESET LINENUMBER
	DCA LPLNBR
	JMP LPEXIT


LPTCTL,	ISZ LPSWIT	/IGNORE CR
LPT14,	14
	MQA CLA
	TAD LPTM32
	SNA
	JMP LPTCTZ	/END OF FILE
	TAD LPT14
	CLL CML
	TAD LPT6
	SZL SNA
LPTJMP,	JMP LPEXI1
	TAD LPTJMP
	DCA .+1
	HLT

LPTCTZ,	TAD LPT261	/FF;C.C.CHAR:1
	JMS LPLINE
	TAD LPT4	/EOT
	JMS LPLINE
	JMP I LPXRTR

LPTTAB,	TAD LPT240
	JMS I LPXWT
	ISZ LPLPTR
	SKP
	JMS LPLF
	TAD LPLPTR
	AND LPT7	/8-TAB
	SNA CLA
LPEXI1,	JMP LPEXIT
	JMP LPTTAB
	JMP LPLF-2
	JMP LPTVTB
	JMP LPTFF
	CMA
	DCA LPSWIT	/SET TO SKIP FOR CR
	JMP LPEXIT
LPTVTB,	TAD LPTM11	/9-VTAB
	DCA LPTCNT
	JMS LPLF
	ISZ LPTCNT
	JMP .-2
	JMP LPEXIT

LPTIN2,	0
LPTCNT,	CLA
LPSWIT,	TAD LPXWT
LPLNBR,	SNA
	JMP I LPTIN2
	TAD LPTIN2
	DCA LPXWT
	ISZ .-1
	ISZ LPTIN2+2
	JMP LPTIN2+1

LPXWT,	LPWAIT-LPBS2
LPXRTR,	LPRTRN-LPBS2
LPTTAD,	LPTTBL-20-LPBS2	/20 BECAUSE OF 7BIT ASCII
LPEXTR,	0
LPLPTR,	-200
LPT4,	4
LPT6,	6
LPT7,	7
LPTM11,	-11
LPTM32,	-32
LPM140,	-140
LPT140,	140
LPT177,	177
LPT212,	212
LPT215,	215
LPT240,	240
LPT261,	261
LPT253,	253


       $$$$$$$$$$