         TITLE    'ENQ OVERLAY'                                                 
         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*        OVERLAY CONTAINS ALL NON-RESIDENT ENQ MODULES                          
*                                                                               
         DEF      A:ENQ                                                         
         DO       #ECB                                                          
         DEF      DEQ,ENQCHK,ENQABNM                                            
         DEF      TMENQ,TMDEQ                                                   
         DEF      TMDELAET                                                      
         DEF      ENQX1,ENQX2,ENQX4,ENQX8                                       
OLAYFLAG EQU      'ENQ'                                                         
         SYSTEM   CPRMON                                                        
         TITLE    'OVERLAY EXITS AND REFS'                                      
ENQX1    B        TMX1                                                          
ENQX2    B        TMX2                                                          
ENQX4    B        TMX4                                                          
ENQXPR8  PULL     R8                                                            
ENQX8P1  AI,R8    1                                                             
ENQX8    B        *R8                                                           
ENQXE8   PULL     R8                EXIT PULLING R8, NOT +1                     
         B        ENQX8                                                         
         TITLE    'ENQ CAL PROCESSOR'                                           
*                                                                               
*        ENQ      CAL1 PROCESSOR                                                
*                                                                               
ENQ      LI,R15   FPTENAME          FETCH THE ENQ NAME FROM                     
         BAL,R5   GETFPTNS              A STANDARD FPT                          
         B        ENQER1                ERROR, NO NAME                          
         LW,R10   R15                   R10-R11=RESOURCE NAME                   
         LI,R15   FPTENAME+1                                                    
         BAL,R5   GETFPTN                                                       
         LW,R15   BLANKS                                                        
         LW,R11   R15                                                           
*                                                                               
         LW,R0    1,R3              SET R9=INDICATORS                           
         LI,R9    0                     BIT 0 = 0, TASK LEVEL AET               
         CI,R0    FPTF1                 BIT 1 = 0, JOB LEVEL ENQ                
         BAZ      ENQ1                          1, SYSTEM LEVEL ENQ             
         OR,R9    XAETSEDT                                                      
ENQ1     CI,R0    FPTF2                 BIT 2 = 0, NORMAL                       
         BAZ      ENQ2                          1, IMMEDIATE                    
         OR,R9    XAETIMMD                                                      
ENQ2     CI,R0    FPTF4                 BIT 3 = 0, EXCLUSIVE                    
         BAZ      ENQ3                          1, SHARED                       
         OR,R9    XAETSHAR                                                      
ENQ3     LI,R15   0                 SET TYC=0 AND                               
         LI,R7    0                     R7=0 (OP LB TBL INDEX)                  
         BAL,R8   TMENQ                 CALL THE ENQ SUBROUTINE                 
*                                                                               
         B        ENQX1                 ERROR,  RETURN                          
*                                                                               
         CI,R15   TYCBUSY               NOT IMMEDIATE BUSY?                     
         BE       ENQX4                 YES                                     
         B        ENQX2                 NORMAL EXIT, SET NORMAL TYC             
*                                                                               
ENQER1   LI,R15   TYC76             SET RESOURCE NAME ERROR                     
         B        ENQX1                                                         
         TITLE    'DEQ CAL PROCESSOR'                                           
*                                                                               
*        DEQ      CAL1 PROCESSOR                                                
*                                                                               
DEQ      LI,R15   FPTENAME          FETCH THE RESOURCE NAME                     
         BAL,R5   GETFPTNS                                                      
         B        ENQER1                ILLEGAL RESOURCE NAME                   
         LW,R10   R15                                                           
         LI,R15   FPTENAME+1                                                    
         BAL,R5   GETFPTN                                                       
         LW,R15   BLANKS                                                        
         LW,R11   R15                   R10-R11=ITEM NAME                       
*                                                                               
         LI,R9    0                 SET R9 TO TASK LEVEL AET                    
         LW,R0    1,R3              GET FPT WORD 1                              
         CI,R0    FPTF1             IS THIS A SYSTEM LEVEL DEQ                  
         BAZ      %+2               NO, JOB LEVEL CONTROLLED ITEM               
         OR,R9    XAETSEDT          YES, SYSTEM LEVEL CONTROLLED ITEM           
         BAL,R8   TMDEQ                 CALL DEQUEUING SUBR                     
         B        ENQX1                 ERROR EXIT                              
         B        ENQX1                 NORMAL EXIT                             
         TITLE    'ENQ MGMT  SUBR TO DO AN ENQ'                                 
