         TITLE    '** TIO3 **'                                                  
         PCC      0                                                             
         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*                                                                               
*                                                                               
         DEF      A:TIO3                                                        
         DEF      TISEARCH                                                      
         DEF      TISDECHN                                                      
         DEF      TISCHN                                                        
         DEF      TISD                                                          
         DEF      TIO3DBUG                                                      
         DEF      TIRFT                                                         
TIO3     EQU      %                                                             
A:TIO3   EQU      TIO3                                                          
OLAYFLAG EQU      'TIO3'                                                        
         SYSTEM   CPRMON                                                        
         TITLE    '** TIO3 - TISEARCH - SEG. DES. SEARCH ROUTINE **'            
*                                                                               
*        TISEARCH SEARCH FOR SHARED SEGMENTS                                    
*                                                                               
*                 AT ENTRY:                                                     
*                             R0 =FIRST WORD OF OVLOAD TABLE ENTRY              
*                                   SEGMENT NUMBER BITS 16-31                   
*                                   SHARE CODE  BITS 4-5                        
*                                                    00 = TASK LEVEL            
*                                                    01 = JOB  LEVEL            
*                                                    10 = SYSTEM LEVEL          
*                             R8 =LINK                                          
*                                                                               
*                 AT EXIT:                                                      
*                             R9 =ADDRESS OF SEGMENT IF FOUND                   
*                                                                               
*                             RETURN IS TO LINK IF SEGMENT NOT FOUND            
*                             RETURN IS TO LINK+1 IF SEGMENT FOUND              
*                                                                               
*                            EXITS DISABLED IF NO ERROR                         
*                                                                               
*                 ALL REGISTERS SAVED                                           
         SPACE    2                                                             
TISEARCH EQU      %                                                             
         PUSH     2,R1              SAVE REGS                                   
         LW,R1    XOVSMSK           MASK FOR S FIELD                            
         AND,R1   R0                EXTRACT  FIELD                              
         BEZ      TISS0103          B IF TASK LEVEL NOT FOUND EXIT              
         LB,R1    R1                                                            
         DISABLE                                                                
         LW,R2    S:SD              SYSTEM SD CHAIN HEAD                        
         CI,R1    OVS01             CHECK FOR JOB LEVEL                         
         BAZ      TISS0101          B IF SYSTEM LEVEL                           
         LB,R2    TCBPOINT          GET TASK ID                                 
         LB,R2    STIJID,R2         GET JOB ID                                  
         LW,R2    SJI1,R2           GET JCB ADDRESS                             
         LW,R2    JCBSDT,R2         GET JOB LEVEL CHAIN HEAD                    
TISS0101 EQU      %                 R2 HAS APPROPRIATE CHAIN HEAD               
         CI,R2    0                 CHECK FOR EMPTY CHAIN                       
         BE       TISS0103          B IF EMPTY - TAKE NOT FOUND EXIT            
         LW,R1    M16               MASK                                        
TISS0102 EQU      %                                                             
         CS,R0    2,R2              COMPARE SEGMENT NUMBERS                     
         BE       TISS0104          B IF  FOUND                                 
         LW,R2    3,R2              PICK UP FLINK                               
         AND,R2   M24               MASK                                        
         BNEZ     TISS0102          B IF NOT END OF CHAIN                       
TISS0103 EQU      %                                                             
                  ENABLE                                                        
         PULL     2,R1                                                          
         B        TIO3EXIT          NOT FOUND EXIT                              
TISS0104 EQU      %                                                             
         AND,R2   M24               MASK OUT BYTE ZERO                          
         STW,R2   R9                SET UP SD ADDRESS                           
         AI,R8    1                 NORMAL FOUND EXIT                           
         B        TISS0103                                                      
         TITLE    '** TIO3 - TISD - BUILD A SEGMENT DESCRIPTOR **'              
*                                                                               
*        TISD     BUILD  A SEGMENT DESCRIPTOR                                   
*                                                                               
*                                                                               
*                 AT ENTRY:                                                     
*                             R8= LINK                                          
*                             R9= ADDRESS OF OVLOAD TABLE ENTRY                 
*                                                                               
*                                                                               
*                 AT EXIT:    R0= DESTROYED                                     
*                             R9= ADDRESS OF SEGMENT DESCRIPTOR                 
*                                                                               
*                 NOTE:       EXITS DISABLED IF NORMAL EXIT                     
*                                                                               
*                             NORMAL  EXIT IS LINK+1                            
*                             NO SPACE EXIT IS LINK                             
         SPACE    3                                                             
