         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*        RESIDENT OVERLAY MADE UP OF TERMINATION, EXITS,                        
*        DISPATCHER, ETC                                                        
*        TERM                                                                   
*        TMTERM                                                                 
*        TMABORT                                                                
*        TMTRMT                                                                 
*        TMABRTT                                                                
*        TMTRMJ                                                                 
*        TMLM                                                                   
*        ABORT                                                                  
*                                                                               
         DEF      A:TERM                                                        
         DEF      TMTERM,TMABORT                                                
         DEF      TMTRMT,TMABRTT,TMTRMJ                                         
         DEF      TMLM,ABORT                                                    
OLAYFLAG EQU 'TERM'                                                             
         SYSTEM   CPRMON                                                        
         TITLE    '** - TMABORT, TMTERM, TERM CAL PROCESSOR **'                 
*******************                                                             
*   TERM,TMTERM   *                 TASK TERMINATION ENTRY                      
*     TMABORT     *                 TASK ABORT ENTRY                            
*******************                                                             
* ENTRY TO TMTERM OR TMABORT ARE FROM SOMEWHERE IN THE TASKS CONTEXT.           
* IF THE TASK IS PRIMARY, LMI WILL BE SET TO RELEASE (LMIT) AND                 
*        AN EXIT WILL BE PERFORMED.                                             
* IF THE TASK IS SECONDARY, LMI WILL BE SET TO RELEASE AND                      
*        TASK TERMINATION WILL BE GIVEN CONTROL                                 
TMABORT  RES      0                                                             
TMAB1    LB,R4    TCBPOINT          ENTRY FOR UNCONDITIONAL ABORT               
         LB,R5    STILMID,R4            R5=CURRENT LOAD MODULE                  
         BAL,R8   TMABRTT           CALL ABORT, NEVER RETURNS                   
TERM     EQU      %                                                             
A:TERM   EQU      TERM                                                          
TMTERM   LB,R4    TCBPOINT          SET TO CURRENT TASK                         
         LB,R5    STILMID,R4                                                    
         BAL,R8   TMTRMT            CALL TERM,NEVER RETURNS                     
         PAGE                                                                   
*******************                                                             
*    TMTRMT       *    SUBR. TO TERMINATE A LOAD MODULE                         
*    TMABRTT      *    SUBR. TO ABORT A LOAD MODULE INCLUDING                   
*******************      ANY JOB TERMINATION (IF JOB CRITICAL)                  
* ENTRY  R5       LOAD MODULE TO BE TERMINATED/ABORTED                          
*        BAL,R8   TMTRMT                                                        
* -OR-   BAL,R8   TMABRTT                                                       
* EXIT   +1       TERMINATION/ABORT INVOKED.  IF THE LOAD                       
*                     MODULE IDENTIFIED IS THE CURRENT TASK,                    
*                     THE LOAD MODULE IS TERMED(ABRTED), AND CONTROL            
*                     IS NOT RETURNED TO THE CALLER.                            
*                     IF THE LOAD MODULE BEING ABORTED IS JOB                   
*                     CRITICAL AND THE CURRENT TASK IS IN THE                   
*                     SAME JOB, CONTROL IS NOT RETURNED.                        
* REGISTERS USED: R0,R1,R4-R6,R8-R11                                            
*           SAVED: R2-R3,R7,R12-R15                                             
* STACK WORDS:    NONE                                                          
* SUBROUTINES:    TMLM, TMTRMJ                                                  
*                                                                               
TMABRTT  LI,R9    LMIT+LMIA         SET TO TERMINATION AND                      
*                                       ABORT                                   
         B        TMTRM1                                                        
TMTRMT   LI,R9    LMIT              SET TO TERMINATION ONLY                     
TMTRM1   LW,R10   R8                SAVE THE EXIT                               
         BAL,R8   TMLMNBKG          CALL THE SUBROUTINE TO                      
*                                       EFFECT TRMINATION ON A                  
*                                       SINGLE TASK                             
         LB,R4    TCBPOINT          IS THE CURRENT TASK TERMING                 
         CB,R5    STILMID,R4            BY VIRTUE OF THIS REQUEST?              
         BNE      *R10                  NO                                      
         CI,R4    CTID                  IF IT IS THE CONTROL                    
         BE       EXIT                  TASK, ASSUME IT IS DUE                  