*******************                                                             
*    TMENQ        *                 ENQUEUE SUBROUTINE                          
*******************                                                             
*                                                                               
*        R3       FPT ADDRESS                                                   
*        R4       TASK ID                                                       
*        R7       OP LABEL TABLE INDEX (STDLB)                                  
*        R9       INDICATORS AS FOLLOWS:                                        
*                     BIT 0 - AET LEVEL (0=TASK LEVEL,1=JOB LEVEL)              
*                     BIT 1 - EDT LEVEL (0=JOB LEVEL,1=SYSTEM LEVEL)            
*                     BIT 2 - BUILD ECB IF NOT AVAILABLE (=0)                   
*                     BIT 3 - SHARED (=1) VS EXCLUSIVE (=0)                     
*                     BIT 4-7 USER DEPENDENT (SAVED)                            
*        R10-R11  ENQ ITEM NAME(R10=DCT INDEX,R11=0 STDLB)                      
*        BAL,R8   TMENQ                                                         
* EXIT   +1       RESOURCE NOT AVAILABLE, ECB COULD NOT BE BUILT                
*                 R15=ERROR TYC                                                 
*        +2       REQUEST SATISFIED,                                            
*                 R15=00 IF REQUEST IS QUEUED WITHOUT WAIT                      
*                 R15=01 IF REQUEST IS SATISFIED & CHECKED                      
* REGISTERS USED: R0-R2,R5-R8,R15                                               
*          SAVED: R3-R4,R9-R14                                                  
* STACK WORDS:    1                                                             
* SUBROUTINES:    EMBLDECB,TMBLDAET,TMAEECB,ENQCHK,TMENQGO,TMRPEND,             
*                 TMDELAET                                                      
*                                                                               
TMENQ    PUSH     R8                SAVE THE EXIT                               
         LI,R1    1                     ADD INDEX TO R9                         
         STB,R7   R9,R1                 R9=INDICATORS, OPLB INDEX               
         LB,R5    STILMID,R4            R5=LMID                                 
         LB,R6    STIJID,R4                                                     
         LW,R6    SJI1,R6               R6=JCB ADDRESS                          
*                                                                               
         BAL,R8   TMBLDAET          BUILD AN AET,EDT IF REQ'D                   
         B        TMENQ5                ERROR EXIT                              
*                                       R1=AET ADDRESS                          
*                                       R7=EDT ADDRESS                          
         BIFIMMED TMENQ1            IMMEDIATE ENQ?                              
         BAL,R8   EMBLDECB          BUILD AN ECB                                
         B        TMENQ4                ERROR EXIT                              
*                                       R2=ECB ADDRESS                          
         AND,R1   M24                   STORE THE AET ADDR IN                   
         STW,R1   ECBDATA,R2            DATA WORD, LGTH=0                       
         LH,R0    R9                    CLASS =  FLAGS                          
         LI,R1    ECBCLASS              STORE THE CLASS                         
         STH,R0   *R2,R1                INTO THE ECB                            
         LW,R1    XECBCHK                                                       
         STS,R1   ECBFPT,R2         SET THE CHK BIT                             
         LB,R0    *R3               SET THE ECB TYPE AS F(FPT)                  
         AND,R0   X7F               MASK                                        
         CI,R0    X'62'                 STDLB                                   
         BNE      %+3                   NO, USE ENQ                             
         LI,R0    ECBTSTLB              YES, SET STDLB TYPE                     
         B        %+2                                                           
         LI,R0    ECBTENQ               SET THE ECB TYPE TO ENQ                 
*                                                                               
         DISABLE                                                                
         LI,R1    KFFFF                                                         
         STS,R0   ECBCTL,R2         STORE ECB TYPE                              
         LW,R1    ECBDATA,R2            RESTORE R1=AET                          
         AND,R2   M24                   STORE THE ECB ID INTO                   
         AWM,R2   AETECB,R1             THE AET SAVING JOB ID                   
         ENABLE                                                                 
*                                                                               
         BAL,R8   TMAEECB               LINK TO THE EDT                         
*                                                                               
         BAL,R8   ENQCHK            CHECK THE SERVICE                           
         NOP                            BUSY EXIT                               
*                                       R7=OP LABEL TABLE INDEX                 
         CI,R15   TYCNORM           IS THE TYC GOOD OR ERROR                    
         BLE      ENQXPR8               GOOD (OR BUSY)                          
         B        ENQXE8                ERROR                                   
         PAGE                                                                   
*                                                                               
*        IMMEDIATE ENQ LOGIC                                                    
*                                                                               
TMENQ1   DISABLE                    IMMEDIATE ENQ LOGIC                         
*                                                                               
         LW,R0    EDTECB,R7         IS THE EDT CURRENTLY                        
         MTB,0    R0                    ASSIGNED?                               
         BEZ      TMENQ2                NO                                      
         LW,R0    EDTEDT,R7             IS THE CURRENT ASSIGNMENT               
         CW,R0    XEDTSHAR              EXCLUSIVE                               
         BAZ      TMENQ3                YES, IMMED ONE CANNOT                   
*                                       BE GRANTED                              
         BIFEXCL  TMENQ3                IS REQUEST EXCL?                        
*                                       IF YES, IMMED CANNOT                    
*                                       BE GRANTED                              
TMENQ2   BAL,R8   TMENQGO           UPDATE INDICATORS AND COUNTS                
*                                       IN AET AND EDT                          
         BAL,R8   TMRPEND               REMOVE PENDING FLAG                     
         ENABLE                                                                 
         LI,R15   TYCNORM           SET TYC TO NORMAL                           
*                                       (NOT USED BY STDLB, DO                  
*                                       NOT BOTHER TO RESTORE R7)               
         B        ENQXPR8                                                       
*                                                                               
TMENQ3   LI,R15   TYC83             SET TYC=NOT AVAILABLE (IMMED)               
TMENQ4   BAL,R8   TMDELAET              DELETE THE AET ACQUIRED                 
*                                                                               
TMENQ5   LI,R1    1                 RESTORE R7 TO OP LBL TABLE                  
         LB,R7    R9,R1                 INDEX BEFORE EXITING                    
         B        ENQXE8            EXIT TO R8, WITH PULL                       
         TITLE    'ENQ  MGMT SUBR TO DO DEQ'                                    
