         PCC      0                                                             
         TITLE    '** RUN - RUN CAL PROCESSOR **'                               
         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*        RUN      CAL PROCESSOR OVERLAY                                         
*                                                                               
         DEF      RUN                                                           
         DEF      SCHEDC            SCHEDULE CAL                                
         DEF      RUNX                                                          
         DEF      SCNORMX,SCERRX,SCTRAPX                                        
OLAYFLAG EQU      'RUN'                                                         
         SYSTEM   CPRMON                                                        
         TITLE    '** RUN - RUN CAL PROCESSING **'                              
*                                                                               
*        RUN CAL PROCESSING                                                     
*                                                                               
*        REGISTER USAGE:                                                        
*        R0 - WORK                  R8 - SIG ADR, PRIO-SEQ                      
*        R1 - WORK                  R9 - RUN99                                  
*        R2 - STAT FOR LMI          R10 - LOAD MOD NAME                         
*        R3 - FPT ADDRESS           R11 - LOAD MOD NAME                         
*        R4 - LMI SCAN              R12 - LMIFWA                                
*        R5 - LMI FREE ENTRY        R13 - LMILWA                                
*        R6 - JOB ID                R14 - WORK                                  
*        R7 - WORK                  R15 - WORK                                  
*                                                                               
RUN      BIFFGD   RUN1              FOREGROUND OK                               
         LW,R0    K:JCP1            IS IT BACKGROUND PROCESSOR                  
         CI,R0    X'200'                                                        
         BAZ      RUN16                 NO, ERROR                               
RUN1     LW,R9    0,R3              FETCH AND VERIFY SIGNAL ADDR                
         AND,R9   M17                   IS IT USED                              
         BEZ      RUN3                  NO                                      
         LW,R15   1,R3                  IS 'ISP' SET                            
         CW,R15   Y1                                                            
         BANZ     RUN3                  YES, NO SIGNAL ADDR                     
         BAL,R8   TMVADR                ADDRESS                                 
         B        RUN16                 ERROR                                   
         CI,R0    0                     WRITABLE                                
         BE       RUN2                  YES                                     
         CI,R9    RBM                   IN K: OR TSPACE, LET IT GO              
         BGE      RUN16                 AND HOPE FOR THE BEST                   
RUN2     LW,R8    R9                    R8=SIGNAL  ADDRESS                      
         BIFREAL  RUN4              UNMAPPED TASKS CAN USE SIG                  
         CW,R8    STVM                                                          
         BG       RUN16                  ONLY USE 1-1 ADDRESSES                 
         B        RUN4                  CONTINUE                                
RUN3     LI,R8    0                     NO SIGNAL ADDRESS                       
RUN4     RES      0                                                             
         LI,R2    LMILOAD+LMIRUNQ   INITIAL VALUE FOR STAT HALFWORD             
         LI,R12   0                 INITIALIZE R12: NO DEBUG                    
         CW,R15   Y2                                                            
         BAZ      %+2               B IF NO DEBUG REQUESTED                     
         LW,R12   Y01               INITIALIZE R12: DEBUG                       
RUN5     LW,R10   2,R3              SET R10,R11=LOAD MOD NAME                   
         LW,R11   3,R3                                                          
         CW,R15   YC                ANY END ACTION                              
         BAZ      RUN6                  NO                                      
         BAL,R4   CKENACT1              CHECK END ACTION                        
         B        RUN16                 ERROR                                   
         B        RUN7                  OK                                      
RUN6     LI,R15   0                     NO END ACTION                           
RUN7     EQU      %                                                             
         LW,R13   M16                                                           
         SCS,R15  16                RIGHT-JUSTIFY GROUP CODE                    
         LS,R12   R15               INSERT GROUP CODE IN R12                    
         SCS,R15  16                RIGHT-JUSTIFY LEVEL, JOB ID                 
         AND,R13  R15               LEVEL BIT, JID INTO R13                     
         LI,R6    RBMJID                                                        
         STB,R6   R13                                                           
         DO       #RUNQ             SET RUN QUEUED BIT IF APPLIC                
         LW,R15   1,R3              R15=FPT FLAGS                               
         SLS,R15  4                     LEFT JUSTIFY                            
         CW,R15   Y8                    IS 'PP' SET                             
         BAZ      RUN8                  NO                                      
         AND,R15  YFF                                                           
         B        RUN9                                                          
