1RO 
          IDENT  1RO,ROJ
          PERIPH
          BASE   MIXED
          SST 
          SYSCOM
*COMMENT  1RO - ROLLOUT JOB.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  1RO - ROLLOUT JOB. 
          SPACE  4,10 
***       1RO - ROLLOUT JOB.
*         G. R. MANSFIELD.  70/10/24. 
*         R. E. TATE.  71/01/11.
*         L. C. HAAS.  75/03/25.  RESEQUENCE. 
*         C. A. LACEY.       77/04/21.
          SPACE  4,10 
***              *1RO* PERFORMS JOB ROLLOUT AND DM* FILE CREATION.  IT
*         IS CALLED BY *1AJ* FOR FUNCTIONS 0 AND 1.  FUNCTION 2 IS
*         CALLED DIRECTLY BY *CPUMTR*.
          SPACE  4,10 
***       CALL. 
* 
*T        18/  *1RO*,1/,5/  CP,12/  FN,24/  N 
*         CP     CONTROL POINT NUMBER 
*         FN = 0 ROLLOUT OF A CONTROL POINT JOB.
*            = 1 SELECTIVE ROLLOUT TO FILE DM* ACCORDING TO *DMP=*
*                PARAMETER. 
*            = 2 PSEUDO-ROLLOUT.
*            = 3 ROLLOUT OF A PSEUDO-CONTROL POINT JOB.  THIS MAY BE A
*              COMPOUND ROLLOUT.
*         N  = ERROR FLAG FOR INTERACTIVE JOB (FUNCTION 0). 
*            = PARAMETERS FROM DMP= PROGRAM *PST* ENTRY (FUNCTION 1). 
*                     9/,1/  C,1/,1/  U,12/  FL 
*                           C = CREATE DM* FILE ONLY. 
*                           U = CREATE DM* AS AN UNLOCKED FILE. 
*                           FL = 0, DUMP CPA, ENTIRE CM FL AND ECS FL.
*                               .NE. 0, DUMP CPA AND FL*100B OF CM FL.
*            = 12/  TN,12/  PN   (FUNCTIONS 2 AND 3)
*              TN     TERMINAL NUMBER IF *1TO* MUST BE CALLED 
*                     FOLLOWING COMPOUND ROLLOUT COMPLETION.
*              PN     PCP NUMBER. 
          SPACE  4,10 
**        ROUTINES USED.
* 
*         *0AU* - PROCESS ACCUMULATOR OVERFLOW FLAGS. 
*         *0BF* - BEGIN FILE. 
*         *0DF* - DROP FILE.
          SPACE  4,10 
**        PROGRAMS CALLED.
* 
*         *1AJ* - CONTINUE *DMP=* PROCESSING. 
          SPACE  4,10 
***       ACCOUNT DAYFILE MESSAGES. 
* 
* 
*         *AUSR, SRUUNITS.* = NUMBER OF SRU-S WHICH COULD NOT BE
*         RECORDED IN THE PROJECT PROFILE FILE AT OVERFLOW OR END 
*         OF ACCOUNT BLOCK. 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
*CALL     COMSACC 
          QUAL   CPS
*CALL     COMSCPS 
          QUAL   *
*CALL     COMSEJT 
*CALL     COMSEVT 
          QUAL   COMSHIO
*CALL     COMSHIO 
          QUAL   *
          LIST   X
*CALL     COMSJRO 
          LIST   *
*CALL     COMSLFD 
*CALL     COMSMSP 
*CALL     COMSPIM 
          QUAL   REM
*CALL     COMSREM 
          QUAL
*CALL     COMSSCD 
*CALL     COMSSSD 
*CALL     COMSSSE 
*CALL     COMSSSJ 
*CALL     COMSTCM 
*CALL     COMSWEI 
*CALL     COMSZOL 
 1RO      SPACE  4
****      ASSEMBLY CONSTANTS. 
  
  
 IFLS     EQU    /CPS/IFLS   *PIOM* REPLY STATUS
 RDDS     EQU    /CPS/RDDS   *PIOM* DIRECT READ 
 WDDS     EQU    /CPS/WDDS   *PIOM* DIRECT WRITE
          SPACE  4,10 
**        DIRECT CELL ASSIGNMENTS.
  
  
 T8       EQU    16          SCRATCH
 T9       EQU    17          SCRATCH
 FS       EQU    20 - 24     SCRATCH (5 CELLS)
 NT       EQU    25          NEXT TRACK POINTER 
 EO       EQU    26          EJT ORDINAL
 SC       EQU    27          TERMINAL OUTPUT SECTOR COUNT 
 CN       EQU    30 - 34     SCRATCH (5 CELLS)
 OP       EQU    35 - 36     OUTPUT POINTER (2 CELLS) 
 DI       EQU    37          *UJNI*+2 (USED TO DISABLE PROCESSING)
 FN       EQU    40 - 44     SCRATCH (5 CELLS)
 TN       EQU    45          TERMINAL NUMBER
 TT       EQU    46 - 47     TERMINAL TABLE ADDRESS (2 CELLS) 
 FA       EQU    57          DM* FNT ADDRESS
 ZR       EQU    60 - 64     ZERO WORD (5 CELLS)
 TA       EQU    65          *IAF* RA 
 NF       EQU    67          NFL/100B 
  
  
****
          TITLE  MAIN PROGRAM.
 ROJ      SPACE  4,10 
**        ROJ - MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 ROJ      BSS    0
          RJM    PRS         PRESET (RETURN TO *ROJ1* ON PSEUDO ROLL) 
  
*         PERFORM INITIAL ROLLOUT OPERATIONS. 
  
 ROJA     RJM    /3RS/CDM    CREATE DM* FILE FNT ENTRY
*         UJN    *+2         (NON-*DMP=* CALL)
  
 ROJB     RJM    /3RP/CKO    CHECK FOR TERMINAL I/O 
*         UJN    *+2         (NON-INTERACTIVE JOB)
  
          RJM    RMS         REQUEST MASS STORAGE SPACE 
 ROJC     RJM    /3RP/RFO    READ FIRST SECTOR OF TERMINAL OUTPUT 
*         UJN    *+2         (NOT ON-LINE INTERACTIVE JOB)
  
 ROJ1     BSS    0           ENTRY FROM *PRS* IF PSEUDO ROLLOUT 
 ROJD     RJM    CJS         CHANGE JOB STATUS
*         UJN    *+2         (*DMP=* CALL)
  
 ROJH     RJM    ISS         INITIALIZE SYSTEM SECTOR 
*         UJN    ROJ2        (PSEUDO-ROLLOUT) 
  
 ROJE     RJM    SRA         SET RA TO FWA OF NFL 
*         UJN    *+2         (*DMP=* CALL)
  
*         WRITE THE ROLLOUT FILE. 
  
          SETMS  IO,(NS),WDSB 
 ROJI     LDC    0
*         LDC    EPNF        (BUFFERED DEVICE AND ECS PRESENT)
          RAM    UERR 
          RJM    WSS         WRITE SYSTEM SECTOR
          MJN    ROJ3        IF MASS STORAGE ERROR
          LDD    HN          SET SECTOR WORD COUNT
          STM    BFMS+1 
  
 SEQ      EQU    *-2
 ROJ2     SEQUENCE CPAI,CPA  WRITE CONTROL POINT AREA 
*         RJM    TCP         (PSEUDO-ROLLOUT) 
*         UJN    *+2         (NO CONTROL POINT) 
  
          SEQUENCE TOPI,/3RP/WTO   WRITE TERMINAL OUTPUT
*         UJN    *+2         (NOT ON-LINE INTERACTIVE JOB)
*         UJN    ROJ5        (PSEUDO-ROLLOUT) 
  
          SEQUENCE JFLI,JFL  WRITE JOB FIELD LENGTH 
*         UJN    *+2         (NO FL)
  
          SEQUENCE JECI,JEC  WRITE JOB ECS FIELD LENGTH 
*         UJN    *+2         (NO ECS) 
  
 ROJJ     RJM    WEI         WRITE EOI SECTOR 
*         UJN    ROJ4        (BUFFERED DEVICE)
  
          PJN    ROJ4        IF NO MASS STORAGE ERROR 
 ROJ3     LJM    MSR         PROCESS MASS STORAGE ERROR 
  
 ROJ4     ENDMS 
  
*         PERFORM FINAL ROLLOUT OPERATIONS. 
  
 ROJ5     RJM    CRO         COMPLETE ROLLOUT (ON-LINE MAY NOT RETURN)
*         RJM    CDR         (*DMP=* CALL)
 ROJF     EQU    *-1
  
          LDD    IR+2 
          SBN    2
          NJN    ROJ5.1      IF NOT PSEUDO-ROLLOUT
          STD    CM+2 
          MONITOR  RSJM      CALL SCHEDULER 
 ROJ5.1   LDC    **          (ERROR FLAG) 
 ROJK     EQU    *-1
          RJM    SEF         SET ERROR FLAG, IF PRESENT 
          RJM    CPC         CHECK PCP ROLLOUT COMPLETION 
          ZJN    ROJ7.1      IF SIMPLE PCP ROLLOUT
          PJN    ROJ8        IF COMPOUND ROLLUT 
 ROJG     LDC    /CPS/CCPS+/CPS/DPPS  RELEASE CP AND DROP PP
*         LDC    /CPS/CCPS   (*1TO* TO BE CALLED) 
*         UJN    ROJ8        (*DMP=* CALL)
  
 ROJ7     STD    CM+1 
          MONITOR  JACM 
  
*         ON A COMPOUND ROLLOUT, IF THE FIRST *1RO* FINDS THAT THERE
*         IS TERMINAL OUTPUT AVAILABLE FOR THE JOB BEING ROLLED TO
*         DISK, THE FIRST SECTOR OF OUTPUT IS SAVED IN THE PP UNTIL 
*         AFTER THE SECOND *1RO* IS COMPLETE.  *1TO* IS THEN CALLED 
*         INTO THE SAME PP TO PROCESS THE OUTPUT. 
  
          LDN    ** 
 ROJM     EQU    *-1
*         LDN    1           (*1TO* CALL REQUIRED)
          ZJN    ROJ8        IF *1TO* CALL NOT REQUIRED 
          LDN    /REM/VCPT   MOVE TO *IAF* CP 
          STD    CM+1 
          MONITOR  CCAM 
          LDD    IA          WRITE *1TO* CALL TO INPUT REGISTER 
          CWM    ROJN,ON
          LDD    CM+1 
          LMN    /REM/VCPT
          NJN    ROJ8        IF CHANGE MADE 
 ROJ7.1   MONITOR  DPPM 
 ROJ8     LJM    PPR         EXIT 
  
  
 ROJN     VFD    18/3L1TO,6//REM/VCPT,36/0
          SPACE  4
**        GLOBAL DATA.
  
  
 CPAD     BSSZ   2           CP/PCP ADDRESS 
          TITLE  ROLLOUT FILE WRITE ROUTINES. 
 CPA      SPACE  4,10 
**        CPA - WRITE CONTROL POINT AREA. 
* 
*         CALLS  WNS. 
  
  
 CPA      SUBR               ENTRY/EXIT 
          TLDC   0,CPAD      READ FIRST HALF OF CPA/PCPA
          CRM    BFMS+2,HN
  
*         CLEAR *MS1W* AND *MS2W* IF NO JOB ACTIVITY. 
  
          LDC    1           CONTROL POINT ACTIVE FLAG
*         LDC    100         (EM PROTECT AND END OF JOB STEP) 
 CPAB     EQU    *-1
          LPN    1
          NJN    CPA1        IF JOB ACTIVITY
          STM    BFMS+2+MS1W*5
          STM    BFMS+2+MS2W*5
          LDM    CPAB        SET CORRECT FL FOR ROLLOUT 
          ERRNZ  MCMX/100-100  CHECK FOR CORRECT VALUE OF *MCMX*
          STM    BFMS+2+FLSW*5+4
          NJN    CPA1        IF ECS PROTECTED 
          STM    BFMS+2+ECSW*5+4
 CPA1     LDD    NF          SET NFL SIZE IN ROLLOUT FILE 
          STM    BFMS+2+FLSW*5
          RJM    WNS         WRITE CPA
          TLDC   100,CPAD    READ SECOND HALF OF CPA/PCPA 
          CRM    BFMS+2,HN
          RJM    WNS         WRITE NEXT SECTOR
          UJP    CPAX        RETURN 
 JFL      SPACE  4,10 
**        JFL - WRITE JOB CM FIELD LENGTH.
* 
*         USES   T3.
* 
*         CALLS  ROD, ROM.
* 
*         MACROS ENDMS. 
  
  
 JFL      SUBR               ENTRY/EXIT 
 JFLA     UJN    *+2
          CON    .EMS 
*         ENDMS              (ROLLOUT DEVICE IS ECS)
          LDN    0           SET FWA TO ROLLOUT 
          STD    T3 
          LDC    0           LOAD LWA OF FL TO ROLL 
 JFLB     EQU    *-1
          ZJN    JFLX        IF NO FL TO BE ROLLED
          RJM    ROM         ROLLOUT MEMORY 
*         RJM    ROD         (DEVICE BUFFERED IN ECS) 
 JFLC     EQU    *-1
          UJN    JFLX        RETURN 
 JEC      SPACE  4,10 
**        JEC - WRITE JOB ECS FIELD LENGTH. 
* 
*         ENTRY  (CN - CN+4) = *FLSW*.
* 
*         USES   T3, T8, CM - CM+4, CN - CN+4.
* 
*         CALLS  AEA, ROD, ROM, WNS.
* 
*         MACROS ENDMS. 
  
  
 JEC      SUBR               ENTRY/EXIT 
  
*         ROLLOUT BUFFER SPACE. 
  
 JECG     LDD    FL 
*         LDD    HN          (NO ACTIVITY AND ECS PROTECTED)
          ADC    -MCMX/100
          STD    T3 
          ADN    MCMX/100/2 
          RJM    ROM         ROLLOUT MEMORY 
*         RJM    ROD         (DEVICE BUFFERED IN ECS) 
 JECA     EQU    *-1
  
*         ROLLOUT ECS.
  
          LDN    ZERL        SET UP *MTR* CALL
          CRD    CN 
          LDC    MCMX/4      SET WORD COUNT 
          STD    CN 
          LDN    0           CHECK BUFFER SIZE
          RJM    AEA
          TLDC   0,CPAD      INITIALIZE RESPONSE ADDRESS
          CWD    CN 
          LDD    FL          SET BUFFER ADDRESS 
          ADC    -MCMX/100
          STD    CN+2 
          ADN    MCMX/100/4  SET TOGGLE CONSTANT
          LMD    CN+2 
          STM    JECB 
          LDD    MA          WRITE REQUEST TO *OR*
          CWD    CN 
          SBN    1
          CWM    JECF,ON
          LDN    MCMX/4/1000 ADVANCE ECS ADDRESS
          RJM    AEA
 JEC1     LDD    OA          WAIT *OR* CLEAR
          CRD    CM 
          LDD    CM 
          NJN    JEC1        LOOP TILL CLEAR
 JEC2     TLDC   0,CPAD      CHECK *RCXM/ECXM* RESPONSE WORD
          CRD    CM 
          LDD    CM 
          NJN    JEC2        IF *RCXM/ECXM* INCOMPLETE
          LDD    CM+1 
          ZJN    JEC3        IF NO ECS ERROR
          LDK    JSET        SET ERROR FLAG TO ABORT JOB STEP 
          SBM    ROJK 
          MJN    JEC3        IF HIGHER ERROR FLAG ALREADY SET 
          RAM    ROJK 
 JEC3     LDD    CN+2        TOGGLE BUFFER POINTER
          STD    T3 
          LMC    *
 JECB     EQU    *-1
*         LMC    N           (TOGGLE CONSTANT)
*         LJM    JEC5        (IF LAST BUFFER FULL)
          STD    CN+2 
          TLDC   0,CPAD      SET COMPLETION STATUS
          CWD    CN 
          LDD    MA          WRITE REQUEST
          CWD    CN 
          SBN    1
          CWM    JECF,ON
          LDN    MCMX/4/1000 ADVANCE ECS ADDRESS
          RJM    AEA
          LDD    T3 
          ADN    MCMX/100/4 
          STD    T8 
  
*         ROLLOUT ECS BUFFER. 
  
 JEC4     LDD    RA 
          ADD    T3 
          SHN    6
          CRM    BFMS+2,HN
          LDC    BFMS 
          RJM    WNS
          AOD    T3 
          LMD    T8 
          NJN    JEC4        IF NOT END OF ECS BLOCK
          LJM    JEC1        GET NEXT BLOCK OF ECS
  
 JEC5     UJN    *+2
  
 JECC     EQU    *-1
          CON    .EMS 
*         ENDMS              (ROLLOUT DEVICE IS ECS)
          LDD    T3 
          SHN    6
          ADD    CN 
          SHN    -6 
          RJM    ROM         ROLLOUT MEMORY 
*         RJM    ROD         (DEVICE BUFFERED IN ECS) 
 JECD     EQU    *-1
  
*         ROLLOUT LAST PART OF CM.
  
          LDM    UERR        CLEAR NO FLUSH FLAG
          LPC    -EPNF
          STM    UERR 
 JECH     LDD    FL 
*         LDD    HN          (NO ACTIVITY AND ECS PROTECTED)
          SBN    MCMX/100/2  SET FWA FOR ROLLOUT
          STD    T3 
          ADN    MCMX/100/2 
          RJM    ROM         ROLLOUT MEMORY 
*         RJM    ROD         (DEVICE BUFFERED IN ECS) 
 JECE     EQU    *-1
          LJM    JECX        RETURN 
  
  
 JECF     VFD    12/RCXM     EM TRANSFER FUNCTION PROCESSED BY *MTR*
          VFD    29/0 
          VFD    1/0         FUNCTION TYPE = READ 
          VFD    18/0        ALTERNATE RESPONSE ADDRESS 
          TITLE  SUBROUTINES. 
 AEA      SPACE  4,10 
