.TITLE ENABLE - ENABLE PRIVLEDGED STATUS FOR TERMINAL ; .IDENT /JKN01/ ; ;WRITTEN BY J. NEELAND ; LAST REVISED 770727. ; .LIST MEB ;LET'S SEE WHAT CODE IS BEING GENERATED ; .MCALL QIOW$C,ALUN$S,EXIT$S,TCBDF$,UCBDF$ ; TCBDF$ ;INVOKE THE DEFINITION MACROS UCBDF$ ; ENABLE::ALUN$S #1,#"TI,#0,DERR ;ASSIGN OUR TI: TO LUN 1 QIOW$C IO.RPR!TF.RNE,1,1,,IOST,,,,DERR ;THAT WAS WRITE PROMPT & READ W/O ECHO.... CMP IOST,#IS.CR ;LEGAL ONLY IF ENDED W/ CR. BNE ILLPSS CMP IOST+2,#PSSZ ;CHECK THAT SIZE MATCHES PASSWORD SIZE BNE ILLPSS MOV #PSSZ,R1 ;NOW CHECK ACTUAL PASSWORD MOV #PSSWD,R2 ;SET UP ADDRESSES FOR BUFFERS MOV #PSSIN,R3 CMPR: CMPB (R3),#141 ;SEE IF LOWER-CASE BLT UPPER ;NO IF LESS THAN LOWER-CASE 'A' BICB #40,(R3) ;YES, SO MAKE INTO UPPER-CASE FOR COMPARISON UPPER: CMPB (R2)+,(R3)+ BNE ILLPSS SOB R1,CMPR ;KEEP CHECKING ALL BYTES ;GOOD PASSWORD - NOW SET PRIVLEDGED.... MOV $TKTCB,R0 ;GET THE USER'S UCB FIRST MOV T.UCB(R0),R0 BIS #U2.PRV,U.CW2(R0) ;THEN SET THE PRIV BIT EXIT: EXIT$S ;EXIT QUIETLY (DON'T ADVERTISE STATUS) ; ILLPSS: QIOW$C IO.WVB,1,1,,,,,,DERR BR EXIT ;OUTPUT THE FAILURE MESSAGE & GO EXIT ; DERR: MOV $DSW,R0 ;GET STATUS TO SHOW IOT ;CRASH!! FOR DIAGNOSTIC PURPOSES ; ;DATA AREA...... ; IOST: .BLKW 2 ;I/O STATUS BLOCK ; .ENABL LC ;ALLOW LOWER-CASE TEXT IN FOLLOWING STRINGS PRMT: .ASCII /ENA password: / ;PROMPT MESSAGE PRSIZ=.-PRMT ; & SIZE PSSWD: .ASCII /ABCDE/ ;THAT'S THE PASSWORD FOR NOW PSSZ=.-PSSWD ; & THAT'S ITS SIZE PSSIN: .BLKB 14. ;HERE IS WHERE THE USER'S PASSWORD GOES FAILM: .ASCII /!!!Illegal password/ MSGL=.-FAILM ;MESSAGE SIZE .EVEN .END ENABLE