SPROV.MAC;2=[12,10]SPROV.VGN;1/AU \ -2,2 .IDENT /3.9XB/ -/PL124/ ; ; JGD15 14-MAY-78 ALLOW A USER WITH BIT 7 IN PRIVLEGE MASK WORD ; TO CHANGE MEMBER CODE IN LOGIN UIC. ; THIS USER IS CALLED GROUP MANAGER. IF BIT 8 ; IS SET, USER IS 'USER MANAGER' AND CAN SET ; UIC TO ANY VALUE >[310,X] ; ; JGD16 23-JUL-79 ADD SUPPORT FOR SET /LIBUIC ; ; JGD17 24-AUG-79 ADD SET /TOP COMMAND ; ; JGD18 24-OCT-79 FIX DECNET PROBLEM WHEN MULTIPLE CLI SUPPORT IS ; SYSGENED IN AND U.CLI SITS ABOVE U.LUIC. % -/.MCALL/,,/; JGD15/ .MCALL UCBDF$ UCBDF$ -/KEYTAB:/ -/SYSUIC/,,/; JGD16/ .ASCIZ /LIBUIC/ ; DEFAULT UIC FOR TASKS -,,/; JGD17/ .ASCIZ /TOP/ ; SET /TOP COMMAND -/SYOFST/ -/.WORD SETSYS/,,/; JGD16/ LBOFST = .-KEYPRO ; OFFSET FOR DEFAULT TASK UIC .WORD SETLIB ; PROCESS SETTING DEFAULT TASK UIC -,,/; JGD17/ TPOFST = .-KEYPRO ; PROCESS SET /TOP COMMAND .WORD SETTOP ; SET TOP OF PARTITION -/SUB=MNAME:PNAME/,,/; JGD17/ ; TOP =PNAME:DELTA - MOVE TOP OF SYSTEM CONTROLLED PARTITION BY 'DELTA' WORDS -/:SIZE/,,/; JGD17/ ; :DELTA- VALUE(+/-) TO MOVE TOP OF SYSTEM CONTROLLED PARTITION -/ALLOWED TO BE ELIMINATED/,,/; JGD17/ ; ; ONLY THE TOP OF A SYSTEM CONTROLLED PARTITION MAY BE ALTERED ; UP AND DOWN. THE PARTITION MAY NOT BE LOWERED BEYOND ANY ; TASKS,REGIONS, OR DRIVERS, OR BE RAISED ABOVE THE NEXT PARTITION. ; MOVING THE TOP DOWN, WILL LEAVE ROOM FOR CREATING A NEW PARTITION ; INTO WHICH A RESIDENT LIBRARY CAN BE PLACED. -/FORMAT FOR BASE AND SIZE:/,.,/; JGD17/ ; FORMAT FOR BASE AND SIZE AND DELTA: -/SYSTEM DEFAULT UIC WILL BE DISPLAYED/,,/; JGD16/ ; ; LIBUIC = [G,M] SET THE DEFAULT TASK UIC. TO BE USED BY ; RUN $(INS $). LOOKS FIRST ON LIBUIC, THEN ; SYSUIC. THIS UIC IS FOR NON-PRIVLEGED TASKS ; WHICH DO NOT HAVE TO BE BUILT EACH SYSGEN. ; EVEN IF MULTIPLE SYSTEMS EXIST ON THE SAME DISK, ; JUST ONE COPY OF EACH UTILITY TASK CAN RESIDE ON ; LIBUIC TO BE INSTALLED VIA STARTUP.CMD. IF = [G,M] ; IS NOT ENTERED, THEN THE VALUE FOR LIBUIC IS ; DISPLAYED. -/SETMAN:/,,/; JGD17/ SETTOP: ; CHANGE TOP OF SYSTEM CONTROLLED PARTITION -/BEQ 35$/,,/; JGD17/ CMP $MPARS,#TPOFST ; IS IT THE /TOP COMMAND BNE 11$ ; IF NE, NO, TREAT AS SET /SUB TST $MPARS+NEGFLG ; SET /NOTOP IS SYNTAX ERROR BEQ 9$ ; IF EQ, NO JMP SETER1 ; SYNTAX ERROR 9$: CALL TERM ; IF EQ, YES, GET NEXT NON-BLANK BCS 35$ ; IF CS, SYNTAX ERROR CMPB R2,#': ; HAVE WE GOT A A GOOD TERMINATOR BNE 35$ ; IF NE, NO BR 12$ ; TREAT AS SET /MAIN FOR A WHILE 11$: ; REF LABLE -/; GET PARTITION BASE/ -/BEQ SETER1 ; ZERO IS AN ERROR/,,/; JGD17/ CMP $MPARS,#TPOFST ; IS IT /TOP COMMAND BNE 30$ ; IF NE, NO MOV #8.,$MPARS ; FOR KEYWORD TABLE JUMP, NEED TO SET THIS JMP SET ; GO BRING IN OVERLAY -/UIC AND SYSUIC PROCESSOR/,,/; JGD15/ ; CONDITIONAL CODE FOR ASSEMBLING WITH THE CORRECT PRIVLEGE MASK WORD .IFNDF D$$H11&D$$J11&D$$M11&D$$ZMD&D$$Z11 U.PRV1=U.CW3 .IFF .IFNDF M$$CLI ; IF NO MULTIPLE CLI SUPPORT U.PRV1=U.LUIC-2 .IFF ; IF HAVE MULTIPEL CLI SUPPORT U.PRV1=U.CLI-2 ; OFFSET FROM U.CLI INSTEAD .ENDC ; .END M$$CLI .ENDC ; .END D$$H11...ETC .IFNDF R$$PRV ; IF SYSCM DATA CHANGES NOT MADE $LBUIC::.WORD 454 ; THEN DEFAULT TO [1,54] .ENDC ; .ENDC R$$PRV ; -/SETSYS:/,,/; JGD16/ SETLIB: -/SETUIC:/,.,/; JGD15/ SETUIC: BVC 1$ ; EQUALS SIGN MEANS DISPLAY CURRENT VALUE JMP 40$ ; NO EQUALS SIGN MEANS DISPLAY CURRENT VALUE 1$: ; REF LABLE -/BNE 4$/,.,/; JGD16/ BEQ 3$ ; IF EQ, YES, SKIP TO SET IT CMP $MPARS,#LBOFST ; IS IT SET /LIBUIC BNE 4$ ; IF NE, NO MUST BE SET /UIC 3$: ; REF LABLE -/BEQ SETER7/ CMP $MPARS,#SYOFST ; IS IT SET /SYSUIC BEQ 301$ ; IF EQ, YES , SO SKIP TO SET IT MOV (R5),$LBUIC ; SET LIBUIC JMP SETCM1 ; 301$: ; REF LABLE -/36$:/,, -/38$/ -/38$/,/MOV/,/; JGD15/ ; BEQ 38$ ; NO BNE 37$ ; IF NE, YES USER PRIVLEGED, SO SKIP OVER BIT #400,U.PRV1(R1) ; MAYBE USER MANAGER?(BIT 8) BNE 361$ ; IF NE, YES, GO CHANGE UIC IF >[310,X] BIT #200,U.PRV1(R1) ; MAYBE USER IS GRP MANAGER + CAN CHANGE MEM # BEQ 38$ ; IF EQ, NO , JUST PLAIN UNPRIVLEGED USER MOVB (R5),U.LUIC(R1) ; IS GRP MANAGER, CHANGE MEM # BR 38$ ; BUT DON'T CHANGE GROUP NUMBER 361$: ; REF LABLE CMPB U.LUIC+1(R1),1(R5) ; CHANGE LOGIN UIC FOR GRP MGR IF ONLY CHANGING BEQ 37$ ; MEM NUMBER. ELSE CHECK TO SEE IF GROUP CODE LEGAL CMPB #310,1(R5) ; YES, 'USER MANAGER',CHANGE UIC IF >[310,X] BHIS 38$ ; NAUGHTY, NAUGHTY, NOT <=[310,X] 37$: MOV (R5),U.LUIC(R1) ; YES, SET LOGIN UIC -/BYTES:/,.,/; JGD17/ BYTES: CMP $MPARS,#TPOFST ; IS THIS THE SET /TOP COMMAND BNE 3$ ; IF NE, NO, NO SPECIAL TREATMENT CLR $MPARS+NEGFLG ; SET /NOTOP IS ILLEGAL, SO USE FLAG FOR NEG VALUES 1$: CMPB (R0),#40 ; DO WE HAVE A SPACE BNE 2$ ; IF NE PROCEED TSTB (R0)+ ; YES WE DO, SKIP OVER IT BR 1$ ; LOOP TO FIND A NON-SPACE 2$: CMPB (R0),#'- ; DO WE HAVE A NEG SIGN?(SPACES KILL SYNTAX)? BNE 3$ ; IF NE, NO, MUST BE A POSITIVE NUMBER TSTB (R0)+ ; BUMP POINTER UP A NOTCH INC $MPARS+NEGFLG ; REMEMBER IT IS A NEGATIVE NUMBER 3$: CMPB (R0),#'+ ; IS IT A PLUS? BNE 4$ ; IF NE, NO MOVB #40,(R0) ; IF EQ, YES, MAKE IT A SPACE 4$: CALL $GTNUM ; CONVERT ASCII NUMBER TO BINARY BCS 40$ ; EXIT IF ERROR IN CONVERSION -/10$:/,.,/; JGD17/ 10$: CMP $MPARS,#TPOFST ; IS IT SET /TOP COMMAND? BNE 12$ ; IF NE NO, SO CHECK SIZE CLC ; CLEAR CARRY(NO NEED TO CHECK SIZE OR SIGN) BR 30$ ; SKIP AROUND 12$: ; REF LABLE CMP R1,#177777 ; IS NUMBER TOO BIG? -/30$:/,.,/; JGD17/ BR 40$ ; RETURN 30$: CMP $MPARS,#TPOFST ; IS THIS SET /TOP COMMAND? BNE 35$ ; IF NE, NO SPECIAL TESTS FOR NEG NUMBERS TST $MPARS+NEGFLG ; SHOULD IT BE A NEGATIVE NUMBER? BEQ 35$ ; IF EQ, NO, EXIT NEG R1 ; MAKE IT NEGATIVE CLR $MPARS+NEGFLG ; PROBABLY DO NOT NEED TO RESET THIS, BUT WHY NOT 35$: CLC ; ALL DONE, BACK TO MAINLINE 40$: RETURN ; /