**        AEA - ADVANCE EM ADDRESS FOR *RCXM/ECXM* FUNCTION.
* 
*         ENTRY  (A) = INCREMENT. 
*                (AEAA) = FLE.
*                (CN - CN+4) = *RCXM*/*ECXM* PARAMETER WORD.
* 
*         EXIT   WORD COUNT ADJUSTED IF LESS THAN MCMX/4 WORDS TO GO. 
*                *JECB* SET TO BYPASS NEXT READ IF FLE REACHED. 
* 
*         USES   CN, CN+4.
  
  
*         LDD    *LJMI* 
 AEA1     LDD    HN          SET *LJMI* TO BYPASS NEXT READ 
          STM    JECB-1 
          LDC    JEC5 
          STM    JECB 
  
 AEA      SUBR               ENTRY/EXIT 
          RAD    CN+4 
          SHN    -14
          RAD    CN+3 
          SHN    14 
          ADD    CN+4 
 AEAA     ADC    ** 
*         ADC    -FLE 
          PJN    AEA1        IF FLE REACHED 
          SHN    11 
          ADD    CN 
          SHN    11 
          MJN    AEAX        IF FULL BUFFER REMAINS 
          ZJN    AEAX        IF FULL BUFFER REMAINS 
          SHN    11 
          STD    CN 
          UJN    AEAX        RETURN 
 CJS      SPACE  4,20 
**        CJS - CHANGE JOB STATUS.
* 
*         DETERMINE NEW JOB STATUS AND PLACE IT IN THE SYSTEM SECTOR
*         EJT IMAGE AND THE *UTEM* PARAMETER BLOCK TO BE USED TO UPDATE 
*         THE EJT ENTRY IN CM.  THE *UTEM* FUNCTION WILL BE ISSUED
*         AFTER WRITING THE ROLLOUT FILE. 
* 
*         ENTRY  (EO) = EJT ORDINAL.
*                (EJSS - EJSS+19) = EJT ENTRY.
*                (NF) = NFL.
* 
*         USES   T1, T2, CM - CM+4, CN - CN+4, FS - FS+4. 
* 
*         CALLS  CET, RJC.
* 
*         MACROS MONITOR, NFA.
  
  
 CJS      SUBR               ENTRY/EXIT 
  
*         CHECK FOR CORRECT JOB STATUS AND CLEAR THE FOLLOWING FIELDS 
*         IN THE EJT ENTRY - JOB ADVANCE FLAG, JOB STATUS, INHIBIT JOB
*         ADVANCE FLAG. 
  
          LDM    EJSS+5*JSNE+4
          SHN    -1 
          LPN    37 
          LMK    EXJS 
          STD    T2 
          ZJN    CJS1        IF JOB STATUS IS CORRECT 
          LMK    PCJS&EXJS
          ZJN    CJS1        IF JOB STATUS CORRECT
          LDN    0           INDICATE NO ERROR FLAG TO SET
          STD    CM+2 
          LDC    *           SET ERROR DETECTION ADDRESS
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
 CJS1     LDM    EJSS+5*JSNE+4
          LPC    7600 
          STM    EJSS+5*JSNE+4
          RAM    CROF 
  
*         CHECK FOR PRE-DETERMINED JOB STATUS.  IF THE JOB STATUS HAS 
*         ALREADY BEEN SELECTED, IGNORE THE ROLLOUT CONTROL FLAGS IN
*         *STSW*. 
  
          LDC    ** 
 CJSA     EQU    *-1         (SELECTED JOB STATUS)
          NJN    CJS6        IF JOB STATUS ALEADY DETERMINED
  
*         USE THE ROLLOUT CONTROL FLAGS TO DETERMINE WHAT JOB STATUS TO 
*         ASSIGN THE JOB. 
  
          ERRNZ  /CPS/ROSU/2-/CPS/ROSC   CHECK ROLLOUT FLAG POSITIONS 
          ERRNZ  /CPS/ROSC/2-/CPS/RODS
          ERRNZ  /CPS/RODS/2-/CPS/ROTE
          ERRNZ  /CPS/ROTE/2-/CPS/ROSR
  
          LDM    ERSA 
          SHN    -3 
          LPN    17 
          ZJN    CJS5        IF JOB SCHEDULER ROLLOUT 
          SHN    -1 
          ZJN    CJS4        IF TIMED/EVENT ROLLOUT 
          SHN    -1 
          ZJN    CJS3        IF DISABLED JOB STATE REQUESTED
          SHN    -1 
          ZJN    CJS2        IF SCP ROLLOUT 
          LDN    SUJS&SOJS   SET JOB STATUS = *SUJS*
 CJS2     LMN    SOJS&DOJS   SET JOB STATUS = *SOJS*
 CJS3     LMN    DOJS&TOJS   SET JOB STATUS = *DOJS*
 CJS4     LMN    TOJS&ROJS   SET JOB STATUS = *TOJS*
 CJS5     LMN    ROJS        SET JOB STATUS = *ROJS*
 CJS6     STD    T1          SAVE JOB STATUS AS INDEX 
          SHN    1           STORE JOB STATUS IN SYSTEM SECTOR EJT
          RAM    EJSS+5*JSNE+4
          LPN    76 
          RAM    CROF 
  
*         GO TO JOB STATUS PROCESSOR. 
  
          LDM    TJSP,T1     GET PROCESSOR ADDRESS
          STD    T1 
          LJM    0,T1        GO TO PROCESSOR
  
*         PROCESS *ROJS* JOB STATUS.
  
 CJS7     LDD    T2 
          ZJN    CJS8        IF NOT ROLLING FROM A PCP
          LDM    EJSS+5*SCHE+3
          STD    T1 
          LDM    EJSS+5*SCHE+4
          STD    T2 
          UJN    CJS8.1      SET ENTRY TIME INTO EJT DATA BLOCK 
  
*         CALCULATE ENTRY TIME INTO QUEUE.
  
 CJS8     LDM    EJSS+5*SCHE+4  GET SCHEDULING PRIORITY FOR *CET* 
          STD    T1 
          LDM    EJSS+5*SCLE GET SERVICE CLASS FOR *CET*
          SCN    77 
          SHN    6
          LMK    EXQT 
          RJM    CET         CALCULATE ENTRY TIME 
  
*         PLACE ENTRY TIME IN SYSTEM SECTOR EJT ENTRY AND IN EJT DATA 
*         BLOCK.
  
 CJS8.1   LDD    T1 
          STM    EJSS+5*SCHE+3
          STM    CROH+1 
*         UJN    *+2         (*SUJS* JOB STATUS)
 CJSB     EQU    *-2
          LDD    T2 
          STM    EJSS+5*SCHE+4
          STM    CROH+2 
*         UJN    *+2         (*SUJS* JOB STATUS)
 CJSC     EQU    *-2
          LJM    CJSX        RETURN 
  
*         PROCESS *TOJS* JOB STATUS.
  
 CJS9     TLDC   TERW,CPAD   MOVE TIMED/EVENT ROLLOUT DESCRIPTOR
          CRD    CM 
          LDM    EJSS+5*SCHE+2
          LMD    CM+2 
          LPN    77 
          LMM    EJSS+5*SCHE+2
          STM    EJSS+5*SCHE+2
          LPN    77 
          STM    CROH 
          LDD    CM+3 
          STM    EJSS+5*SCHE+3
          STM    CROH+1 
          LDD    CM+4 
          STM    EJSS+5*SCHE+4
          STM    CROH+2 
          LDD    CM+2 
          SCN    77 
          STD    CM+2 
          LDN    0
          STD    CM+3 
          STD    CM+4 
          TLDC   TERW,CPAD
          CWD    CM 
 CJS10    LJM    CJSX        RETURN 
  
*         PROCESS *IOJS* JOB STATUS.
  
 CJS11    LDM    CROG+1      SAVE TERMINAL OUTPUT TRACK 
          STM    CROH+1 
          LDN    3           SET SECTOR 
          STM    CROH+2 
          UJN    CJS10       CLEAR ROLLOUT CONTROL FLAGS
  
*         PROCESS *SUJS* JOB STATUS.
  
 CJS12    LDM    CROF        SET *DTCS* CONNECTION STATUS 
          LPC    4177 
          LMK    DTCS*200 
          STM    CROF 
          LDD    DI 
          STM    CJSB 
          STM    CJSC 
          STM    CROE        AVOID TERMINAL TABLE UPDATE / *1TO* CALL 
          LDM    EJSS+5*SCLE GET SERVICE CLASS
          SHN    -6 
          STD    T1          SAVE PRE-DETACH SERVICE CLASS
          RJM    RJC         CALCULATE JCB ADDRESS
          ADN    SVJT 
          CRD    CM 
          LDC    RTCL 
          CRD    FS 
          LDD    CM+4        CALCULATE SUSPENSION TIME-OUT VALUE
          SHN    3
          ADD    FS+1 
          STM    CROH+2      STORE TIMEOUT VALUE IN EJT DATA BLOCK
          SHN    -14
          ADD    FS 
          STM    CROH+1 
          LDM    EJSS+5*JSNE+4  CHECK CONNECTION STATUS 
          SHN    -7 
          LPN    17 
          LMK    DTCS 
          ZJN    CJS13       IF JOB ALREADY DETACHED
          NFA    RC1N        SET PRE-DETACH SERVICE CLASS 
          CRD    CN 
          LDD    CN+2 
          SCN    77 
          LMD    T1 
          STD    CN+2 
          NFA    RC1N        REWRITE RECOVERY WORD
          CWD    CN 
 CJS13    LJM    CJS8        SET ENTRY TIME INTO QUEUE
  
*         PROCESS *PCJS* JOB STATUS.
  
 CJS14    LDD    DI          DISABLE */3RP/TER* CALL
          STM    CROE 
          UJN    CJS13       SET ENTRY TIME INTO QUEUE
          SPACE  4,10 
**        TJSP - TABLE OF JOB STATUS PROCESSORS.
* 
*         EACH TABLE ENTRY CONTAINS THE PROCESSOR ADDRESS CORRESPONDING 
*         TO THE JOB STATUS.
  
  
 TJSP     INDEX 
          INDEX  ROJS,CJS7
          INDEX  SOJS,CJSX
          INDEX  TOJS,CJS9
          INDEX  IOJS,CJS11 
          INDEX  DOJS,CJSX
          INDEX  SUJS,CJS12 
          INDEX  ERJS,CJSX
          INDEX  PCJS,CJS14 
          INDEX  MXJS 
 CPC      SPACE  4,15 
**        CPC - CHECK PCP ROLLOUT COMPLETION. 
* 
*         EXIT   (A) .LT. 0 IF NOT PCP ROLLOUT. 
*                (A) = 0 IF SIMPLE PCP ROLLOUT. 
*                (A) .GT. 0 IF COMPOUND ROLLOUT.
*                PCP ASSIGNMENT CLEARED IF SIMPLE PCP ROLLOUT.
*                PCP ASSIGNMENT TRANSFERRED TO CP JOB IF COMPOUND 
*                  ROLLOUT. 
*                JOB INTERLOCK CLEARED IF PCP ROLLOUT.
* 
*         USES   CM - CM+4, CN - CN+4.
* 
*         MACROS MONITOR, SFA.
  
  
 CPC1     LCN    0           FLAG NOT PCP ROLLOUT 
  
 CPC      SUBR               ENTRY/EXIT 
          LDD    IR+2 
          LMN    3
          NJN    CPC1        IF NOT PCP ROLLOUT 
          LDC    /CPS/ALCS+0 SET ALTERNATE CP/PCP FLAG
          STD    CM+1 
          MONITOR  CCAM      CLEAR ALTERNATE PCP ASSIGNMENT 
          TLDC   TFSW,CPAD
          CRD    CN 
          LDC    0
 CPCA     EQU    *-1         (CP JOB EJT ORDINAL IF COMPOUND ROLLOUT) 
          STD    CN 
          TLDC   TFSW,CPAD   CLEAR OR TRANSFER PCP ASSIGNMENT 
          CWD    CN 
          SFA    EJT,EO 
          ADK    JSNE 
          CRD    CM 
          SOD    CM+4        CLEAR JOB INTERLOCK
          SFA    EJT,EO 
          ADK    JSNE 
          CWD    CM 
          LDD    CN          SET SIMPLE/COMPOUND ROLLOUT STATUS 
          UJN    CPCX        RETURN 
 CRO      SPACE  4,10 
**        CRO - COMPLETE ROLLOUT. 
* 
*         ENTRY  (EO) = EJT ORDINAL.
*                (NF) = NFL ASSIGNED. 
*                (AEAA) = ECS FL ASSIGNED.
* 
*         USES   CM - CM+4, CN - CN+4, FS - FS+4, T1 - T5.
* 
*         CALLS  ISR, /3RP/TER. 
  
  
 CRO      SUBR               ENTRY/EXIT 
          LDD    IR+2 
          SBN    2
          ZJP    CRO4        IF PSEUDO-ROLLOUT
          TLDC   FLIW,CPAD
          CRD    CM 
  
*         DETERMINE IF CM/ECS FL FIELDS OF *UTEM* PARAMETER BLOCK HAVE
*         ALREADY BEEN SET. 
  
          LDC    ** 
 CROB     EQU    *-1
          NJN    CRO3        IF CM/ECS FL FIELDS ALREADY SET
  
*         CALCULATE ROLLIN CM/ECS FL AND SAVE AMOUNTS IN *UTEM* 
*         PARAMETER BLOCK.
  
          LDD    CM+4        CALCULATE ROLLIN CM FL 
          NJN    CRO1        IF CM FL/NFL INCREASE PENDING
          LDC    ** 
 CROC     EQU    *-1         (CM FL)
          ADD    NF 
 CRO1     STM    CROJ+1      STORE ROLLIN CM FL IN EJT DATA BLOCK 
          LDC    ** 
 CROD     EQU    *-1         (EM FL - ZERO ON *DMP=* PARTIAL DUMP)
          STM    CROJ        STORE ROLLIN EM FL IN EJT DATA BLOCK 
          SBD    CM+3 
          PJN    CRO3        IF PENDING ECS FL LESS THAN CURRENT ECS FL 
          LDD    CM+3 
          STM    CROJ        STORE NEW ROLLIN EM FL IN EJT DATA BLOCK 
 CRO3     LDN    0           CLEAR CM/ECS INCREASE REQUESTS 
          STD    CM+3 
          STD    CM+4 
          TLDC   FLSW,CPAD
          CRD    CN 
          ADK    FLIW-FLSW
          CWD    CM 
          LDN    0
          STD    CN+1 
          TLDC   FLSW,CPAD
          CWD    CN 
  
*         UPDATE THE EJT ENTRY AS FOLLOWS - 
*                UPDATE CONNECTION STATUS.
*                CHANGE JOB STATUS. 
*                STORE ROLLOUT FILE ADDRESS.
*                SET SCHEDULE FIELD.
*                SAVE ERROR FLAG (IF ANY).
*                CLEAR FORCED ROLLIN. 
*                SET ROLLIN CM/ECS FL.
  
 CRO4     SFA    EJT,EO 
          ADK    JSNE 
          CRD    T1 
          ADK    SCHE-JSNE
          CRD    CM 
          ADK    PRFE-SCHE
          CRD    CN 
          ADK    SCLE-PRFE
          CRD    FS 
          LDM    CROF 
          STD    T1+4 
          LDD    CM+2        STORE SCHEDULING FIELD DATA
          SCN    77 
          LMM    CROH 
          STM    CROH 
          LDM    CROI        STORE ERROR FLAG 
          STD    CN+1 
          LDD    FS          CLEAR FORCED ROLLIN FLAG 
          SCN    20 
          STD    FS 
          LDM    CROJ        STORE EM FL
          STD    FS+3 
          LDM    CROJ+1      STORE CM FL
          STD    FS+4 
          SFA    EJT,EO 
          ADK    JSNE 
          CWD    T1 
          ADK    SCHE-JSNE
          CWM    CROG,ON
          ADK    PRFE-SCHE-1
          CWD    CN 
          ADK    SCLE-PRFE
          CWD    FS 
  
*         RELEASE STORAGE.
  
          LDN    0           RELEASE CM AND EM FL 
          RJM    ISR
  
*         TERMINATE ROLLOUT.
  
          RJM    /3RP/TER    TERMINATE ON-LINE INTERACTIVE JOB
*         UJN    *+2         (SUSPENDED, NOT ON-LINE OR PSEUDO-ROLL)
 CROE     EQU    *-2
          LJM    CROX        RETURN 
  
  
*         EJT ENTRY DATA BLOCK. 
  
 CROF     VFD    1/0         SCP/UCP CONNECTION STATUS
          VFD    4/0         INTERACTIVE CONNECTION STATUS
          VFD    1/1         JOB ADVANCE FLAG 
          VFD    5/0         JOB STATUS 
          VFD    1/1         JOB INTERLOCK FLAG 
  
 CROG     CON    0           ROLLOUT FILE EST ORDINAL 
          CON    0           ROLLOUT FILE FIRST TRACK 
  
 CROH     CON    0,0,0       SCHEDULING DATA
          ERRNZ  CROH-CROG-2 CELLS MUST BE CONTIGUOUS 
  
 CROI     CON    0           ERROR FLAG 
  
 CROJ     CON    0           ROLLIN EM FL 
          CON    0           ROLLIN CM FL 
 ERS      SPACE  4,10 
**        ERS - ENTER ROLLOUT STATUS. 
* 
*         ENTRY  (A) = 0, IF TO CLEAR ROLLOUT REQUESTED STATUS. 
*                (A) = 1, IF TO SET ROLLOUT REQUESTED STATUS. 
* 
*         EXIT   (A) .GE. 0.
* 
*         USES   T1, CM - CM+4. 
  
  
 ERS      SUBR               ENTRY/EXIT 
          STD    T1          SAVE ROLLOUT REQUEST STATUS
          TLDC   STSW,CPAD   READ ROLLOUT CONTROL FLAGS 
          CRD    CM 
          LDC    ** 
 ERSA     EQU    *-1         (ROLLOUT CONTROL FLAGS AT TIME OF ROLLOUT) 
          SCN    3           CLEAR CPU STATUS FLAG AND ROLLOUT FLAG 
          LMD    T1          SET/CLEAR ROLLOUT REQUESTED FLAG 
          STD    CM+2 
          TLDC   STSW,CPAD
          CWD    CM 
          UJN    ERSX        RETURN 
 FTB      SPACE  4,10 
**        FTB - FILL TRACK BUFFER.
* 
*         ENTRY  (FTBA - FTBA+1) = TRT POINTER. 
*                (T6) = LAST TRACK USED.
* 
*         EXIT   (A) .NE. 0.
*                (NT) = TBUF. 
*                TRACK BUFFER REFILLED. 
* 
*         USES   T0, T1, CM - CM+4, NT. 
  
  
 FTB      SUBR               ENTRY/EXIT 
          LDC    TBUF        SET FWA OF TRACK BUFFER
          STD    NT 
          STD    T0 
          LDD    T6 
          SHN    6
 FTB1     SHN    -6 
          STI    T0 
 FTB2     SHN    -2 
 FTBA     ADC    TRTS 
          CRD    CM 
          LDI    T0          SET BYTE INDEX 
          LPN    3
          STD    T1 
          AOD    T0          BUMP INDEX 
          LMC    TBUFL-1     CHECK FOR END OF BUFFER
          ZJN    FTB3        IF TRACK BUFFER FULL 
          LDM    CM,T1
          SHN    6
          MJN    FTB1        IF NOT EOI TRACK 
          LCN    0           INHIBIT REFILLING TRACK BUFFER 
 FTB3     STI    T0          SET END OF BUFFER
          AOD    NT 
          UJN    FTBX        RETURN 
 ISR      SPACE  4,15 
**        ISR - ISSUE STORAGE REQUEST.
* 
*         ENTRY  (A) = 5/0, 1/F, 12/K 
*                      F = 0  IF CM REQUEST.
*                        = 1  IF EM REQUEST.
*                      K = AMOUNT OF STORAGE REQUESTED.  IF BOTH *F*
*                          AND *K* ARE ZERO, ALL CM AND EM WILL BE
*                          RELEASED.
*                (IR+4) = PCP NUMBER IF PSEUDO-ROLLOUT. 
* 
*         USES   T1, CM+1 - CM+3, FN - FN+4.
* 
*         MACROS MONITOR. 
  
  
 ISR      SUBR               ENTRY/EXIT 
          STD    T1          SET STORAGE AMOUNT 
 ISR1     STD    CM+1 
          SHN    -14
          STD    CM+2        SET STORAGE TYPE 
          RAD    T1 
          LDD    IR+4        SET PCP NUMBER (IN CASE OF PSEUDO-ROLLOUT) 
          STD    CM+3 
          LDN    ** 
*         LDN    1           (PSEUDO-ROLLOUT) 
 ISRA     EQU    *-1
          SHN    12 
          RAD    CM+2 
          LPN    1
          ZJN    ISR3        IF CM REQUEST
          TLDC   ECSW,CPAD   READ EM CONTROL WORD 
          CRD    FN 
          LDD    FN+4 
 ISR2     ZJN    ISRX        IF NO EM ASSIGNED
 ISR3     MONITOR  RSTM 
          LDD    T1 
          NJN    ISRX        IF PREVIOUS REQUEST EM OR CM REMAINS 
          LDC    1S12 
          UJN    ISR1        RELEASE EM FL
 ISS      SPACE  4,10 
**        ISS - INITIALIZE SYSTEM SECTOR. 
* 
*         USES   CM - CM+4, CN - CN+4.
* 
*         MACROS NFA. 
  
  
 ISS      SUBR               ENTRY/EXIT 
          TLDC   JCIW,CPAD
          CRD    CN 
          ADN    TFSW-JCIW
          CRD    CM 
          ADK    RFCW-TFSW   READ DM* FILE POINTERS 
          CRM    DFSS,ON
          ADK    SSCW-RFCW-1 READ SCP CONNECTION INDICATORS 
          CRM    COSS,ON
  
          ERRNZ  RC1N-RC2N-1 ENSURE *RC1N*/*RC2N* CONTIGIOUS
          ERRNZ  R2SS-R1SS-5 ENSURE *R1SS*/*R2SS* CONTIGUOUS
  
          NFA    RC1N        OBTAIN ADDRESS OF FIRST RECOVERY WORD
          CRM    R1SS,ON
          CRM    R1SS+5,ON
          LDD    CM+1 
          ZJN    ISS1        IF NO PRIMARY FILE 
          NFA    CM+1,R 
          CRM    PFSS,ON     STORE PRIMARY FILE FNT IN SYSTEM SECTOR
  
