         SYSTEM   SIG5P                                                         
         SYSTEM   OPTIONS                                                       
         DEF      FGL1                                                          
         DEF      FGLMSG                                                        
         DEF      FGL1EXIT                                                      
OLAYFLAG EQU      'FGL1'                                                        
PSYS     EQU      0                                                             
         SYSTEM   CPRMON                                                        
         TITLE    '**** LOAD MODULE RELEASER - FGL1 ****'                       
*                                                                               
*                                   RELEASES AND LOADS FOREGROUND PROG.         
*                                     FROM THE FOREGROUND PROG. (FP)            
*                                     TABLE                                     
*                                                                               
*                                                                               
A:FGL1   EQU      %                                                             
FGL1     RES      0                                                             
*                                                                               
*        SCHEDULE ALL QUEUED LOD MODULES FOR LOADING                            
*                                                                               
         LB,R2    LMIMAXR           NO. OF ENTRIES                              
A01      DISABLE                                                                
         LH,R0    LMISTAT,R2        IS PROGRAM QUEUED                           
         CI,R0    2                                                             
         BAZ      A01A              NO                                          
         OR,R0    KX80              YES. SET LOAD TO BE PERFORMED BIT           
         STH,R0   LMISTAT,R2                                                    
A01A     ENABLE                                                                 
         BDR,R2   A01                                                           
         PAGE                                                                   
*                                                                               
*        FIND ALL ACTIVE LOAD MODULES TO TEST FOR PRIMARY TERMINATION           
*                                                                               
         LB,R2    LMIMAXR                                                       
A02      LD,R6    KZEROS            R6,R7=0                                     
         DISABLE                                                                
         LH,R8    LMISTAT,R2        SEARCH LMI FOR LM TO RELEASE                
         BNEZ     A08               B IF ENTRY IS ACTIVE                        
A03      ENABLE                                                                 
         BDR,R2   A02               GO BACK FOR NEXT ENTRY                      