TISD     EQU      %                                                             
         PUSH     8,R4              SAVE REGS                                   
         LI,R4    OVVMPL                                                        
         LB,R4    *R9,R4            GET PAGE LENGTH                             
         BEZ      TISS0208          B IF ZERO                                   
         LI,R7    SDFIXED           FIXED PART OF SD                            
* SET UP TO COMPUTE ACI  LENGTH  (PL+15/16)|INTEGER PORTION                     
*                                                                               
         LI,R6    OVVMWO            OFFSET TO WORD ORIGIN                       
         LW,R6    *R9,R6            GET WORD ORIGIN                             
         SLS,R6   -9                PAGE ADDRESS                                
         AND,R6   M3                GET TWO LOW ORDER BITS                      
         AI,R6    15                                                            
         AW,R6    R4                ADD PAGE LENGTH                             
         SLS,R6   -4                DIVIDE BY 16- YEILDS NUMBER OF WORD         
         STW,R6   R5                SAVE FOR SDACICNT                           
         AW,R7    R6                ADD TO TOTAL                                
* SET UP TO COMPUTE  PAGE FLAGS  (PL+3/4)|INTEGER   PORTION                     
*                                                                               
         LI,R6    3                                                             
         AW,R6    R4                ADD PAGE LENGTH                             
         SLS,R6   -2                DIVIDE BY FOUR                              
         AW,R7    R6                ADD TO TOTAL                                
         DO       #SIGMA9M=0                                                    
         AW,R7    R6                                                            
         STW,R6   R11               SAVE FOR MMC COUNT                          
         FIN      #SIGMA9M=0                                                    
* SET UP  TO COMPUTE FILE IMAGE  (PL+1/2)|INTEGER   PORTION                     
*                                                                               
         LI,R6    1                                                             
         AW,R6    R4                ADD PAGE FLAGS                              
         SLS,R6   -1                DIVIDE BY TWO                               
         AW,R7    R6                ADD TO TOTAL                                
         DO       #SIGMA9M                                                      
         AW,R7    R6                                                            
         STW,R6   R11               SAVE FOR MMC COUNT                          
         FIN      #SIGMA9M                                                      
         PUSH     3,R9                                                          
         BAL,R8   GETTEMP           GET SPACE                                   
         B        TISS0206          NO SPACE - TAKE ERROR EXIT                  
         BAL,R8   TISCHN            CHAIN SPACE TO TASK                         
         PULL     3,R9                                                          
         LI,R6    SDACICNT          OFFSET TO ACI COUNT                         
         STB,R5   *R7,R6            STORE ACI COUNT                             
         LI,R8    -1                ACCESS CODES NO ACCESS                      
         AI,R7    SDFIXED-1         POINT TO ONE LESS THAN ACCESS IMAGE         
         STW,R8   *R7,R5            INITIALIZE ACCESS IMAGE                     
         BDR,R5   %-1               B FOR NEXT WORD                             
         AI,R7    -(SDFIXED-1)      RESTORE POINTER                             
         LI,R6    SDVPCNT           OFFSET TO VIRTUAL PAGE COUNT                
         STB,R4   *R7,R6            SSTORE VIRTUAL PAGE COUNT                   
         LI,R6    SDTUSING          OFFSET TO TASKS USING                       
         MTB,1    *R7,R6            SET TASKS USING TO ONE                      
         LI,R6    SDMMCCNT          OFFSET TO MMC COUNT FIELD                   
         STB,R11  *R7,R6            STORE NUMBER OF WORDS IN MAP IMAGE          
         LB,R10   R7                GET LENGTH OF  SD                           
         SW,R10   R11               YEILDS OFFSET TO START OF MAP               
         LW,R11   M24               ADDRESS MASK                                
         AND,R11  R7                START OF SD                                 
         AW,R11   R10               R11 HAS ADDRESS OF MAP IMAGE                
         LI,R6    OVVMWO            OFFSET TO ORIGIN                            
         LW,R5    *R9,R6            GET WORD ORIGIN FOR THIS SEGMENT            
         AND,R5   X1FE00            MASK                                        
         CLM,R5   STVM              IS START ADR WITHIN TVM                     
         BCS,9    TISS0207          B IF NO (ERROR)                             
         SLS,R4   9                 MAKE # OF PAGES INTO WORDS                  
         AI,R4    -1                ADJUST FOR LAST WORD                        
         AW,R4    R5                ADD START OF SEGMENT                        
         CLM,R4   STVM              IS END ADR WITHIN TVM                       
         BCS,9    TISS0207          B IF NO (ERROR)                             
         LI,R6    SDMMCCS           OFFSET TO 2ND  WORD OF MMC CONTROL          
         STS,R5   *R7,R6            STORE  CONTROL START                        
         SLS,R5   15                POSITION START PAGE AT BITS 6AND7           
         AND,R5   Y03               GET TWO LOW ORDER BITS OF START PAG         
         OR,R11   R5                PLACE IN 1ST WORD OF MMC AS APM             
         LI,R6    SDSEGNUM          OFFSET TO SEGMENT NUMBER                    
         LW,R5    *R9               GET SEGMENT NUMBER                          
         STH,R5   *R7,R6            STORE IN SD                                 
         LI,R8    0                 CLEAR FOR SETTING UP FLAGS                  
         LB,R5    R5                RIGHT JUSTIFY OVLOAD SEG FLAGS              
         CI,R5    OVF               CHECK FOR RAC SEGMENT                       
         BAZ      TISS0201          B IF NOT RAC                                
         AI,R8    1                 SET RAC BIT                                 