*         STORE INPUT FILE DISK ADDRESS IN SYSTEM SECTOR. 
  
 ISS1     NFA    FNTN 
          ADN    FSTL 
          CRM    IFSS,ON
  
*         STORE SERVICE CLASS VALIDATION MASK.
  
          NFA    SCVN 
          CRM    VMSS-2,ON
  
*         SET *SISS* FIELD. 
  
          LDD    CN+2 
          ADC    -LSSI-1
          MJN    ISS4        IF JOB IS NOT A SUBSYSTEM
          LMN    DSSI-LSSI-1
          NJN    ISS2        IF NOT DEADSTART SEQUENCING JOB
          LCN    7777-MSSI
          ERRPL  7677-MSSI   ENSURE *LCN* MAY BE USED 
          UJN    ISS3        STORE SSID IN SYSTEM SECTOR
  
 ISS2     LDD    CN+2        SAVE SSID
 ISS3     STM    SISS 
  
*         PLACE DAYFILE BUFFER POINTERS IN SYSTEM SECTOR
  
 ISS4     NFA    DAPN+2 
          CRM    DBSS,ON
  
*         SET FILE NAME AND TYPE FOR JOB ROLLOUT.  *WSS* RESETS *FNSS*
*         FROM THE LOCAL FNT ENTRY FOR *DMP=* ROLLOUT.
  
          LDM    EJSS+5*JSNE+0  SET JSN AS FILE NAME
          STM    FNSS+0 
          LDM    EJSS+5*JSNE+1
          STM    FNSS+1 
          LDC    ROFT*100    SET FILE TYPE
          STM    FNSS+4 
          LJM    ISSX        RETURN 
 ITF      SPACE  4,10 
**        ITF - ISSUE *TSEM* FUNCTION.
* 
*         ENTRY  *TSEM* PARAMETERS WRITTEN TO MESSAGE BUFFER. 
* 
*         EXIT   (A) = 0, IF IAF INACCESSIBLE OR ERROR. 
*                (A) .NE. 0, IF REQUEST COMPLETE. 
* 
*         USES   T1.
* 
*         MACROS DELAY, MONITOR, PAUSE. 
  
  
 ITF      SUBR               ENTRY/EXIT 
 ITF1     MONITOR  TSEM 
          LDD    CM+1 
          ZJN    ITFX        IF IAF INACCESSIBLE OR ERROR 
          LMC    7777 
          NJN    ITFX        IF REQUEST COMPLETE
          PAUSE  ST          *TSEM* QUEUE FULL - DELAY AND RETRY
          LDC    3600 
          STD    T1 
 ITF2     DELAY 
          SOD    T1 
          ZJN    ITF1        IF TIME TO REISSUE REQUEST 
          UJN    ITF2        CONTINUE TO DELAY
 MSR      SPACE  4,20 
**        MSR - PROCESS MASS STORAGE ERROR OR INSUFFICIENT SPACE. 
* 
*         ENTRY  (A) .GE. 0 IF INSUFFICIENT SPACE FOR ROLLOUT.
*                    .LT. 0 IF MASS STORAGE ERROR.
* 
*         EXIT   TO */3RQ/MSE* TO PROCESS MASS STORAGE ERROR. 
* 
*         MACROS EXECUTE. 
  
  
 MSR      BSS    0           ENTRY
          SHN    0-21        SAVE MASS STORAGE ERROR FLAG 
          RAM    MSRA 
          EXECUTE  3RQ       PROCESS MASS STORAGE ERROR 
          LDN    **          RETURN ERROR STATUS
 MSRA     EQU    *-1
          LJM    /3RQ/MSE    PROCESS MASS STORAGE ERROR 
  
 MSRE     CON    0,0         TERMINAL OUTPUT POINTER ADDRESS
 MSRF     BSS    5           TERMINAL OUTPUT POINTER
 MSRG     CON    0           ORIGINAL ROLLOUT CONTROL FLAGS 
 MSRH     BSS    5           ORIGINAL *TERW* IMAGE
 RMS      SPACE  4,20 
**        RMS - REQUEST MASS STORAGE SPACE. 
* 
*         ENTRY  (NF) = NUMBER OF NFL SECTORS.
*                (SC) = OUTPUT BUFFER SECTOR COUNT (EXCLUDING EOR 
*                       SECTOR) FOR INTERACTIVE JOBS. 
*                     = 0 FOR NON-INTERACTIVE JOBS. 
*                (FL) = JOB CM FIELD LENGTH (NFL NOT INCLUDED). 
* 
*         EXIT   (NT) = *TBUF*. 
*                (TBUF) = TRACKS ASSIGNED.
* 
*         USES   T5, T6, CM - CM+4, CN - CN+4, FS - FS+2. 
* 
*         CALLS  ERS, FTB, /3RS/UFS.
* 
*         MACROS ISTORE, MONITOR, SFA.
* 
*         NOTE - EXIT TO *MSR* IF INSUFFICIENT MASS STORAGE SPACE FOR 
*         ROLLOUT FILE. 
  
  
 RMS      SUBR               ENTRY/EXIT 
  
*         COMPUTE SECTOR COUNT FOR ROLLOUT. 
  
          LDM    CROD        EM FL / *UEBS* (ZERO ON *DMP=* PARTIAL)
 RMSN     SHN    3
*         SHN    3+UESC 
          ADC    0           NFL SECTOR COUNT (ZERO IF *DMP=* ROLLOUT)
 RMSH     EQU    *-1
 RMSA     ADN    4           CPA SECTORS, SYSTEM SECTOR, EOI SECTOR 
*         ADN    5           (IF INTERACTIVE JOB + EMPTY OUTPUT BUFFER) 
*         ADN    5           (INTERACTIVE JOB + SECTOR OVERFLOW)
          ADD    SC          TERMINAL OUTPUT SECTOR COUNT 
          ADC    FL 
*         ADC    0           (NO ACTIVITY)
*         ADC    MCMX/100    (NO ACTIVITY AND ECS PROTECTED)
 RMSB     EQU    *-1
          STD    CM+4        SET SECTOR COUNT 
          STM    RMSL+1 
          SHN    -14
          STD    CM+3 
          RAM    RMSL 
          LDM    ERSA        CHECK FOR TIMED EVENT ROLLOUT
          LPC    110
          ZJN    RMS0        IF NOT SUSPENDED OR TIMED EVENT
          LDN    0
          UJN    RMS1        SKIP SECONDARY ROLLOUT SELECTION 
  
 RMS0     LDN    IPRL        READ SECONDARY ROLLOUT SECTOR THRESHOLD
          CRD    CN 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          SBD    CN+1 
          SHN    -21
          ZJN    RMS1        IF .GT. THRESHOLD
          LDN    /CPS/SROS&/CPS/ROLS
 RMS1     LMN    /CPS/ROLS
          STD    CM+2 
          LDN    ** 
*         LDN    /CPS/ROLS   (JOB CONNECTED TO *SMF*) 
 RMSK     EQU    *-1         (SET BY *PRESET*)
          ZJN    RMS2        IF NOT *IAOT* JOB CONNECTED TO *SMF* 
          STD    CM+2 
  
*         RESERVE ROLLOUT FILE SPACE. 
  
 RMS2     LDM    CROD 
          ZJN    RMS5        IF NO ROLLOUT OF EM
          LDD    FL 
          ERRNZ  MCMX/100-100  ENSURE DIRECT CELL *HN* MAY BE USED
          SBD    HN 
          PJN    RMS5        IF ENOUGH CM TO ROLL ECS 
          LDK    SWET        SET SYSTEM SOFTWARE ERROR FLAG 
          STD    CM+2 
          LDC    *           SET DETECTION ADDRESS
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
*         LDN    0           CLEAR ROLLOUT REQUESTED FLAG 
          RJM    ERS
 RMS3     LJM    MSR         PROCESS ERROR CONDITION
  
 RMS5     LDN    0           CLEAR EQUIPMENT
          STD    CM+1 
 RMSL     LDC    0           SECTOR COUNT 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDC    ** 
 RMSG     EQU    *-1         (JOB ACCESS LEVEL) 
          ADN    40 
          SHN    6
          RAD    CM+3 
          MONITOR  RTCM      ASSIGN MASS STORAGE SPACE
          LDD    CM+4 
          NJN    RMS6        IF SUFFICIENT MASS STORAGE SPACE 
          LDC    ** 
 RMSM     EQU    *-1
          NJN    RMS3        IF SECOND ATTEMPT MADE 
          STD    CM+2        CLEAR *MSAL* DEVICE SELECTION
          AOM    RMSM        FLAG SECOND ATTEMPT
          UJN    RMS5        RETRY *RTCM* REQUEST 
  
 RMS6     STD    T6          SET TRACK
          STM    EJSS+5*SCHE+1  STORE TRACK IN EJT
*         STM    FS+1        (*DMP=* CALL)
 RMSC     EQU    *-1
          STM    CROG+1      STORE FIRST TRACK IN EJT DATA BLOCK
*         STM    FS+2        (*DMP=* CALL)
 RMSD     EQU    *-1
          LDD    CM+1        SET EST ORDINAL
          STD    T5 
          STM    EJSS+5*SCHE STORE EQUIPMENT IN EJT 
*         STM    FS          (*DMP=* CALL)
 RMSE     EQU    *-1
          STM    CROG        STORE EST ORDINAL IN EJT DATA BLOCK
 RMSF     RJM    /3RS/UFS    UPDATE DM* FILE STATUS 
*         UJN    *+2         (NON-DMP= CALL)
  
*         READ TRACK CHAIN. 
  
          SFA    EST,T5      READ MST POINTER 
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4        SET FWA OF TRT - TRACK BIT 
          SHN    3
          ADN    DILL 
          CRD    CM 
          ADN    TRLL-DILL
          CRD    CN 
          LDD    CN+3 
          LPN    77 
          SHN    14 
          LMD    CN+4 
          SBD    TH          4000S-2
          STM    FTBA+1 
          SHN    -14
          RAM    FTBA 
          LDD    CM+3        CHECK FOR DEVICE BUFFERED IN ECS 
          SHN    21-13
          PJP    RMS10       IF ROLLOUT FILE NOT ON ECS BUFFERED DEVICE 
          SHN    13-21-6
          LPN    7
          LMN    4
          ZJN    RMS8        IF UEM 
          LDD    CM+3 
          LPN    7
          ZJN    RMS9        IF NO DDP PATH PRESENT 
 RMS8     LDK    SSTL 
          CRD    CN 
          LDD    CN+3 
          SHN    21-11
          PJN    RMS10       IF DDP ROLLOUT PATH ENABLED
 RMS9     LDC    ROD         SET UP DIRECT ROLLOUT
          STM    JFLC 
          STM    JECA 
          STM    JECD 
          STM    JECE 
          LDD    CM+3 
          SHN    21-12
          PJN    RMS11       IF ECS 
          ISTORE ROJJ,(UJN ROJ4)
          LDM    CROD 
          ZJN    RMS12       IF NO ROLLOUT OF EM
          LDC    EPNF        SET NO FLUSH FOR CM ROLL 
          STM    ROJI+1 
 RMS10    UJN    RMS12       CONTINUE 
  
 RMS11    LDC    RJMI 
          STM    JFLA 
          STM    JECC 
 RMS12    RJM    FTB         FILL TRACK BUFFER
          LJM    RMSX        RETURN 
 ROD      SPACE  4,15 
**        ROD - ROLLOUT USING DIRECT TRANSFER TO MASS STORAGE.
* 
*         ENTRY  (A) = SECTOR COUNT.
*                (T3) = SECTOR OFFSET FROM RA.
* 
*         EXIT   TO *MSR* IF MASS STORAGE ERROR.
* 
*         USES   T8, CM+3 - CM+4. 
* 
*         CALLS  DDT, RTL.
  
  
 ROD      SUBR               ENTRY/EXIT 
          STD    T8          SAVE SECTOR COUNT
          LDD    T3          SET FWA OF ROLLOUT 
          SHN    6
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDD    T8          SET SECTOR COUNT 
          SBD    T3 
          LMC    /CPS/WDDS*10000  SET WRITE FUNCTION
          RJM    DDT         WRITE DIRECT TO MASS STORAGE 
          MJP    MSR         IF MASS STORAGE ERROR
          RJM    RTL         RESYNC TRACK LIST
          UJP    RODX        RETURN 
 ROM      SPACE  4,10 
**        ROM - ROLLOUT MEMORY. 
* 
*         ENTRY  (A) = SECTOR COUNT.
*                (T3) = SECTOR OFFSET FROM RA.
* 
*         USES   T3, T8.
* 
*         CALLS  WNS. 
  
  
 ROM      SUBR               ENTRY/EXIT 
          STD    T8          SAVE NUMBER OF SECTORS TO ROLL 
 ROM1     LDD    RA 
          ADD    T3 
          SHN    6
          CRM    BFMS+2,HN
          RJM    WNS         WRITE NEXT SECTOR TO ROLLOUT FILE
          AOD    T3          INCREMENT COUNT OF SECTORS ROLLED
          LMD    T8 
          NJN    ROM1        IF MORE SECTORS TO WRITE 
          UJP    ROMX        RETURN 
 RTL      SPACE  4,15 
**        RTL - RESYNC TRACK LIST.
* 
*         ENTRY  (T6) = CURRENT TRACK.
*                (NT) = TRACK LIST INDEX. 
* 
*         EXIT   (A) = 0. 
*                (T6) = CURRENT TRACK.
*                (NT) = CURRENT TRACK LIST INDEX. 
* 
*         USES   NT, T6, T8.
* 
*         CALLS  FTB. 
  
  
 RTL1     LDI    NT 
          STD    T6 
          AOD    NT 
          LDI    NT 
          NJN    RTL2        IF NEXT TRACK AVAILABLE
          RJM    FTB         FILL TRACK BUFFER
 RTL2     LDD    T8 
 RTL3     LMM    -1,NT
          NJN    RTL1        IF NOT CURRENT TRACK 
  
 RTL      SUBR               ENTRY/EXIT 
          LDD    T6          SET CURRENT TRACK
          STD    T8 
          UJN    RTL3        RESYNC TRACK LIST INDEX
 SEF      SPACE  4,15 
**        SEF - SET ERROR FLAG. 
* 
*         ENTRY  (A) = 1/ F,11/ ERROR FLAG. 
*                (EO) = EJT ORDINAL (IF F=0 SPECIFIED). 
* 
*         EXIT   (A) = 0. 
* 
*         USES   CM+1 - CM+7. 
* 
*         MACROS MONITOR, SFA.
  
  
 SEF      SUBR               ENTRY/EXIT 
          ZJN    SEFX        IF NO ERROR FLAG 
          LMC    4000        SET/CLEAR *EJT ORDINAL PRESENT* FLAG 
          STD    CM+1        SET ERROR FLAG 
          LDD    EO          STORE EJT ORDINAL
          STD    CM+2 
          SFA    EJT         GET JSN
          ADK    JSNE 
          CRD    CM+3 
          MONITOR  CEFM 
          UJN    SEFX        RETURN 
 SRA      SPACE  4,10 
**        SRA - SET RA TO THE BEGINNING OF NFL. 
* 
*         EXIT   FLSW, FLSW+1 AND EXCHANGE PACKAGE ALTERED
*                TO REFLECT THE NEW RA AND FL.
* 
*         NOTES  AFTER THIS ROUTINE IS EXECUTED ANY ACCESS TO THE 
*                JOB-S CM FL MUST BE BIASED BY CELL *NF*. 
* 
*         USES   CM - CM+4, CN - CN+4, FS - FS+4, FN - FN+4.
  
  
 SRA      SUBR               ENTRY/EXIT 
          TLDC   1,CPAD      READ EXCHANGE PACKAGE RA 
          CRD    FS 
          ADN    1           READ EXCHANGE PACKAGE FL 
          CRD    FN 
          ADN    FLSW-2      READ FIELD LENGTH CONTROL WORDS
          CRD    CM 
          ADN    FLSW+1-FLSW
          CRD    CN 
          LDD    CM          ADD NFL TO FL
          RAD    CM+4 
          STD    CN+4 
          SHN    6
          STD    FN+1 
          SHN    -14
          STD    FN 
          LDC    4000        SET NFL+4000 
          STD    CN+3 
          LDD    CM+2        FORM NEW RA
          SHN    14 
          ADD    CM+3 
          SBD    CM          RA-NFL 
          STD    CM+3 
          STD    CN+2 
          SHN    14 
          STD    FS 
          SHN    -6 
          LPN    77 
          STD    CM+2 
          STD    CN+1 
          LDD    CM+3 
          SHN    6
          STD    FS+1 
          LDD    CM          SAVE NFL SIZE FOR LEVEL 3 D/S
          STD    CM+1 
          RAM    JFLB        ADJUST NUMBER OF SECTORS TO ROLL 
          LDN    0           CLEAR NFL FIELD
          STD    CM 
          TLDC   1,CPAD      UPDATE EXCHANGE PACKAGE DATA 
          CWD    FS 
          ADN    1
          CWD    FN 
          ADN    FLSW-2 
          CWD    CM 
          ADN    FLSW+1-FLSW
          CWD    CN 
          LJM    SRAX        RETURN 
 TCP      SPACE  4,10 
**        TCP - TRANSFER CPA TO PCPA. 
* 
*         ENTRY  (IR+4) = PCP NUMBER. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 TCP      SUBR               ENTRY/EXIT 
          LDD    CP          READ CPA INTO PP 
          CRM    BUF,HN 
          CRM    BUF+100*5,HN 
  
*         SET ALTERNATE PCP ASSIGNMENT WHEN UPDATING THE PCP FIELD
*         LENGTH CONTROL WORDS TO PREVENT A SIMULTANEOUS UPDATE OF
*         THESE WORDS BY A STORAGE MOVE.
  
          LDD    IR+4        SET PCP NUMBER 
          ADC    /CPS/ALCS   SET ALTERNATE PCP FLAG 
          STD    CM+1 
          MONITOR  CCAM      SET ALTERNATE PCP ASSIGNMENT 
          TLDC   FLSW,PCAD   PRESERVE PCPA FL CONTROL WORDS 
          CRM    BUF+FLSW*5,TR
          ADK    TFSW-FLSW-3 PRESERVE EJT ORDINAL FROM PCPA 
          CRD    CM 
          LDD    CM 
          STM    BUF+TFSW*5+0 
          LDM    BUF+STSW*5+2  CLEAR ROLLOUT CONTROL FLAGS
          LPN    2           PRESERVE CPU STATUS FLAG 
          STM    BUF+STSW*5+2 
          TLDC   0,PCAD      MOVE CPA TO PCPA 
          CWM    BUF,HN 
          CWM    BUF+100*5,HN 
          LDC    /CPS/ALCS   SET ALTERNATE CP FLAG
          STD    CM+1 
          MONITOR  CCAM      CLEAR ALTERNATE PCP ASSIGNMENT 
          UJP    TCPX        RETURN 
 WNS      SPACE  4,20 
**        WNS - WRITE NEXT SECTOR.
* 
*         ENTRY  (BFMS+1 - BFMS+501) = SECTOR FORMATTED.  ANOTHER 
*                BUFFER ADDRESS MAY BE USED IF CALLER PRESETS (WNSA), 
*                (WNSB), AND (WNSC) AND RESTORES THEM.
*                (NT) = NEXT TRACK BUFFER POINTER.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
* 
*         EXIT   (T6) AND (T7) UPDATED. 
*                TO *MSR* IF MASS STORAGE ERROR OCCURRED. 
* 
*         USES   T2, T6, T7, NT.
* 
*         CALLS  FTB, WDS.
* 
*         MACROS ENDMS. 
  
  
 WNS      SUBR               ENTRY/EXIT 
          LDD    T7          SET NEXT SECTOR
          ADN    1
 WNS1     STM    BFMS 
 WNSA     EQU    *-1
