Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - filuuo.c12
There are no other files named filuuo.c12 in the archive.
 REP 6/8	;12C1
		JRST	RIBSA9		;YES
		PUSHJ	P,UPDA##	;NO, GET IT
		PUSHJ	P,RIBSA1	;WRITE CHANGED SATS
		PJRST	DWNDA##		;GIVE UP DA AND RETURN
	RIBSA9:	PUSH	P,U		;SAVE UNIT THAT HAS DA
		PUSHJ	P,RIBSA1	;WRITE CHANGED SATS
		PUSHJ	P,DWNDA##	;GIVE DA UP ON LAST UNIT
 WIT
		JRST	RIBSAD		;YES
		PUSHJ	P,UPDA##	;NO, GET IT
		PJRST	RIBSAW		;WRITE CHANGED SATS, RETURNS DA
	RIBSAD:	PUSH	P,U		;SAVE UNIT THAT HAS DA
		PUSHJ	P,RIBSAW	;WRITE CHANGED SATS
 REP 16/8	;12C2
	RIBSA1:	PUSHJ	P,SAVE1##	;SAVE P1
 WIT
	;ROUTINE TO WRITE SATS - MUST BE CALLED WITH DA, RETURNS WITHOUT DA
	RIBSAW:	PUSHJ	P,SAVE1##	;SAVE P1
 INS 21/8	;12C3
		PUSHJ	P,DWNDA##	;GIVE UP DA
 DEL 27/8	;12C4
		PUSHJ	P,DWNDA##
 INS 33/8	;12C5
		PUSHJ	P,DWNDA##	;GIVE UP DA
 REP 38/8	;12C6
		SE1ENT			;ENTER SECTION 1
		PUSH	P,R		;SAVE R
		LDB	P1,UNYSIC##	;NUMBER OF SAB BLOCKS FOR UNIT
		MOVE	R,UNISAB##(U)	;LOC OF 1ST SAB
		JUMPE	R,WTUSA2	;EXIT IF UN HAS NO SAB (OFF-LINE OR DOWN)
	WTUSA1:	SKIPGE	SABFIR##(R)	;HAS SAT BEEN MODIFIED?
		PUSHJ	P,SATWRT##	;YES. WRITE IT
		MOVE	R,SABRNG##(R)	;STEP TO NEXT SAB IN RING
		SOJG	P1,WTUSA1	;GO IF IT HASNT BEEN CHECKED
	WTUSA2:	POP	P,R		;POP OFF R
		POPJ	P,		;AND RETURN
 WIT
		PUSHJ	P,SAVR##	;AND R
		SE1ENT			;ENTER SECTION 1
		LDB	P1,UNYSIC##	;NUMBER OF SAB BLOCKS FOR UNIT
		SKIPN	R,UNISAB##(U)	;LOC OF 1ST SAB
		POPJ	P,		;UNIT HAS NO SAB (OFF-LINE, DOWN, OR STR YANKED)
	WTUSA1:	SKIPGE	SABFIR##(R)	;HAS SAT BEEN MODIFIED?
		PUSHJ	P,SATWRT##	;YES. WRITE IT
		SKIPN	UNISAB##(U)	;UNIT STILL HAVE SAB?
		POPJ	P,		;NO, STR YANKED WHILE BLOCKED IN UUOPWQ
		MOVE	R,SABRNG##(R)	;STEP TO NEXT SAB IN RING
		SOJG	P1,WTUSA1	;GO IF IT HASNT BEEN CHECKED
		POPJ	P,		;RETURN
 REP 5/40	;12C7
	CHKLB4:	CAMG	T1,P1		;NEW SIZE MUST BE BIGGER THAN OLD
 WIT
	CHKLB4:	CAMGE	T1,P1		;NEW SIZE MUST BE BIGGER THAN OLD
 INS 51/58	;12C8
		TLO	F,OUTPB		;REMEMBER AN OUTPUT WAS DONE
 REP 39/105	;12C9
			 JRST ULOO15
 WIT
			 JRST ULOO20
 REP 21/107	;12C10
		JUMPN	T2,ULOO15	;NO, NO LIB/SYS IF NOT LOGICAL SYS
 WIT
		JUMPN	T2,ULOO20	;NO, NO LIB/SYS IF NOT LOGICAL SYS
 REP 25/107	;12C11
		JRST	ULOO15		;YES, LOOKUP FAILS
 WIT
		JRST	ULOO20		;YES, LOOKUP FAILS
 REP 30/108	;12C12
	ULOO14:	PUSH	P,M		;SAVE M
 WIT
	ULOO14:	TLNE	M,UTRTWC
		SETZM	(P)
	ULOO15:	PUSH	P,M		;SAVE M
 REP 34/108	;12C13
		SETZ	T1,		;ZERO PPN WORD ON LOOKUP FAILURE
		PUSHJ	P,PUTWDU##
		SETZM	DEVPPN(F)	;SO PATH. WILL WIN
		POP	P,M
		TLNE	M,UTRTWC
		SETZM	(P)
	ULOO15:	POP	P,T1		;RESTORE ERROR CODE
 WIT
		HRRZ	T1,-1(P)	;GET THE ERROR CODE
		CAIE	T1,TRNERR	;RIB ERROR
		CAIN	T1,PRTERR	; OR PROTECTION FAILURE?
		SKIPA	T1,DEVPPN(F)	;YES, STORE THE PPN IN THE LOOKUP BLOCK
		SETZ	T1,		;NO, ZERO PPN WORD ON LOOKUP FAILURE
		PUSHJ	P,PUTWDU##
		SETZM	DEVPPN(F)	;SO PATH. WILL WIN
		JUMPE	T1,ULOO19	;DON'T STORE PATH IF NO PPN
		CAMN	M,(P)		;ARE WE FILLING IN A PATH BLOCK?
		JRST	ULOO19		;NO.  ALL DONE THEN.
		PUSH	P,[0]		;YES, PUT A MARKER ON THE STACK
		HRRZ	T2,DEVSFD##(F)	;GET THE FIRST SFD NMB POINTER
		JUMPE	T2,ULOO18	;JUMP IF NO SFD
	ULOO16:	PUSH	P,NMBNAM##(T2)	;SAVE THE SFD NAME
	ULOO17:	HLRZ	T2,NMBPPB##(T2)	;GET THE NEXT NMB LINK
		TRZN	T2,NMPUPT##	;POINTER TO THE NEXT HIGHER LEVEL?
		JUMPN	T2,ULOO17	;NO, TRY NEXT
		JUMPN	T2,ULOO16	;YES, REMEMBER THIS ONE
	ULOO18:	POP	P,T1		;RESTORE AN SFD NAME
		PUSHJ	P,PUTWD1##	;STORE THE SFD NAME IN THE PATH BLOCK
		JUMPN	T1,ULOO18	;DO ALL OF THEM.
	ULOO19:	POP	P,M
	ULOO20:	POP	P,T1		;RESTORE ERROR CODE
 REP 20/130	;12C14
		JRST	UPDER2		;COULDN'T? RETURN ANYWAY
 WIT
		 JRST	UPDER2		;QUOTA EXCEEDED, RETURN ANYWAY
		  JRST	UPDER2		;BLOCK NOT FREE, RETURN ANYWAY
 INS 30/130	;12C15
		 JRST	ENERR7		;QUOTA EXCEEDED
 INS 5/138	;12C16
		TLNE	F,SYSDEV	;WANT SYS:?
		JRST	CPOPJ1##	;YES, DON'T TRY ANY SFDS
 INS 22/170	;12C17
		PUSHJ	P,CHEKU##	;CHECK IF STR YANKED
		  JRST	RENER5		;PRETEND FILE NOT FOUND
 INS 40/183	;12C18
		 JRST	ENERR7		;QUOTA EXCEEDED
 REP 4/187	;12C19
	;EXIT CPOPJ IF CANT START WHERE REQUESTED
	;EXIT CPOPJ1 IF GOT ANY BLOCKS (UPARAL MAY BE ON IN M)
 WIT
	;EXIT CPOPJ IF QUOTA EXCEEDED
	;EXIT CPOPJ1 IF CANT START WHERE REQUESTED
	;EXIT CPOPJ2 IF GOT ANY BLOCKS (UPARAL MAY BE ON IN M)
 REP 18/187	;12C20
	UPDAT6:	PUSH	P,T2		;SAVE NUMBER OF BLOCKS TO GET
 WIT
	UPDAT6:	AOS	(P)		;SET FOR SKIP/DOUBLE SKIP RETURN
		PUSH	P,T2		;SAVE NUMBER OF BLOCKS TO GET
 REP 10/196	;12C21
	SETVAN:	PUSHJ	P,SAVE2##
 WIT
		SKIPA	T3,P1		;REMEMBER TRUE NUMBER OF ARGS
	SETVAN:	SETZ	T3,		;MARK THAT WE CAME FROM SETVAN
		PUSHJ	P,SAVE2##
 REP 16/196	;12C22
		HLRZ	T1,DEVEXT(F)	;GET EXTENSION
 WIT
	;
	;HERE WE ARE PRIV'D, T3 HAS TRUE # OF ARGS, M=PRIV WORD
	;TRY TO COPY ACCOUNT STRING FROM USER TO RIB. SIMILAR TO SETE15
	;
		SKIPGE	T2,[XWD MACTSL##,RIBACS##]	;GET MAX ACCT STRING LENG
		CAIGE	T3,UUXACT	;DID THE USER SPECIFY ACCT STRING?
		  JRST	SETVAC		;MAX IS 0 OR USER DIDN'T SPECIFY
		MOVE	T1,.USMBF	;POINT TO MONITOR BUFFER
		MOVEM	T2,RIBACT##+1(T1)	;STORE AOBJN POINTER TO ACCT STRING
		ADDI	T2,1(T1)	;MAKE AOBJN WORD FOR ACCT STRING IN RIB
		HRLZ	T1,T2		;MAKE A BLT POINTER
		HRRI	T1,1(T2)
		SETZM	(T2)		;ZAP THE EXISTING ACCOUNT STRING
		BLT	T1,-MACTSL-1(T2) ;NOTE THAT MACTSL IS A NEG NUMBER
		PUSH	P,M		;SAVE USER ARG POINTER
		HRRI	M,UUXACT-UUXPRV-1(M)	;POINT TO USER SUPPLIED STRING
		SUBI	T3,UUXACT
	SETVAR:	PUSHJ	P,GETWD1##	;GET NEXT USER WORD
		JUMPE	T1,SETVR1	;DONE (SINCE ACCOUNT IS ASCIZ)
		MOVEM	T1,(T2)		;STORE A WORD IN RIB
		AOBJP	T2,SETVR1	;DONE IF RIB FULL
		SOJG	T3,SETVAR	;CONTINUE IF MORE ARGS
	SETVR1:	POP	P,M		;RESTORE USER ARG POINTER TO UUXPRV
	SETVAC:	HLRZ	T1,DEVEXT(F)	;GET EXTENSION
 DEL 1/203	;12C23
	ENERR1:	HLRZ	T1,DEVRSU##(F)
		JRST	ENERR5
 REP 9/203	;12C24
		MOVEI	T1,BNFERR
 WIT
	ENERR1:	MOVEI	T1,BNFERR
 SUM 141448