COMPAST 
COMMON
          CTEXT  COMPAST - ACCESS SUBSYSTEM TABLES. 
          SPACE  4,10 
          IF     -DEF,QUAL$,1 
          QUAL   COMPAST
          BASE   M
*COMMENT  COMPAST - ACCESS SUBSYSTEM TABLES.
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 AST      SPACE  4,10 
***       AST - ACCESS SUBSYSTEM TABLES.
* 
*         R. M. DANISCH.     81/01/26.
 AST      SPACE  4,40 
**        *AST* PROVIDES THE CALLER WITH A MEANS OF ACCESSING 
*         THE SSCT AND SSAT SUBSYSTEM TABLES. AN ENTRY FOR A PARTICULAR 
*         SUBSYSTEM MAY BE READ OR MODIFIED.  MODIFICATION IS PERFORMED 
*         VIA THE *UTEM* MONITOR FUNCTION WITH PRIOR VERIFICATION 
*         PERFORMED FOR SSAT UPDATES. USE OF ANY OF THE MODIFICATION
*         FUNCTIONS (FUNCTIONS *SECF*, *CSCF*, *SSCF*, *CEAF*, AND
*         *SEAF*) REQUIRES DEFINITION OF *AST$*.
* 
*         *AST* PERFORMS THE FOLLOWING FUNCTIONS -
*                FECF        FETCH SSCT ENTRY.
*                SECF        STORE CP NUMBER IN SSCT ENTRY. 
*                CSCF        CLEAR SUBSYSTEM ACCESS FLAG (BIT 11D)
*                            OF SSCT ENTRY. 
*                SSCF        SET SUBSYSTEM ACCESS FLAG (BIT 11D) OF 
*                            SSCT ENTRY.
*                FEAF        FETCH SSAT ENTRY.
*                CEAF        CLEAR SSAT ENTRY (RELEASE EJT ASSIGNMENT). 
*                SEAF        CREATE SSAT ENTRY (ASSIGN EJT).
* 
*         ENTRY  (A) = 6/ FC,12/ SSID 
*                     FC     FUNCTION CODE. 
*                     SSID   SUBSYSTEM IDENTIFICATION NUMBER. 
*                (T1) = CONTROL POINT NUMBER (FUNCTION *SECF*). 
*                     = EJT ORDINAL (FUNCTION *SEAF*).
* 
*         EXIT   (A) = SSCT ENTRY (FUNCTION *FECF*).
*                (A) .NE. 0 IF SUBSYSTEM ACCESSIBLE FLAG IS ALEADY
*                          CLEAR (FUNCTION *CSCF*). 
*                (A) .NE. 0 IF SUBSYSTEM ACCESSIBLE FLAG IS ALREADY 
*                          SET (FUNCTION *SSCF*). 
*                (A) = SSAT ENTRY (FUNCTION *FEAF*).
*                (A) .NE. 0 IF SSAT ENTRY IS ALREADY CLEAR
*                          (FUNCTION *CEAF*). 
*                (A) .NE. 0 IF SSAT ENTRY IS ALREADY NON-ZERO 
*                          (FUNCTION *SEAF*). 
* 
*         USES   T1 - T4, CM - CM+4.
* 
*         MACROS MONITOR. 
* 
*         HANG CONDITIONS - 
*                ATTEMPT TO EXECUTE TABLE UPDATE FUNCTION WITHOUT 
*                *AST$* DEFINED.
*                INVALID FUNCTION CODE. 
  
  
 AST      SUBR               ENTRY/EXIT 
          STD    T3          SAVE SUBSYSTEM IDENTIFICATION NUMBER 
          SHN    -14         SAVE FUNCTION CODE 
          STD    T2 
          LDC    MXSI        SAVE SUBSYSTEM INDEX 
          SBD    T3 
          STD    T3 
  
 AST$     IF     DEF,AST$ 
          LDN    0
          STM    ASTA 
 AST$     ENDIF 
  
*         COMPUTE SSCT CM WORD AND BYTE OFFSET. 
  
          LCN    0
          STD    T4 
 AST1     AOD    T4          INCREMENT CM WORD OFFSET 
          LCN    5
          RAD    T3 
          PJN    AST1        IF COMPUTATION INCOMPLETE
          ADN    5
          STD    T3          SET BYTE OFFSET
  
*         DETERMINE IF SSAT ACCESS REQUIRED.
  
          LDD    T2 
          SBN    MNAF 
          MJN    AST2        IF NO SSAT ACCESS REQUIRED 
          LDN    SSCTL       POSITION AT SSAT 
          RAD    T4 
  
*         READ SSCT/SSAT WORD CONTAINING THE TARGET ENTRY.
  
 AST2     LDC    SSCP 
          CRD    CM 
          LDD    CM+2 
          SHN    14 
          LMD    CM+3 
          ADD    T4 
          CRM    ASTD,ON
          LDD    T2 
          SBN    MAXF 
          PJN    AST3        INVALID FUNCTION CODE
          LDM    TAST,T2
          NJN    AST4        IF VALID FUNCTION CODE 
 AST3     MONITOR HNGM       HANG PP
          UJN    *
  
 AST4     STD    CM 
          LJM    0,CM        GO TO FUNCTION PROCESSOR 
  
