Google
 

Trailing-Edge - PDP-10 Archives - tops10_703a_sys_ap115_bb-ju01b-bb - ibmspl.c08
There are 13 other files named ibmspl.c08 in the archive. Click here to see a list.
 REP 21/3	;08C1
		XP	IBMEDT,	351		; Edit level
 WIT
		XP	IBMEDT,	361		; Edit level
 REP 39/3	;08C2
	 IFN <IBMMIN>,<VOUTX (IBMSPL - GALAXY IBM emulation spooler,\IBMVER,\"<"A"+IBMMIN>,\IBMEDT)>
 WIT
	 IFN <IBMMIN>,<VOUTX (IBMSPL - GALAXY IBM emulation spooler,\IBMVER,\"<"@"+IBMMIN>,\IBMEDT)>
 INS 446/4	;08C3
	4(352) 08-Nov-83	GKN	SPR 20-19594 NDLESS flag is useless.
	4(353) 10-Nov-83	GKN	SPR 10-34279 Don't make FACT file entries if
					FTDEBUG is turned on.
	4(354) 11-Nov-83	GKN	SPR 10-34280 Fix possible ILMs with incorrect
					LOAD S1,T.QNM (should be LOAD S1,,T.QNM).
	4(355) 16-Dec-83	GKN	Fix part of the problem with ?Illegal address
					in UUO executing QUEUE. UUOs.  IBMSPL feeds
					the monitor a bogus string pointer in the
					system text field.
	4(356)	16-Jan-84	GKN	SPR 10-34449.  Security problem.  IBMSPL doesn't
					bother to use "in your behalf" and users are
					thus able to submit files to which they have no
					access.  Both TOPS-10 and TOPS-20.
	4(357)	23-Jan-84	GKN	SPR 10-34425.  Fix off-by-1 problem in the VOUTX
					macro (caused the wrong minor version to be
					printed at compile time).
	4(360)	16-Mar-84	TPW	remove edit 351.  Put test for line up back
					before test for line gone away.
	4(361)	18-Mar-84	TPW	Supplements edit 353.  Don't allow accounting
					to be done if DEBUGW is non-zero.
 REP 47/8	;08C4
		NDLESS==1B20		; this input record has no line feed
 WIT
	;[352]	NDLESS==1B20		; this input record has no line feed
 INS 56/12	;08C5
	; File open block (long form)

	FOB:	BLOCK	FOB.SZ		;[356] Reserve space for a long-form FOB

 REP 60/12	;08C6
	TOPS10	<SIXBIT	/D60/>		; use ersatx device
 WIT
	TOPS10	<SIXBIT	/D60/>		; use ersatz device
 REP 33/48	;08C7
		TXNE	S1,LGA			; line gone away?
		TXNE	S1,L.UP			; no, line still up?
		JRST	CTSFA0			; yes, it's dead clean up after it

		$DSCHD	,^D4*3			; yes, wait for the host to kill it(maybe)
 WIT
		TXNE	S1,L.UP			; [360] line still up?
		TXNE	S1,LGA			; [360] yes,hard error?
		JRST	CTSFA0			; [360] it's dead clean up after it
		$DSCHD	,^D4*3			; wait for the host to kill it(maybe)
 REP 35/87	;08C8
		JRST	GETDR4			; full
 WIT
		JRST	GETDRT			; full
 REP 56/87	;08C9
		JRST	GETDRT

	GETDR4:	TXOA	S,NDLESS		; this is an endless record

	GETDRT:	TXZ	S,NDLESS		; terminate record
		SETZ	S2,			; Get a null byte to store
 WIT

	;[352] Deleted 3 lines, NDLESS flag unused. SPR 20-19594.   GKN

	GETDRT:	SETZ	S2,			; Get a null byte to store
 REP 32/88	;08C10
		JRST	GETIR4			; Yes .. end rec'd on current character
 WIT
		JRST	GETIRT			; Yes .. end rec'd on current character
 REP 103/88	;08C11
		JRST	GETIRT

	GETIR4:	TXOA	S,NDLESS		;endless record

	GETIRT:	TXZ	S,NDLESS		;normal return
		SKIPLE	T%DIC			; check if buffer is empty
 WIT

	;[352] Deleted 3 lines, NDLESS flag not used. SPR 20-19594.   GKN

	GETIRT:	SKIPLE	T%DIC			; check if buffer is empty
 REP 14/119	;08C12
		MOVEI	S1,2
		MOVEI	S2,P3
		$CALL	F%IOPN
		JUMPF	@.POPJ

	INPOP0:	MOVEM	S1,P4
		SETZM	T$DIC(TK)
		$RET
 WIT
		MOVEI	S1,FOB.SZ		;[356] Zero
		MOVEI	S2,FOB			;[356]  the
		$CALL	.ZCHNK			;[356]   FOB
		DMOVEM	P3,FOB+FOB.FD		;[356] Store FD address & byte size, etc.
		LOAD	P4,.EQSEQ(J),EQ.PRV	;[356] Grab user's privs
		JUMPN	P4,INPO.1		;[356] Is user a wheel or [1,2] ?
		LOAD	P4,.FPINF(P2),FP.SPL	;[356] Also check to see if
		JUMPN	P4,INPO.1		;[356]  this is spooled
	TOPS20	<
		HRROI	P4,.EQCON(J)		;[356] Get connected directory
		MOVEM	P4,FOB+FOB.CD		;[356] And stash it
		HRROI	P4,.EQOWN(J)		;[356] Create a pointer to the user name
	>
	TOPS10	<
		MOVE	P4,.EQOID(J)		;[356] Get PPN
	>
		MOVEM	P4,FOB+FOB.US		;[356] Stash PPN or user name

	INPO.1:	$CALL	F%IOPN			;Open the file
		JUMPF	@.POPJ			;Failed

	INPOP0:	MOVEM	S1,P4			;Save IFN
		SETZM	T$DIC(TK)		;Zero disk file byte count
		$RET				;Done

 REP 9/128	;08C13
	IACTND:	LOAD	S2,.EQSEQ(J),EQ.IAS	;GET THE INVALID ACCT STRING BIT
 WIT
	IACTND:	skipn	s2,debugw		;[361] Check if debug switch on.
		LOAD	S2,.EQSEQ(J),EQ.IAS	;GET THE INVALID ACCT STRING BIT
 REP 48/130	;08C14
	WRTUSG:	QUEUE.	S2,			;MAKE A USAGE ENTRY
		 PUSHJ	P,ACTE.1		;FAILED,,TELL OPR
	;This routine is called to make FACT entrys on a TOPS10 system
 WIT
	WRTUSG:	SKIPE DEBUGW			;[361] If debug switch set
		POPJ P,				;[361] forget the accounting.
	IFE FTDEBUG,<				;[353] Same goes if feature test debug
		QUEUE.	S2,			;MAKE A USAGE ENTRY
		 PUSHJ	P,ACTE.1		;FAILED,,TELL OPR

	;This routine is called to make FACT entrys on a TOPS10 system

 REP 70/130	;08C15
		LOAD	S1,T.QNM		;get the queue name
 WIT
		LOAD	S1,,T.QNM		;[354] Get the queue name
 REP 80/130	;08C16
		LOAD	S1,T.SEQ		;SEQUENCE NUMBER
		MOVEM	S1,FACTBL+11		;STORE
		LOAD	S1,T.NRS		;NUMBER OF UNITS PROCESSED
 WIT
		LOAD	S1,,T.SEQ		;[354] Sequence number
		MOVEM	S1,FACTBL+11		;STORE
		LOAD	S1,,T.NRS		;[354] Number of units processed
 REP 88/130	;08C17
		POPJ	P,			;did it!
	> ;End of TOPS10 conditional
 WIT

	; At DOFACT+38. lines.  SPR 10-34279.  GKN

	> ;[353] End IFE FTDEBUG

		POPJ	P,			;did it!

	> ;End of TOPS10 conditional

 REP 30/131	;08C18
		USTXT.	(<-1,,[ASCIZ / /]>)	;SYSTEM TEXT
 WIT
		USTXT.	(<[ASCIZ / /]>)		;[355] System text
 REP 52/131	;08C19
		USTXT.	(<-1,,[ASCIZ / /]>)	;SYSTEM TEXT
 WIT
		USTXT.	(<[ASCIZ / /]>)		;[355] System text
 REP 29/132	;08C20
		USTXT.	(<-1,,[ASCIZ / /]>)	;SYSTEM TEXT
 WIT
		USTXT.	(<[ASCIZ / /]>)		;[355] System text
 SUM 231969