*         STM    OBUF        (TERMINAL OUTPUT SECTOR) 
          LMM    SLM
          NJN    WNS2        IF NOT END OF TRACK
          LDI    NT          SET NEXT TRACK 
          UJN    WNS1        SET TRACK INTO SECTOR LINKAGE BYTE 
  
 WNS2     LDC    BFMS+WCSF   WRITE CONSECUTIVE SECTORS
 WNSB     EQU    *-1
*         LDC    OBUF+WCSF   (TERMINAL OUTPUT SECTOR) 
          RJM    WDS         WRITE SECTOR 
          MJP    MSR         IF MASS STORAGE ERROR
          LDM    BFMS 
 WNSC     EQU    *-1
*         LDM    OBUF        (TERMINAL OUTPUT SECTOR) 
          STD    T7 
          SHN    21-13
          PJN    WNSX        IF NOT NEW TRACK 
          SHN    -6 
          STD    T6 
          LDN    0           RESET SECTOR 
          STD    T7 
          AOD    NT 
          LDI    NT 
 WNS2.1   NJN    WNSX        IF NEXT TRACK AVAILABLE
 WNS3     LDD    OA          WAIT OUTPUT REGISTER CLEAR 
          CRD    CM 
          LDD    CM 
          NJN    WNS3        IF *RCXM*/*ECXM* IN PROGRESS 
          ENDMS 
          RJM    FTB         FILL TRACK BUFFER
          UJN    WNS2.1      RETURN 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
 CET$     EQU    1           ASSEMBLE ROUTINE *CET* (COMPCPE) 
*CALL     COMPCPE 
 PIR$     EQU    1           SELECT ASSEMBLY OF *PIR* FOR IAF R-REG 
*CALL     COMPSRR 
          LIST   X
*CALL     COMPDDT 
          LIST   *
 IFP$     EQU    1           ASSEMBLE REMOTE INITIALIZATION (COMPGFP) 
 EJT$     EQU    1           ASSEMBLE EJT ADDRESSING (COMPGFP)
*CALL     COMPGFP 
*CALL     COMPRJC 
*CALL     COMPSIC 
*CALL     COMPWEI 
 WCS$     EQU    1           WRITE CONSECUTIVE SECTORS (COMPWSS)
*CALL     COMPWSS 
          SPACE  4,10 
          USE    BUFFERS
 BUF      EQU    *
          ERRPL  BUF+502-OBUF  CPA OVERLAYS TERMINAL OUTPUT BUFFER
  
*         COMMON DECKS. 
  
  
*CALL     COMPAST 
          TITLE  INITIALIZATION.
 PRS      SPACE  4,25 
**        PRS - PRESET. 
* 
*         EXIT   TO *ROJ1* IF PSEUDO ROLLOUT. 
*                (DI) = *UJNI*+2. 
*                (EO) = EJT ORDINAL.
*                (NF) = NFL SIZE. 
*                (SC) = 0.
*                (TA) = SET PER *COMPSRR* ROUTINE *PIR*.
*                (TN) = TERMINAL NUMBER IF ON-LINE INTERACTIVE JOB. 
*                (TT - TT+1) = TERMINAL TABLE ADDRESS IF ON-LINE
*                              INTERACTIVE JOB. 
*                (ZR - ZR+4) = 0. 
*                (AEAA+1) = -FLE. 
*                (CDRC) = ASSIGNED EM FL IN *UEBS* WORD BLOCKS. 
*                (EJSS - EJSS+5*EJTE-1) = EJT ENTRY.
*                (CPAD) = CP OR PCP ADDRESS.
* 
*         USES   DI, EO, FA, IR+2, IR+4, NF, SC, TN, CM - CM+4, 
*                CN - CN+4, FN - FN+4, FS - FS+4, T1 - T9,
*                ZR - ZR+4. 
* 
*         CALLS  AST, CAU, ERS, FLF, IFP, ISU, ITF, /3RS/PDM, PIR,
*                /3RP/PRP, RRR, SIC, /3RP/SIO, SRR, /3RP/STA. 
* 
*         MACROS EXECUTE, ISTORE, MONITOR, NFA, SFA.
  
  
 PRSE     CON    /REM/VCDT   CLEAR TERMINAL INTERRUPT FLAG
          CON    0
          CON    /REM/VSTT
          CON    59D
          CON    0           TERMINAL NUMBER
  
  
  
*         PROCESS NON-*DMP=* ROLLOUT OF INTERACTIVE JOB.
  
 PRS25    EXECUTE  3RP       LOAD INTERACTIVE JOB PROCESSING OVERLAY
          LDC    ** 
 PRSG     EQU    *-1         (CONNECTION STATUS)
          LMN    OLCS 
          ZJN    PRS27       IF ON-LINE INTERACTIVE JOB 
  
*         CHECK FOR RESOURCE LIMIT ON DETACHED INTERACTIVE JOB.  SUCH 
*         JOBS WILL BE SUSPENDED. 
  
          LDD    CN 
          LPC    2400 
          ZJN    PRS26       IF NOT RESOURCE LIMIT
 PRS25.1  LDM    ERSA        SET SUSPEND ON ROLLOUT FLAG
          LPC    7677 
          ERRNZ  /CPS/ROSU*10-100  ERROR IF VALUE CHANGES 
          LMD    HN 
          STM    ERSA 
 PRS26    LDN    0           CLEAR WORD COUNT IN OUTPUT SECTOR BUFFER 
          STM    OBUF+1 
          AOM    RMSA        INCLUDE NULL OUTPUT SECTOR IN SECTOR COUNT 
          LJM    PRS35       DISABLE ON-LINE INTERACTIVE PROCESSING 
  
*         PROCESS ROLLOUT OF ON-LINE INTERACTIVE JOB. 
  
 PRS27    RJM    /3RP/PRP    PRESET ON-LINE INTERACTIVE ROUTINES
          LDC    FECF*10000+IFSI  CHECK *IAF* ACCESSIBILITY 
          RJM    AST
          SHN    0-13 
          ERRNZ  /REM/VCPT-1  CODE ASSUMES *IAF* CP = 1 
          NJN    PRS27.2     IF *IAF* ACCESSIBLE
          TLDC   TINW,CPAD
          CRD    CN 
          ADK    TIOW-TINW
          CRD    T8-3 
          LDD    CN+3 
          SCN    77 
          ADD    CN+2 
          NJN    PRS27.1     IF TERMINAL INPUT
          LDD    T8 
          LPN    37 
          ADD    T9 
          NJN    PRS27.1     IF EXPLICIT OUTPUT REQUEST 
          RJM    /3RP/SIO    SEARCH FOR IMPLICIT OUTPUT 
          ZJN    PRS27.2     IF NO OUTPUT FOUND 
 PRS27.1  LDN    0           CLEAR INTERACTIVE ERROR FLAG 
          STM    /3RP/INEF
          UJP    PRS25.1     SUSPEND JOB
  
 PRS27.2  TLDC   TTNW,CPAD   SET TERMINAL NUMBER
          CRD    CM 
          LDD    CM+1 
          NJN    PRS29       IF TERMINAL NUMBER PRESENT 
 PRS28    LDK    SWET        SET SYSTEM SOFTWARE ERROR
          STD    CM+2 
          LDC    *           ADDRESS WHERE ERROR DETECTED 
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
          SFA    EJT,EO 
          ADK    JSNE 
          CRD    CM 
          LDD    CM+4 
          LPC    4177 
          LMK    NICS*200    MAKE JOB NON-INTERACTIVE 
          STD    CM+4 
          SFA    EJT,EO 
          ADK    JSNE 
          CWD    CM 
          LDN    0
          RJM    ERS         CLEAR ROLLOUT REQUESTED
          LDN    /CPS/DPPS
          LJM    ROJ7        CLEAR JOB ADVANCE AND DROP PP
  
 PRS29    STD    TN          SAVE TERMINAL NUMBER 
          STM    PRSE+4 
          RJM    PIR         PRESET WITH IAF R-REGISTER 
          RJM    SRR         SET R-REGISTER TO IAF RA 
          RJM    /3RP/STA    SET TERMINAL TABLE ADDRESS 
          ADK    /REM/VFNT
          CRD    CN 
  
*         AT ROLLOUT, *VROT* SHOULD BE BUSY.
  
          ADK    /REM/VFST-/REM/VFNT
          CRD    CM 
          ADK    /REM/VROT-/REM/VFST
          CRD    FS 
          RJM    RRR         RESTORE R-REGISTER 
          LDD    FS+4        *VROT* STATUS
          LPN    1
          NJP    PRS28       IF INCORRECT STATUS
          LDD    CM+3        CHECK FOR *IAOT* JOB CONNECTED TO *SMF*
          SHN    -6 
          ZJN    PRS30       IF NOT CONNECTED TO *SMF*
          LDN    /CPS/ROLS   SET ROLLOUT FILE DEVICE
          ERRPL  /CPS/ROLS-100  CODE REQUIRES 6 BIT VALUE 
          RAM    RMSK 
 PRS30    TLDC   TFSW,CPAD
          CRD    CM 
          LDD    CM+1 
          ZJN    PRS33       IF NO PRIMARY FILE 
          NFA    CM+1,R      READ PRIMARY FILE DATA 
          CRM    /3RP/TERD,ON 
 PRS33    LDD    CN+4        PRESERVE BYTE 4 OF *VFNT*
          STM    /3RP/TERD+4
          LDM    CPAB 
          LPN    1
          NJN    PRS34       IF END OF JOB STEP 
          RJM    SRR         SET R-REGISTER TO IAF RA 
          RJM    /3RP/STA    READ TERMINAL TABLE
          ADK    /REM/VSTT
          CRD    CM 
          RJM    RRR         RESTORE R-REGISTER 
          LDD    CM 
          SHN    21-13
          PJN    PRS34       IF NOT TERMINAL INTERRUPT CONTROL
  
*         CLEAR TERMINAL INTERRUPT CONTROL AT THIS POINT SO THAT
*         *IAF* SEES THE CORRECT STATUS WHEN IT RECOGNIZES
*         END OF JOB STEP.
  
          LDD    MA          CLEAR TERMINAL INTERRUPT CONTROL 
          CWM    PRSE,ON
          RJM    ITF         ISSUE *TSEM* FUNCTION
 PRS34    UJN    PRS38       READ EJT ENTRY INTO SYSTEM SECTOR BUFFER 
  
*         DISABLE ON-LINE INTERACTIVE PROCESSING AND CHECK DMP= CALL. 
  
 PRS35    LDD    DI          DISABLE ON-LINE INTERACTIVE JOB PROCESSING 
          STM    ROJB 
          STM    ROJC 
          STM    CROE 
          LDD    IR+2 
          LMN    1
          NJN    PRS38       IF NOT *DMP=* CALL 
          EXECUTE  3RS       LOAD *DMP=* PROCESSING OVERLAY 
  
*         CLEAR SYSTEM SECTOR AND READ EJT ENTRY TO SYSTEM SECTOR.
  
 PRS38    LDC    BFMS+2 
          STD    T1 
 PRS39    LDN    0
          STI    T1 
          AOD    T1 
          LMC    BFMS+2+500 
          NJN    PRS39       IF MORE WORDS TO CLEAR 
          LDN    EJTE        SET EJT ENTRY LENGTH 
          STD    T1 
          SFA    EJT,EO      READ EJT ENTRY TO SYSTEM SECTOR
          CRM    EJSS,T1
          LDD    IR+2 
          LMN    1
          NJN    PRSX        IF NOT *DMP=* CALL 
          RJM    /3RS/PDM    PRESET *DMP=* CALL 
  
 PRS      SUBR               ENTRY/EXIT 
          LDD    CP          PRESET *CPAD* FOR CP ACCESS
          STM    CPAD+1 
          LDD    IR+2 
          SBN    2
          MJP    PRS4        IF NO PCP INVOLVEMENT
          LDK    NCPL        GET NUMBER OF CONTROL POINTS 
          CRD    T1 
          ADK    PCPP-NCPL   GET PCP AREA POINTER 
          CRD    CM 
          LDD    IR+4 
          SBD    T1+1 
          SBN    2           PCP AREA INDEX 
          PJN    PRS0.1      IF VALID PCP NUMBER
          MONITOR  HNGM      HANG 
  
 PRS0.1   SHN    7           PCP AREA OFFSET
          RAD    CM+4        SET PCP ADDRESS
          SHN    -14
          RAD    CM+3 
          LDD    IR+2 
          SBN    2
          ZJP    PRS2        IF PSEUDO-ROLLOUT
  
*         PROCESS PCP ROLLOUT.
  
          LDD    CM+3        SET PCP ADDRESS
          STM    CPAD 
          LDD    CM+4 
          STM    CPAD+1 
          LDN    1           SET *CROF* WITHOUT JOB ADVANCE FLAG
          STM    CROF 
          LDD    IR+4        SET PCP NUMBER AND ALTERNATE CP FLAG 
          ADC    /CPS/ALCS
          STD    CM+1 
          MONITOR  CCAM      SET ALTERNATE PCP ASSIGNMENT 
          AOD    T1+1 
          SHN    7           SYSTEM CP ADDRESS
          LMD    CP 
          ZJN    PRS1        IF SIMPLE PCP ROLLOUT
          LDD    CP          GET CP JOB EJT ORDINAL 
          ADK    TFSW 
          CRD    CM 
          LDD    CM          SET EJT ORDINAL TO FLAG COMPOUND ROLLOUT 
          STM    CPCA 
          SOD    IR+2        SET FUNCTION 2 FOR RECALL OF *1RO* 
          LDD    IA          UPDATE PP INPUT REGISTER 
          CWD    IR 
          AOD    IR+2        RESET ORIGINAL FUNCTION CODE 
 PRS1     LJM    PRS4        CONTINUE 
  
*         PROCESS PSEUDO ROLLOUT. 
  
 PRS2     LDD    CM+3        SET PCP ADDRESS
          STM    PCAD 
          LDD    CM+4 
          STM    PCAD+1 
          AOM    ISRA        SET PSEUDO ROLLOUT REQUEST FLAG
          LDD    IR+4        STORE PCP NUMBER IN EJT DATA BLOCK 
          STM    CROG+1 
          LDD    IR+3        STORE TERMINAL NUMBER IN *1TO* CALL
          STM    ROJN+4 
          ZJN    PRS2.1      IF NO TERMINAL OUTPUT PENDING
          LDK    /CPS/CCPS   CLEAR *JACM* PP DROP OPTION
          STM    ROJG+1 
          AOM    ROJM        INDICATE *1TO* CALL REQUIRED 
 PRS2.1   LDK    PCJS        FORCE *PCJS* JOB STATUS
          STM    CJSA 
          ISTORE ROJH,(UJN ROJ2)
          LDC    TCP         SET PSEUDO-ROLLOUT PROCESSOR ADDRESS 
          STM    CPAI*2+SEQ+1 
          ISTORE TOPI*2+SEQ,(UJN ROJ5)
          LDC    ROJ1        SET *PRS* EXIT 
          STM    PRS
  
*         PROCESS ALL ROLLOUT TYPES.
  
 PRS4     RJM    IFP         INITIALIZE *COMPGFP* 
          LDC    TSIC        SET INSTRUCTION RELOCATION TABLE ADDRESS 
          RJM    SIC         RELOCATE INSTRUCTIONS
          TLDC   FLSW,CPAD   GET NFL SIZE 
          CRD    CM 
          SBN    FLSW 
          STM    JECF+4      SET *RCXM* RESPONSE ADDRESS
          SHN    -14
          RAM    JECF+3 
          LDD    CM          SET NFL SIZE 
          STD    NF 
          STM    RMSH 
          SHN    6
          RJM    FLF         FLUSH BUFFERED I/O BUFFERS 
          RJM    ISU         ISSUE ACCUMULATED SRU MESSAGES 
*         LDN    0           CLEAR TERMINAL OUTPUT SECTOR COUNT 
          STD    SC 
          STD    FA          INITIALIZE DM* FILE FNT ADDRESS
          LDN    ZERL 
          CRD    ZR 
          LDD    FL          SET ROLLOUT CM FL
          STM    CROC 
          STM    RMSB 
          ADC    -MCMX/100
          STM    JFLB 
          TLDC   STSW,CPAD   READ CONTROL POINT STATUS WORD 
          CRD    FN 
          ADN    FLSW-STSW   READ NFL WORD
          CRD    T3 
          ADN    TFSW-FLSW   READ EJT ORDINAL WORD
          CRD    FS 
          ADK    TERW-TFSW   SAVE TIMED/EVENT ROLLOUT DESCRIPTOR
          CRM    MSRH,ON
          ERRNZ  CSPW-TERW-1 CODE DEPENDS ON *CSPW* = *TERW* + 1
          CRD    CN          READ CONTROL STATEMENT POINTER WORD
          ADK    JSCW-CSPW   READ SECURITY WORD 
          CRD    CM 
          LDD    CM+1        SET JOB ACCESS LEVEL 
          SHN    -9D
          STM    RMSG 
          LDD    FN+2        SAVE ROLLOUT CONTROL FLAGS 
          STM    ERSA 
          STM    MSRG 
          LDD    FS          SAVE EJT ORDINAL 
          STD    EO 
          SFA    EJT
          ADK    JSNE        READ EJT ENTRY 
          CRD    FS 
          LDC    UJNI+2 
          STD    DI 
          LDD    FN+1        SAVE ERROR FLAG IN EJT DATA BLOCK
          STM    CROI 
  
*         DETERMINE CONTROL POINT ACTIVITY. 
  
          LDD    FS+4        SAVE CONNECTION STATUS 
          SHN    0-7
          LPN    17 
          STM    PRSG 
          LDD    FN+4 
          NFA    SHCN        CHECK *SHELL* CONTROLS 
          CRD    CM 
          LDD    CM 
          ZJN    PRS6        IF NO SHELL CONTROLS 
          LDD    CM+4 
          SHN    21-2 
          MJP    PRS13       IF INTERACTIVE *SHELL* 
 PRS6     LDD    FN+4 
          SCN    17 
          NJN    PRS6.1      IF PP RECALL OR TAPE ACTIVITY
          LDD    FN+2        GET CPU STATUS FLAG
          LPN    2
          ADD    FN+1        GET ERROR FLAG 
          NJN    PRS6.1      IF CPU ACTIVITY OR ERROR FLAG SET
          LDD    CN+3 
          LMD    CN+4 
 PRS6.1   NJN    PRS7        IF COMMAND BUFFER NOT EMPTY
          LDD    CN+1 
          SHN    6
 PRS6.2   PJP    PRS13       IF NOT AT EOR OF CONTROL STATEMENT RECORD
          LDC    ** 
          LDD    IR+2 
          LMN    1
          ZJN    PRS6.2      IF *DMP=* CALL 
          TLDC   EOJW,CPAD
          CRD    CN 
          ADK    RFCW-EOJW
          CRD    CM 
          ADK    SSCW-RFCW
          CRD    FS 
          LDD    CN+2 
          LPC    777
          NJN    PRS8        IF PROLOGUE OR EPILOGUE ACTIVITY 
          LDD    CM+3 
          SCN    77 
          ADD    CM+2 
          ADD    FS 
          ADD    FS+1 
          ADD    FS+2 
          ADD    FS+3 
          ADD    FS+4 
 PRS7     NJN    PRS8        IF *TCS* COMMAND OR SCP CONNECTIONS
          TLDC   JCIW,CPAD   READ JOB CONTROL WORD
          CRD    CM 
          ADN    TINW-JCIW   READ TERMINAL INPUT WORD 
          CRD    CN 
          ADK    SPCW-TINW   READ SPECIAL CALL WORD 
          CRD    FS 
          LDD    CM+3 
          SHN    21-10
          MJN    PRS8        IF JOB STEP FILES TO RETURN
          LDD    FS 
          NJN    PRS8        IF *DMP=* IN PROGRESS
          LDD    CN+3 
          SCN    77 
          ADD    CN+2 
          NJN    PRS8        IF TERMINAL INPUT PENDING
          LDD    CN+1 
          LPC    100
          ZJN    PRS9        IF NOT REPRIEVE ON NORMAL TERMINATION
 PRS8     LJM    PRS13       BYPASS EM CHECK
  
 PRS9     LDD    IR+2 
          LMN    2
          NJN    PRS9.1      IF NOT PSEUDO-ROLLOUT
  
*         AVOID PSEUDO-ROLLOUT AT END OF JOB STEP.  *1RO* WILL BE 
*         RECALLED TO PERFORM A MASS STORAGE ROLLOUT OF THE JOB.
  
          TLDC   TFSW,PCAD   READ *TFSW* FROM PCPA
          CRD    CM 
          LDN    0           CLEAR EJT ORDINAL
          STD    CM 
          STD    IR+2        SET NEW *1RO* FUNCTION CODE
          TLDC   TFSW,PCAD   REWRITE *TFSW* TO RELEASE PCP
          CWD    CM 
          LDN    0           CLEAR PCP NUMBER 
          STD    IR+4 
          LDD    IA          REWRITE PP INPUT REGISTER
          CWD    IR 
          LJM    PPR         RECALL *1RO* FOR MASS STORAGE ROLLOUT
  
 PRS9.1   TLDC   JCIW,CPAD
          CRD    FS 
          SBN    JCIW-ECSW
          CRD    CN 
          LDD    CN+4 
          ZJN    PRS10       IF EM NOT ASSIGNED 
          LDD    FS+3 
          LPC    100
          ERRNZ  MCMX/100-100  CHECK FOR CORRECT VALUE OF *MCMX*
 PRS10    STM    CPAB 
          LDN    0           CLEAR CM TO ROLL 
          STM    JFLB 
          LDM    PRSG 
          LMN    OLCS 
          NJN    PRS11       IF NOT ON-LINE CONNECTION STATUS 
          LDM    ERSA        SET DISABLE FLAG IN ROLLOUT CONTROL BYTE 
          SCN    20 
          LMN    20 
          STM    ERSA 
 PRS11    LDM    CPAB 
          NJN    PRS12       IF ECS PROTECTED 
          LDD    DI          DISABLE ECS ROLLOUT
          STM    JECI*2+SEQ 
          LDC    UJNI+PRS14-PRSB  DISABLE USER EM CHECK 
          ERRPL  PRS14-PRSB-40  RANGE ERROR ON JUMP 
          STM    PRSB 
 PRS12    LDD    NF          SAVE NFL SIZE AS CM FL IN EJT DATA BLOCK 
          ADM    CPAB        ADD FL FOR EM ROLLOUT
          ERRNZ  MCMX/100-100  CHECK FOR CORRECT VALUE OF *MCMX*
          STM    CROJ+1 
          STM    CROB        INDICATE CM/EM FL ALREADY SET
          LDD    CN+4        SAVE ASSIGNED ECS AMOUNT 
          STM    CROJ 
          LDM    CPAB        SET FL FOR ROLLOUT 
          STM    RMSB 
          LDC    LDDI+HN
          STM    JECG 
          STM    JECH 
          ERRNZ  MCMX/100-100  CHECK FOR CORRECT VALUE OF *MCMX*
 PRS13    LDD    IR+2 
          LMN    2
          NJN    PRS13.1     IF NOT PSEUDO-ROLLOUT
          LDD    NF          STORE CM FL IN EJT DATA BLOCK
          ADD    T3+4 
          STM    CROJ+1 
          LDD    CP          GET EM FL
          ADK    ECSW 
          CRD    CM 
          LDD    CM+4        STORE EM FL IN EJT DATA BLOCK
          STM    CROJ 
          LJM    PRS38       READ EJT ENTRY AND EXIT
  
 PRS13.1  LDK    MEFL        GET USER EM SHIFT COUNT (*UESC*) 
          CRD    CM 
          LDD    CM+2 
          SHN    -11
          RAM    PRSC 
          ADN    3
          STM    RMSN 
 PRSB     TLDC   ECSW,CPAD
*         UJN    PRS14       (NO CP ACTIVITY) 
          CRD    CN 
          LDD    CN+4        SAVE ASSIGNED ECS AMOUNT 
          STM    CROD 
 PRSC     SHN    0
*         SHN    UESC 
          LMC    -0 
          STM    AEAA+1 
          SHN    -14
          RAM    AEAA 
          LDD    CN+4 
          NJN    PRS14       IF JOB HAS EM ASSIGNED 
          LDD    FL          SET *FL* 
          STM    JFLB 
          LDD    DI 
          STM    JECI*2+SEQ 
 PRS14    LDD    IR+2 
          LMN    1
          ZJN    PRS19       IF *DMP=* CALL 
          LDD    DI          DISABLE DM* FILE CREATION
          STM    ROJA 
          STM    RMSF        DISABLE DM* FILE FST UPDATE
  
*         CHECK FOR ACCUMULATOR OVERFLOW. 
  
          TLDC   SRUW,CPAD
          CRD    CN 
          LDD    CN+1 
          SHN    21-5 
          PJN    PRS17       IF NO ACCUMULATOR OVERFLOW 
          RJM    CAU         CALL *0AU* TO PROCESS ACCUMULATOR OVERFLOW 
 PRS17    LDM    PRSG 
          LMN    OLCS 
          ZJN    PRS18       IF ON-LINE INTERACTIVE JOB 
          LMN    OLCS&DTCS
          NJN    PRS19       IF NOT DETACHED INTERACTIVE JOB
 PRS18    LJM    PRS25       PROCESS INTERACTIVE JOB
  
 PRS19    LDD    DI          DISABLE TERMINAL OUTPUT PROCESSING 
          STM    TOPI*2+SEQ 
          LJM    PRS35       DISABLE INTERACTIVE JOB PROCESSING 
 CAU      SPACE  4,15 
**        CAU - CALL *0AU*. 
* 
*         CALL   *0AU* TO PROCESS ACCUMULATOR OVERFLOW. 
* 
*         ENTRY  (EO) = EJT ORDINAL.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  CEA, DFM, 0AU. 
* 
*         MACROS CFI, DELAY, EXECUTE, MONITOR, PAUSE. 
  
  
 CAU4     LDN    0           INDICATE NO ERROR FLAG 
          STD    CM+2 
          LDC    *           SET PROGRAM ADDRESS
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
  
 CAU      SUBR               ENTRY/EXIT 
          LDD    IR+2 
          SBN    2
          PJN    CAU4        IF PCP ROLLOUT OR PSEUDO-ROLLOUT 
  
*         SET *0AU* CALL PARAMETERS.
  
          LDD    CP          SET UP CALL BLOCK
          ADN    SRUW 
          CRM    OAUA+5,ON
          ADN    FPFW-SRUW-1
          CRM    OAUL-5,ON
          SFA    EJT,EO      CALCULATE EJT ENTRY ADDRESS
          ADK    JSNE 
          CRM    OAUA,ON     READ JSN INTO *0AU* PARAMETER BLOCK
          ADK    SCLE-JSNE-1 READ SERVICE CLASS 
          CRD    CM 
          LDD    CM          SET SERVICE CLASS FOR *0AU*
          SCN    77 
          STM    OAUA+4 
          LDM    OAUL-5      SET *0AU* OVERFLOW PROCESSING
          SCN    77 
          LMN    1
          STM    OAUL-5 
          LDC    OAUA        PARAMETER BLOCK FWA
          STM    OAUL-4 
  
*         CALL *0AU*. 
  
 CAU1     EXECUTE  0AU,OAUL  CALL *0AU* 
          SBN    2           CHECK FOR SUCCESSFUL UPDATE/FILE ERROR 
          MJN    CAU2        IF SUCCESSFUL UPDATE OR FILE ERROR 
          SOM    CAUA 
          STD    T1          SET DELAY COUNT
          PJN    CAU3        IF RETRY COUNT NOT EXHAUSTED 
          LDN    /CPS/RLCO   CLEAR OVERFLOW FLAGS 
          STD    CM+1 
          MONITOR  RLMM 
          LDC    CAUB+ACFN   OVERFLOW QUANTITY
          RJM    DFM         ISSUE MESSAGE
 CAU2     LJM    CAUX        EXIT 
  
*         PROCESS *0AU* REJECT. 
  
 CAU3     SOD    T1 
          MJN    CAU1        IF END OF DELAY
          DELAY 
          PAUSE  NE 
          UJN    CAU3        CONTINUE DELAY 
  
 CAUA     CON    10          RETRY COUNT
 CAUB     DATA   C*AUSR, 219902.325UNTS.* 
          SPACE  4,10 
**        BUFFER ASSIGNMENTS. 
  
  
 OAUA     EQU    *           *0AU* PARAMETER BLOCK
 OAUL     EQU    OAUA+2*5+5  *0AU* LOAD ADDRESS 
 OVL0     EQU    BUF+1       *0BF*/*0DF* LOAD ADDRESS 
 TBUF     EQU    BUF         NEXT TRACK BUFFER
 TBUFL    EQU    TBUF+10
 WDSB     EQU    TBUFL       WRITE ERROR PROCESSING BUFFER
 .1       MAX    WDSB+502,PRS+1+5 
 E1RO     EQU    .1          OVERLAY ORIGIN 
 OBUF     EQU    IROB        FIRST SECTOR OUTPUT BUFFER 
 ISU      SPACE  4,10 
