22FL #LIS K0SECURE>K0COMMAND>K0ALLGEO 22^= #SEG SECURE5 [RICHARD GRIMWADE 23DW 8HSECURE5 23YG # THIS CHAPTER IMPLEMENTS THE SECURITY 24D6 # HIGH,LOW OR NORMAL COMMAND. 24XQ # IF HIGH,IT SETS TWO BITS IN THE STATUS INDICATOR,CINDIC 25CB # IN THE USER'S DICTIONARY ENTRY. 25X2 # IF LOW,IT SETS ONE OF THE BITS ONLY. 26BL # IF NORMAL,IT CLEARS BOTH BITS. 26W= # 27*W SEGENTRY K1SECURE,XK1 27TG # 28*6 #SKI K6SECURE>20-20 28SQ MENDAREA 50,K99SECURE 29#B MHIGH 4HHIG 29S2 MNORMAL 4HNOR 2=?L MLOW 4HLOW 2=R= MGSECURE +GSECURE 2?=W MGSECURE1 +GHIGH 2?QG MGSECURE2 +GLOWS 2#=6 XK1 2#PQ PARAPASS [READ PARAMETER INTO CPB/CUNI BLOCK 2*9B HUNT 3,CPB,CUNI [PUT POINTER INTO X3 2*P2 LDX 7 ANUM(3) 2B8L BZE 7 N5 [TEST IF PARAMETER IS NULL, 2BN= BNG 7 N5 [OR ABSENT 2C7W LDX 7 APARA(3) 2CMG #SKI K6SECURE>999-999 2D76 TRACE APARA(3),SECPARA 2DLQ LDX 6 ACES 2F6B DCH 6 7 [REPLACE LEAST SIGNIFICANT CHARACTER OF 2FL2 [FIRST WORD OF PARAMETER WITH A SPACE 2G5L TXU 7 MHIGH(1) [TEST IF PARAMETER IS HIGH 2GK= BCC N6 2H4W TXU 7 MNORMAL(1) [TEST IF PARAMETER IS NORMAL 2HJG BCC N8 2J46 TXU 7 MLOW(1) [TEST IF PARAMETER IS LOW 2JHQ BCC N9 2K3B BRN N4 2KH2 N5 LDN 0 1 2L2L STO 0 JPARNUM(3) [SET PARAMETER NO. TO ONE 2LG= N4 COMERR ASECURE [ERROR IF PARAMETER NULL,ABSENT,NOT HIGH, 2L^W [NORMAL OR LOW 2MFG N6 LDX 7 CONTEXT(2) [TO TEST WHETHER MOP OR NOT 2M^6 SRC 7 4 2NDQ BNG 7 N7 2NYB COMERR ERHIGH [ERROR IF SECURITY HIGH AND NOT MOP 2PD2 N7 LDX 6 MGSECURE1(1) [SET HIGH MARKER 2PXL BRN N10 2QC= N8 LDN 6 0 [SET NORMAL MARKER 2QWW BRN N10 2RBG N9 LDX 6 MGSECURE2(1) [SET LOW MARKER 2RW6 N10 OPENBUDG NBKIN [IF PARAMETER VALID,I.E. HIGH,NORMAL 2S*Q [OR LOW,OPEN DICTIONARY 2STB MHUNTW 3,FILE,ADICTENT [PUT POINTER IN X3 TO FILE/ADICTENT 2T*2 [BLOCK,WHICH CONTAINS THE STATUS 2TSL [INDICATOR,CINDIC 2W#= LDX 7 MGSECURE(1) [TO TEST WHETHER CURRENT SECURITY IS 2WRW ANDX 7 CINDIC(3) [NORMAL OR NOT 2X?G BNZ 7 N11 2XR6 LDX 7 CONTEXT(2) [IF NORMAL,TO TEST WHETHER MOP OR NOT 2Y=Q SRC 7 4 2YQB BNG 7 N11 2^=2 CLOSE [CLOSE THE DICTIONARY 2^PL VFREE CPB,CUNI [THE CUNI BLOCK MUST BE FREED BEFORE THE 329= COMERR HSECURE [NEXT COMMAND 32NW N11 NGX 7 MGSECURE(1) [LOADS THE MASK 338G SBN 7 1 [INVERSE TO GSECURE 33N6 ANDX 7 CINDIC(3) [ZEROISES SECURITY BITS OF CINDIC 347Q ADX 7 6 [SETTING SECURITY BITS OF CINDIC 34MB STO 7 CINDIC(3) [RESTORE CINDIC,HAVING SET SECURITY BITS 3572 #SKI K6SECURE>499-499 35LL TRACE CINDIC(3),SECURITY 366= CLOSBUDG [CLOSE DICTIONARY 36KW ENDCOM 375G NBKIN COMBRKIN [IF BREAK IN OCCURS 37K6 #END ^^^^ ...35414456000100000000