*                                       TO PRIM INIT CODE                       
         BIFPRIM  TMTRM2            PRIMARY TASKS, EXIT                         
         BIFFGD   TTFX              FOREFROUND GO TO TTFINAL                    
         CI,R9    LMIA                                                          
         BANZ     ABORT                 TRY TO SET ABORT ADDR                   
         B        EXIT                  OTHERWISE  GO TO EXIT                   
TMTRM2   LD,R0    STIRTSB,R4            ARE WE IN A CAL PROC?                   
         BEZ      RBMEXIT               NO, EXIT DIRECTLY                       
         B        EXIT                  YES, EXIT WITH CAL CLEANUP              
TTFX     LI,R0    TTFINAL           SET UP PSD TO ENTER TTFINAL                 
*                                   IN CORRECT MAP MOD                          
         LI,R1    0                                                             
         BIFREAL  TTFY                                                          
         OR,R0    XBIT9                                                         
TTFY     LPSD,0   R0                GO TO TTFINAL                               
         PAGE                                                                   
*******************                                                             
*    TMTRMJ       *    SUBROUTINE TO TERMINATE ALL LOAD MODULES IN              
*******************    IN A JOB.                                                
*                                                                               
* ENTRY  R6       JOB ID                                                        
*        R9       LMIT+(OPTIONALLY)LMIA                                         
*        BAL,R8   TMTRMJ                                                        
* EXIT   +1       SUBR WILL ONLY RETURN IF THE JOB TERMINATED                   
*                 WAS NOT CURRENTLY IN EXECUTION.                               
*                 IF SO, TMTRMJ WILL 'EXIT' IF PRIMARY, GO TO                   
*                 TASK TERMINATION IF SECONDARY.                                
*                 TERMINATIONS OF CPR OR BKG JOB                                
*                 DO NOT CAUSE JOB TERMINATION.  THEY                           
*                 TERMINATE THE CALLING TASK IF IT IS IN                        
*                 THE JOB BEING TERMINATED.                                     
* REGISTERS USED: R0-R2,R4-R5,R8-R11                                            
*          SAVED: R3,R6-R7,R12-R15                                              
* STACK WORDS:    NONE                                                          
* SUBROUTINES:    TMLM                                                          
*                                                                               
TMTRMJ   LW,R10   R8                SAVE THE EXIT                               
         AND,R10  M24                   MAKE SURE BYTE0=0                       
         CI,R6    BKGJID                                                        
         BLE      TMJTM5            B IF RBM OR BKG (TERM CALLER ONLY)          
         DO       #TJE                                                          
         BAL,R8   TTLN              IS IT TERMINAL JOB                          
         B        TMJTM2            NO                                          
         LB,R0    DCTTJE,R2         GET FLAGS                                   
         CI,R0    TJETEX+TJEACT     IS IT ACTIVE OR ABOUT TO BE                 
         BAZ      TMJTM2            NO                                          
         OR,R0    XTJEOFF           SET OFF                                     
         STB,R0   DCTTJE,R2         STORE IT                                    
         LI,R4    TEXTID            GET TEX TASK ID                             
         LW,R1    XSTISTRT          GET START BIT                               
         STS,R1   STIPRIO,R4                                                    
         PUSH     R9                                                            
         BAL,R8   TMTRIG            GET TEX GOING                               
         PULL     R9                                                            
         FIN      #TJE                                                          
TMJTM2   LW,R1    SJI1,R6               TASKS FROM BEING INITIATED              
         DISABLE                                                                
         LW,R0    0,R1                  IN THE JOB.                             
         OR,R0    XJCBJTM                                                       
         STW,R0   0,R1                                                          
         MTW,1    JOB99                 UP JOB RE-ENT COUNT                     
         ENABLE                                                                 
         LB,R5    LMI#              SCAN THE LMI AND TERMINATE ALL              
*                                       LOAD MODULES WITH =JID                  
TMJTM3   LH,R0    LMISTAT,R5        USED?                                       
         BEZ      TMJTM4                NO                                      
         LW,R0    LMIJID,R5         IN THE ABORTING JOB?                        
         CB,R6    R0                                                            
         BNE      TMJTM4                NO                                      
         MTB,1    R10                   SET TASK FOUND FLAG                     
         BAL,R8   TMLMNBKG          TERMINATE THIS LOAD MODULE                  