RUN8     LW,R15   YFF                   SET PRIO=FF                             
RUN9     OR,R8    R15               ADD PRIO FIELD                              
         PUSH     4,R8                                                          
         LI,R7    32                                                            
         BAL,R8   GETTEMP           GET LOAD CONTROL SPACE                      
         B        RUN21             NOT AVAILABLE                               
         LB,R1    PCBPOINT          LINK SPACE TO CALLER FOR NOW                
         LW,R0    STISPCE,R1                                                    
         STW,R0   0,R7                                                          
         STW,R7   STISPCE,R1                                                    
         ENABLE                                                                 
         LI,R0    0                                                             
         LI,R1    31                                                            
         STW,R0   *R7,R1            CLEAR THE TSPACE BLOCK                      
         BDR,R1   %-1                                                           
         PULL     4,R8                                                          
         LW,R0    R7                                                            
         AI,R0    1                 ADDRESS OF LOAD DCB                         
         LI,R1    X'10'                                                         
         STB,R1   R0                READ FPT WORD 0                             
         LW,R1    PTISFPT1          PROTOTYPE FPT WORD 1                        
         LCI      2                                                             
         STM,R0   TISFPT,R7         SET LOAD READ FPT WORDS 0, 1                
         LM,R0    PTISDCB0                                                      
         STM,R0   1,R7              SET LOAD DCB WORDS 0, 1                     
         LM,R0    PTISDCB7                                                      
         STM,R0   8,R7              SET LOAD READ FPT WORDS 7, 8                
         LI,R1    JCBRBM                                                        
         LW,R1    JCBJPT,R1         GET CPR JOB PROGRAM TABLE ADDRESS           
         BEZ      RUN96             B IF NONE                                   
*                                                                               
RUN92    RES      0                 SEARCH JPT FOR LM NAME                      
         CD,R10   *R1               COMPARE PROGRAM NAMES                       
         BNE      RUN94             B IF NO MATCH                               
         AI,R1    2                                                             
         LD,R0    *R1               GET LOAD MODULE NAME                        
         B        RUN98                                                         
*                                                                               
RUN94    RES      0                 CHECK NEXT JPT ENTRY                        
         MTW,4    R1                POINT TO NEXT JPT ENTRY                     
         MTB,-4   R1                DECREASE TABLE SIZE REMAINING               
         BNEZ     RUN92             B IF THERE IS ANOTHER ENTRY                 
*                                                                               
RUN96    RES      0                 NO JPT OR NO MATCHING NAME                  
         LD,R0    R10               USE PROGRAM NAME AS LM NAME                 
*                                                                               
RUN98    RES      0                 SET LOAD MODULE NAME IN DCB                 
         LCI      2                                                             
         STM,R0   6,R7              SET LOAD DCB WORDS 5, 6                     
         CD,R0    KOV                                                           
         BNE      RUN10             B IF LM NAME IS NOT 'OV'                    
         LI,R0    'BT'                                                          
         STW,R0   9,R7              CHANGE LM AREA NAME TO 'BT'                 
RUN10    LW,R14   R8                SWAP PRIO-SEQ TO R14                        
         AND,R14  YFF                   REMOVE ALL BUT PR                       
         ELSE                                                                   
RUN10    EQU      %                 SEARCH LMI FOR (1) FREE LMI                 
         FIN      #RUNQ                 (2) DUPLICATE ENTRY                     
         ENABLE                         (3) SEQUENCE WITHIN PRIO                
         LB,R4    LMI#                                                          
         LI,R5    0                     ZERO FREE LMI INDEX                     
         LW,R9    RUN99                 R9=RUN99                                
RUN11    LH,R0    LMISTAT,R4                                                    
         BEZ      RUN13                 ENTRY IS AVAILABLE                      
         CI,R0    LMIT+LMISEC           ENTRY IN TERM OR SECDARY                
         BANZ     RUN14                 YES, BYPASS IT                          
         CD,R10   LMINAME,R4            THE SAME LOAD MODULE                    
         BNE      RUN12                 NO                                      
         LW,R1    LMILWA,R4                                                     
         CB,R6    R1                    SAME JOB                                
         BE       RUN18                 YES, DUPLICATE ENTRY                    
         DO       #RUNQ                                                         