**        ISU - ISSUE ACCUMULATED SRU MESSAGE.
* 
*         EXIT   (A) = 0. 
* 
*         USES   CM - CM+4, CN - CN+4.
* 
*         CALLS  DFM. 
* 
*         MACROS MONITOR. 
  
  
 ISU      SUBR               ENTRY/EXIT 
          TLDC   SRUW,CPAD
          CRD    CN 
          ADN    SRJW-SRUW
          CRD    CM 
  
*         AN UPDATE MESSAGE IS ISSUED EVERY 107.374 SRU-S.
  
          LDD    CN+2 
          SBD    CM 
          SHN    -6 
          ZJN    ISUX        IF SRU PERIOD NOT ELAPSED
          LDD    CN+2        UPDATE LAST SRU MESSAGE VALUE
          STD    CM 
          TLDC   SRJW,CPAD
          CWD    CM 
          LDD    CN+1 
          ADD    CN+2 
          ADD    CN+3 
          ADD    CN+4 
          ZJP    ISUX        IF ZERO SRU-S TO DISPLAY 
          LDD    MA          CONVERT SRU-S TO DISPLAY CODE
          CWD    CN 
          LDN    1
          STD    CM+1 
          STD    CM+2 
          MONITOR  RDCM 
          LDD    MA 
          CRM    ISUB,ON     READ CONVERTED DATA
          LDC    ISUA+ACFN
          RJM    DFM
*         LDN    0
          UJP    ISUX        RETURN 
  
 ISUA     DATA   H*AASR, *
 ISUB     BSS    5
          DATA   C*UNTS.* 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
 FLBS     EQU    /CPS/FLBS   FLUSH BUFFER SUBFUNCTION 
  
  
 IFP      HERE
*CALL     COMPFLF 
 TSIC     SPACE  4,10 
**        INSTRUCTION RELOCATION TABLE AND ASSOCIATED DATA. 
  
  
 PCAD     BSSZ   2           PCP ADDRESS
  
 TSIC     BSS    0           INSTRUCTION RELOCATION TABLE 
          LIST   D
 SIC      HERE
          LIST   *
          CON    0           TERMINATE ENTRIES
          SPACE  4,10 
**        OVERFLOW CHECKS.
  
  
          ERRNG  EPFW-OAUL-ZAUL    CHECK LENGTH OF *0AU*
          ERRNG  BFMS-OVL0-ZDFL    CHECK LENGTH OF *0DF*
          SPACE  4,10 
          USE    OVERFLOW 
  
*         NOTE - THE FOLLOWING CHECK DEPENDS ON THE FACT THAT *1RO* 
*         IS CM-RESIDENT.  *SLL* CONTAINS CODE TO ENSURE THIS.
  
          ERRNG  OBUF-*-10   OVERFLOW INTO OUTPUT BUFFER
          SPACE  4,10 
          OVERFLOW  PPFW,EPFW 
          TITLE 
          TTL    1RO/3RP - PROCESS ON-LINE INTERACTIVE JOBS.
          TITLE  MAIN ROUTINES. 
          QUAL   3RP
          IDENT  3RP,TRPX 
*COMMENT  1RO - PROCESS TXOT JOBS.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
**        3RP - PROCESS ON-LINE INTERACTIVE JOBS. 
  
  
          ORG    E1RO 
 TRP      SUBR               ENTRY/EXIT 
          UJN    TRPX        RETURN 
 TFET     SPACE  4,10 
*         TFET - OUTPUT FET+0.
  
  
 TFET     BSS    5
 RFO      SPACE  4,10 
**        RFO - READ FIRST SECTOR OF OUTPUT.
* 
*         ENTRY  (OP - OP+1) = OUT POINTER. 
*                (SC) = TERMINAL OUTPUT SECTOR COUNT. 
* 
*         EXIT   (OP - OP+1) UPDATED. 
* 
*         USES   CN.
* 
*         CALLS  RDA, RLS, RMA. 
  
  
 RFO      SUBR               ENTRY/EXIT 
          LDD    SC 
          STD    CN 
          ZJN    RFO1        IF NO OUTPUT IN BUFFER 
          RJM    RDA         READ FIRST SECTOR
          LDC    ADDI+NF     ACCOUNT FOR RA ADJUSTMENT BY *SRA* 
          STM    RDAB 
          STM    RDAE 
          STM    RDAH 
          LDD    CN 
          LMD    HN 
          ZJN    RFO2        IF FULL SECTOR READ
 RFO1     RJM    RMA         READ ERROR MESSAGE 
          LDD    CN 
          LMD    HN 
          ZJN    RFO2        IF NOW FULL SECTOR 
          LDM    CPAB 
          ZJN    RFO3        IF NO JOB ACTIVITY, NO EM PROTECT
          LMD    HN 
          ZJN    RFO3        IF NO ACTIVITY 
 RFO2     LDN    PSNI        SET JOB FL PRESENT 
          STM    WTOA 
 RFO3     LDC    BFMS+2      RESET ADDRESSES
          STM    RDAC 
          STM    RDAF 
          STM    RDAI 
          STM    RMAB 
          LDD    CN          SET SECTOR WORD COUNT
          STM    OBUF+1 
          ZJN    RFO4        IF NO OUTPUT DATA
          LDN    /REM/VOPR   SET OUTPUT DATA AVAILABLE
          RAM    TERA 
          LDN    40          SET OUTPUT FROM ROLLOUT FILE SUB STATUS
          RAM    TERB 
 RFO4     LDM    TERA 
          LPN    /REM/VIPR+/REM/VOPR
          ZJN    RFO5        IF NO I/O REQUEST PENDING
          LDN    IOJS        SET JOB STATUS = *IOJS*
          STM    CJSA 
 RFO5     LJM    RFOX        RETURN 
 TER      SPACE  4,15 
**        TER - TERMINATE ROLLOUT.
* 
*         ENTRY  (TERA) = *VROT* STATUS.
*                (TERB) = *VROT* SUB STATUS.
*                (TERC) = SUBSYSTEM.
*                (TERD) = PRIMARY FILE NAME.
* 
*         EXIT   TO *1TO*.
* 
*         USES   CM - CM+1, CM+3 - CM+4, CN - CN+4, T2 - T6.
* 
*         CALLS  CIT, CPC, ITF, RRR, SRR. 
* 
*         MACROS MONITOR. 
  
  
  
 TER6     LDD    TT          UPDATE TERMINAL TABLE
          SHN    14 
          ADD    TT+1 
          ADN    /REM/VFNT
          CWM    TERD,ON
          ADN    /REM/VROT-/REM/VFNT-1
          CWD    CN 
          RJM    RRR         RESTORE R-REGISTER 
  
 TER      SUBR
          RJM    SRR         SET R-REGISTER TO IAF RA 
          LDD    TT          UPDATE TERMINAL TABLE
          SHN    14 
          ADD    TT+1 
          ADN    /REM/VROT
          CRD    CN 
          ADN    /REM/VSTT-/REM/VROT
          CRD    T2 
          LDM    CPAB        SET CONTINUATION STATUS
          SHN    2
          LMD    CN+4 
          LPN    4
          LMD    CN+4 
          STD    CN+4 
          LDM    CROF        CHECK ROLLOUT JOB STATUS 
          SHN    -1 
          LPN    37 
          LMN    IOJS 
          ZJN    TER2.0      IF *IOJS* JOB STATUS 
          LMN    DOJS&IOJS
          NJP    TER6        IF NOT *DOJS* JOB STATUS 
 TER2.0   LDD    CN+4 
          SCN    32 
          ADC    ** 
 TERA     EQU    *-1         (RFO, CFI, TER)
          STD    CN+4 
          LDD    CN+3        SET SUBSTATUS
          LPC    7437        CLEAR SRU LIMIT, TIME LIMIT, AND FILE TYPE 
          LMC    0           SUBSTATUS
 TERB     EQU    *-1
          STD    CN+3 
          LDD    TT 
          SHN    14 
          ADD    TT+1 
          ADN    /REM/VFNT
          CWM    TERD,ON
          ADN    /REM/VROT-/REM/VFNT-1
          CWD    CN 
          RJM    RRR         RESTORE R-REGISTER 
          LDN    0           CHECK SUBSYSTEM
*         LDN    XX          (SET TO SUB SYSTEM CODE BY /3RP/PRP) 
 TERC     EQU    *-1
          STD    CM+3 
          LMD    T2+3 
          LPN    77 
          ZJN    TER3        IF NO CHANGE 
          LDD    TN          SET TERMINAL NUMBER
          STD    CM+4 
          LDC    /REM/VSBS   HAVE *IAF* UPDATE SUBSYSTEM
          STD    CM 
          LDD    MA 
          CWD    CM 
          RJM    ITF
 TER3     RJM    CPC         CHECK PCP ROLLOUT COMPLETION 
          PJN    TER4        IF PCP ROLLOUT 
          LDC    /CPS/CCPS   RELEASE CP FROM JOB
          STD    CM+1 
          MONITOR  JACM 
 TER4     RJM    CIT         CALL *1TO* IF OUTPUT AVAILABLE 
          NJN    TER5        IF *1TO* OR *1RO* TO BE CALLED IN THIS PP
  
*         DROP PPU. 
  
          MONITOR  DPPM      DROP PP
 TER5     LJM    PPR         EXIT TO PP RESIDENT
  
 TERD     BSSZ   5           PRIMARY FILE NAME
  
 TERE     VFD    18/3L1TO,6//REM/VCPT,12/0,9/0,3/0,12/0 
 WTO      SPACE  4,10 
**        WTO - WRITE TERMINAL OUTPUT TO DISK.
* 
*         ENTRY  (OP - OP+1) = OUT POINTER. 
*                (SC) = SECTOR COUNT OF BUFFER. 
* 
*         USES   CN - CN+4. 
* 
*         CALLS  WNS, RDA, RMA, RMB.
  
  
 WTO      SUBR               ENTRY/EXIT 
          LDC    OBUF        WRITE FIRST SECTOR OF OUTPUT 
          STM    WNSA        SET BUFFER ADDRESSES 
          STM    WNSB 
          STM    WNSC 
          RJM    WNS
          LDC    BFMS        RESET BUFFER ADDRESSES 
          STM    WNSA 
          STM    WNSB 
          STM    WNSC 
          LDD    SC 
          ZJN    WTO3        IF ALL OF TERMINAL OUTUT READ
 WTO1     RJM    RDA         READ DATA FROM OUTUT BUFFER
          LDD    SC 
          ZJN    WTO2        IF LAST SECTOR OF OUTPUT 
          RJM    WNS         WRITE BUFFER 
          UJN    WTO1        LOOP FOR REST OF OUTPUT
  
 WTO2     RJM    RMA         READ FIRST PART OF ERROR MESSAGE 
          LDD    CN          SET LAST SECTOR WORD COUNT 
          STM    BFMS+1 
          RJM    WNS         WRITE BUFFER 
 WTO3     RJM    RMB         READ SECOND PART OF ERROR MESSAGE
          LDD    HN          RESET SECTOR WORD COUNT
          STM    BFMS+1 
 WTOA     UJN    WTO4        RETURN 
