.TITLE PRICHK .SBTTL TITLE PAGE .IDENT /MRH001/ ; ; F.BORGER ; MICHAEL REESE MEDICAL CENTER ; DEPARTMENT OF MEDICAL PHYSICS ; JULY 78 ; ; THIS MODULE IS AVAILABLE FOR LINKING INTO MCR, MCI ETC ; ; IT PERFORMS THE SAME FUNCTION OF PDS, IE ; A/LOOKS AT ...XXX TASK USER IS REQUESTING ; ; B/CHECKS PRIVILEDGE WORD OF USER PROFILE FILE TO SEE IF REQUESTOR ; HAS PRIVILEDGE ON CALLING, ; R0 MUST CONTAIN PROTECTION WORD, OBTAINED FROM U.RBOF THE TI PUD ; R1 MUST CONTAIN RAD 50 3 LETTER TASK NAME ; ; C/RETURNS WITH 0 IN R0 AS SUCCESS INDICATOR ; ; D/RETURNS WITH -1 IN R0 AS SUCCESS INDICATOR ; ; E/OTHER REGISTERS UNCHANGED .PAGE .SBTTL TABLES OF TASKS & PRIVILEGES NEEDED ; ; DEFINE PRIV. BIT VALUES FOR 6.3 RSX ; ;PRIVILEGE BIT DEFINITIONS FOR CURRENT SYSTEM ; PR.FIL=1 ;file work (PIP,VeriFY,FLX,DMP,QUE,RECover,SDV,SRD,SRT,TUI) PR.RUN=2 ;Task manipulation (INStall,REMove,REPlace,RUN) PR.BAS=4 ;BASic,FOCal PR.COB=10 ;COBOL (not implemented) PR.COR=20 ;was CORal, used for editors (EDI TECo) PR.FOR=40 ;FORtran,XReF PR.LIN=100 ;Linkers (TKB,TKX) PR.MAC=200 ;MACro PR.SCI=400 ;super user, SAVe, OPEn,BAD,ROLlin,etc. PR.SUB=1000 ;Set User at Batch (if bit clear, keep his task at batch level) PR.MCR=2000 ; REESE HOSTILE TERMINAL (0=HOSTILE) PR.DEV=4000 ;Device management (DisMOunt,MOUnt,REDirect,UNLoad) PR.DUM=10000 ;DuMP PR.LIB=20000 ;LIBrarian PR.SYS=40000 ;not implemented PR.RTC=100000 ;not implemented ; ;DEFINE MACRO TO GENTERATE TABLES .LIST ME .MACRO TABLE TASK,PRFLAG .PSECT NAMES .RAD50 ?TASK? .PSECT FLAGS .WORD PRFLAG .ENDM ; .PSECT NAMES NAMES: .PSECT FLAGS FLAGS: .PSECT ; NOW GENERATE TABLES ; TABLE ATT,PR.SCI TABLE AT.,PR.MCR TABLE AZP,PR.SCI TABLE BAD,PR.SCI TABLE BAK,PR.SCI TABLE BAS,PR.BAS TABLE BA2,PR.BAS TABLE BA3,PR.BAS TABLE BA4,PR.BAS TABLE BA5,PR.BAS TABLE BA6,PR.BAS TABLE BA7,PR.BAS TABLE BA8,PR.BAS TABLE BA9,PR.BAS TABLE BYE,PR.RTC ;FOR APRIL 1ST, DON'T LET HIM RUN BYE TABLE B10,PR.BAS TABLE B11,PR.BAS TABLE BAT,PR.SUB TABLE BOO,PR.SCI TABLE CDA,PR.SCI TABLE CDT,PR.SCI TABLE CDX,PR.SCI TABLE COR,PR.SCI TABLE CZP,PR.SCI TABLE DMO,PR.DEV TABLE DMP,PR.FIL TABLE DOB,PR.SCI TABLE DSC,PR.SCI TABLE EDI,PR.COR TABLE FCL,PR.BAS TABLE FLX,PR.FIL TABLE FOR,PR.FOR TABLE HEL,PR.RTC ;FOR APRIL 1ST, DON'T LET HIM RUN HEL TABLE INI,PR.SCI TABLE INS,PR.RUN TABLE LBR,PR.LIB TABLE LUN,PR.SCI TABLE MAC,PR.MAC TABLE MEM,PR.SCI TABLE MFT,PR.SCI TABLE MOU,PR.DEV TABLE OPE,PR.SCI TABLE OPR,PR.SCI TABLE PIP,PR.FIL TABLE PSE,PR.SCI TABLE PWE,PR.SCI TABLE QUE,PR.FIL TABLE REA,PR.SCI TABLE REC,PR.FIL TABLE RED,PR.DEV TABLE REM,PR.RUN TABLE REP,PR.RUN TABLE ROL,PR.SCI TABLE RUN,PR.RUN TABLE SAV,PR.SCI TABLE SDV,PR.FIL TABLE SET,PR.SCI TABLE SRD,PR.FIL TABLE SRT,PR.FIL TABLE SYE,PR.SCI TABLE TEC,PR.COR TABLE TKB,PR.LIN TABLE TKX,PR.LIN TABLE TSE,PR.SCI TABLE TUI,PR.FIL TABLE UFD,PR.SCI TABLE UNL,PR.DEV TABLE USE,PR.SCI TABLE VFY,PR.FIL TABLE XRF,PR.FOR TABLE ZAP,PR.SCI TABLE END,0 .PSECT .PAGE .SBTTL THE CODE PRICHK:: MOV R2,-(SP) ;SAVE USED REGISTER CLR R2 1$: CMP R1,NAMES(R2) ;COMPARE REQUESTED NAME WITH TABLE NAME BNE 4$ ;BR IF NOT SAME BIT FLAGS(R2),R0 ;IS CORRECT FLAG BIT SET IN PRO WORD ? BNE 2$ ;YES MOV #-1,R0 ;NO SHOW ERROR INDICATION BR 3$ ;AND EXIT 2$: CLR R0 ;SHOW GOOD 3$: MOV (SP)+,R2 ;RESTORE R2 RTS PC ;AND RETURN 4$: TST (R2)+ ;BUMP R2 TO NEXT WORD IN TABLES TST FLAGS(R2) ;END OF TABLES ? BNE 1$ ;IF NOT, WE TRY AGAIN CLR R0 ;TASK NOT IN RESTRICTED LIST MOV (SP)+,R2 ;RESTORE R2 RTS PC ;AND RETURN .END