{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: SECURE5)}}
====== SECURE5 ======
(George Source)
**Macros used:** [[george:macro:CLOSBUDG|CLOSBUDG]], [[george:macro:CLOSE|CLOSE]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERR|COMERR]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:HUNT|HUNT]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OPENBUDG|OPENBUDG]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TRACE|TRACE]], [[george:macro:VFREE|VFREE]]
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