*******************                                                             
*    TMDEQ        *    SUBR TO DEQ A RESOURCE                                   
*******************                                                             
*                                                                               
* ENTRY  R4       TASK ID                                                       
*        R9       INDICATORS (AET LEVEL ONLY)                                   
*        R10-R11  RESOURCE NAME                                                 
*        BAL,R8   TMDEQ                                                         
* EXIT   +1       ERROR, R15=ERROR CODE                                         
*        +2       NORMAL, R15=01                                                
*                                                                               
* REGISTERS USED: R0-R2,R5-R9,R15                                               
*          SAVED: R3-R4,R10-R14                                                 
* STACK WORDS:    1                                                             
* SUBROUTINES:    TMDELAET                                                      
*                                                                               
TMDEQ    PUSH     R8                SAVE EXIT                                   
         LI,R15   TYCNORM           SET TO NORMAL TYC                           
         LB,R5    STILMID,R4        SET R5=LMID                                 
         LB,R6    STIJID,R4             R6=JID                                  
         LW,R6    SJI1,R6               R6=JCB ADDRESS                          
         BIFJAET  TMDEQ1            JOB LEVEL AET?                              
         LW,R1    LMIAET,R5         FETCH THE TASK LEVEL AET                    
         B        TMDEQ2                ADDRESS AND LENGTH                      
TMDEQ1   LW,R1    JCBAET,R6         FETCH THE JOB LEVEL AET                     
TMDEQ2   BEZ      TMDEQ5                NONE, GIVE NOT FOUND                    
         DISABLE                                                                
TMDEQ3   LW,R7    AETEDT,R1             R7=EDT ADDRESS                          
         BEZ      TMDEQ4                IF ZERO, ENTRY NOT USED                 
         CW,R7    XAETPNDQ              SET PENDING OR IN DEQ?                  
         BANZ     TMDEQ4                YES, NOT LEGAL TO DEQ                   
*                                       WAITING ENQUEUES                        
*                                       OR DOUBLE DEQUEUES                      
         CW,R7    XAETENQ               WAS ENQ SUCESSFUL?                      
         BAZ      TMDEQ4                NO, IGNORE ENTRY                        
         CD,R10   *R7                   DOES THE EDT MATCH THE                  
         BNE      TMDEQ4                ITEM NEEDED?  NO                        
         OR,R7    XAETDEQ               SET THE DEQ BIT                         
         STW,R7   AETEDT,R1                                                     
         ENABLE                                                                 
         LW,R9    AETEDT,R1         SET R9=INDICATORS                           
         BAL,R8   TMDELAET          REMOVE THE ASSIGNMENT                       
         B        ENQXPR8           EXIT PULLING R8                             
*                                                                               
TMDEQ4   AI,R1    2                 ADVANCE TO NEXT AET                         
         MTB,-2   R1                    DONE?                                   
         BNEZ     TMDEQ3                NO                                      
         ENABLE                                                                 
TMDEQ5   LI,R15   TYC84                 SET TYC=ENQ NOT DONE                    
         B        ENQXE8            EXIT TO R8, WITH PULL                       
         TITLE    'ENQ CHECKING SUBROUTINE'                                     
*******************                                                             
*    ENQCHK       *    SUBR TO CHECK ENQ ECB'S                                  
*******************                                                             
*                                                                               
* ENTRY  R2       ENQ ECB ID (ALL ENTRY PER CHECK SPECS)                        
*        R3       CURRENT FPT                                                   
*        R4       TASK ID                                                       
*        R5       LMID                                                          
*        BAL,R8   ENQCHK                                                        
* EXIT   +1       BUSY                                                          
*        +2       COMPLETED, GOOD OR IN ERROR                                   
*        R7       OP LABEL TABLE INDEX                                          
*        R10-R11  ENQ ITEM NAME (DCT INDEX)                                     
*                                                                               
* REGISTERS USED: R0-R2,R6-R8,R15                                               
*          SAVED: R3-R5,R9-R14                                                  
* STACK WORDS:    2                                                             
* SUBROUTINES:    TMCWENQ,TMDELAET,TMRPEND,                                     
*                 EMDELECB,EMWAIT,EMSETR3,TMTYC15S,TMSETERR                     
*                                                                               
ENQCHK   PUSH     R8                SAVE EXIT                                   
         LB,R5    STILMID,R4            R5=LMID                                 
         LW,R1    ECBDATA,R2            R1=AET ADDRESS                          
         LW,R7    AETEDT,R1             R7=EDT ADDRESS                          
         LD,R10   *R7                   R10-R11=ITEM NAME                       
         LW,R9    ECBPC,R2              R9=FLAGS                                
         STH,R9   R9                                                            
         PUSH     R9                SAVE FLAGS, OPLB INDEX                      
         PUSH     R3                SAVE FPT ADDRESS                            
         LW,R0    ECBFPT,R2             HAS THE ENQ BEEN POSTED?                
         CW,R0    XECBBUSY                                                      
         BAZ      ENQCHK4               YES                                     
         LW,R0    STITCB,R4             IS THE TASK TERMING?                    
         CW,R0    XSTIT                                                         
         BANZ     ENQCHK6               YES, GO DELETE ENQ                      
         LB,R0    *R3                   IS IT DELFPT                            
         AND,R0   X7F                                                           
         CI,R0    X'47'                                                         
         BE       ENQCHK6               YES                                     