RUN12    CI,R0    LMIRUNQ               QUEUED?                                 
         BAZ      RUN14                 NO                                      
         LW,R15   YFF                                                           
         CS,R14   LMIPL,R4              EQUAL PRIO                              
         BNE      RUN14                 NO                                      
         LI,R15   X'E0000'              SEQ # LOWER                             
         CS,R14   LMIPL,R4                                                      
         BGE      RUN14                                                         
         LS,R14   LMIPL,R4              REPLACE SEQ IN R14                      
         ELSE                                                                   
RUN12    EQU      %                                                             
         FIN      #RUNQ                                                         
         B        RUN14                                                         
RUN13    LW,R5    R4                    SAVE INDEX OF FREE ENTRY                
RUN14    BDR,R4   RUN11                 CONTINUE THRU LMI                       
         DO       #RUNQ                                                         
         AI,R14   X'20000'              +1 TO HIGHEST SEQ                       
         AND,R8   M17                   STORE PRIO-SEQ                          
         OR,R8    R14                   INTO R8 FOR LMIPL                       
         FIN      #RUNQ                                                         
         DISABLE                                                                
         CW,R9    RUN99                 RE-ENTERED?                             
         BNE      RUN10                 YES                                     
         CI,R5    0                     FREE ENTRY FOUND                        
         BE       RUN17                 NO                                      
         STH,R2   LMISTAT,R5                                                    
         STD,R10  LMINAME,R5                                                    
         STW,R12  LMIFWA,R5                                                     
         STW,R13  LMILWA,R5                                                     
         STW,R8   LMIPL,R5                                                      
         LD,R0    ZEROS                                                         
         STW,R0   LMISDT,R5                                                     
         STB,R0   LMIMAXS,R5                                                    
         STB,R0   LMIMAXR,R5                                                    
         DO       #ECB                                                          
         STW,R0   LMIAET,R5                                                     
         STW,R0   LMISECB,R5                                                    
         STW,R0   LMIRECB,R5                                                    
         FIN      #ECB                                                          
         STW,R0   LMIRFT,R5                                                     
         LB,R1    PCBPOINT                                                      
         LW,R7    STISPCE,R1        GET LOAD CONTROL SPACE POINTER              
         STD,R7   LMIRTS,R5         ATTACH TO NEW LMI ENTRY                     
         LW,R7    0,R7                                                          
         STW,R7   STISPCE,R1        DETACH FROM CALLER                          
         MTW,1    RUN99                                                         
         ENABLE                                                                 
         BAL,R11  FGLTRIG           TRIGGER THE FOREGROUND                      
*                                   LOADER RELEASER                             
RUN15    LI,R15   TYCNORM           EXIT NORMALLY                               
RUNX     B        CALSTDX           EXIT                                        
*                                                                               
RUN16    LI,R15   TYCTRAP           GO TO TRAPX (BADCAL)                        
         B        RUNX                  EXIT                                    
RUN17    LI,R0    5                 SET ERROR CODE FOR NO FREE                  
         B        RUN20                 LMI ENTRY                               
RUN18    CW,R9    RUN99             RE-ENTERED                                  
         BNE      RUN10                                                         
         CI,R0    LMIRUNQ+LMILOAD                                               
         BAZ      RUN19                                                         
         LI,R0    4                 SET PROG BEING LOADED                       
         B        RUN20                                                         
RUN19    LI,R0    3                 SET PROG RUNNING                            
RUN20    STW,R0   *R8               STORE INTO SIGNAL ADDR                      
         DISABLE                                                                
         LB,R1    PCBPOINT                                                      
         LW,R7    STISPCE,R1        GET LOAD CONTROL SPACE POINTER              
         LW,R0    0,R7                                                          
         STW,R0   STISPCE,R1        DETACH FROM CALLER                          
         BAL,R8   RELTEMP           RELEASE SPACE (AND ENABLE)                  
         B        RUN15             EXIT                                        
*                                                                               
RUN21    RES      0                                                             
         PULL     4,R8              RESTORE SAVED REGISTERS                     
         LI,R0    7                 RUN COMPLETION CODE: NO SPACE               
         STW,R0   *R8                                                           
         B        RUN15             EXIT                                        
