.TITLE PRIV -- SET /PRIV=TI: WITH PASSWORD PROTECTION .IDENT /V02.EJC/ ;B. MORGAN 9-AUG-79 ;E. CETRON 30-MAY-80 ELIMINATED ACNTLOG OVERHEAD .MCALL GMCR$,MRKT$,DIR$,QIOW$S,WTSE$S,EXIT$S BUF: .BLKB 8. .WORD 0 ;(RESERVED) ; ;THESE TWO TABLES HAVE CORRESPONDING ENTRIES ;(ENTRY -2 OF VLDGRP IS FOR PRIVILEGED TERMINALS) ; PASWDS: .WORD SYSTEM ;TABLE OF PASSWORD ADDRESSES .WORD 0 ;END OF TABLE .BYTE 1,376 VLDGRP: .BYTE 1,375 ;TABLE OF VALID PRIV RANGES LUIC: .WORD 0 SYSTEM: .ASCII /71357 / PSWD: .ASCII /PASSWORD:/ PSWDL=.-PSWD ER1: .ASCII <15>/PRV -- INVALID PASSWORD/ ER1L=.-ER1 ER2: .ASCII <15>/PRV -- COMMAND NOT ALLOWED/ ER2L=.-ER2 .EVEN PRIV: MOV $TKTCB,R1 ;GET TASK CONTROL BLOCK MOV T.UCB(R1),R5 ;GET TI UCB ADDRESS MOV U.LUIC(R5),LUIC ;GET LOGIN UIC 4$: MOV #PASWDS,R4 ;LIST OF PASSWORDS BIT #U2.PRV,U.CW2(R5) ;ALREADY PRIVILEGED? BNE 5$ ;YES MOV #BUF,R0 MOV #" ,(R0) MOV (R0)+,(R0) MOV (R0)+,(R0) QIOW$S #IO.WVB,#1,#1,,,,<#PSWD,#PSWDL,#44> QIOW$S #IO.RNE,#1,#1,,,,<#BUF,#6.> 41$: MOV (R4)+,R0 ;ADDRESS OF NEXT PASSWORD BEQ 42$ ;END OF LIST CALL TPSWD BCC 5$ ;GOOD PASSWORD, CONTINUE BR 41$ 42$: QIOW$S #IO.WVB,#1,#1,,,,<#ER1,#ER1L,#40> JMP 9$ ;AND EXIT 43$: QIOW$S #IO.WVB,#1,#1,,,,<#ER2,#ER2L,#40> JMP 9$ 5$: ADD #VLDGRP-PASWDS-2,R4 ;ADDRESS OF VALID PRIVS CMPB LUIC+1,(R4)+ BLO 43$ ;ERROR, OUT OF RANGE CMPB LUIC+1,(R4) BHI 43$ ;ERROR, OUT OF RANGE BIS #U2.PRV,U.CW2(R5) ;SET PRIVILEGED BIT 9$: EXIT$S ;AND EXIT TPSWD: MOV #BUF,R1 ;ADDRESS OF INPUT MOV #6,R2 ;MAX SIZE OF PASSWORD 1$: CMPB (R1)+,(R0)+ ;NO, MATCH? BNE 3$ ;NO, ERROR DEC R2 ;DONE? BGT 1$ ;NO, LOOP BR 4$ ;YES 3$: SEC ;SET ERROR 4$: RETURN .END PRIV