*                                                                               
         BAL,R8   TMCWENQ           CHECK WAITING ENQUEUES                      
         NOP                            +1 POSTED                               
         ENABLE                         +2 NOT POSTED                           
         LW,R0    ECBFPT,R2         IS THIS FPT POSTED                          
         CW,R0    XECBBUSY                                                      
         BAZ      ENQCHK4               YES                                     
         LB,R0    *R3               IS THE CHECK CALL FROM                      
         AND,R0   X7F                                                           
         CI,R0    X'41'                 WAITANY (41)                            
         BE       ENQCHK2               YES                                     
         CI,R0    X'42'                 TEST (42)                               
         BE       ENQCHK2               YES                                     
         CI,R0    X'4C'                 ENQ (4C)                                
         BE       ENQCHK1               YES                                     
         CI,R0    X'62'                 STDLB (62)                              
         BNE      ENQCHK6               NO                                      
ENQCHK1  LW,R0    1,R3              IS THE WAIT BIT ON?                         
         CI,R0    FPTF3                                                         
         BANZ     ENQCHK6               YES, GO TO WAIT                         
*                                                                               
ENQCHK2  LI,R15   TYCBUSY               SET TYC=BUSY                            
         DISABLE                                                                
         LW,R0    ECBFPT,R2         RESET CHK BIT IN ECB                        
         AND,R0   XECBNCHK                                                      
         STW,R0   ECBFPT,R2                                                     
         ENABLE                                                                 
*                                                                               
ENQCHK3  PULL     R3                                                            
         PULL     R9                RESTORE FLAGS, ETC.                         
         LI,R1    1                     R7=OP LBL TBL                           
         LB,R7    R9,R1                 INDEX                                   
         B        ENQXE8            EXIT TO R8, WITH PULL                       
*                                                                               
*                                   ECB CLEANUP PHASE                           
*                                                                               
ENQCHK4  LB,R0    *R3               IS THE SERVICE THE ORIGINAL                 
         AND,R0   X7F                                                           
         CI,R0    X'4C'                 SERVICE CALL WITHOUT                    
         BE       ENQCHK4A              WAIT?                                   
         CI,R0    X'62'                                                         
         BNE      ENQCHK4B              NO                                      
ENQCHK4A LW,R0    1,R3                  YES, TEST F3 BIT                        
         CI,R0    FPTF3                                                         
         BAZ      ENQCHK2               NO WAIT, LEAVE ECB, ETC.                
*                                       AS IS FOR FOLLOWING CHECK               
ENQCHK4B LW,R15   ECBCOMPL,R2       ECB POSTED, CLEANUP PHASE                   
         LB,R15   R15                   R15=TYC                                 
         BAL,R8   EMSETR3               SET R3=ORIG FPT                         
         LI,R0    0                     REMOVE  ECB ADDRESS                     
         STW,R0   AETECB,R1             FROM THE AET                            
         PUSH     R1                    SAVE THE AET ADDRESS                    
         BAL,R8   EMDELECB              DELETE THE ECB                          
         NOP                                                                    
         ENABLE                                                                 
         PULL     R1                    RESTORE AET ADDRESS                     
         LB,R4    TCBPOINT              R4=TASK ID                              
         BAL,R8   TMTYC15               NO, STORE TYC                           
         PULL     R3                    RESTORE THE FPT ADDR                    
         BAL,R8   TMSETERR              SET ERROR EXITS                         
         CI,R15   TYCNORM           GOOD ENQ?                                   
         BE       ENQCHK8               GOOD ENQ, RESET PENDING                 
         BAL,R8   TMDELAET              NO, DELETE IT                           
         B        ENQCHK9           EXIT TO R8+1 INCL PULL                      
*                                                                               
ENQCHK6  BAL,R8   EMWAIT            WAIT FOR THE ENQ TO BE SATISFIED.           
         B        ENQCHK3               CHECK BUSY EXIT                         
         B        ENQCHK4                                                       
*                                                                               
ENQCHK8  DISABLE                                                                
         BAL,R8   TMRPEND           RESET PENDING IN AET                        
         ENABLE                                                                 
ENQCHK9  LI,R1    1                 SET R7=OP LABEL TABLE                       
         PULL     R9                RESTORE FLAGS, ETC.                         
         LB,R7    R9,R1                 INDEX FOR STDLB                         
         B        ENQXPR8           EXIT TO R8+1 INCL PULL                      
         TITLE    'ENQ ABNORMAL CONDITION SUBROUTINE'                           
*******************                                                             
*    ENQABNM      *    ABNORMAL CONDITION SUBR FOR ENQ ECB'S                    
*******************                                                             
*                                                                               
* ENTRY  R2       ECB ID                                                        
*        R4       TASK ID                                                       
*        BAL,R8   ENQABNM                                                       
* EXIT   +1       ECB BUSY, WAIT FOR POST                                       
*        +2       ECB POSTED                                                    
*                                                                               
* REGISTERS USED:                                                               
*          SAVED:                                                               
* STACK WORDS:                                                                  
* SUBROUTINES:    EMPOST                                                        
*                                                                               
ENQABNM  RES      0                 DELETE ENQ ECBS                             
         DISABLE                                                                
         PUSH     R8                SAVE LINK                                   
         LW,R0    ECBFPT,R2         IS THE ECB POSTED?                          
         CW,R0    XECBBUSY                                                      
         BAZ      ENQAB1                EXIT                                    
         LI,R6    TYC69             POST WITH DELETE CODE                       
         PUSH     R2                SAVE R2 (CLOBBERED BY POST)                 
         BAL,R8   EMPOST                                                        
         B        ENQAB2                CONFLICT W/LOWER POST                   
         B        ENQAB3            EXIT TO R8+1 PULLED                         