*                                                                               
*        NO MORE LOAD MODULES TO CHECK                                          
*                                                                               
         LW,R1    Y0008             HAS RUN/RLS CAL BEEN   /SIG7-2005/*C5732 C01
         CW,R1    K:CTST            HANDLED WHILE IN FGL1  /SIG7-2005/*C5732 C01
         BAZ      A03A              B IF NOT                                    
*NEW ENTRY TO RUN/RLS A PROG HAS BEEN MADE                 /SIG7-2005/*C5732 C01
*RECYCLE TO BEGINNING OF FGL1                              /SIG7-2005/*C5732 C01
         LI,R0    0                                        /SIG7-2005/*C5732 C01
         STS,0    K:CTST            RESET BIT 12           /SIG7-2005/*C5732 C01
         B        FGL1                                     /SIG7-2005/*C5732 C01
A03A     RES      0                                                             
         LI,R8    FGL2              WHERE TO GO NEXT                            
FGL1EXIT B        *R8               GO THOU.                                    
         PAGE                                                                   
*                                                                               
*        CHECK AN ACTIVE LOAD MODULE TO SEE IF IT IS WAITING                    
*        FOR PRIMARY RELEASE                                                    
*                                                                               
A08      RES      0                                                             
         CI,R8    LMISEC+LMISPL+LMIPPL+LMILOAD+LMIRUNQ                          
         BANZ     A03               B IF SECONDARY OR PUBLIB                    
*                                   OR NOT YET LOADED/POSTED                    
         CI,R8    X'10'             IS IT A RLS BY FOREGROUND                   
         BAZ      A03               NO                                          
         LD,R12   LMINAME,R2        GET NAME IN R12,R13                         
         LW,R14   LMIPL,R2          R14=PUB LIBS USED                           
         ENABLE                                                                 
*                                                                               
*        RELEASABLE LOAD MODULE FOUND                                           
*                                                                               
         LI,R7    1                 BYTE OFFSET                                 
         LB,R1    STILMID           GET NO. OF STI ENTRIES                      
A11      RES      0                                                             
         LW,R8    STITCB,R1                                                     
         BEZ      A14                                                           
         LB,R8    STILMID,R1        GET NEXT LMID FROM STI                      
         CW,R8    R2                SEE IF SAME ID                              
         BNE      A14                                                           
         LW,R8    STIPRIO,R1        SAME ID SO GET INT. DATA                    
         LI,R5    0                                                             
         LB,R4    R8                GET INT. ADDRESS                            
         CI,R4    2                 BRANCH IF POWER INTERRUPTS                  
         BLE      A11B                                                          
A11A     AI,R4    -1                                       /SIG7-1984/*C5732    
         SLD,R4   -4                DIVIDE ADD. BY 16                           
         SCS,R5   4                 R4=GROUP NO. ,  R5= R BIT                   
         CI,R4    0                 IS IT GROUP ZERO                            
         BE       A15               YES, SPECIAL CASE                           
         AI,R4    X'1101'           NO, CHANGE R4 TO WD EFFECT. ADD.            
A12      LI,R6    X'8000'                                                       
         LCW,R5   R5                                                            
         SLS,R6   0,R5              SHIFT R BIT TO PROPER POSITION              
         WD,R6    *R4               DISARM INT.                                 
A11B     LB,R4    R8                GET INT. NO.                                
         AI,R4    X'4F'             CHANGE TO ABS. ADDRESS                      
         LW,R0    XPSDCMMD          GET XPSD TO REPORT SPURIOUS INTS            
         STW,R0   *R4               STORE IN UNUSED INT. CELL                   
         CI,R4    X'51'             POWER INTERRUPTS                            
         BLE      A11C                                                          
         CI,R4    X'5A'             IS IT A CLOCK INT.                          
         BG       A13               NO                                          
         SLS,R6   6                 YES,DISARM COUTER PULSE TOO                 
         WD,R6    X'1100'                                                       
         AI,R4    -6                R4=ADD. OF COUNTER PULSE INT.               
         STW,R0   0,R4              STORE MTW INTO CLOCK LOC                    
A11C     DISABLE                                                                
A13      RES      0                                                             
         LW,R4    R1                REMOVE FROM DISPATCHER Q                    
         DO1      #MULTDSP                                                      
         XPSD     TMDQR                                                         
         LI,R5    0                                                             
         STW,R5   STITCB,R1         ZERO STI ENTRY                              
A14      ENABLE                                                                 
         BDR,R1   A11               GO BACK FOR NEXT INT.                       
         B        A17                                                           
A15      AI,R5    -2                ADJUST R BIT FOR GROUP 0                    
         AI,R4    X'1100'           WD EFFECT. ADD. FOR GROUP 0                 
         B        A12                                                           
A17      LW,R5    R2                GET LMID INTO R5                            
         BAL,R8   TTPRIM            PRIMARY TERMINATION                         
         LW,R0    R14               WERE ANY PUBLIBS USED BY LM                 
A21      RES      0                                                             
         ENABLE                                                                 
         CI,R0    0                                                             
         BE       A26               NO PUBLIBS LEFT SO EXIT                     
         SLD,R0   -8                                                            
         SLS,R1   -24               GET NEXT INDEX IN R1                        
         CI,R1    0                                                             
         BE       A21               EMPTY ENTRY                                 
         DISABLE                                                                
         MTB,-1   LMIMAXR,R1        REDUCE NO. OF USERS                         
         BNEZ     A21               STILL USERS LEFT                            
         LD,R8    ZEROS                                                         
         STD,R8   LMINAME,R1        CLEAR OUT ENTRY FOR PUB LIB                 
         STW,R8   LMIPL,R1                                                      
         STH,R8   LMISTAT,R1        CLEAR LM FROM TABLE,NO USERS                
         MTW,1    RUN99             INCREMENT REENTRANCY CT.                    
         B        A21                                                           
A26      RES      0                                                             
         ENABLE                                                                 
         DO       #LOADMSG                                                      
         LI,R5    XMSG2             PROG RELEASED MSG                           
         BAL,R8   FGLMSG            OUTPUT IT                                   
         FIN                        #LOADMSG                                    
         LD,R6    ZEROS                                                         
         DISABLE                                                                
         STD,R6   LMINAME,R2        REMOVE LM FROM LMI                          
         STH,R6   LMISTAT,R2        CLEAR STATUS                                
         STW,R6   LMIPL,R2                                                      
         MTW,1    RUN99             INCREMENT REENTRANCY COUNT                  
         ENABLE                                                                 
         B        A03                                                           
         PAGE                                                                   
*                                                                               
*        FGL ERROR MESSAGE ROUTINE                                              
*                                                                               
*        CALL:    BAL,R8  FGLMSG                                                
*                 R2=LMID                                                       
*                 R5=MESSAGE INDEX                                              
*                                                                               
*        USES R0, R1, R5, R10-R12                                               
*                                                                               
FGLMSG   RES      0                                                             
         MI,R5    6                 COMPUTE MESSAGE                             
         AI,R5    MSGTAB            ADDRESS                                     
         LW,R12   *K:RTS            GET STACK SPACE FOR MSG                     
         LI,R1    8                                                             
         MSP,R1   *K:RTS                                                        
         LI,R1    6                 MOVE MSG INTO SPACE OBTAINED                
         LW,R0    *R5,R1                                                        
         STW,R0   *R12,R1                                                       
         BDR,R1   %-2                                                           
         AI,R12   8                 MOVE TASK NAME INTO MSG                     
         LD,R0    LMINAME,R2                                                    
         STW,R1   *R12                                                          
         AI,R12   -1                                                            
         STW,R0   *R12                                                          
         AI,R12   -6                                                            
         LW,R10   TYPE0             MOVE FPT INTO REGISTERS                     
         LW,R11   TYPE0+1                                                       
         CAL1,2   R10               TYPE MESSAGE                                
         LI,R1    -8                RESTORE STACK                               
         MSP,R1   *K:RTS                                                        
         B        FGL1EXIT          RETURN TO FGL2                              
TYPE0    GEN,8,24 2,0                                                           
         GEN,1,31 1,X'10'                                                       
*                                                                               
*                                                                               
MSGTAB   EQU      %-1               TABLE OF ERROR MESSAGES FOR FGL2            
         DATA     X'1F5A5AD3'                                                   
         TEXT     'MI FULL,CAN''T LOAD  '                                       
         DATA     X'1F5A5AC3'                              /SIG7-4244/*C5732 C01
         TEXT     'ORE USED,CAN''T LOAD '                  /SIG7-4244/*C5732 C01
         DATA     X'1F5A5AC9'                              -SIG7-4244/*C5732 C01
         TEXT     '/O ERR,CAN''T LOAD   '                  -SIG7-4244/*C5732 C01
         DATA     X'1F5A5AD5'                              -SIG7-4244/*C5732 C01
         TEXT     'ONEXIST,CAN''T LOAD  '                  -SIG7-4244/*C5732 C01
         DATA     X'1F5A5AD7'                              -SIG7-4244/*C5732 C01
         TEXT     'UB.LIB.,CAN''T LOAD  '                  -SIG7-4244/*C5732 C01
         DATA     X'1F5A5AD5'                                                   
         TEXT     'O TSPACE,CAN''T LOAD'                                        
         DATA     X'1F5A5AC2'                                                   
         TEXT     'AD HEADER CAN''T LOAD'                                       
         DATA     X'1F5A5AC2'                                                   
         TEXT     'AD PUBLIB CAN''T LOAD'                                       
         DATA     X'1F5A5AD7'       COUNT, BANG, BANG, 'P'                      
         TEXT     'ROGRAM RELEASED:    '                                        
         DATA     X'1F5A5AD7'       COUNT, BANG, BANG, 'P'                      
         TEXT     'ROGRAM LOADED:      '                                        
KXFFBF   DATA     X'FFBF'                                                       
KX10     EQU      X10                                                           
KX7F     EQU      M7                                                            
KX80     EQU      X80               0000 0080                                   
KXBF     EQU      XBF               0000 00BF                                   
KXD7     DATA     X'D7'                                                         
KL0020   EQU      Y002              0020 0000                                   
KLC0     EQU      YC                C000 0000                                   
KLM15    EQU      YFFFE             FFFE 0000                                   
KZEROS   EQU      ZEROS             0000 0000                                   
XMSG2    EQU      8                                                             
FGLD1    EQU      Y4                4000 0000                                   
         OLAYEND                                                                
         END                                                                    