*                                                                               
*                                                                               
*        CONSTANTS, ETC                                                         
*                                                                               
PTISFPT1 DATA     P3+P4+P8+P10+F3+F7  LOAD READ FPT WORD 1                      
PTISDCB0 DATA     X'0B000081'       LOAD DCB WORDS 0, 1                         
         DATA     X'03000000'                                                   
PTISDCB7 DATA     X'80000000'       LOAD DCB WORDS 7, 8                         
         DATA     'FP'                                                          
         BOUND    8                                                             
KOV      TEXT     'OV      '        FOR RECOGNIZING 'OV' FILE RUNS              
         TITLE    '** RUN - SCHED CAL PROCESSOR **'                             
*                                                                               
*        PROCESS PERIODIC  SCHEDULER CALS                                       
*                                                                               
*                                                                               
PFBITS   EQU      1                                                             
AREA     EQU      2                                                             
TNAME1   EQU      3                                                             
TNAME2   EQU      4                                                             
PRIO     EQU      5                                                             
JNAME1   EQU      6                                                             
JNAME2   EQU      7                                                             
ACC1     EQU      8                                                             
ACC2     EQU      9                                                             
SYEAR    EQU      10                                                            
SDAY     EQU      11                                                            
SSEC     EQU      12                                                            
ISEC     EQU      13                                                            
         TITLE    '** RUN - SCHED CAL EXITS **'                                 
         SPACE    4                                                             
SCTERR   RES      0                 TIME ERROR                                  
SCIERR   LI,R15   TYC6C             INTERVAL ERROR                              
         B        SCERR                                                         
SCNORM   LI,R15   TYCNORM           NORMAL COMPLETION                           
         BAL,R8   TISDECHN          UNCHAIN IT                                  
         LI,R0    SC:LIST           PLACE AT END(FIFO)                          
         MTW,0    *R0               THIS THE END                                
         BEZ      %+3               YES                                         
         LW,R0    *R0                                                           
         B        %-3                                                           
         STW,R7   *R0               NEW END                                     
         LI,R0    0                                                             
         STW,R0   0,R7              CLEAR END                                   
         LI,R5    BIT16             AND START UP                                
         STS,R5   K:CTST            SCHED OVERLAY                               
         BAL,R11  CTRIG             OF CONTROL TASK                             
         ENABLE                                                                 
SCNORMX  B        TMX2              NORMAL EXIT                                 
SCERR    BAL,R8   TISDECHN          UNCHAIN SPACE                               
         BAL,R8   RELTEMP           AND RELEASE IT                              
SCERRX   B        TMX1              ERROR EXIT                                  
SCTRAP   LI,R15   TYCTRAP           NO P0 BIT                                   
SCTRAPX  B        CALSTDX           HANDLE ABORT THERE                          
         TITLE    '** RUN - SCHED CAL1 PROCESSOR **'                            
*                                                                               
SCHEDC   RES      0                                                             
         LW,R0    0,R3              GET WORD ZERO OF FPT                        
         CW,R0    XFPTP0            IS IT STANDARD                              
         BAZ      SCTRAP            NO, ABORT                                   
*                                                                               
         LI,R7    16                                                            
         BAL,R8   GETTEMP                                                       
         B        SCERR             NO SPACE AVAILABLE                          
*                                                                               
         BAL,R8   TISCHN            LINK & ZERO TSPACE                          
*                                                                               
*                                                                               
         LI,R15   FPTTNAME          GET TASK NAME                               
         BAL,R5   GETFPTNS                                                      
         B        SCTDEFLT          NONE DEFAULT                                
         STW,R15  TNAME1,R7         SAVE IT                                     
         LI,R15   FPTTNAME+1        GET OTHER HLF                               
         BAL,R5   GETFPTNS                                                      
         LW,R15   BLANKS            DEFAULT TO BLANKS                           
         STW,R15  TNAME2,R7         SAVE IT                                     
         B        SCJNAME                                                       
*                                                                               
SCTDEFLT LB,R5    TCBPOINT          TASK INDEX                                  
         LB,R5    STILMID,R5        LOAD MODULE INDEX                           
         LD,R14   LMINAME,R5        USE THIS ONES NAME                          
         LCI      2                                                             
         STM,R14  TNAME1,R7         SAVE IT                                     