*                                                                               
ENQAB1   ENABLE                                                                 
         DISABLE                                                                
         B        ENQXPR8               EXIT TO NOT BUSY                        
*                                                                               
ENQAB2   PULL     R2                RESTORE  ECB ID                             
         B        ENQXE8            TAKE +1 RETURN                              
*                                                                               
ENQAB3   PULL     R2                RESTORE ECB ID                              
         B        ENQXPR8           TAKE +2 RETURN                              
         TITLE    'ENQ  MGMT SUBR TO REMOVE PENDING AET'                        
*******************                                                             
*    TMRPEND      *    SUBR TO REMOVE PENDING INDICATOR FROM                    
*******************      AET AND DECR PENDING COUNT IN EDT                      
*                                                                               
* ENTRY  R1       AET ADDRESS                                                   
*        R7       EDT ADDRESS                                                   
*        ENTER DISABLED, EXITS DISABLED                                         
*        BAL,R8   TMRPEND                                                       
* EXIT   +1                                                                     
*                                                                               
* REGISTERS USED: R0                                                            
*          SAVED: R1-R15                                                        
* STACK WORDS:    0                                                             
* SUBROUTINES:    NONE                                                          
*                                                                               
TMRPEND  LW,R0    AETEDT,R1         RESET PENDING BIT                           
         AND,R0   XAETNPND                                                      
         STW,R0   AETEDT,R1                                                     
         LW,R0    EDTEDT,R7         DECR PENDING COUNT                          
         MTB,-1   R0                                                            
         STW,R0   EDTEDT,R7                                                     
         B        *R8               EXIT WITHIN OVERLAY                         
         TITLE    'ENQ  MGMT SUBR TO CREATE A NEW AET AND EDT'                  
*******************                                                             
*   TMBLDAET      *    SUBR TO CREATE AN AET AND LINK TO OR                     
*******************      CREATE AN EDT                                          
*                                                                               
* ENTRY  R5       LMID                                                          
*        R6       JCB ADDRESS                                                   
*        R9       INDICATORS                                                    
*        R10-R11  ENQ ITEM NAME                                                 
*        BAL,R8   TMBLDAET                                                      
* EXIT   +1       ERROR, R15=TYC                                                
*        +2       NORMAL, R1=AET ADDRESS, R7=EDT ADDRESS                        
*                                                                               
* REGISTERS USED: R0,R1,R7,R15 IF ERRORS                                        
*          SAVED: R2-R6,R8-R14,R15 IF GOOD                                      
* STACK WORDS:    4                                                             
* SUBROUTINES:    GETTEMP                                                       
*                                                                               
TMBLDAET PUSH     R8                SAVE EXIT                                   
         PUSH     2,R12             SAVE R12-R13                                
*                                                                               
*                                   CREATE AN AET ENTRY                         
*                                                                               
         LW,R0    R9                    R0=FLAG BYTE FOR AET                    
         AND,R0   YF                                                            
         OR,R0    XAETUSED              ADD USED BIT                            
         BIFJAET  TMBAE0                JOB LEVEL AET?                          
         LW,R1    LMIAET,R5             NO, TASK LEVEL AET                      
         B        TMBAE1                                                        
TMBAE0   LW,R1    JCBAET,R6             JOB LEVEL AET                           
TMBAE1   BEZ      TMBAEY                SPACE ERROR, NO AET                     
*                                                                               
         DISABLE                                                                
TMBAE2   LW,R7    AETEDT,R1             IS THE NEXT AET FREE?                   
         BEZ      TMBAE3                NO                                      
         AI,R1    2                     ADVANCE TO NEXT AET                     
         MTB,-2   R1                     DONE?                                  
         BNEZ     TMBAE2                NO, CONTINUE                            
         B        TMBAEY                ERROR, NO SPACE IN AET                  
*                                                                               
TMBAE3   STW,R0   AETEDT,R1         STORE THE USED BIT                          
         LW,R7    LMIJID,R5             SET JOB ID TOO                          
         AND,R7   YFF                                                           
         STW,R7   AETECB,R1                                                     
         ENABLE                         OF ZERO                                 
*                                                                               
*                                   LOCATE EXISTING EDT                         
*                                                                               
         LI,R13   0                 SET INDICATOR, NO TSPACE YET                
TMBAEC   LB,R0    R9                    R0=FLAG BYTE                            
         AND,R0   XF0                                                           
         BIFJEDT  TMBAE4            JOB LEVEL EDT?                              
*                                                                               
         DISABLE                                                                
         LW,R7    S:EDT             SET R7=SYSTEM LEVEL                         
         B        TMBAE5                CHAIN HEAD                              
TMBAE4   DISABLE                        R7=JOB CHAIN HEAD                       
         LW,R7    JCBEDTH,R6                                                    
TMBAE5   AND,R7   M24               END OF CHAIN?                               
         BEZ      TMBAE7                YES                                     
         CD,R10   *R7                   IS IT THE ONE NAMED?                    
         BE       TMBAE6                YES                                     
         LW,R7    EDTEDT,R7             NO, CHAIN TO NEXT                       
         B        TMBAE5                AND CONTINUE                            