*         PROCESS *FECF*/*FEAF* FUNCTIONS. FETCH SSCT/SSAT ENTRY. 
  
 AST5     LDM    ASTD,T3     FETCH SSCT/SSAT ENTRY
          LJM    ASTX        RETURN 
  
 .A       IF     DEF,AST$ 
  
*         PROCESS *SECF* FUNCTION. STORE CP NUMBER IN SSCT ENTRY. 
  
 AST6     LDD    T1          STORE CP NUMBER IN *UTEM* PARAMETERS 
          STM    ASTC+4 
          LDM    ASTD,T3     STORE VERIFY VALUE IN *UTEM* PARAMETERS
          STM    ASTB+4 
          LDN    5           SET FIELD SIZE 
          UJN    AST12       GO TO COMMON CODE
  
*         PROCESS *CSCF*/*SSCF* FUNCTIONS. CLEAR/SET SUBSYSTEM ACCESS 
*         FLAG. 
  
 AST7     LDD    T2          STORE INTENDED VALUE IN *UTEM* PARAMETERS
          SBN    CSCF 
          STM    ASTC+4 
          LMN    1           STORE VERIFY VALUE IN *UTEM* PARAMETERS
          STM    ASTB+4 
          LDN    11D         BIAS LOW ORDER BIT POSITION
          STM    ASTA 
          LDN    1           STORE FIELD SIZE IN *UTEM* PARAMETERS
          UJN    AST12       GO TO COMMON CODE
  
*         PROCESS *CEAF* FUNCTION. CLEAR SSAT ENTRY.
  
 AST8     LDN    0
          STD    T1 
          LDM    ASTD,T3
          NJN    AST11       IF SSAT ENTRY NOT ALREADY CLEAR
          LDN    1           INDICATE POSSIBLE ERROR CONDITION
 AST9     LJM    ASTX        RETURN 
  
*         PROCESS *SEAF* FUNCTION. CREATE SSAT ENTRY. 
  
 AST10    LDM    ASTD,T3
          NJN    AST9        IF SSAT ENTRY ALREADY NON-ZERO 
 AST11    STM    ASTB+4      STORE VERIFY VALUE IN *UTEM* PARAMETERS
          LDD    T1          STORE INTENDED VALUE IN *UTEM* PARAMETERS
          STM    ASTC+4 
          LDN    12D         STORE FIELD SIZE IN *UTEM* PARAMETER BLOCK 
 AST12    STM    ASTC 
          ADC    4000        SET VERIFY BIT 
          STM    ASTB 
          LDN    4           CALCULATE LOW ORDER BIT OF BYTE
          SBD    T3 
          STD    T3 
          SHN    1
          RAD    T3 
          SHN    2
          ADC    ** 
 ASTA     EQU    *-1         (LOW ORDER BIT BIAS) 
          SHN    6
          STM    ASTB+1 
          STM    ASTC+1 
          LDN    2           FINISH SETTING UP *UTEM* CALL AND ISSUE IT 
          STD    CM+1 
          LDD    CM+2 
          SHN    14 
          LMD    CM+3 
          ADD    T4 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDN    0
          STD    CM+2 
          LDD    MA 
          CWM    ASTB,CM+1
          MONITOR UTEM
          LDD    CM+1 
          LJM    ASTX        RETURN 
  
  
*         *UTEM* PARAMETER BLOCK. 
  
 ASTB     VFD    1/1,5/0,6/0 VERIFY ENTRY 
          VFD    6/0,6/0
          CON    0
          CON    0
          CON    0
  
 ASTC     VFD    1/0,5/0,6/0 CHANGE ENTRY 
          VFD    6/0,6/0
          CON    0
          CON    0
          CON    0
  
 .A       ELSE
  
 AST6     EQU    AST3        DISABLE FUNCTIONS ISSUING *UTEM* 
 AST7     EQU    AST3 
 AST8     EQU    AST3 
 AST10    EQU    AST3 
  
 .A       ENDIF 
  
 ASTD     BSS    5           SSCT/SSAT WORD 
          SPACE  4,10 
**        TAST - TABLE OF FUNCTION PROCESSORS.
* 
*         EACH ENTRY CONTAINS THE ADDRESS OF THE CORRESPONDING FUNCTION 
*         PROCESSOR.
  
  
 TAST     BSS    0
          LOC    0
  
 FECF     CON    AST5 
 SECF     CON    AST6 
 CSCF     CON    AST7 
 SSCF     CON    AST7 
  
 MNAF     BSS    0           MINIMUM SSAT FUNCTION
  
 FEAF     CON    AST5 
 CEAF     CON    AST8 
 SEAF     CON    AST10
  
 MAXF     BSS    0           MAXIMUM VALID FUNCTION 
  
          LOC    *O 
 AST      SPACE  4,10 
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 AST      EQU    /COMPAST/AST 
 FECF     EQU    /COMPAST/FECF
 SECF     EQU    /COMPAST/SECF
 CSCF     EQU    /COMPAST/CSCF
 SSCF     EQU    /COMPAST/SSCF
 FEAF     EQU    /COMPAST/FEAF
 CEAF     EQU    /COMPAST/CEAF
 SEAF     EQU    /COMPAST/SEAF
 QUAL$    ENDIF 
          ENDX