*                                                                               
SCJNAME  LI,R15   FPTJNAME          GET JOB ANME                                
         BAL,R5   GETFPTNS                                                      
         B        SCJDEFLT          NONE DEFAULT                                
         STW,R15  JNAME1,R7         SAVE IT                                     
         LI,R15   FPTJNAME+1        GET OTHER HALT                              
         BAL,R5   GETFPTNS                                                      
         LW,R15   BLANKS            DEFAULT BLANKS                              
         STW,R15  JNAME2,R7         SAVE IT                                     
         B        SCPFBITS                                                      
*                                                                               
SCJDEFLT LB,R5    TCBPOINT          TASK INDEX                                  
         LB,R5    STIJID,R5         JOB INDEX                                   
         LD,R14   SJI2,R5           DEFAULT THIS JOB                            
         LCI      2                                                             
         STM,R14  JNAME1,R7         SAVE IT                                     
*                                                                               
SCPFBITS LW,R0    1,R3              GET WORD 2 OF FPT                           
         STW,R0   PFBITS,R7         SAVE IT                                     
         CI,R0    FPTF6             DELETE                                      
         BANZ     SCNORM            YES , STOP NOW                              
*                                                                               
SCPRIO   PUSH     R7                                                            
         BAL,R8   TMGETPR           GET THIS PRIORITY                           
         LW,R4    R0                SAVE IT IN R4                               
         PULL     R7                                                            
         LW,R0    1,R3              WORD 2 OF FPT                               
         CW,R0    FPTF5             TIME SLICED                                 
         BAZ      %+2               NO                                          
         LI,R4    X'FFFF'           TIME SLICE DEFAULT                          
         LI,R15   FPTPRIO           GET PRIOITY                                 
         BAL,R5   GETFPTNS                                                      
         LW,R15   R4                DEFAULT IT                                  
         STW,R15  PRIO,R7           SAVE IT                                     
*                                                                               
SACC     LCI      2                 DEFAULT                                     
         LM,R14   SYSACNT           ACCOUNT                                     
         STM,R14  ACC1,R7                                                       
         LI,R15   FPTANAME          GET ACCOUNT                                 
         BAL,R5   GETPSII                                                       
         B        SCAREA            NOT INCLUDED                                
         LCI      2                                                             
         LM,R14   *R14              GET IT                                      
         STM,R14  ACC1,R7           SAVE IT                                     
*                                                                               
SCAREA   LW,R14   0,R3              GET AREA                                    
         AND,R14  M16                                                           
         STW,R14  AREA,R7           SAVE IT                                     
*                                                                               
*                                                                               
SCINT    LI,R15   FPTTIME                                                       
         BAL,R5   GETPSI            MAYBE INDIRECT                              
         LI,R15   0                                                             
         LW,R1    R15               INTERVAL                                    
         BEZ      SCSTRT            ABSENT OR ZERO ALL THE SAME                 
         CW,R1    Y1                                                            
         BGE      SCIERR            28 BITS MAX                                 
         AI,R1    4                 ROUND TO 5                                  
         DW,R1    X5                                                            
         MW,R1    X5                                                            
         STW,R1   ISEC,R7           SAVE IT                                     
*                                                                               
SCSTRT   LI,R15   FPTSTRT           GET START TIME                              
         BAL,R5   GETPSII           ADDR,INDR,P0 REQD                           
         B        SCNOSTRT          STRT TIME NOT SPECIFIED                     
*                                                                               
         LCI      2                                                             
         LM,R14   *R14              R14,R15 EQUAL START                         
         CI,R14   0                 IS IT A ZERO DEFAULT                        
         BNE      %+3               NO                                          
         CI,R15   0                                                             
         BE       SCNOSTRT          YES, HANDLE AS ABSENT                       
         LI,R1    7                 CHECK FOR DEFAULTS                          
         LB,R0    R14,R1                                                        
         CI,R0    X'FF'             THIS ONE DEFAULTED                          
         BE       SCCAL             YES                                         
         BDR,R1   %-3                                                           
         LW,R1    R14               YEAR DEFAULTED                              
         BGEZ     SCNOCAL           NO                                          
*                                                                               
SCCAL    LW,R1    TIMEFPT           PREPARE FOR CAL                             
         CAL1,8   R1                                                            