TMBAE6   STB,R0   R7                    SAVE THE FLAG BYTE                      
         LW,R0    EDTEDT,R7             INCREMENT THE 'PENDING'                 
         MTB,1    R0                    USET COUNT IN EDT IF                    
         CW,R0    XEDTPEND              POSSIBLE, =0, FULL                      
         BAZ      TMBAEX                EXIT 'LACK OF SPACE'                    
         STW,R0   EDTEDT,R7             SAVE IT IF NOT ROLLED.                  
         OR,R7    XAETUSPN              SET PENDING & USED BITS                 
         STW,R7   AETEDT,R1             STORE EDT ADDRESS                       
         B        TMBAE10           EXIT                                        
*                                                                               
*                                   CREATE A NEW EDT                            
*                                                                               
TMBAE7   LW,R7    R13               TSPACE ACQUIRED ALREADY?                    
         BNEZ     TMBAED                YES, DE-LINK & CREATE EDT               
         LW,R12   EDT99                 R12=EDT RE-ENT COUNT                    
         ENABLE                                                                 
*                                                                               
         LI,R7    EDTSIZE               GO GET EDT SPACE                        
         PUSH     3,R9                  SAVE INDICATORS, NAME                   
         BAL,R8   GETTEMP               GET AN EDT                              
         B        TMBAEW                ERROR, NO SPACE                         
         PULL     3,R9                  RESTORE INDIC,NAME                      
         CW,R12   EDT99             RE-ENTERED                                  
         BNE      TMBAEA                YES, RESEARCH                           
TMBAEB   STD,R10  *R7                   STORE THE ITEM NAME                     
         MTW,1    EDT99             INCREMENT EDT RE-ENT COUNT                  
         LB,R0    R9                    SET PENDING COUNT=1 IN EDT              
         AND,R0   XF0                   AND PENDING BIT IN AET=1                
         OR,R0    X1                    BITS 0-3=INDICATORS                     
         STB,R0   R7                    AET ALSO NEEDS 'USED'                   
         OR,R7    XAETUSED                                                      
         STW,R7   AETEDT,R1             AET NOW LINKED TO EDT                   
         STB,R0   R0                    SET ZEROTH BYTE OF R0                   
         AND,R0   YFF                   TO FLAG BYTE FOR EDT                    
         AND,R7   M24                   ISOLATE EDT ADDRESS                     
         BIFSEDT  TMBAE8            SYSTEM LEVEL EDT?                           
         AW,R0    JCBEDTH,R6            JOB LEVEL CHAIN HEAD                    
         STW,R7   JCBEDTH,R6            NEW EDT=NEW CHAIN HEAD                  
         B        TMBAE9                                                        
TMBAE8   AW,R0    S:EDT                 SYSTEM LEVEL CHAIN HEAD                 
         STW,R7   S:EDT                 NEW EDT=NEW CHAIN HEAD                  
TMBAE9   STW,R0   EDTEDT,R7             IN THE NEW EDT                          
         LI,R0    0                                                             
         STW,R0   EDTECB,R7             ZERO THE ECB,COUNT                      
TMBAE10  ENABLE                                                                 
*                                                                               
         PULL     2,R12                 RESTORE R12-R13                         
         PULL     R8                EXIT TO R8+1                                
         AI,R8    1                                                             
         B        *R8                                                           
*                                                                               
TMBAEA   LW,R13   R7                SAVE TEMP SPACE ADDR                        
         XW,R7    STISPCE,R4            LINK TO TASK                            
         STW,R7   *R13                  LINK NEXT AREA TO THIS                  
         ENABLE                                                                 
         B        TMBAEC                RE-SEARCH EDT'S                         
*                                                                               
TMBAED   LW,R13   0,R7              DE-LINK TSPACE FR TASK                      
         STW,R13  STISPCE,R4                                                    
         B        TMBAEB                GO MAKE THE EDT                         
*                                                                               
TMBAEW   PULL     3,R9                  RESTORE REGISTERS                       
TMBAEX   LI,R0    0                 FREE THE AET                                
         STW,R0   AETEDT,R1                                                     
TMBAEY   ENABLE                                                                 
         LI,R15   TYC66                 R15=TYC, LACK OF SPACE                  
         PULL     2,R12             RESTORE R12-R13                             
         PULL     R8                EXIT TO R8                                  
         B        *R8                                                           
         TITLE    'ENQ  MGMT SUBR TO FREE AN AET/EDT'                           
*******************                                                             
*    TMDELAET     *    SUBR TO FREE AN AET AND THE EDT IF IDLE                  
*******************                                                             
*                                                                               
* ENTRY  R1       AET ADDRESS                                                   
*        R6       JCB ADDRESS                                                   
*        R7       EDT ADDRESS                                                   
*        BAL,R8   TMDELAET                                                      
* EXIT   +1                                                                     
*                                                                               
* REGISTERS USED: R0,R7,R8,R15 IF ERRORS                                        
*          SAVED: R1-R6,R9-R14,R15 IF GOOD                                      
* STACK WORDS:    16                                                            
* SUBROUTINES:    TMCWENQ,TMRPEND,RELTEMP                                       
*                                                                               
TMDELAET PUSH     5,R8              SAVE THE REGS AND EXIT                      
*                                                                               
         LW,R0    AETEDT,R1         IS THE AET 'PENDING'                        
         CW,R0    XAETPEND                                                      
         BAZ      TMDAE1                NO                                      
         DISABLE                                                                
         BAL,R8   TMRPEND               REMOVE PENDING                          
         ENABLE                                                                 