*         PSN                (JOB FL PRESENT) 
          LDN    ZERL        BUILD OUT POINTER
          CRD    CN 
 WTOB     LDC    **          FET ADDRESS
          ZJN    WTO4        IF NO FET ADDRESS
          ADD    RA          WRITE FET+0
          ADD    NF          ADD NFL SINCE RA HAS BEEN ADJUSTED 
          SHN    6
          ADN    3           WRITE *OUT*
          CWD    OP-3 
 WTO4     LJM    WTOX        RETURN 
          TITLE  SUBROUTINES. 
 CIT      SPACE  4,30 
**        CIT - CALL *1TO* TO PROCESS OUTPUT. 
* 
*         IF OUTPUT IS AVAILABLE FOR THE TERMINAL, *1TO* WILL BE CALLED 
*         INTO THIS PP.  IF A *1TO* CALL IS NOT REQUIRED, A NULL OUTPUT 
*         REQUEST WILL BE ISSUED FOR THE TERMINAL AS A SIGNAL TO *IAF*
*         THAT THE ROLLOUT IS COMPLETE. 
* 
*         IF THIS IS A COMPOUND ROLLOUT AND TERMINAL OUTPUT IS
*         AVAILABLE, THE TERMINAL NUMBER WILL BE STORED INTO THE
*         *1RO* INPUT REGISTER IMAGE IN CM.  WHEN THE PSEUDO-ROLLOUT
*         COMPLETES, *1RO* WILL CALL *1TO* TO PROCESS THE TERMINAL
*         OUTPUT FOR THE PCP JOB. 
* 
*         ENTRY  (TERA) = OUTPUT STATUS.
*                (TERE - TERE+4) = FORMATTED *1TO* CALL 
*                (TN) = TERMINAL NUMBER.
* 
*         EXIT   *TSEM/VASO* MONITOR REQUEST ISSUED TO SIGNAL 
*                ROLLOUT COMPLETION IF *1TO* IS NOT REQUIRED. 
*                (A) = 0 IF PP MAY BE DROPPED.
*                (A) .NE. 0 IF EITHER *1TO* IS TO BE CALLED INTO THIS 
*                           PP TO PROCESS TERMINAL OUTPUT OR *1RO* IS 
*                           TO BE CALLED INTO THIS PP TO COMPLETE A 
*                           COMPOUND ROLLOUT. 
* 
*         USES   CM+1, IR+2, IR+3.
* 
*         CALLS  ITF. 
* 
*         MACROS MONITOR. 
  
  
 CIT1     LDM    CPCA 
          ZJN    CIT2        IF NOT COMPOUND ROLLOUT
          SOD    IR+2        SET FUNCTION CODE 2
          LDD    TN          SAVE TERMINAL NUMBER 
          STD    IR+3 
          LDD    IA          UPDATE PP INPUT REGISTER 
          CWD    IR 
          AOD    IR+2        RESET ORIGINAL FUNCTION CODE 
          UJN    CITX        EXIT WITH (A) .NE. 0 
  
 CIT2     LDN    /REM/VCPT   MOVE TO *IAF* CP 
          STD    CM+1 
          MONITOR  CCAM 
          LDD    CM+1 
          LMN    /REM/VCPT   (A) = 0 IF CHANGE NOT MADE 
          ZJN    CITX        IF CHANGE NOT MADE 
          LDD    IA          PLACE *1TO* CALL IN INPUT REGISTER 
          CWM    TERE,ON
  
 CIT      SUBR               ENTRY/EXIT 
          LDD    TN          SET TERMINAL NUMBER IN CALLS 
          STM    TERE+4 
          STM    CITA+4 
          LDM    TERA        CHECK FOR OUTPUT AVAILABLE 
          SHN    21-4 
          MJP    CIT1        IF OUTPUT AVAILABLE
  
*         ISSUE NULL OUTPUT TO SIGNAL ROLLOUT COMPLETION. 
  
          LDD    MA          WRITE FUNCTION TO MESSAGE BUFFER 
          CWM    CITA,ON
          RJM    ITF         ISSUE *TSEM* FUNCTION
          LDM    CPCA 
          UJP    CITX        EXIT WITH (A) NONZERO IF COMPOUND ROLLOUT
  
 CITA     CON    /REM/VASO   OUTPUT FUNCTION
          CON    0,0,0       NULL PARAMETERS
          CON    0           TERMINAL NUMBER
 RDA      SPACE  4,10 
**        RDA - READ DATA FOR TERMINAL OUTPUT.
* 
*         ENTRY  (SC) = SECTOR COUNT. 
*                (SLIM) = SECTOR COUNT TO LIMIT.
*                (OP - OP+1) = OUT POINTER. 
* 
*         EXIT   (SC), (SLIM), (OP - OP+1) UPDATED. 
* 
*         USES   CN - CN+2, SC, OP - OP+1.
  
  
 RDA      SUBR
          LDD    HN          PRESET SECTOR WORD COUNT 
          STD    CN 
          SOD    SC          DECREMENT SECTOR COUNT 
          NJN    RDA1        IF NOT LAST SECTOR 
          LDC    0           SET LAST SECTOR WORD COUNT (CKO) 
 RDAA     EQU    *-1
          STD    CN 
          ZJN    RDAX        IF LAST SECTOR EMPTY 
 RDA1     SOM    SLIM        DECREASE SECTORS TO LIMIT COUNT
          MJN    RDA3        IF LIMIT REACHED 
          LDD    OP          READ BUFFER
          SHN    6
          ADD    RA 
          PSN 
*         ADD    NF          (*RDA* CALLED BY *WTO*)
 RDAB     EQU    *-1
          SHN    6
          ADD    OP+1 
          CRM    OBUF+2,CN
 RDAC     EQU    *-1         (RFO)
 RDA2     LDD    CN          ADVANCE OUT
          RAD    OP+1 
          SHN    -14
          RAD    OP 
          UJN    RDAX        RETURN 
  
 RDA3     LDC    100         SET WRAP AROUND WORD COUNTS
 RDAD     EQU    *-1
          STD    CN+1 
          LDD    OP          READ FIRST PART
          SHN    6
          ADD    RA 
          PSN 
*         ADD    NF          (*RDA* CALLED BY *WTO*)
 RDAE     EQU    *-1
          SHN    6
          ADD    OP+1 
          CRM    OBUF+2,CN+1
 RDAF     EQU    *-1         (RFO)
          LDD    CN 
          SBD    CN+1 
          MJN    RDA2        IF NOT WRAP AROUND 
          STD    CN+2        SET SECOND PART WORD COUNT 
          ZJN    RDA4        IF SECOND PART ZERO
          LDD    CN+1        SET WRAP AROUND BUFFER POSITION
          SHN    2
          ADD    CN+1 
          RAM    RDAI 
 RDAG     LDC    *           READ SECOND PART (CKO) 
          SHN    14 
          ADD    RA 
          PSN 
*         ADD    NF          (*RDA* CALLED BY *WTO*)
 RDAH     EQU    *-1
          SHN    6
          CRM    OBUF+2,CN+2
 RDAI     EQU    *-1         (RFO, RDA) 
 RDA4     LDC    *           RESET OUT
 RDAJ     EQU    *-2
          ADD    CN+2 
          STD    OP+1 
          SHN    -14
          STD    OP 
          LJM    RDAX        RETURN 
  
 SLIM     CON    0           SECTORS TO LIMIT 
 RMA      SPACE  4,10 
**        RMA - READ ERROR MESSAGE. 
* 
*         ENTRY  (CN) = SECTOR COUNT. 
* 
*         EXIT   (CN) UPDATED.
* 
*         USES   T0, T1, CN.
  
  
 RMA      SUBR               ENTRY/EXIT 
 RMAA     LDN    0           (CEM)
          ZJN    RMAX        IF NO MESSAGE
          STD    T1 
          RAD    CN          INCREMENT SECTOR WORD COUNT
          SBD    T1          SET BUFFER POSITION
          STD    T0 
          SHN    2
          ADD    T0 
          RAM    RMAB 
          TLDC   MS1W,CPAD
          CRM    OBUF+2,T1
 RMAB     EQU    *-1         (CKO, RFO) 
          UJN    RMAX 
 RMB      SPACE  4,10 
**        RMB - READ SECOND PART OF ERROR MESSAGE 
* 
*         USES   T1, T2.
* 
*         CALLS  WNS. 
  
  
 RMB      SUBR               ENTRY/EXIT 
 RMBA     LDC    0           (CEM)
          ZJN    RMBX        IF NO ERROR MESSAGE
          STD    T1 
          STM    BFMS+1      SET SECTOR WORD COUNT
          SHN    -14
          STD    T2 
          LDD    T1 
          ZJN    RMB1        IF NO SECOND PART OF MESSAGE 
          TLDC   MS1W,CPAD
          ADD    T2 
          CRM    BFMS+2,T1
 RMB1     LDC    BFMS        WRITE SHORT SECTOR 
          RJM    WNS
          UJN    RMBX        RETURN 
          SPACE  4,10 
          USE    BUFFER 
  
  
          ERRNG  OBUF-* 
          TITLE  ROUTINES OVERLAYED BY *OBUF*.
 CKO      SPACE  4,10 
**        CKO - CHECK TERMINAL INPUT AND OUTPUT.
* 
*         EXIT   (OP - OP+1) = OUTPUT DATA POINTER. 
*                (SC) = SECTOR COUNT OF OUTPUT BUFFER.
* 
*         USES   T1, T8, T9, SC, CM - CM+4. 
* 
*         CALLS  ANR, CBP, CEM, SIO, VAD. 
  
  
 CKO      SUBR               ENTRY/EXIT 
          TLDC   TINW,CPAD   CHECK FOR INPUT FET POINTER SET
          CRD    CM 
          LDD    CM+3 
          SCN    77 
          SHN    6
          ADD    CM+2 
          SHN    6
          ZJN    CKO1        IF NO INPUT REQUEST
          LDC    0
 INEF     EQU    *-1         (INTERACTIVE ERROR FLAG) 
          NJN    CKO1        IF ERROR FLAG
          LDN    /REM/VIPR   SET INPUT REQUESTED
          RAM    TERA 
 CKO1     TLDC   TIOW,CPAD   CHECK IF OUTPUT FET POINTER SET
          CRD    T8-3 
          LDD    T8 
          LPN    37 
          STD    T8 
          SHN    14 
          ADD    T9 
          NJN    CKO6        IF EXPLICIT OUTPUT REQUEST 
          LDN    PSNI 
          STM    ANRA        OUTPUT ONLY COMPLETE LINES 
          RJM    SIO         SEARCH FOR IMPLICIT OUTPUT 
          NJN    CKO7        IF OUTPUT FOUND
 CKO2     LDN    0           CLEAR SECTOR COUNT 
          STD    SC 
          AOM    RMSA        ALLOW FOR ZERO LENGTH OUTPUT SECTOR
 CKO3     LDM    INEF 
          NJN    CKO4        IF ERROR FLAG
          LDM    CPAB 
          LPN    1
          NJN    CKO5        IF JOB ACTIVITY
 CKO4     RJM    CEM         CHECK FOR ERROR MESSAGES 
 CKO5     LJM    CKOX        RETURN 
  
*         PROCESS OUTPUT. 
  
 CKO6     RJM    VAD         READ FET+0 
          CRM    TFET,ON
 CKO7     RJM    CBP         CHECK BUFFER PARAMETERS
          NJP    CKO2        IF INVALID FET 
          LDD    T8          SET UP TO UPDATE FET 
          LPN    37 
          SHN    14 
          LMD    T9 
          SHN    14 
          STM    MSRE+1 
          STM    WTOB+1 
          SHN    -14
          STM    MSRE 
          RAM    WTOB 
          RJM    ANR         ASSURE NETWORK REQUIREMENTS
          LDD    CN+3        LENGTH = IN - OUT
          SBD    OP 
          SHN    14 
          ADD    CN+4 
          SBD    OP+1 
          PJN    CKO8        IF IN .GE. OUT 
          SHN    6           LENGTH = (LIMIT - OUT) + (IN - FIRST)
          ADD    CM+1 
          SBD    T7 
          SHN    14 
          ADD    CM+2 
          SBD    CM 
 CKO8     STD    T1          SAVE LENGTH
          SHN    -6 
          ADN    1           ALLOW FOR EOR SECTOR 
          STD    SC 
          LDD    T1          SET LAST SECTOR WORD COUNT 
          LPN    77 
          STM    RDAA 
          LDD    CM+1        WORD COUNT TO LIMIT = LIMIT - OUT
          SBD    OP 
          SHN    14 
          ADD    CM+2 
          SBD    OP+1 
          STD    T1          SAVE WORDS TO LIMIT
          SBN    1
          SHN    -6          STORE SECTORS TO LIMIT 
          STM    SLIM 
          LDD    T1          CHECK WORD COUNT TO LIMIT
          LPN    77 
          ZJN    CKO9        IF FULL SECTOR 
          STM    RDAD        SET WORD COUNT OF FIRST PART 
 CKO9     LDD    CM          SET FIRST
          STM    RDAG+1 
          STM    RDAJ+1 
          LDD    T7 
          RAM    RDAG 
          STM    RDAJ 
          LJM    CKO3        CHECK ERROR
 ANR      SPACE  4,25 
**        ANR - ASSURE NETWORK REQUIREMENTS.
* 
*         ENTRY  (TERA) = BIT *VIPR* SET IF INPUT REQUEST.
*                (TFET+4) = FET REQUEST CODE. 
*                (JFLC) = JOB ACTIVITY (ZERO IF END OF JOB) 
*                (T7 - CM) = FIRST. 
*                (CN+3 - CN+4) = IN.
*                (OP - OP+1) = OUT. 
*                (CM+1 - CM+2) = LIMIT. 
* 
*         EXIT   BUFFER ACCEPTED AS-IS IF ANY OF- INPUT REQUEST, BUFFER 
*                FULL AND NO END-OF-LINE, WRITE EOR/EOF, OR END OF JOB. 
*                IF NOT ONE OF THE ABOVE SPECIAL CASES, 
*                (CN+3 - CN+4) IS ALTERED TO ENCOMPASS ALL TERMINATED 
*                DATA LINES IN THE BUFFER.  A LINE FRAGMENT WILL NOT BE 
*                SENT TO THE TERMINAL IN THIS CASE. 
* 
*         USES   CN+3 - CN+4, T1 - T4, ZR - ZR+4. 
* 
*         CALLS  GMX, RRR, SRR. 
* 
*         MACROS ISTORE.
  
  
 ANR      SUBR               ENTRY/EXIT 
          LDM    TERA        CHECK INPUT REQUESTED
          LPN    /REM/VIPR
          NJN    ANRX        IF INPUT REQUESTED, RETURN 
          LDM    CPAB 
          LPN    1
          ZJN    ANRX        IF END OF JOB STEP 
          LDM    TFET+4 
          LPC    774
          LMN    14 
 ANRA     NJN    ANRX        IF NOT BUFFERED WRITE
*         PSN                (IMPLICIT OUTPUT)
          LDD    CN+3        IN 
          STD    T1 
          STD    T3 
          LDD    CN+4 
          STD    T2 
          STD    T4 
          UJP    ANR4        CHECK IF EMPTY BUFFER
  
 ANR1     SOD    T2          IN-1 
          PJN    ANR2        IF NO BORROW FROM BITS 14 - 21 
          AOD    T2 
          SOD    T1 
 ANR2     LDD    T1          CHECK IN-1 .GE. FIRST
          SBD    T7 
          SHN    14 
          ADD    T2 
          SBD    T7+1 
          PJN    ANR3        IF IN-1 .GE. FIRST 
          LDD    CM+1        SET WORKING IN = LIMIT 
          STD    T1 
          LDD    CM+2 
          STD    T2 
          UJN    ANR1        REPEAT FOR BUFFER POINTER WRAP-AROUND
  
 ANR3     LDD    T1 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    T2 
          CRD    ZR 
          LDD    ZR+4        CHECK FOR END-OF-LINE
          ZJP    ANR5.1      IF END OF LINE FOUND IN BUFFER 
          LDD    T1          DECREMENT IN FOR EXIT CONDITION
          STD    CN+3 
          LDD    T2 
          STD    CN+4 
          PSN 
*         UJN    ANR4        (ALLOW ONLY ONE PASS THROUGH THIS CODE)
 ANRB     EQU    *-1
          ISTORE  ANRB,(UJN ANR4) 
          LDD    T1 
          RAM    ANRC-1 
          LDD    T2 
          STM    ANRC 
 ANR4     SBD    OP+1        CHECK FOR IN .NE. OUT
          SHN    6
          ADD    CN+3 
          SBD    OP 
          NJP    ANR1        IF IN .NE. OUT, CONTINUE SEARCH
  
*         CHECK INITIAL BUFFER CONDITIONS BY COMPUTING LENGTH AVAILABLE 
*         FOR A WRITE INTO THE BUFFER.
  
          LDD    OP          LENGTH = OUT - IN
          SBD    T3 
          SHN    14 
          ADD    OP+1 
          SBD    T4 
          PJN    ANR5        IF OUT .GE. IN 
          SHN    6           LENGTH = (LIMIT-FIRST)-(IN-OUT)
          ADD    CM+1 
          SBD    T7 
          SHN    14 
          ADD    CM+2 
          SBD    T7+1 
 ANR5     SBN    1
          ZJN    ANR5.2      IF BUFFER WAS FULL INITIALLY 
  
*         CHECK THE TERMINAL CLASS TO SEE WHETHER OR NOT THE TERMINAL 
*         IS SYNCHRONOUS, ASYNCHRONOUS, OR A MUX TERMINAL.
  
 ANR5.1   RJM    SRR         SET R-REGISTER TO IAF RA 
          RJM    GMX         CHECK MULTIPLEXOR STATUS 
          PJN    ANR6        IF MUX TERMINAL
          LDD    TA          GET ADDRESS OF *VMST* TABLE
          SHN    6
          ADN    /REM/VMST
          CRD    ZR 
          LDD    ZR+1        READ TERMINAL *VMST* WORD
          SHN    6
          ADD    TA 
          SHN    6
          ADD    ZR+2 
          ADD    TN 
          CRD    ZR 
          LDD    ZR+1        CHECK FOR SYNC OR ASYNC TERMINAL 
          LPC    377
          SBN    10+1        TERMINAL CLASS .LE. 8 = ASYNC LINE 
          PJN    ANR6        IF SYNCHRONOUS TERMINAL
          LDC    0
 ANRC     EQU    *-1
          ZJN    ANR6        IF BUFFER ENDED WITH AN EOL
          STD    T4 
          SHN    -14
          STD    T3 
 ANR5.2   LDD    T3 
          STD    CN+3 
          LDD    T4 
          STD    CN+4 
 ANR6     RJM    RRR         RESTORE R-REGISTER 
          LDN    ZERL        RESET (ZR - ZR+4)
          CRD    ZR 
          LJM    ANRX        RETURN 
 CBP      SPACE  4,15 
**        CBP - CHECK BUFFER PARAMETERS.
* 
*         ENTRY  (T8 - T9) = FET ADDRESS. 
* 
*         EXIT   (A) = 0, IF FET VALID. 
*                (T7 - CM) = FIRST. 
*                (CN+3 - CN+4) = IN.
*                (OP - OP+1) = OUT. 
*                (CM+1 - CM+2) = LIMIT. 
* 
*         USES   CM - CM+4, CN+2 - CN+6, T6 - T7. 
* 
*         MACROS MONITOR. 
  
  
 CBP      SUBR               ENTRY/EXIT 
          LDD    T8 
          STD    CM+3 
          LDD    T9 
          STD    CM+4 
          LDC    3           VALIDATE ALL FET PARAMETERS
          STD    CM+1 
          MONITOR  VFPM      VERIFY FET PARAMTERS 
          LDD    CM+1 
          NJN    CBPX        IF BAD FET 
          LDD    T8          SAVE *OUT* POINTER 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    T9 
          ADN    3
          CRM    MSRF,ON
          ERRNZ  CN+5-OP     DIRECT CELLS MUST BE CONTIGOUS 
          LDD    MA          READ IN AND OUT
          ADN    2
          CRD    CN+2 
          ADN    1
          CRD    T6 
          LDN    0           INDICATE NO ERROR
          UJP    CBPX        RETURN 
 CEM      SPACE  4,10 