TISS0201 EQU      %                                                             
         SLS,R8   7                 POSITION TO BIT 3 AND 4                     
         LI,R4    X'C0'             MASK FOR ACCESS CODES                       
         AND,R4   R5                GET ACCESS CODES                            
         SLS,R4   -2                POSITION ACCESS CODES                       
         OR,R8    R4                SET APC                                     
         LI,R4    OVS               MASK FOR S FIELD                            
         AND,R4   R5                GET  SEGMENT TYPE                           
TISS0202 SLS,R4   -2                POSITION FOR TYPE FIELD                     
         OR,R8    R4                PLACE IN TYPE  FIELD                        
         SLS,R8   7                 POSITION SEG FLAGS                          
         LI,R6    SDFLAGS           OFFSET TO FLAGS                             
         STH,R8   *R7,R6            PLACE IN SD                                 
         LI,R5    SDLMID            SET UP FOR STORING LMI                      
         LB,R4    TCBPOINT          GET STI INDEX                               
         LB,R4    STILMID,R4        GET LMI INDEX                               
         STB,R4   *R7,R5            PLACE LMI IN SD                             
         CI,R8    SDRAC             CHECK FOR RAC SEGMENT                       
         BAZ      TISS0204          B IF  NOT RAC                               
         LI,R6    SDVPCNT                                                       
         LB,R6    *R7,R6            GET VIRTUAL PAGE COUNT USE AS LOOP          
         LI,R4    SDMMCCS           GET OFFSET TO 2ND WORD OF MMC CONTR         
         LW,R4    *R7,R4            GET WORD                                    
         SLS,R4   -9                RIGHT JUSTIFY START PAGE #                  
         AND,R4   XFF               MASK                                        
         LI,R5    0                 USE AS INDEX                                
TISS0203 EQU      %                                                             
         DO       #SIGMA9M                                                      
         STH,R4   *R11,R5           STORE REAL PAGE # IN MAP IMAGE              
         ELSE     #SIGMA9M                                                      
         STB,R4   *R11,R5           STORE REAL PAGE # IN MAP IMAGE              
         FIN      #SIGMA9M                                                      
         AI,R5    1                 STEP INDEX                                  
         AI,R4    1                 MOVE TO NEXT PAGE                           
         BDR,R6   TISS0203          B FOR NEXT MAP IMAGE FIELD                  
TISS0204 EQU      %                                                             
         BAL,R8   TISDECHN          DECHAIN TEMP SPACE                          
         STW,R11  0,R7              PLACE 1ST WORD OF MMC CONTRL.IN SD          
         BAL,R8   TISDCH            CHAIN SD TO CORRECT CHAIN                   
         LW,R0    M24               ADDRESS MASK                                
         AND,R0   R7                SD ADDRESS                                  
         PULL     8,R4              RESTORE REGS                                
         LW,R9    R0                SAVED SD ADDRESS                            
         AI,R8    1                 TAKE NORMAL EXIT                            
         B        TIO3EXIT          EXIT                                        
*                                                                               
TISS0205 EQU      %                                                             
         PULL     8,R4              RESTORE REGS                                
         B        TIO3EXIT          ERROR EXIT                                  
TISS0206 EQU      %                                                             
         PULL     3,R9                                                          
         B        TISS0205          ERROR EXIT                                  
*                                                                               
TISS0207 EQU      %                                                             
         LI,R15   TYCB2             SSEGMENT MEMORY LIMITS ERROR                
         B        TISS0205          TAKE ERROR EXIT                             