TMJTM4   BDR,R5   TMJTM3            LOOP THROUGH LMI                            
TMJTM5   LB,R4    TCBPOINT          TEST FOR THE CALLERS JOB                    
         CB,R6    STIJID,R4             JUST TERMINATED.                        
         BNE      TMJTM7                NO, EXIT                                
         BIFPRIM  TMJTM6            PRIMARY TASKS, EXIT                         
         BIFFGD   TTFX              SEC, FOREGROUND, GOTO TT                    
         CI,R9    LMIA              BACKGOURND ABORTING                         
         BANZ     ABORT                                                         
         B        EXIT                  EXIT                                    
TMJTM6   LD,R0    STIRTSB,R4        ARE WE IN A CAL PROCESSOR?                  
         BEZ      RBMEXIT               NO, EXIT DIRECTLY                       
         B        EXIT                  YES, EXIT WITH CAL CLEANUP              
TMJTM7   MTB,0    R10               WERE ANY TASKS FOUND?                       
         BNEZ     *R10                  YES, EXIT                               
         CI,R6    BKGJID                NO JMTERM IF RBM OR BKG                 
         BLE      *R10                                                          
         PUSH     14,R2                 SAVE REGS                               
         BAL,R8   JMTERM                NO, CALL JOB CLEANUP                    
         PULL     14,R2                 RESTORE REGS                            
         B        *R10                  AND RETURN TO CALLER                    
         TITLE    '**  TERM - TASK MGMT SUB TO TERM A LOAD MOD **'              
********************                                                            
*    TMLM         *                 SUBROUTINE TO TERMINATE/ABORT               
*******************                     ONE LOAD MODLUEE                        
*                                                                               
* ENTRY  R5       LMID                                                          
*        R9       TERM AND ABORT BITS FOR LM                                    
*        BAL,R8   TMLM                                                          
* EXIT:  +1       TASK SCHED FOR TERMINATION                                    
* REGISTERS USED: R0,R1,R4,R11                                                  
*           SAVED: R2,R3,R5-R6,R8-R10,R12-R15                                   
* STACK WORDS: NONE                                                             
* SUBROUTINES: NONE                                                             
*                                                                               
TMLMNBKG LH,R0    LMISTAT,R5        TERMINATE ALL BUT BACKGROUND                
         CI,R0    LMIBKG                TASKS                                   
         BANZ     *R8                   BKL1 WILL BAL TO TMLM WHEN              
*                                       IT IS GOOD AND READY                    
TMLM     DISABLE                                                                
         DO       #ROLL                                                         
         CI,R5    MMLMID            IS THE LOAD MODULE A SYSTEM                 
         ELSE     #ROLL                                                         
         CI,R5    CTLMID                                                        
         FIN      #ROLL                                                         
         BLE      TMLMCRSH              ONE?                                    
         LH,R0    LMISTAT,R5        HAS THE TASK ALREADY BEEN                   
         CI,R0    LMIPPL+LMISPL                                                 
         BANZ     TMLMCRSH                                                      
         CI,R0    LMIT                  TERMINATED?                             
         BANZ     TMLM1                 YES, EXIT NO ACTION                     
         OR,R0    R9                    ADD NEW TERMINATION (AND                
         STH,R0   LMISTAT,R5            ABORT) BIT                              
         MTW,1    RUN99             INCREMENT LMI ACTIVITY COUNT                
         ENABLE                                                                 
         CI,R0    LMISEC            SECONDARY?                                  
         BAZ      TMLMPRM               NO-PRIMARY                              
         LW,R0    LMISDT,R5         SET R4=TASK ID                              
         LB,R4    R0                                                            
         LW,R7    STITCB,R4             R7=STCB ADDRESS                         
         OR,R7    XSTIT                 ALSO SET 'T' BIT                        
         STW,R7   STITCB,R4             IN STI                                  
         CB,R4    TCBPOINT          IS THIS THE TASK IN                         
         BE       *R8                   CONTROL- LEAVE FOR NOW                  
         LI,R11   TTFINAL           SET TASK TO GO TO TTFINAL                   
         LW,R0    LMIPCB,R5         SET MAPPED IF TASK MAPPED                   
         CW,R0    XSTCBMAP                                                      
         BAZ      TMLM2                 NO                                      
         OR,R11   XBIT9                 YES, SET PSD MAPPED                     