**        CEM - CHECK ERROR MESSAGE.
* 
*         ENTRY  (TT - TT+1) = TERMINAL TABLE ADDRESS.
*                (INEF) = INTERACTIVE ERROR FLAG. 
* 
*         USES   CM - CM+4, CN - CN+4, T1 - T2. 
* 
*         CALLS  RRR, SRR, TSM. 
* 
*         MACROS MONITOR. 
  
  
 CEM      SUBR               ENTRY/EXIT 
          RJM    SRR         SET R-REGISTER TO IAF RA 
          LDN    0           INITIALIZE MESSAGE WORD COUNT
          STD    T2 
          LDD    TT          GET SYSTEM 
          SHN    14 
          ADD    TT+1 
          ADN    /REM/VSTT
          CRD    CM 
          RJM    RRR         RESTORE R-REGISTER 
          LDD    CM+3 
          LPN    77 
          STD    CM 
  
*         DETERMINE IF STATUS MESSAGE TO BE ISSUED TO TERMINAL. 
  
          TLDC   CSPW,CPAD   CHECK *SUPPRESS ERROR MESSAGE* FLAG
          CRD    CN 
          LDD    CN 
          SHN    21-5 
          MJN    CEM6        IF ERROR MESSAGES SUPPRESSED 
          LDD    CM          CHECK IF BATCH SUBSYSTEM 
          LMN    /REM/BATS
          ZJN    CEM1        IF BATCH SUBSYSTEM 
          LDM    INEF 
          ZJN    CEM6        IF NO ERROR MESSAGE
 CEM1     RJM    TSM         TERMINATE STATUS MESSAGE 
  
*         CHECK CPU TIME MESSAGE REQUIRED.
  
 CEM6     LDD    CM          CHECK SYSTEM 
          SBN    /REM/BASS
          MJP    CEM7        IF BELOW *BASIC* 
          SBN    /REM/BATS-/REM/BASS
          PJN    CEM7        IF *BATCH* OR ABOVE
          TLDC   SRUW,CPAD   READ SRU ACCUMULATORS
          CRD    CM 
          ADN    SRJW-SRUW
          CRD    CN 
          LDD    MA          WRITE TO MESSAGE BUFFER
          CWD    CN 
          ADN    1
          CWD    CM 
          LDN    /CPS/ABEF
          STD    CM+1 
          MONITOR  ACTM 
          LDD    MA 
          CRM    CEMB+4,ON
          LDM    CEMB+4 
          ZJN    CEM7        IF NO CPU TIME 
          TLDC   MS1W,CPAD   WRITE TIME TO MESSAGE BUFFER 
          ADD    T2 
          CWM    CEMB,TR
          LDN    3
          RAD    T2 
 CEM7     LDD    T2 
          ZJN    CEM10       IF NO MESSAGE(S) 
          LDM    RDAA        GET LAST SECTOR WORD COUNT 
          ADD    T2 
          STD    T1 
          SHN    -6 
          NJN    CEM8        IF SECTOR OVERLAP
          LDD    T2          SET WORD COUNT 
          UJN    CEM9        STORE WORD COUNT AND RETURN
  
 CEM8     LDD    T1          SET SECOND PART WORD COUNT 
          LPN    77 
          STM    RMBA+1 
          AOM    RMSA        INCREMENT SECTOR COUNT 
          LDD    HN          SET FIRST PART 
          SBM    RDAA 
          RAM    RMBA 
          LPN    77 
 CEM9     RAM    RMAA 
 CEM10    LJM    CEMX        RETURN 
  
 CEMB     DATA   28H"EM""NL"SRU 000000.000 UNTS.
          CON    0
 DFS      SPACE  4,20 
**        DFS - DETERMINE FLUSH STATUS. 
* 
*         THE REQUIREMENTS FOR A FILE TO BE FLUSHED ARE:  
*                  FET MUST BE WITHIN FL. 
*                  BUFFER MUST HAVE DATA IN IT. 
*                  FET MUST NOT BE BUSY.
*                  *CIO* CODE IN FET MUST BE IN THE LIST. 
*                  FILE MUST BE *OUTPUT* AND UNASSIGNED OR IT MUST BE 
*                            ASSIGNED TO TERMINAL EQUIPMENT.
* 
*         ENTRY  (T8 - T9) = FET ADDRESS. 
* 
*         EXIT   (A) = 0, IF NO FLUSH CANDIDATE.
*                (TFET - TFET+4) = FIRST WORD OF FET. 
* 
*         USES   T1 - T5, CM - CM+4, CN - CN+4. 
* 
*         CALLS  VAD. 
* 
*         MACROS NFA. 
  
  
 DFS      SUBR               ENTRY/EXIT 
          LDD    T8          READ FET PARAMETERS
          LPN    37 
          SHN    14 
          LMD    T9 
          ADN    3
          RJM    VAD
          ZJN    DFSX        IF FET OUTSIDE FL
          CRD    T3          READ OUT 
          SBN    1
          CRD    T1          READ IN
          SBN    2
          CRM    TFET,ON     READ FET+0 
          LDM    TFET+4 
          LPN    1
          ZJN    DFSX        IF FET BUSY
          LDD    T6 
          SBD    T4 
          SHN    14 
          ADD    T7 
          SBD    T5 
          ZJN    DFSX        IF BUFFER EMPTY
          LDN    DFSAL       CHECK ACCEPTABLE *CIO* CALLS 
          STD    T1 
          LDM    TFET+3 
          LPN    77 
          ZJN    DFS2        IF NO FET ERRORS 
 DFS1     LDN    0
          LJM    DFSX        RETURN 
  
 DFS2     SOD    T1 
          MJN    DFS1        IF FET CODE NOT IN LIST
          LDM    DFSA,T1
          LMM    TFET+4 
          SCN    2           IGNORE BINARY BIT
          NJN    DFS2        IF NOT VALID FET CODE
          LDD    NF          SET NFL SIZE + 1 
          SHN    6
          ADN    1
          STD    T7 
  
*         SEARCH FNT ENTRIES FOR ASSIGNED FILE. 
  
          LDC    FNTN+LENF
          STD    T6 
 DFS3     NFA    T6,R        READ FNT ENTRY 
          CRD    CM 
          LDD    CM          COMPARE FILE NAMES 
          ZJN    DFS4        IF NO ENTRY
          LMM    TFET 
          NJN    DFS4        IF NO MATCH
          LDD    CM+1 
          LMM    TFET+1 
          NJN    DFS4        IF NO MATCH
          LDD    CM+2 
          LMM    TFET+2 
          NJN    DFS4        IF NO MATCH
          LDD    CM+3 
          LMM    TFET+3 
          SCN    77 
          ZJN    DFS6        IF MATCH 
 DFS4     LDN    LENF        INCREMENT TO NEXT ENTRY
          RAD    T6 
          SBD    T7 
          MJN    DFS3        IF NOT END OF FNT
          LDM    TFET        CHECK FOR *OUTPUT* 
          LMC    2ROU 
          NJN    DFS5        IF NOT *OUTPUT*
          LDM    TFET+1 
          LMC    2RTP 
          NJN    DFS5        IF NOT *OUTPUT*
          LDM    TFET+2 
          LMC    2RUT 
          NJN    DFS5        IF NOT *OUTPUT*
          LDM    TFET+3 
          SCN    77 
          ZJN    DFS7        IF *OUTPUT*
 DFS5     LDN    0           FILE NOT TO BE FLUSHED 
          UJN    DFS8        RETURN 
  
 DFS6     NFA    T6,R        CHECK EQUIPMENT ASSIGNMENT 
          ADN    FSTL 
          CRD    CM 
          LDD    CM 
          LPC    777
          LMN    TTEQ 
          NJN    DFS5        IF NOT ASSIGNED TO *TT*
 DFS7     LDN    1           INDICATE OUTPUT AVAILABLE
 DFS8     LJM    DFSX        RETURN 
  
*         TABLE OF CIO CODES TO FLUSH ON. 
  
 DFSA     BSS    0
  
          CON    1           FET NOT USED 
          CON    5           WRITE PRU
          CON    15          BUFFERED WRITE 
          CON    25          WRITE EOR
          CON    35          WRITE EOF
          CON    105         OPEN WRITE 
          CON    121         OPEN ALTER 
          CON    145         OPEN WRITE REWIND
          CON    161         OPEN ALTER REWIND
  
 DFSAL    EQU    *-DFSA 
 GMX      SPACE  4,10 
**        GMX - GET MULTIPLEXOR STATUS. 
* 
*         ENTRY  (TA) = SET PER *COMPSRR* ROUTINE *PIR*.
*                (TN) = TERMINAL CONNECTION NUMBER. 
*                (R)  = IAF RA IF R-REGISTERS PRESENT ON MACHINE. 
* 
*         EXIT   (A) = POSITIVE IF MULTIPLEXOR TERMINAL TYPE. 
* 
*         USES   ZR - ZR+4. 
  
  
 GMX      SUBR               ENTRY/EXIT 
          LDD    TA          TIMESHARING REFERENCE ADDRESS
          SHN    6
          ADN    /REM/VNTP   TERMINAL TABLE POINTER 
          CRD    ZR 
          LDD    ZR+2 
          ZJN    GMXX        IF NO NETWORK TERMINALS DEFINED
          SBN    1           (A) = HIGHEST MUX TERMINAL NUMBER
          SBD    TN 
          UJN    GMXX        RETURN 
 SIO      SPACE  4,15 
**        SIO - SEARCH FOR IMPLICIT OUTPUT. 
* 
*         CHECKS LIST OF FILES ENTRY.  IF NO LIST OF FILES ENTRY, IT
*         CHECKS THE RA+2 LIST FOR FET OR FIT POINTERS. 
* 
*         EXIT   (A) = 0, IF NO DATA TO OUTPUT. 
*                (T8 - T9) = FET ADDRESS, IF DATA TO OUTPUT.
* 
*         USES   CM - CM+4, CN - CN+4, T1 - T5, T8 - T9.
* 
*         CALLS  DFS, VAD.
  
  
 SIO      SUBR               ENTRY/EXIT 
          LDD    FL 
          ZJN    SIOX        IF NO FL 
          TLDC   LOFW,CPAD   READ LIST OF FILES POINTER 
          CRD    CM 
          LDD    CM+1 
          LPN    37 
          SHN    14 
          LMD    CM+2 
          ZJN    SIO2        IF LIST OF FILES NOT SPECIFIED 
          ADN    1
          RJM    VAD         VALIDATE ADDRESS 
          ZJN    SIOX        IF ADDRESS BAD 
          CRD    T8-3        READ FIRST ENTRY 
          RJM    DFS         DETERMINE FLUSH STATUS 
 SIO1     UJN    SIOX        RETURN 
  
*         PROCESS RA+2 LIST.
  
 SIO2     AOM    SIOA 
          LPN    77 
          LMN    PGNR 
          ZJN    SIOX        IF END OF LIST 
          LDD    RA 
          SHN    6
 SIOA     ADN    1           POINTER TO LIST ENTRY
          CRD    T8-3 
          LDD    T8-3 
          ZJN    SIO1        IF END OF LIST 
          LDD    T8          VALIDATE FET/FIT ADDRESS 
          LPN    37 
          SHN    14 
          LMD    T8+1 
          SBN    PGNR 
          MJN    SIO2        IF FET ADDRESS LESS THAN *PGNR*
          ADK    PGNR+5 
          RJM    VAD
 SIO3     ZJN    SIO2        IF FET/FIT OUTSIDE FL
          SBN    5           DETERMINE IF FET/FIT 
          CRD    CN 
          ADN    1
          CRD    T1 
          LDD    CN+3 
          LPN    77 
          ADD    CN+4 
          NJN    SIO4        IF NOT POSSIBLE FIT
          LDD    T1+3        SET FIT/FET ADDRESS
          STD    T8 
          LDD    T1+4 
          STD    T9 
 SIO4     RJM    DFS         DETERMINE FLUSH STATUS 
          ZJN    SIO3        IF FILE NOT TO BE FLUSHED
          LJM    SIOX        RETURN 
 TSM      SPACE  4,10 
**        TSM - TERMINATE STATUS MESSAGE. 
* 
*         EXIT   (T2) = MESSAGE WORD COUNT IF MESSAGE PRESENT.
*                (T2) = 0 IF NO MESSAGE.
*                END OF MESSAGE ZERO FILLED.
* 
*         USES   T2, CN - CN+4. 
  
  
 TSM3     STD    CN+1 
 TSM4     STD    CN+2 
 TSM5     STD    CN+3 
 TSM6     STD    CN+4 
 TSM7     LDD    T2 
          NJN    TSM8        IF NOT FIRST MESSAGE WORD
          LDD    CN 
          ZJN    TSMX        IF NO MESSAGE
 TSM8     TLDC   MS1W,CPAD
          ADD    T2 
          CWD    CN          WRITE LAST WORD OF MESSAGE 
          AOD    T2          SET MESSSAGE LENGTH
  
 TSM      SUBR               ENTRY/EXIT 
          LDN    0
          STD    T2 
 TSM1     TLDC   MS1W,CPAD   READ MESSAGE WORD
          ADD    T2 
          CRD    CN 
          LDD    CN 
          ZJN    TSM3        IF END OF MESSAGE
          LDD    CN+1 
          ZJN    TSM4        IF END OF MESSAGE
          LDD    CN+2 
          ZJN    TSM5        IF END OF MESSAGE
          LDD    CN+3 
 TSM2     ZJN    TSM6        IF END OF MESSAGE
          LDD    CN+4 
          ZJN    TSM7        IF END OF MESSAGE
          LDD    T2 
          LMN    MS2W-MS1W-1
          ZJN    TSM2        IF LAST WORD OF MESSAGE BUFFER 
          AOD    T2          ADVANCE WORD INDEX 
          UJN    TSM1        CHECK NEXT WORD
 VAD      SPACE  4,10 
**        VAD - VALIDATE ADDRESS WITHIN FL. 
* 
*         ENTRY  (A) = ADDRESS. 
* 
*         EXIT   (A) = 0, IF ADDRESS BEYOND FL. 
*                (A) = ABSOLUTE ADDRESS OTHERWISE.
  
 VAD1     LDN    0           INDICATE ADDRESS BEYOND FL 
  
  
 VAD      SUBR               ENTRY/EXIT 
          SHN    14 
          SBD    FL 
          SHN    6
          PJN    VAD1        IF ADDRESS BEYOND FL 
          SHN    14 
          ADD    FL 
          ADD    RA 
          SHN    6
          UJN    VADX        RETURN 
          SPACE  4,10 
          ERRNG  BFMS-*      SYSTEM SECTOR BUFFER OVERLAYS *3RP* CODE 
 PRP      TITLE  INITIALIZATION.
**        PRP - PRESET PROGRAM. 
* 
*         ENTRY  (CN - CN+4) = WORD *SRUW* OF CPA.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  SIC. 
* 
*         MACROS MONITOR. 
  
  
 PRP      SUBR               ENTRY/EXIT 
          LDC    PRPA        SET RELOCATION TABLE ADDRESS 
          RJM    SIC         RELOCATE INSTRUCTIONS
          TLDC   TXSW,CPAD
          CRD    CM 
          LDD    CM          SET SYSTEM CODE
          SHN    -6 
          RAM    TERC 
          LPN    77 
          SBN    /REM/MSYS
          MJN    PRP1        IF VALID SUBSYSTEM CODE
          LDN    0           INDICATE NO ERROR FLAG 
          STD    CM+2 
          LDC    *           SET DETECTION ADDRESS
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
          LDM    TERC        CLEAR SUBSYSTEM CODE 
          SCN    77 
          STM    TERC 
 PRP1     LDD    IR+2 
          NJN    PRP1.1      IF NOT ROLLOUT FROM A CONTROL POINT
          LDD    IR+4        SET INTERACTIVE ERROR FLAG 
          STM    INEF 
          NJN    PRP2        IF ERROR FLAG SET
 PRP1.1   LDD    CN 
          LPC    2400        MASK TIME AND SRU LIMIT FLAGS
          NJN    PRP3        IF RESOURCE LIMITS EXCEEDED
 PRP2     LJM    PRPX        RETURN 
  
 PRP3     SHN    -12
          ZJN    PRP4        IF SRU LIMIT 
          LDN    1&2         SET TIME LIMIT 
 PRP4     LMN    2
          SHN    6
          RAM    TERB 
          LDN    DOJS        FORCE *DOJS* ON RESOURCE LIMIT 
          STM    CJSA 
          UJN    PRP2        RETURN 
  
  
 PRPA     BSS    0           INSTRUCTION RELOCATION TABLE 
          LIST   D
 SIC      HERE
          LIST   *
          CON    0           TERMINATE ENTRIES
  
  
*         PRESET COMMON DECKS.
  
  
*CALL     COMPSTA 
          SPACE  4,10 
*         CHECK FOR OVERFLOW. 
  
  
          OVERFLOW  E1RO,EPFW 
          TITLE 
          TTL    1RO/3RQ - PROCESS MASS STORAGE ERRORS. 
          TITLE  MAIN ROUTINES. 
          QUAL   3RQ
          IDENT  3RQ,PRSX 
*COMMENT  1RO - PROCESS MASS STORAGE ERRORS.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
**        3RQ - PROCESS MASS STORAGE ERRORS.
  
  
          ORG    BFMS+5 
 PRS      SUBR               ENTRY/EXIT 
          LDC    TSIC        SET INSTRUCTION RELOCATION TABLE ADDRESS 
          RJM    SIC         RELOCATE INSTRUCTIONS
          UJP    PRSX        RETURN 
 MSE      SPACE  4,13 
**        MSE - PROCESS MASS STORAGE ERROR OR INSUFFICIENT SPACE. 
* 
*         ENTRY  (A) .EQ. 0 IF INSUFFICIENT SPACE FOR ROLLOUT.
*                    .NE. 0 IF MASS STORAGE ERROR.
* 
*         EXIT   TO *PPR* IF PCP ROLLOUT. 
*                TO *ROJ7* IF NOT PCP ROLLOUT.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CDF, ERS, RSJ, *0DF*.
* 
*         MACROS EXECUTE, MONITOR.
  
  
 MSE      BSS    0           ENTRY
          ZJN    MSE1        IF NOT MASS STORAGE ERROR
  
*         PROCESS ROLLOUT FILE WRITE ERROR. 
  
          LDD    IR+2 
          LMN    1
          ZJN    MSE3        IF *DMP=* CALL 
          RJM    RSJ         RESTORE JOB TO ITS PRE-ROLLOUT STATE 
          LDM    CROG        RELEASE TRACK CHAIN
          STD    CM+1 
          LDM    CROG+1 
          STD    CM+2 
          MONITOR  DTKM 
          UJN    MSE2        CHECK ROLLOUT TYPE 
  
*         PROCESS NO ROLLOUT FILE SPACE AVAILABLE.
  
 MSE1     LDK    NCPL        ISSUE SYSTEM CP MESSAGE
          CRD    CM 
          AOD    CM+1 
          SHN    7
          ADK    MS2W 
          CWM    MSEA,TR
 MSE2     LDD    IR+2 
          LMN    3
          ZJN    MSE5        IF PCP ROLLOUT 
          LMN    1&3
          NJN    MSE4        IF NOT *DMP=* ROLLOUT
  
*         RETURN DM* FILE.
  
 MSE3     LDN    1           SET ROLLOUT FLAG 
          RJM    ERS
          RJM    CDF         CLEAR *DMP=* FLAGS 
          LDN    2           SET RETURN ROLLOUT FILE FLAG 
          STM    OVL0-1 
          EXECUTE  0DF,OVL0  RETURN DM* FILE
  
*         EXIT TO CLEAR JOB ADVANCE AND DROP PP.
  
 MSE4     LDK    /CPS/DPPS
          LJM    ROJ7        CLEAR JOB ADVANCE AND DROP 
  
*         RESTART PCP ROLLOUT.
  
 MSE5     LDD    IA          REWRITE ORIGINAL PP INPUT REGISTER 
          CWD    IR 
          LJM    PPR         RESTART PCP ROLLOUT
  
  
 MSEA     DATA   C* NO ROLLOUT SPACE AVAILABLE.*
 CDF      SPACE  4,10 