*                                                                               
*                                                                               
*        ENQ: CAL ERRORS IN DEQ                                                 
*                                                                               
TMDAE1   RES      0                                                             
         DISABLE                                                                
         LW,R0    AETEDT,R1         WAS ENQ ACTIVE?                             
         CW,R0    XAETENQ           ?                                           
         BAZ      TMDAE3                NO, FREE AET                            
         EOR,R0   XAETENQ           RESET ENQ BIT IN AET                        
         STW,R0   AETEDT,R1                                                     
         LW,R0    EDTECB,R7             DECREMENT USE COUNT                     
         CW,R0    XEDTUSE               ZERO ALREADY?                           
         BAZ      TMDAE2                YES                                     
         MTB,-1   R0                    NO DECR USE COUNT                       
         STW,R0   EDTECB,R7                                                     
         BNEZ     TMDAE3                NON-ZERO, DELETE AET                    
TMDAE2   LW,R0    EDTEDT,R7             USE IS ZERO, ?                          
         AND,R0   XEDTNSHR              RESET SHARED BIT                        
         STW,R0   EDTEDT,R7                                                     
TMDAE3   RES      0                                                             
*                                                                               
         LI,R0    0                                                             
         STW,R0   AETEDT,R1                                                     
         STW,R0   AETECB,R1                                                     
*                                                                               
         LW,R0    EDTECB,R7         IS THE EDT ASSIGNED TO ANYONE?              
         MTB,0    R0                    IF USE COUNT NON 0,                     
         BNEZ     TMDAEX                EXIT                                    
         BAL,R8   TMCWENQ           USE COUNT=0, CHECK WAITING ENQS             
         B        TMDAEX                +1 SOME ECB POSTED                      
*                                       +2 NO POSTING, DISBLED                  
         AND,R7   M17               CHECK FOR EDT DELETION                      
         LW,R0    EDTECB,R7             IS THE COUNT NON-ZERO?                  
         MTB,0    R0                                                            
         BNEZ     TMDAEX                NO EXIT                                 
         LW,R0    EDTEDT,R7             IS PENDING ZERO?                        
         CW,R0    XEDTPEND                                                      
         BANZ     TMDAEX                NO EXIT                                 
         PUSH     3,R3              SAVE SOME WORKING REGISTERS                 
         CW,R0    XEDTJAET              DEVICE ASSIGNMENT EDT?                  
         BAZ      TMDEA4A               NO                                      
         LW,R4    EDTNAME,R7            YES, FIRST WORD OF NAME                 
         LI,R0    -1                    IS DEVICE INDEX, SET                    
         STB,R0   DCTJID,R4             JOB ID=-1, FREE NON-                    
*                                       SHARED DEVICE                           
TMDEA4A  LI,R3    0                 SET 'PREVIOUS EDT' ADDR=0                   
         LI,R5    K1FFFF            MASK FOR SELECTIVE COMPARE                  
         AND,R7   M24                                                           
         BIFSEDT  TMDEA5            SYSTEM LEVEL EDT?                           
         LW,R4    JCBEDTH,R6            R4=JOB CHAIN HEAD                       
         B        TMDEA6                                                        
TMDEA5   LW,R4    S:EDT                 R4=SYSTEM CHAIN HEAD                    
TMDEA6   AND,R4   M24                   DONE?                                   
         BEZ      TMDEAB                SYSTEM ERROR                            
         CS,R4    R7                    THE ONE TO BE REMOVED?                  
         BE       TMDEA7                YES                                     
         LW,R3    R4                    NO, SET R3=PREVIOUS MEMBER              
         LW,R4    EDTEDT,R4             SET R4=NEXT EDT AND CONT                
         B        TMDEA6                SEARCH                                  
TMDEA7   LW,R0    EDTEDT,R7             R0=NEXT EDT IN CHAIN                    
         CI,R3    0                     REMOVING CHAIN HEAD?                    
         BE       TMDEA8                YES                                     
         LW,R4    EDTEDT,R3             R4=PREVIOUS EDT                         
         LB,R4    R4                    FLAGS, COMBINE WITH NEXT                
         STB,R4   R0                    EDT ADDR  AND STORE INTO                
         STW,R0   EDTEDT,R3             PREV EDT FLINK.                         
         B        TMDEAA                EXIT                                    
TMDEA8   AND,R0   M24                   ISOLATE ADDR OF NEXT EDT                
         BIFSEDT  TMDEA9            SYSTEM LEVEL EDT?                           
         STW,R0   JCBEDTH,R6            ADDRESS AND STORE                       
         B        TMDEAA                EXIT                                    
TMDEA9   STW,R0   S:EDT                 STORE NEW SYSTEM HEAD                   
TMDEAA   LI,R0    EDTSIZE               RELEASE THE EDT                         
         STB,R0   R7                                                            
         BAL,R8   RELTEMP                                                       
         B        TMDEAC                                                        
*                                                                               
TMDEAB   ENABLE                     SYSTEM ERROR? EDT NOT                       
         LI,R15   TYCSYSER              IN CHAIN                                