TMLM2    LI,R1    STIALT                                                        
         AI,R1    STISTRT           SET STRT                                    
         DISABLE                                                                
         STS,R1   STIPRIO,R4            IN THE STI.  REMOVES STOPS              
         DO       #ROLL                                                         
         LB,R0    STISTAT,R4            REMOVE                                  
         AND,R0   X20               REMOVE EVERYTHING BUT STOPPED               
         STB,R0   STISTAT,R4                                                    
         LW,R0    STITCB,R4                                                     
         AND,R0   XSTINLW           REMOVE LONG WAIT                            
         STW,R0   STITCB,R4                                                     
         FIN      #ROLL                                                         
         STW,R11  STCBAPSD*2,R7         STORE IN ALT PSD                        
         LI,R0    0                                                             
         STW,R0   STCBAPSD*2+1,R7                                               
         STB,R0   STICOUNT,R4       REMOVE ANY ECB WAITS                        
         STH,R0   STIOVID,R4                                                    
         ENABLE                                                                 
TMLM4    LI,R1    1                 TRIGGER THE DISPATCHER                      
         STS,R1   TDTRIG                                                        
         DO       #MULTDSP                                                      
         LW,R1    STCBRDL,R7                                                    
         LH,R7    R1                                                            
         ELSE     #MULTDSP                                                      
         LW,R1    K:CTGL                                                        
         LW,R7    K:CTWD                                                        
         FIN      #MULTDSP                                                      
         WD,R1    0,R7                                                          
         B        *R8                   EXIT                                    
TMLM1    CI,R0    LMIA              ABORT BEFORE                                
         BANZ     TMLMX                 YES, EXIT                               
         CI,R9    LMIA              ABORT NOW?                                  
         BAZ      TMLMX                 NO, EXIT                                
         OR,R0    R9                ABORT LEVEL BEING RAISED                    
         STH,R0   LMISTAT,R5            SET THE ABORT BIT                       
         ENABLE                                                                 
         CI,R0    LMISEC            SECONDARY?                                  
         BANZ     *R8               LEAVE IT TO TASK TERMINATION                
TMLMPRM  LB,R4    STI#              YES, SET ALL INTERRUPT                      
         LW,R0    MTWCMMD               SET R0=MTW COMMAND                      
TMLMP1   CB,R5    STILMID,R4            LOCATIONS USED BY                       
         BNE      TMLMP2                THE LOAD MODULE TO MTW,0 0              
         MTW,0    STITCB,R4         IS THE ENTRY IN USE                         
         BEZ      TMLMP2            NO, BRANCH                                  
         CI,R4    CTID              IS IT THE CONTROL TASK                      
         BE       TMLMP2            YES                                         
         LW,R1    STIPRIO,R4            USE THE PRIORITY TO                     
         LB,R1    R1                    STORE THE MTW                           
         STW,R0   X'4F',R1                                                      
TMLMP2   BDR,R4   TMLMP1            CONTINUE SEARCH                             
TMLMP5   MTB,1    K:FGLD            INDICATE FOREGROUND LOADER                  
         LI,R7    CTID              SET START BIT                               
         LI,R1    STISTRT                                                       
         STS,R1   STIPRIO,R7                                                    
         LW,R1    K:CTST            FGLD SET RUNNING                            
         CW,R1    Y4                                                            
         BAZ      TMLMP7                NO                                      
         LW,R1    Y0008                  YES                                    
         STS,R1   K:CTST                SET RE-CYCLE                            
TMLMP7   LW,R7    STITCB,R7         SET R7=CT STCB                              
         B        TMLM4             GO TRIGGER IT                               
TMLMX    ENABLE                                                                 
         B        *R8               EXIT                                        
TMLMCRSH CRASH    'TERM ERROR'                                                  
         TITLE    '** TERM - ABORT CAL PROCESSING **'                           
*******************                                                             
*     ABORT       *                                                             
*******************                                                             
ABORT    BIFFGD   TMABORT           IF FGD PRIM OR SEC, ABORT                   
         LB,R1    TCBPOINT          FIND THE TOP OF STACK                       
         LD,R1    STIRTSB,R1                                                    
         BEZ      ABORT5                                                        
         LW,R1    -CAL1PUSH+16,R1       AND MOVE ADDRESS TO                     
         MTW,0    K:ABTLOC                                                      
         BLZ      ABORT5                                                        
         AND,R1   M17                   K:ABTLOC                                
         STW,R1   K:ABTLOC              FOR PRINTOUT                            
ABORT5   RES      0                                                             
         LW,R3    Y08                   BIT                                     
         B        EXITABRT                                                      
         OLAYEND                                                                
         END                                                                    
