SECURE5

(George Source)

Macros used: CLOSBUDG, CLOSE, COMBRKIN, COMERR, ENDCOM, HUNT, MENDAREA, MHUNTW, OPENBUDG, PARAPASS, SEGENTRY, TRACE, VFREE

SECURE5.txt
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