SC03     RES      0                                                             
         LI,R1    7                 SET UP TO REPLACE DEFAULT FIELDS            
SC04     RES      0                                                             
         LB,R0    R14,R1            BYTE OF INPUT STRT                          
         CI,R0    X'FF'                                                         
         BNE      SC05              B IF NOT DEFAULTED                          
         LB,R0    R8,R1                                                         
         STB,R0   R14,R1            REPLACE DEFAULTED FIELD                     
SC05     RES      0                                                             
         CI,R1    3                 LAST FIELD                                  
         BE       %+2               YES                                         
         BDR,R1   SC04                                                          
         LW,R1    R14               DEFAULT YEAR                                
         BGEZ     SCNOCAL           NO                                          
         AND,R14  M8                                                            
         AND,R8   YFFFFFF                                                       
         OR,R14   R8                MIX THEM                                    
*                                                                               
*        CONVERT THE 2-WORD DATE/TIME TO 3-WORD JULIAN FORMAT                   
*                                                                               
SCNOCAL  RES      0                                                             
         LW,R2    R14               CHECK MONTH                                 
         AND,R2   M8                                                            
         AI,R2    -1                TO SMALL                                    
         BLZ      SCTERR            YES                                         
         CI,R2    11                TO LARGE                                    
         BG       SCTERR            YES                                         
         LI,R1    0                 CLEAR TO ACCUMULATE                         
         AI,R2    -1                DONE YES                                    
         BLZ      SCNOCAL2          JAN                                         
         LW,R0    K:MONTH,R2        GET DAYS IN THE MONTH                       
         SLS,R0   -24                                                           
         AW,R1    R0                                                            
         AI,R2    -1                DONE YES                                    
         BGEZ     %-4               NO                                          
*                                                                               
SCNOCAL2 LB,R2    R15               GET DAY                                     
         BEZ      SCTERR            NO SUCH THING AS ZERO DAY                   
         AW,R1    R2                                                            
         MI,R0    24                CONVERT TO HOURS                            
*                                                                               
         LI,R4    1                 GET HOUR                                    
SCNOCAL1 LB,R2    R15,R4            GET HOURS                                   
         AW,R1    R2                                                            
         MI,R0    60                CONVERT TO MINUTES                          
         AI,R4    1                 NEXT TO SECONDS,ETC.                        
         CI,R4    3                 LAST DONE                                   
         BNE      SCNOCAL1          NO                                          
         LB,R2    R15,R4            SECONDS                                     
         AW,R1    R2                                                            
*                                                                               
         DW,R0    SECDAY            DIVIDE BY SECONDS PER DAY                   
         STW,R0   SSEC,R7           SAVE SECONDS                                
         LI,R0    0                                                             
         LH,R2    K:DATE1           DAYS IN YEAR                                
         DW,R0    R2                                                            
         STW,R0   SDAY,R7           SAVE DAYS                                   
         SLS,R14  -8                                                            
         AW,R14   R1                ACCUMULATE                                  
         STW,R14  SYEAR,R7          SAVE YEAR                                   
         B        SCNORM            ALL DONE                                    
*                                                                               
SCNOSTRT RES      0                                                             
         DISABLE                                                                
         LI,R0    0                                                             
         LW,R1    K:TIME            GET SECONDS                                 
         AW,R1    ISEC,R7           ADD INTERVAL                                
         DW,R0    SECDAY                                                        
         STW,R0   SSEC,R7           SAVE IT                                     
         LI,R0    0                                                             
         LW,R2    K:DATE2           DAY OF YEAR                                 
         AW,R1    R2                ACCUMULATE DAYS                             
         LH,R2    K:DATE1           DAYS IN YEAR                                
         DW,R0    R2                                                            
         STW,R0   SDAY,R7           SAVE IT                                     
         LW,R0    K:DATE1                                                       
         AND,R0   M16                                                           
         AI,R0    1900              YEAR                                        
         AW,R0    R1                ACCUMULATE YEARS                            
         STW,R0   SYEAR,R7          SAVE IT                                     
         ENABLE                                                                 
         B        SCNORM            NORMAL RETURN                               
*                                                                               
SECDAY   DATA     24*60*60                                                      
TIMEFPT  DATA     X'10800008'                                                   
         OLAYEND                                                                
         END                                                                    
