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