TISS0208 EQU      %                                                             
         LI,R15   TYCA2             SEGMENT LENGTH EQU ZERO                     
         B        TISS0205                                                      
         TITLE    '** TIO3 - TISDCH - CHAIN A SEGMENT DESCRIPTOR **'            
*                                                                               
*        TISDCH   CHAIN A SEGMENT DESCRIPTOR                                    
*                                                                               
*                 AT ENTRY:                                                     
*                             R7= ADDRESS OF SD                                 
*                             R8= LINK                                          
*                                                                               
*                 AT EXIT:                                                      
*                             R0= DESTROYED                                     
*                                                                               
*                                                                               
*                                                                               
TISDCH   EQU      %                                                             
         PUSH     3,R1              SAVE REGS                                   
         LI,R1    SDFLAGS           OFFSET TO FLAG HW                           
         LH,R1    *R7,R1            GET FLAGS                                   
         LI,R0    SDTYPE            MASK FOR TYPE FIELD                         
         AND,R1   R0                GET TYPE                                    
         SLS,R1   -7                RIGHT JUSTIFY                               
         B        TISS0301,R1       JUMP TO APPROPRIATE CODE                    
TISS0301 EQU      %                                                             
         B        TISS0302          TASK LEVEL                                  
         B        TISS0304          JOB LEVEL                                   
         B        TISS0305          SYSTEM LEVEL                                
         B        TISS0305          SYSTEM LEVEL (PUB LIB)                      
         B        TISS0302          TASK LEVEL   (NOT ASSIGNED)                 
         B        TISS0302          TASK LEVEL  RES  PAGES                      
         B        TISS0304          JOB LEVEL RES PAGES                         
         B        TISS0305          SYSTEM LEVEL OVERLAY                        
TISS0302 EQU      %                                                             
         LB,R1    TCBPOINT          TASK ID                                     
         LB,R1    STILMID,R1        LMI  ID                                     
         LI,R3    LMISDT            TASK LEVEL CHAIN HEAD                       
         AW,R3    R1                FORM ADDRESS OF  CHAIN  HEAD                
TISS0303 EQU      %                                                             
         LI,R1    SDFLINK           OFFSET TO FLINK IN SD                       
         DISABLE                                                                
         LW,R2    0,R3              GET CURRENT CHAIN HEAD                      
         AND,R2   M24               MASK                                        
         LW,R0    *R7,R1            GET FLINK WORD                              
         AND,R0   YFF               SAVE LMI  FIELD                             
         OR,R0    R2                MERGE LMI AND FLINK ADDRESS                 
         STW,R0   *R7,R1            RESTORE IN SD                               
         LW,R0    M24               MASK                                        
         AND,R0   R7                GET ADDRESS  OF SEG DESCRIPTOR              
         LB,R1    *R3               GET UPPER BYTE OF CHAIN HEAD                
         STB,R1   R0                SET IN NEW CHAIN HEAD                       
         STW,R0   0,R3              REPLACE CHAIN HEAD                          
         ENABLE                                                                 
         PULL     3,R1              RESTORE REGS                                
         B        *R8               EXIT                                        
TISS0304 EQU      %                                                             
         LB,R1    TCBPOINT          TASK ID                                     
         LB,R1    STIJID,R1         JOB ID                                      
         LW,R3    SJI1,R1           JCB ADDRESS                                 
         AI,R3    JCBSDT            FORM ADDRESS OF CHAIN HEAD                  
         B        TISS0303                                                      
*                                                                               
TISS0305 EQU      %                                                             
         LI,R3    S:SD              SYSTEM LEVEL CHAIN                          
         B        TISS0303                                                      
*                                                                               
         TITLE    '** TIO3 - TISDECHN - DE-CHAIN A SD **'                       
*                                                                               
*        TISDECHN DE CHAIN CHAINED  TEMP SPACE                                  
*                                                                               
*                 AT ENTRY:                                                     
*                             R7= ADDRESS OF SPACE TO BE DECHAINED              
*                             R8= LINK                                          
*                                                                               
*                                                                               
*                 AT EXIT:                                                      
*                             R0= DESTROYED                                     
*                             R7= ACTUAL CHAIN WORD                             
*                                                                               
*                 EXITS DISABLED                                                
TISDECHN EQU      %                                                             
         PUSH     3,R1                                                          
         LB,R1    TCBPOINT          GET TASK ID                                 
         LW,R0    STISPCE,R1        GET CHAIN HEAD                              
         LI,R2    STISPCE           ADDRASS OF SPACE CHAIN HEAD                 
         AW,R2    R1                FORM ADDRESS OF CHAIN HEAD                  
         LW,R1    M24               MASK                                        
