Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - lptspl.c10
There is 1 other file named lptspl.c10 in the archive. Click here to see a list.
 REP 6/1	;10C1
	;			    1983, 1984
	;                    DIGITAL EQUIPMENT CORPORATION
 WIT
	;			    1983, 1984, 1985
	;                    DIGITAL EQUIPMENT CORPORATION
	;			 ALL RIGHTS RESERVED.
 REP 42/1	;10C2
		LPTEDT==3010			;EDIT LEVEL
 WIT
		LPTEDT==3014			;EDIT LEVEL
 REP 52/1	;10C3
		COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1971,1984.
 WIT
		COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1971,1985
		ALL RIGHTS RESERVED.
 INS 556/4	;10C4
	3011	Fix problems when using tapes. Add check for write-locked
		status. Don't continue after errors other than IO.IMP or
		IO.EOT.
		SPR 10-34877 GCO 10101 4-Oct-84 /LWS

	3012	If VFU error is encountered when outputting to a LP20
		printer (LP26 especially) make LPTSPL load the RAM before
		reloading the VFU. When the printer is powered up, we know
		the VFU is bad, but it nothing indicates the RAM is bad.
		Anyway, the VFU won't load correctly unless the RAM is loaded
		first after power up. Also, check status of VFU before
		each job. This will enable us to load the RAM and VFU if bad
		and not bother the operator with a WTOR. Paper will probably
		be off a little, that's the way it goes. MCO 11592 should also
		be installed in monitor, but is not required.
		SPR 10-34952 GCO 10114 1-Nov-84 /LWS

	3013	Edit 3007 incomplete. We guarded against an offline interrupt
		when not in stream context (rare) but after DEBRKing to OUTWON
		and descheduling, we then continue at J$LIOA(J). But the J (job page)
		we used	to store the continuation address is different than what
		was saved when the interrupt occurred if not in stream context.
		When processing	the offline interrupt, use the job page associated
		with the current stream when storing the continuation address.
		SPR 10-34771A GCO 10115 1-Nov-84 /LWS

	3014	Edit 3012 has problems. It prevents a different VFU from being
		loaded on a form change. Sigh.
		GCO 10127 4-Dec-84 /LWS

 REP 7/69	;10C5
		$RETT				;YES,,VFU AND RAM MUST BE SAME TO !!!
 WIT
	;**;[3012] Replace one line at FORMS+4L. /LWS
		JRST	FORM4A			;[3012] YES, GO CHECK RAM AND VFU
 INS 40/70	;10C6
	;**;[3012] Add code at FORM.4+12L. /LWS
	;Here to check the status of the VFU. If bad, load RAM and VFU.

	FORM4A:	PUSHJ	P,CHKVFU		;[3012] CHECK STATUS OF VFU
	;**;[3014] Change 1 line at FORM4A+1 /LWS
		JUMPT	FORM.5			;[3014] IF OK, DON'T FORCE LOADS
		SETZM	J$FLRM(J)		;[3012] LOAD RAM AND VFU TO BE SAFE
		SETZM	J$FLVT(J)		;[3012]
		MOVE	S2,STREAM		;[3012] GET CURRENT STREAM
		$WTO	(VFU error,<Reloading RAM and VFU>,@JOBOBA(S2)) ;[3012]

 REP 14/77	;10C7
		MOVE	T1,[2,,T2]		;GET THE DEVOP. PARAMETERS
		MOVX	T2,.DFRDS		;GET 'READ DEVICE STATUS' FUNCTION CODE
		MOVE	T3,J$LDEV(J)		;GET THE SIXBIT DEVICE NAME
		DEVOP.	T1,			;GET THE DEVICE STATUS
		 $STOP	(LDF,Line Printer Device Status DEVOP. Failed) ;SHOULD'NT HAPPEN
		TXNE	T1,DF.LVE		;DOES THE LPT HAVE A GOOD VFU ???
		JRST	LOD.0A			;NO,,DONT OUTPUT FORM FEED
 WIT
	;**;[3012] Redo code at	LOD.0A-7L. /LWS
		PUSHJ	P,VFUCHK		;[3012] CHECK VFU STATUS
		JUMPF	LOD.0A			;[3012] DONT OUTPUT FORM FEED IF BAD
 INS 53/79	;10C8
	;**;[3012] Add code at VLKUP+1L. /LWS
	;Check status of VFU
	; CHKVFU entry point if not known whether printer has loadable VFU.
	; VFUCHK entry point if printer does have a loadable VFU.
	; Returns TRUE if VFU good
	;	  FALSE is VFU bad, i.e. DF.LVE lit

	CHKVFU:	SKIPN	J$MTAP(J)		;[3012] SPOOLING TO TAPE?
		SKIPN	J$LDVF(J)		;[3012] IS THERE A VFU TO LOAD?
		$RETT				;[3012] NOTHING TO DO
	VFUCHK:	PUSHJ	P,.SAVET		;[3012] SAVE SOME ACS
		MOVE	T1,[2,,T2]		;[3012] GET THE DEVOP. PARAMETERS
		MOVX	T2,.DFRDS		;[3012] GET 'READ DEVICE STATUS' FUNCTION CODE
		MOVE	T3,J$LDEV(J)		;[3012] GET THE SIXBIT DEVICE NAME
		DEVOP.	T1,			;[3012] GET THE DEVICE STATUS
		 $STOP	(LDF,Line Printer Device Status DEVOP. Failed) ;SHOULD'NT HAPPEN
		TXNE	T1,DF.LVE		;[3012] VFU PROBLEM?
		$RETF				;[3012] YES
		$RETT				;[3012] NO
 REP 10/93	;10C9
		TXNE	S1,IO.ERR!IO.EOT	;WAS THERE AN ERROR? OR HIT END OF TAPE?
 WIT
	;**;[3011] Change 1 line at OUTERR+6L. /LWS
		TXNE	S1,IO.ERR!IO.EOT!IO.IMP	;[3011] ERROR, EOT, OR WRITE LOCKED?
 INS 17/93	;10C10
	;**;[3011] Insert 2 lines after OUTE.1+1L. /LWS
		MOVX	S1,PSF%OB		;[3011] GET 'OUTPUT BLOCKED' BIT
		ANDCAM	S1,JOBSTW(T4)		;[3011] CAN'T BE BLOCKED IF ERROR
 INS 9/94	;10C11
	;**;[3012] Add 2 lines and replace 1 line after OUT.2A+3L. /LWS
		SETZM	J$FLVT(J)		;[3012] LOAD THE VFU TOO, TO BE SAFE
		PUSHJ	P,LODVFU		;[3012]
 INS 15/94	;10C12
	;**;[3011] Insert 1 line after OUT.2B+1L. /LWS
		SETOM	JOBUPD(T4)		;[3011] STATUS UPDATE ALSO
 REP 21/94	;10C13
		TXNE	S2,TL%NOM+TL%AMB	;DID WE FIND IT OK
		JRST	OUT.2B			;NO, TRY AGAIN
		PUSHJ	P,OUTE.3		;GO PERFORM PRELIMINARY PROCESSING
		$RETT				;AND RETURN
 WIT
	        TXNE	S2,TL%NOM+TL%AMB	;DID WE FIND IT OK
		JRST	OUT.2B			;NO, TRY AGAIN
	;**;[3011] Delete 2 lines and insert 1 line at OUT.2B+10L. /LWS
		JRST	OUTOUT			;[3011] TRY OUTPUT AGAIN
 INS 91/94	;10C14
	;**;[3012] Insert 2 lines after OUT.4A+11L /LWS
		SETZM	J$FLRM(J)		;[3012] LOAD THE RAM FIRST, ESPECIALLY
		PUSHJ	P,LODRAM		;[3012] IF JUST POWERED BACK UP.
 REP 5/95	;10C15
	OUTE.5:	SKIPE	J$MTAP(J)		;ARE WE SPOOLING TO TAPE?
		TRZN	S1,IO.EOT		;YES, HIT EOT?
 WIT
	OUTE.5:	MOVE	T2,S1			;[3011] SAVE ERROR BITS
		SKIPE	J$MTAP(J)		;ARE WE SPOOLING TO TAPE?
		TRZN	S1,IO.EOT!IO.IMP	;[3011] YES, HIT EOT OR WRITE LOCK?
 INS 12/95	;10C16
		TRNN	T2,IO.EOT		;[3011] WAS IT EOT?
		JRST	OUT.2B			;[3011] NO, BETTER BE WRITE LOCKED!
 REP 42/95	;10C17
	OUTDIE:	SOSL	J$LERR(J)		;COUNT DOWN ERRORS
		POPJ	P,			;STILL ALIVE
		MOVE	S1,STREAM		;GET STREAM NUMBER
		$WTO  (TOO MANY DEVICE ERRORS,,@JOBOBA(S1))
 WIT
	OUTDIE:	SKIPE	J$MTAP(J)		;[3011] DON'T ALLOW ERRORS TO TAPE
		JRST	DIE			;[3011]
		SOSL	J$LERR(J)		;COUNT DOWN ERRORS
		POPJ	P,			;STILL ALIVE
		MOVE	S1,STREAM		;GET STREAM NUMBER
		$WTO  (Too many device errors,,@JOBOBA(S1))
 REP 49/143	;10C18
		MOVEM	T1,J$LIOA(J)		;STORE OLD-ADDRESS FOR DEVICE ON AGAIN
 WIT
	;**;[3013] Insert 2 lines and change 1 line after LPIN.1+25L. /LWS
		MOVE	T2,STREAM		;[3013] GET ACTIVE STREAM
		MOVE	T2,JOBPAG(T2)		;[3013] GET JOB PAGE ADDR OF ACTIVE STREAM
		MOVEM	T1,J$LIOA(T2)		;[3013] STORE OLD-ADDRESS FOR DEVICE ON AGAIN
 SUM 50409