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