TMDEAC   PULL     3,R3              RESTORE R3-R5                               
TMDAEX   ENABLE                     EXIT                                        
         PULL     5,R8                                                          
         B        ENQX8                                                         
         TITLE    'ENQ  MGMT SUBR TO CHECK FOR WAITING ENQ'                     
*******************                                                             
*    TMCWENQ      *    SUBR TO CHECK FOR WAITING ENQ WHEN EDT                   
*******************        BECOMES FREE, POSTS THE HIGHEST ECB'S                
*                          AND UPDATES THE EDT, ETC.                            
* ENTRY  R6       JCB ADDRESS                                                   
*        R7       EDT ADDRESS                                                   
*        BAL,R8   TMCWENQ                                                       
* EXIT   +1                                                                     
*                                                                               
* REGISTERS USED: R0,R7,R8                                                      
*          SAVED: R1-R6,R9-R15                                                  
* STACK WORDS:    16                                                            
* SUBROUTINES:    EMPOST                                                        
*                                                                               
TMCWENQ  PUSH     R2                SAVE R2                                     
*                                                                               
TMCW1    DISABLE                                                                
         LW,R2    EDTECB,R7         GET THE ECB CHAIN HEAD                      
         AND,R2   M24                   END OF CHAIN?                           
         BEZ      TMCW9                 YES                                     
         LW,R0    EDTECB,R7         IS THE CURRENT COUNT=0                      
         MTB,0    R0                                                            
         BEZ      TMCW2                 YES, POST THE ECB                       
         LW,R0    EDTEDT,R7         IS THE CURRENT ASSIGNMENT                   
         CW,R0    XEDTSHAR              SHARED?                                 
         BAZ      TMCW9                 NO                                      
         LW,R0    ECBPC,R2              IS THE REQUEST SHARED                   
         STH,R0   R0                                                            
         CW,R0    XEDTSHAR                                                      
         BAZ      TMCW9                 NO                                      
TMCW2    MTB,1    R8                FLAG POSTING DONE EXIT                      
         PUSH     15,R1                 AND SAVE REGS                           
         LW,R6    TYCWNORM          POST THE FIRST WAITING ECB                  
         BAL,R8   EMPOST                                                        
         B        TMCW8                 HIGHER PRIO POST                        
TMCW8    PULL     15,R1             RESTORE REGISTERS                           
         PULL     R2                    RESTORE R2                              
         B        *R8                                                           
TMCW9    PULL     R2                RESTORE R2                                  
         MTB,0    R8                    POSTING DONE?                           
         BEZ      TMCW10                NO, EXIT DISABLED                       
         ENABLE                                                                 
         B        *R8                                                           
TMCW10   AI,R8    1                     EXIT +2, NO POST                        
         B        *R8                                                           
         TITLE    'ENQ  MGMT SUBR TO ADD AND ECB TO EDT CHAIN'                  
*******************                                                             
*    TMAEECB      *    SUBROUTINE TO ADD AN ECB TO AN EDT CHAIN                 
*******************                                                             
*                                                                               
* ENTRY  R2       ECB ADDRESS                                                   
*        R7       EDT ADDRESS                                                   
*        BAL,R8   TMAEECB                                                       
* EXIT   +1                                                                     
*                                                                               
* REGISTERS USED: NONE                                                          
*          SAVED: R0-R15                                                        
* STACK WORDS:    4                                                             
* SUBROUTINES:    NONE                                                          
*                                                                               
TMAEECB  PUSH     4,R3              SAVE REGISTERS FOR WORKING                  
         LW,R4    ECBPC,R2          SET UP PRIORITY FOR COMPARISONS             
         LW,R5    XECBPR                R4=PRIO, R5=MASK                        
         LI,R6    0                     R6=PREV CHAIN                           
         AND,R2   M24                   ISOLATE ECB ADDRESS                     
*                                                                               
         DISABLE                                                                
         LW,R3    EDTECB,R7         GET CHAIN HEAD FROM EDT                     
TMAEE1   AND,R3   M24                   END OF CHAIN?                           
         BEZ      TMAEE2                YES                                     
         CS,R4    ECBPC,R3              PRIORITY OF NEW ECB GTR                 
         BL       TMAEE2            B IF REQUEST PRIORITY GREATER               
         LW,R6    R3                    R6=PREV                                 
         LW,R3    ECBRECB,R3            R3=NEW NEXT                             
         B        TMAEE1                CONTINUE                                
TMAEE2   CI,R6    0                 IS THE INSERT AT CHAIN HEAD?                
         BE       TMAEE3                YES                                     
         STW,R2   ECBRECB,R6            NO, CHAIN PREV TO NEW                   
         B        TMAEE4                                                        
TMAEE3   LW,R6    EDTECB,R7         SAVE THE USE COUNT                          
         LB,R6    R6                                                            
         STB,R6   R2                                                            
         STW,R2   EDTECB,R7             CHAIN HEAD TO NEW ECB                   
TMAEE4   STW,R3   ECBRECB,R2            CHAIN NEW TO NEXT ECB                   
         ENABLE                                                                 
*                                                                               
         PULL     4,R3                  RESTORE REGS                            
         B        *R8               EXIT WITHIN OVERLAY                         
         OLAYEND                                                                
         ELSE     #ECB                                                          
ENQ      B        %                                                             
         FIN      #ECB                                                          
A:ENQ    EQU      ENQ                                                           
         END                                                                    