**        CDF - CLEAR *DMP=* FLAGS. 
* 
*         *CDF* WILL CLEAR *DMP=* PARAMETERS SET BY *1AJ* PRIOR TO
*         CALLING *1RO*.  THIS WILL RESULT IN THE REQUEST BEING 
*         REINITIATED BY *1AJ* AT A LATER TIME. 
* 
*         EXIT   *SPCW* *DMP=* INITIATED FLAGS CLEARED. 
*                (PPDW+2) = 0.
* 
*         USES   CM - CM+4, CN - CN+4.
  
  
 CDF      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADK    SPCW 
          CRD    CN 
          ADN    PPDW-SPCW
          CRD    CM 
          LDD    CN+1        CLEAR *DMP=* INITIATED FLAGS 
          SCN    43 
          STD    CN+1 
          LDN    0           CLEAR PPDW+2 
          STD    CM+2 
          LDD    CP          REWRITE *SPCW* 
          ADC    SPCW 
          CWD    CN 
          ADN    PPDW-SPCW   REWRITE *PPDW* 
          CWD    CM 
          UJN    CDFX        RETURN 
 RSJ      SPACE  4,10 
**        RSJ - RESET JOB TO ITS STATE AT THE START OF ROLLOUT. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RSJ      SUBR               ENTRY/EXIT 
  
*         RESTORE *OUT* POINTER IN TERMINAL OUTPUT FET. 
  
          LDM    MSRE 
          SHN    14 
          LMM    MSRE+1 
          ZJN    RSJ1        IF NO TERMINAL OUTPUT AVAILABLE
          ADD    RA 
          SHN    6
          ADN    3
          CWM    MSRF,ON
  
*         RESTORE ROLLOUT CONTROL FLAGS AND TIMED/EVENT ROLLOUT 
*         DESCRIPTOR. 
  
 RSJ1     TLDC   STSW,CPAD   RESTORE ROLLOUT CONTROL FLAGS
          CRD    CM 
          LDM    MSRG        GET ORIGINAL ROLLOUT CONTROL FLAGS 
          STD    CM+2 
          LDD    IR+2 
          LMN    3
          NJN    RSJ2        IF NOT PCP ROLLOUT 
          LDC   /CPS/ALCS    SET ALTERNATE CP FLAG
          STD    CM+1 
          MONITOR  CCAM      CLEAR ALTERNATE PCP ASSIGNMENT 
 RSJ2     TLDC   STSW,CPAD
          CWD    CM 
          ADN    TERW-STSW   RESTORE ORIGINAL *TERW* IMAGE
          CWM    MSRH,ON
          UJP    RSJX        RETURN 
TSIC      SPACE  4,10 
**        TSIC - INSTRUCTION RELOCATION TABLE.
  
  
 TSIC     BSS    0           INSTRUCTION RELOCATION TABLE 
          LIST   D
 SIC      HERE
          LIST   *
          CON    0           TERMINATE ENTRIES
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          OVERFLOW  BFMS+5,EPFW 
          TITLE 
          TTL    1RO/3RS - PROCESS *DMP=* CALL
          QUAL   3RS
          IDENT  3RS,DMPX 
*COMMENT  1RO - PROCESS *DMP=* CALL.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 3RS      SPACE  4,10 
**        3RS - PROCESS *DMP=* CALL.
  
  
          ORG    E1RO 
 DMP      SUBR               ENTRY/EXIT 
          UJN    DMPX        RETURN 
 CDM      SPACE  4,15 
**        CDM - CREATE DM* FNT ENTRY. 
* 
*         EXIT   (FA) = NFL ADDRESS OF DM* FILE FNT ENTRY.
* 
*         USES   FN - FN+4, FS. 
* 
*         CALLS  *0BF*. 
* 
*         MACROS EXECUTE, MONITOR.
  
  
 CDM      SUBR               ENTRY/EXIT 
          LDN    ZERL        CLEAR FNT IMAGE
          CRD    FN 
          LDC    3R*DM       CREATE LFN 
          STD    FN 
          SHN    -6 
          SCN    77 
          STD    FN+1 
  
*         CALL *0BF* TO CREATE FNT/FST ENTRY. 
  
          LDN    NEEQ        ASSIGN NULL EQUIPMENT
          STD    FS 
          LDN    40          SELECT SPECIAL FILE OPTION 
          STM    OVL0-1 
          EXECUTE  0BF,OVL0  BUILD FILE USING RESERVED FNT ENTRY
          ZJN    CDMX        IF FNT/FST ENTRY CREATED 
  
*         IF THE FNT/FST ENTRY WAS NOT CREATED, HANG THE PP 
*         SINCE THE RESERVED ENTRIES SHOULD ENSURE SUCCESSFUL 
*         CREATION. 
*         IF THE FILE ALREADY EXISTS BUT IS NOT ASSIGNED TO THE 
*         NULL EQUIPMENT HANG THE PP SINCE THIS INDICATES A SYSTEM
*         LOGIC ERROR.
  
          SBD    HN 
          MJN    CDM1        IF FILE NOT ALREADY PRESENT
          LDD    FS 
          LMN    NEEQ 
          NJN    CDM1        IF NOT ASSIGNED TO NULL EQUIPMENT
          SOD    FS+4        SET FILE BUSY
          NFA    FA,R 
          ADN    FSTL 
          CWD    FS 
          LJM    CDMX        RETURN 
  
 CDM1     LDK    SWET        SET SYSTEM SOFTWARE ERROR
          STD    CM+2 
          LDC    *           ADDRESS WHERE ERROR DETECTED 
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
          EXECUTE  1AJ,=
          LDD    IR+1        PLACE *1AJ* CALL IN PP INPUT REGISTER
          LPN    37 
          RAM    CDMA+1 
          LDD    IA 
          CWM    CDMA,ON
          LJM    ROJ8        CALL *1AJ* 
  
  
 CDMA     VFD    18/0L1AJ,6/,36/0 
 CDR      SPACE  4,10 
**        CDR - COMPLETE *DMP=* ROLLOUT.
* 
*         ENTRY  (CROF) = ASSIGNED EM FL IN *UEBS* WORD BLOCKS. 
* 
*         USES   CM - CM+5, FN - FN+4, FS - FS+4. 
* 
*         CALLS  CRS, ERS, ISR. 
* 
*         MACROS EXECUTE, NFA, SFA. 
  
  
 CDR      SUBR               ENTRY/EXIT 
          RJM    CRS         CLEAR RECALL STACK 
  
*         RELEASE ECS FL IF FULL CM FL ROLLOUT. 
  
          LDD    IR+4 
          NJN    CDR1        IF NOT FULL CM FL ROLLOUT
          LDC    1S12        RELEASE ASSIGNED EM
          RJM    ISR
  
*         CLEAR ROLLOUT REQUESTED FLAG AND CPU STATUS FLAG IN *STSW*. 
  
 CDR1     LDN    0
 CDR2     RJM    ERS         ENTER ROLLOUT STATUS 
  
*         FINISH BUILDING DM* FILE FNT ENTRY. 
  
          NFA    FA,R 
          ADK    FNTL        READ FNT ENTRY 
          CRD    FN 
          ADN    FSTL-FNTL   READ FST ENTRY 
          CRD    FS 
          LDD    IR+3        SET/CLEAR WRITE LOCKOUT FLAG 
          LPN    1
          LMN    1
          RAD    FN+3 
          LDC    505         SET WRITE COMPLETE STATUS
          STD    FS+4 
          NFA    FA,R 
          ADK    FNTL        WRITE FNT ENTRY
          CWD    FN 
          ADN    FSTL-FNTL   WRITE FST ENTRY
          CWD    FS 
  
*         CLEAR K-DISPLAY CONTROL, *CMM* CONTROL, AND SCP CONNECTIONS.
  
          LDD    CP 
          ADC    DBAW 
          CRD    CM 
          LDD    CM          SAVE FLAGS 
          SCN    77 
          STD    CM 
          LDD    IR+4 
          NJN    CDR4        IF NOT FULL CM FL ROLLOUT
          LDD    IR+3 
          SHN    21-2 
          MJN    CDR4        IF NOT CPA DUMP
          LDD    CM 
          LPC    7677        CLEAR *CMM* ACTIVE FLAG
          STD    CM 
 CDR4     LDN    ZERL        CLEAR K-DISPLAY ADDRESSES
          CRD    CM+1 
          LDD    CP 
          ADC    DBAW 
          CWD    CM 
          ADK    SSCW-DBAW   CLEAR SCP CONNECTION INDICATORS
          CWD    ZR 
  
*         SET DM* FILE ADDRESS AND ROLLOUT COMPLETE FLAG. 
  
          ADK    RFCW-SSCW
          CRD    CM 
          LDD    FS 
          STD    CM 
          LDD    FS+1 
          STD    CM+1 
          LDD    CP 
          ADK    RFCW 
          CWD    CM 
          SFA    EJT,EO 
          ADK    SCHE 
          CRD    CM 
          LDD    CM+2 
          LPC    7377 
          LMC    400         SET *DMP=* ROLLOUT COMPLETE FLAG 
          STD    CM+2 
          SFA    EJT,EO 
          ADK    SCHE 
          CWD    CM 
  
*         SET *1AJ* CALL TO INITIATE *DMP=* PROGRAM.
  
          EXECUTE  1AJ,=
          LDD    IR+1        PLACE *1AJ* CALL IN PP INPUT REGISTER
          LPN    37 
          RAM    CDMA+1 
          AOM    CDMA+4 
          LDD    IA 
          CWM    CDMA,ON
          LJM    CDRX        RETURN 
 CRS      SPACE  4,10 
**        CRS - CLEAR RECALL STACK. 
* 
*         USES   T1, CM - CM+4. 
  
  
 CRS      SUBR               ENTRY/EXIT 
          LDN    LREC-1      INITIALIZE INDEX 
          STD    T1 
 CRS1     LDD    CP          CLEAR STACK ENTRY
          ADK    RECW 
          ADD    T1 
          CWD    ZR 
          SOD    T1          DECREMENT INDEX
          PJN    CRS1        IF NOT COMPLETE
          LDD    CP          RESET RECALL STACK POINTER 
          ADK    STSW 
          CRD    CM 
          LDN    1           CLEAR RECALL COUNT AND INITIALIZE POINTER
          STD    CM+4 
          LDD    CP 
          ADN    STSW 
          CWD    CM 
          UJN    CRSX        RETURN 
 UFS      SPACE  4,15 
**        UFS - UPDATE DM* FILE STATUS. 
* 
*         ENTRY  (FS) = ROLLOUT FILE EST ORDINAL. 
*                (FS+1) = ROLLOUT FILE FIRST TRACK. 
*                (FS+2) = ROLLOUT FILE CURRENT TRACK. 
* 
*         EXIT   DM* FILE FST ENTRY SET WITH ROLLOUT FILE POINTERS AND
*                  STATUS.
*                (FA) = 0 FOR *WSS* SYSTEM SECTOR WRITE.
* 
*         USES   FN - FN+4, FS+3, FS+4. 
* 
*         MACROS NFA. 
  
  
 UFS      SUBR               ENTRY/EXIT 
          NFA    FA,R 
          ADK    FNTL        READ FNT ENTRY 
          CRD    FN 
          LDC    ROFT*100+SSST  SET FILE TYPE AND STATUS
          STD    FN+4 
          LDN    FSMS        SET FIRST SECTOR 
          STD    FS+3 
          LDN    0           SET FILE STATUS
          STD    FS+4 
          NFA    FA,R 
          ADN    FNTL        WRITE FNT ENTRY
          CWD    FN 
          ADN    FSTL-FNTL   WRITE FST ENTRY
          CWD    FS 
          UJN    UFSX        RETURN 
          SPACE  4,10 
 OVL1     BSS    0           *0BF* LOAD ADDRESS 
 PDM      SPACE  4,10 
**        PDM - PRESET *DMP=* PROCESSING. 
* 
*         ENTRY  SYSTEM SECTOR CLEARED EXCEPT FOR *EJSS*. 
*                EJT ENTRY IN SYSTEM SECTOR *EJSS*. 
* 
*         EXIT   DMP= PRESET COMPLETE.
* 
*         USES   T1, CM - CM+4, FS - FS+4,
* 
*         MACROS ISTORE, NFA. 
  
  
 PDM      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADK    SEPW 
          CRD    CM 
          ADK    SPCW-SEPW
          CRD    FS 
          LDD    FS+1 
          SHN    21-3 
          MJN    PDM1        IF *DMP=* PARAMETER LIST IS IN *SPCW*
  
*         MOVE *DMP=* PARAMETER BLOCK TO NFL. 
  
          LDN    DMPL-1      SET BLOCK SIZE 
          STD    T1 
          LDD    FS+3 
          LPN    37 
          SHN    14 
          LMD    FS+4 
          ZJN    PDM1        IF NO PARAMETER BLOCK EXISTS 
          SHN    14 
          ADD    RA 
          SHN    6
          CRM    DBUF,T1
          NFA    DMPN 
          CWM    DBUF,T1
  
*         CLEAR RA+1 IF NECESSARY.
  
 PDM1     LDD    FS+1 
          SHN    21-4 
          MJN    PDM2        IF RA+1 SHOULD NOT BE CLEARED
          LDD    RA          CLEAR RA+1 
          SHN    6
          ADN    1
          CWD    ZR 
 PDM2     LDN    0           PRESET *DMP=* FOR FULL FL DUMP 
          STM    DPSS 
          LDD    IR+4 
          ZJN    PDM4        IF FULL DUMP 
          STM    JFLB 
          STM    RMSB 
          SBD    FL 
          MJN    PDM3        IF *DMP=* CM FL .LT. ASSIGNED CM FL
          LDD    FL          SET *DMP=* CM FL TO ASSIGNED CM FL 
          STM    JFLB 
          STM    RMSB 
 PDM3     LDD    DI          DISABLE EM ROLLOUT 
          STM    JECI*2+SEQ 
          LDN    0           CLEAR EM FL
          STM    CROD 
          LDM    JFLB        STORE *DMP=* CM FL IN SYSTEM SECTOR
          STM    DPSS 
 PDM4     LDC    /3RS/CDR    MODIFY COMPLETION ROUTINE CALL 
          STM    ROJF 
          LDD    DI          DISABLE JOB STATUS CHANGE
          STM    ROJD 
          STM    JFLA 
          STM    ROJE        DISABLE NFL ROLLOUT
          LDN    0           DO NOT ALLOCATE SPACE FOR NFL
          STM    RMSH 
          ISTORE ROJG,(UJN ROJ8)
          LDN    FS+1        SET TO UPDATE DM* FILE FST ENTRY 
          STM    RMSC 
          LDN    FS+2 
          STM    RMSD 
          LDN    FS 
          STM    RMSE 
          LJM    PDMX        RETURN 
  
 DBUF     BSS    0           *DMP=* PARAMETER BLOCK BUFFER
 3RS      SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          ERRNG  EPFW-OVL1-ZBFL   *0BF* OVERFLOW
          ERRNG  EPFW-DBUF-DMPL*5+5  *DBUF* OVERFLOW
  
  
          OVERFLOW  E1RO,EPFW 
          TITLE 
          TTL    1RJ - RECALL PP AND ROLLOUT JOB. 
          TITLE  1RJ - RECALL PP AND ROLLOUT JOB. 
          QUAL   1RJ
          IDENT  1RJ,RRJ     RECALL PP AND ROLLOUT JOB. 
*COMMENT  1RO - RECALL PP AND ROLLOUT JOB.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       1RJ - RECALL PP AND ROLLOUT JOB.
* 
*         W. E. GOEBEL.      84/10/23.
          SPACE  4,10 
***       *1RJ* CALL PARAMETERS.
* 
*         *1RJ* IS CALLED FROM A PP VIA THE *EXECUTE* MACRO.
* 
*         THE FOLLOWING FIELDS MUST BE SET UPON ENTRY TO *1RJ*. 
* 
*         (IR)    = PP INPUT REGISTER TO RECALL.  THIS IS THE CM COPY 
*                   OF THE INPUT REGISTER.  TYPICALLY IT WILL BE THE
*                   SAME AS UPON INITIAL ENTRY TO THE PP. 
*         (IR+4)  = THE EST ORDINAL TO TIMED EVENT ROLL FOR.
*                   THIS PARAMETER RESIDES IN THE DIRECT CELL *IR*+4, 
*                   NOT IN THE CM COPY OF THE PP INPUT REGISTER.
*         (MP - MP+4) = MESSAGE BUFFER PARAMETERS.
          SPACE  4,10 
***       MS2W MESSAGES.
* 
*         *WAITING - INACCESSIBLE DEVICE.*
          TITLE  LOCAL DEFINITIONS. 
****      COMMON DIRECT LOCATION ASSIGNMENTS. 
  
  
 T8       EQU    16          SCRATCH
 T9       EQU    17          SCRATCH
 MP       EQU    20 - 24     ASSEMBLY BUFFER
 CN       EQU    25 - 31     CM WORD BUFFER 
****
          TITLE  MAIN PROGRAM.
 RRJ      SPACE  4,10 
**        RRJ - MAIN PROGRAM. 
* 
*         ENTRY  (IR+4) = EQUIPMENT NUMBER WAITING FOR. 
* 
*         EXIT   TO PPR, PP IS DROPPED. 
  
  
          ORG    PPFW 
  
 RRJ      UJN    RJS1        ENTRY WHEN CALLED FROM CPU PROGRAM 
          CON    0           ALLOW ROOM FOR RJM ENTRY 
 RJS1     LDD    CP          WRITE MESSAGE TO CONTROL POINT 
          ADN    MS2W 
          CWM    RJSA,TR
  
*         SET JOB STEP PRIVATE FILE RETURN FLAG TO FORCE *1AJ* TO CHECK 
*         FOR PARTIALLY RETURNED FILES BEFORE ADVANCING TO THE NEXT JOB 
*         STEP.  SUCH *1AJ* PROCESSING WOULD BE REQUIRED IF AN
*         INACCESSIBLE DEVICE ERROR PREVENTED THE COMPLETE RETURN OF A
*         FILE BUT THE RECALLED PP DROPPED BECAUSE OF AN ERROR FLAG 
*         BEFORE THE DEVICE BECAME ACCESSIBLE.
  
          LDN    /CPS/RPMS   SET RETURN JOB STEP PRIVATE FILES
          STD    CM+4 
          LDN    /CPS/SCTS   SET JOB CONTROL FLAG 
          STD    CM+1 
          MONITOR  SJCM 
  
*         ROLL OUT JOB ON EVENT IF POSSIBLE.
  
          LDD    CP          CHECK SUBSYSTEM ID 
          ADK    JCIW 
          CRD    CM 
          LDD    CM+2 
          ADC    -LSSI-1
          PJN    RJS2        IF NOT TO ROLL OUT JOB 
          LDN    77          SET ROLLOUT TIME 
          STD    CM+2 
          LDD    IR+4        SET EST ORDINAL
          STD    CM+3 
          LDN    WISE        SET WAIT INACCESSIBLE DEVICE EVENT 
          STD    CM+4 
          LDD    MA          WRITE TIMED/EVENT ROLLOUT PARAMETERS 
          CWD    CM 
          LDN    /CPS/ROTE   SET *ROCM* OPTION
          STD    CM+1 
          MONITOR  ROCM      ROLLOUT CONTROL POINT
  
*         RECALL PP.
  
 RJS2     LDN    ZERL        SET *RECM* SUBFUNCTION 
          CRD    CM 
          LDD    IA          SET INPUT REGISTER TO RECALL 
          CRD    CN 
          LDD    MA 
          CWD    CN 
          ADN    1
          CWD    MP 
          MONITOR  RECM      RECALL AND DROP PP 
          LJM    PPR         ENTER PP RESIDENT
  
 RJSA     DATA   C*WAITING - INACCESSIBLE DEVICE.*
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          OVERFLOW  PPFW,EPFW 
          TITLE 
          TTL    1RO - ROLLOUT JOB. 
          SPACE  4,10 
          END 