TISS0401 EQU      %                                                             
         CS,R0    ZEROS             END OF CHAIN                                
         BE       TISS0403          B IF YES                                    
         CS,R0    R7                IS THIS THE SPACE TO BE REMOVED             
         BE       TISS0402          B IF YES                                    
         LW,R2    R0                NEW LAST CHAIN  POINTER                     
         LW,R0    *R0               GET NEXT CHAIN POINTER                      
         B        TISS0401          B TO CONTINUE                               
*                                                                               
TISS0402 EQU      %                                                             
         LW,R3    *R0               GET NEXT LINK                               
         DISABLE                                                                
         STW,R3   *R2               UPDATE LAST LINK                            
         LW,R7    R0                GET CURRENT LINK                            
TISS0403 EQU      %                                                             
         PULL     3,R1                                                          
         B        TIO3EXIT          RETURN                                      
         TITLE    '** TIO3 - TISCHN - CHAIN TSPACE BLOCK TO TASK **'            
*                                                                               
*        TISCHN   CHAIN TEMP SPACE                                              
*                                                                               
*                 AT ENTRY:                                                     
*                             R7= ADDRESS OF SPACE AND LENGTH (BYTE0)           
*                             R8= LINK                                          
*                             INTERRUPTS DISABLED                               
*                 AT EXIT:    R0= DESTROYED                                     
*                             INTERRUPTS ENABLED                                
*                                                                               
*                                                                               
TISCHN   EQU      %                                                             
         PUSH     2,R1                                                          
         LB,R1    TCBPOINT          GET TASK  ID                                
         LW,R0    STISPCE,R1        GET CHAIN HEADER                            
         STW,R0   *R7               OLD CHAIN HEAD                              
         STW,R7   STISPCE,R1        NEW CHAIN HEAD                              
         ENABLE                                                                 
         LB,R1    R7                LOOP  COUNT                                 
         AI,R1    -1                REDUCE FOR INDEX                            
         LI,R0    0                 ZEROES                                      
TISS0501 EQU      %                                                             
         STW,R0   *R7,R1            ZERO TEMP SPACE                             
         BDR,R1   TISS0501          B FOR MORE                                  
         PULL     2,R1                                                          
         B        TIO3EXIT          RETURN                                      
*                                                                               
         TITLE    '** TIO3 - TIRFT - GET LMIRFT SPACE FOR TASKS **'             
*************                                                                   
*   TIRFT   *                                                                   
*************                                                                   
*                                                                               
*   AT ENTRY:    R8   LINK                                                      
*                                                                               
*   AT EXIT:     R7   LMIRFT TABLE POINTER                                      
*                                                                               
*   ROUTINE USES R7,R8                                                          
*                                                                               
*   ROUTINE RETURNS +2 IF ALLSWELL (DISABLED)                                   
*                   +1 IF ERROR                                                 
*                                                                               
TIRFT    RES      0                                                             
         PUSH     R8                SAVE LINK                                   
         LH,R7    RFT4              GET NUMBER OF RFT ENTRIES                   
         AI,R7    4                 FOR ROUNDING UP                             
         SLS,R7   -2                R7= # OF WORDS NEEDED                       
         BAL,R8   GETTEMP                                                       
         B        TIRFT10           NO TSPACE, ERROR                            
         PUSH     R1                                                            
         LI,R8    0                 FOR ZEROING SPACE                           
         LB,R1    R7                LOOP COUNT                                  
         AI,R1    -1                ADJUST FOR BDR COUNT                        
         STW,R8   *R7,R1            ZERO SPACE                                  
         BDR,R1   %-1               LOOP FOR MORE                               
         STW,R8   *R7               GET LAST WORD                               
         PULL     R1                                                            
         PULL     R8                                                            
         AI,R8    1                 TAKE                                        
         B        TIO3EXIT                                                      
*                                                                               
TIRFT10  RES      0                                                             
         PULL     R8                                                            
         B        TIO3EXIT                                                      
         PAGE                                                                   
         BOUND    8                                                             
TIO3EXIT EQU      %                                                             
         B        *R8                                                           
*                                                                               
TIO3DBUG EQU      %                                                             
         CAL1,7   TIDBCAL                                                       
         B        *R7               USER ENTRY POINT                            
*                                                                               
TIDBCAL  DATA     X'65800000'                                                   
         DATA     F7                ABORT OVERRIDE                              
*                                                                               
         OLAYEND                                                                
         END                                                                    
