REC 
          IDENT  REC,REC
          PERIPH
          BASE   MIXED
          SST 
 EQV$     EQU    1           DEFINE NO EQUIPMENT CHECK FOR *COMPRSS*
 MSR$     EQU    1           SELECT ERROR PROCESSING FOR *RNS*
 IRA$     EQU    1           FLAG RANDOM ACCESS PROCESSORS INITIALIZED
 SEI$     EQU    1           SELECT TRT UPDATE FOR *COMPSEI*
*COMMENT  REC - SYSTEM RECOVERY PROCESSSOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  REC - SYSTEM RECOVERY PROCESSOR. 
          SPACE  4
***       REC - SYSTEM RECOVERY PROCESSOR.
* 
*         G. R. MANSFIELD.   70/12/17.
*         J. L. WARDELL.     72/08/17.
*         S. L. BETH.        74/12/17.
*         P. D. HAAS.        76/08/11.
          SPACE  4
***              *REC* PROCESSES SYSTEM RECOVERY. 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         THE FOLLOWING MESSAGES MAY APPEAR IN THE SYSTEM DAYFILE 
*         AFTER A CM RECOVERY.  EACH IS SELF EXPLANATORY AND
*         INDICATES THE NUMBER OF FILES IN A GIVEN CATEGORY FOUND 
*         IN THE ASSOCIATED MANAGED TABLE.
* 
*                MESSAGES ASSOCIATED WITH THE FNT.
* 
*         *NNNN FAST ATTACH FILES RECOVERED.* 
* 
*                MESSAGES ASSOCIATED WITH THE EJT.
* 
*         *NNNN PRE-INITIAL JOB FILES RECOVERED.* 
* 
*         *NNNN EXECUTING JOB FILES RECOVERED.* 
* 
*         *NNNN ROLLOUT FILES RECOVERED.* 
* 
*         *NNNN SCP ROLLIN FILES RECOVERED.*
* 
*         *NNNN SCP ROLLOUT FILES RECOVERED.* 
* 
*         *NNNN T/E ROLLOUT FILES RECOVERED.* 
* 
*         *NNNN I/A ROLLOUT FILES RECOVERED.* 
* 
*         *NNNN DISABLED ROLLOUT FILES RECOVERED.*
* 
*         *NNNN SUSPENDED ROLLOUT FILES RECOVERED.* 
* 
*         *NNNN ROLLOUT ERROR FILES RECOVERED.* 
* 
*         *NNNN PCP ROLLOUT FILES RECOVERED.* 
* 
*         *NNNN PRE-INITIAL WAIT FILES RECOVERED.*
* 
*         *NNNN SERVICE LIMIT WAIT FILES RECOVERED.*
* 
*                MESSAGES ASSOCIATED WITH THE QFT.
* 
*         *NNNN INPUT FILES RECOVERED.* 
* 
*         *NNNN PUNCH FILES RECOVERED.* 
* 
*         *NNNN PLOT FILES RECOVERED.*
* 
*         *NNNN PRINT FILES RECOVERED.* 
* 
*         *NNNN WAIT QUEUE FILES RECOVERED.*
* 
*         *NNNN SPECIAL FILES RECOVERED.* 
* 
*         THE FOLLOWING MESSAGE INDICATES CM RECOVERY IS ABORTED DUE TO 
*         PCP ROLLIN/ROLLOUT IN PROGRESS. 
* 
*         * PCPNN CPA/MOVING.*
          SPACE  4
***       ERROR LOG MESSAGES. 
* 
* 
*         *CHXX,YYYYYYYYY.* = EQUIPMENT ON CHANNEL XX IS RUNNING WITH 
*         FIRMWARE REVISION YYYYYYYYY.
* 
*         *ETXXX, UYY,PS=ZZZZZZ.* = THE PACK ON PHYSICAL UNIT YY OF EST 
*         ORDINAL XXX OF TYPE ET HAS A SERIAL NUMBER OF ZZZZZZ. 
          SPACE  4
***       ENTRY CONDITIONS. 
* 
* 
*         (IR+4) = RECOVERY STATUS. 
          SPACE  4
**        ROUTINES USED.
* 
* 
*         4DA - CLEANUP PRESERVED FILE INTERLOCKS.
*         0CI - IDENTIFY FIRMWARE.
*         0PI - LIST PACK SERIAL NUMBERS. 
*         0DQ - DEQUEUE FILE. 
          SPACE  4
*CALL     COMPMAC 
*CALL     COMSACC 
*CALL     COMSCPS 
*CALL     COMSDFS 
          QUAL   DFT
*CALL     COMSDFT 
          QUAL   *
*CALL     COMSDSL 
*CALL     COMSDST 
*CALL     COMSEJT 
*CALL     COMSHIO 
*CALL     COMSJIO 
*CALL     COMSMMF 
*CALL     COMSMSC 
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSMTR 
          QUAL   MTX
*CALL     COMSMTX 
          QUAL   *
          QUAL   COMSPFM
*CALL     COMSPFM 
          QUAL   *
*CALL     COMSPIM 
*CALL     COMSPRD 
          QUAL   SCD
*CALL     COMSSCD 
          QUAL   *
*CALL     COMSSSD 
*CALL     COMSSSE 
*CALL     COMSWEI 
*CALL     COMSZOL 
*CALL     COMS1DS 
          SPACE  4
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 NT       EQU    16          TRACK COUNT
 FS       EQU    20 - 24     FST ENTRY (5 LOCATIONS)
 CE       EQU    25          CHECKPOINT DEVICE EST ORDINAL
 QA       EQU    26          MANAGED TABLE ORDINAL
 ST       EQU    27          SYSTEM TRACK NUMBER
 CN       EQU    30 - 34     CM WORD BUFFER (5 LOCATIONS) 
 QT       EQU    35          QUEUED FILE TRACK
 QS       EQU    36          QUEUED FILE SECTOR 
 QI       EQU    37          QUEUE INDEX
 FN       EQU    40 - 44     FNT ENTRY (5 LOCATIONS)
 CR       EQU    45          CM BUFFER ADDRESS
 DI       EQU    46          DEVICE INITIALIZATION COUNT
 NS       EQU    47          NUMBER OF CP-S + PCP-S 
 NC       EQU    IR+2        NUMBER OF CONTROL POINTS 
 RS       EQU    IR+4        RECOVERY STATUS
 FA       EQU    57          FNT ADDRESS / ORDINAL
 LO       EQU    60          LAST MASS STORAGE ORDINAL + 1
 PN       EQU    61          CP / PCP NUMBER
 EO       EQU    62          EJT ORDINAL
 CA       EQU    63 - 67     CENTRAL ADDRESS (2 LOCATIONS)
 EC       EQU    CA+2        MANAGED TABLE ENTRY COUNT
 LM       EQU    CA+3 - CA+4 LIMIT ADDRESS (2 LOCATIONS)
****
          SPACE  4,10 
**        NFL FNT SECTOR EQUIVALENCES.
  
 TMP1     EQU    FNTN+77
 TMP2     EQU    FNTN/100*100 
 FNTS     EQU    TMP1/100    FIRST SECTOR OF FNT-S IN NFL 
 FNTT     EQU    FNTN-TMP2-LENF  NON-FNT WORDS IN FIRST FNT SECTOR
  
 SBUFL    EQU    2*500       DEFINE BUFFER SIZE 
          SPACE  4,10 
*         DEFINE UNQUALIFIED *COMSSCD* SYMBOLS. 
  
 DSSC     EQU    /SCD/DSSC
 SSSC     EQU    /SCD/SSSC
 MXJC     EQU    /SCD/MXJC
          TITLE  MAIN PROGRAM.
 REC      SPACE  4
**        REC - MAIN PROGRAM. 
  
  
          ORG    PPFW 
 REC      RJM    PRS         PRESET PROGRAM 
          LDD    RS 
          ZJN    REC2        IF NO RECOVERY 
          RJM    SYS         RECOVER SYSTEM FILE
          NJN    REC1        IF JOBS NOT RECOVERED FROM CM
          RJM    CCP         CLEANUP CONTROL POINTS 
 REC1     RJM    RMT         RECOVER MANAGED TABLES 
 REC2     EXECUTE  4RA       SET UP DAYFILES
          LDC    DSCP*200+MS1W
          CWM    MSGA,TR     *RECOVERY COMPLETE.* 
          LDD    RS          CHECK RECOVERY STATUS
          LPN    SYMK 
          NJP    REC5        IF RECOVERING SYSTEM 
  
*         START SYSTEM TAPE LOAD AND WAIT FOR COMPLETION. 
  
          LDC    DSCP+ENRS   MOVE TO DEADSTART CONTROL POINT
          STD    CM+1 
          MONITOR CCAM
*         LDN    0
          ERRNZ  SYFO        SYSTEM FILE ORDINAL .NE. 0 
          STD    QA 
          SOD    IR+3        SET RECOVERY COMPLETE
          LDD    IA          STORE INPUT REGISTER 
          CWD    IR 
 REC3     PAUSE  NE 
          SFA    FNT,QA      READ SYSTEM FILE FNT 
          CRD    CM 
          LDD    CM+4        CHECK STATUS 
          LPN    1
          NJN    REC3        IF SYSTEM FILE BUSY
          LDD    NC          MOVE TO SYSTEM CONTROL POINT 
          STD    CM+1 
          MONITOR CCAM
 REC4     LDC    DSCP*CPAS+TFSW  CHECK CONTROL POINT ACTIVITY 
          CRD    CM 
          LDD    CM 
          NJN    REC4        IF DEADSTART CONTROL POINT ACTIVE
  
*         COMPLETE RECOVERY OPERATIONS. 
  
 REC5     LDN    DSCL        CHECK *DSD*
          CRD    CM 
          LMD    CM+1 
          NJN    REC5        IF DATE/TIME NOT YET ENTERED 
          RJM    /RDB/USS    UPDATE NEW DAYFILES SYSTEM SECTORS 
          EXECUTE  4RE       ISSUE DEADSTART MESSAGES 
          LDD    RS 
          ZJN    REC6        IF NOT RECOVERY DEADSTART
          EXECUTE  4RC       RECOVER CHANNEL/EQUIPMENT STATUS 
  
*         IDENTIFY MASS STORAGE EQUIPMENT.
  
 REC6     EXECUTE  4RG       PROCESS ERROR LOGS 
          RJM    SRM         SEND RECOVERY MESSAGES 
          LDN    ZERL 
          CRD    CM 
          ADN    DSDL-ZERL   CLEAR *DSD* BUFFER INTERLOCK 
          CWD    CM 
 RECA     LDN    1
*         LDN    0           (MASS STORAGE VALIDATION ENABLED)
          ZJN    REC7        IF MASS STORAGE VALIDATION ENABLED 
          LDD    RS 
          NJN    REC8        IF RECOVERY REQUESTED
 REC7     EXECUTE 4RH        RECOVER MASS STORAGE DEVICES 
 REC8     LDN    ZERL 
          CRD    CM 
          LDD    MA          STORE INPUT REGISTER FOR *1DS* 
          CWM    RECD,ON
          EXECUTE  1DS,=
          MONITOR  RPPM      CREATE DEADSTART SEQUENCING JOB
          LDN    DSSL 
          CRD    CM 
          LCN    4           CLEAR DEADSTART INTERLOCK
          RAD    CM+4 
          LDN    DSSL 
          CWD    CM 
          LDN    ECRL        FETCH EXTENDED MEMORY WORD 
          CRD    FS 
          LDD    FS 
          ZJN    REC9        IF USER EXTENDED MEMORY UNDEFINED
          EXECUTE  4RB       ALLOCATE/RECOVER USER ECS
 REC9     LDN    SYFO 
          STD    QA 
          SFA    FNT         READ SYSTEM FILE FNT 
          CRD    FN 
          LDD    FN+4        CLEAR SYSTEM FILE INTERLOCK
          SCN    1
          STD    FN+4 
          SFA    FNT,QA      STORE FNT ENTRY
          CWD    FN 
          LDN    JSCL        RESET SCHEDULER CALL TIME
          CRD    CM 
          ADN    RTCL-JSCL
          CRD    CM+3 
          LDN    JSCL 
          CWD    CM 
          RJM    SJO         START JOBS 
          LDD    RS          CHECK RECOVERY STATUS
          LPN    SYMK 
          LMN    SYCM 
 RECB     ZJN    REC11       IF CM RECOVERY 
*         PSN                (DAYFILES CREATED) 
  
*         ENTER HERE TO CALL *1CK*. 
  
 REC10    LDD    IA          STORE INPUT REGISTER FOR *1CK* 
          CWM    RECC,ON
          EXECUTE  1CK,=
          UJN    REC12       EXIT TO PP RESIDENT
  
 REC11    LDN    JSCL        CLEAR SCHEDULER ACTIVE 
          CRD    CM 
          LDD    CM 
          LPC    3777 
          STD    CM 
          LDN    JSCL        STORE SCHEDULER CONTROL
          CWD    CM 
          LDD    MA 
          CWM    RECG,ON
          LDN    2           SELECT DROP PP OPTION
          STD    CM+1 
          MONITOR  RPPM      CALL *1PP* 
 REC12    LJM    PPR         EXIT TO PP RESIDENT
  
 RECC     VFD    60/0L1CK 
 RECD     VFD    18/0L1DS,6/0,6/0,6/DSSF,18/0LCMS,6/0 
 RECE     CON    0           CHECKPOINT FILE TRACK
 RECF     CON    0           SYSTEM DEVICE EST ORDINAL
 RECG     VFD    18/3L1PP,42/0
          TITLE  SUBROUTINES. 
 SJO      SPACE  4,10 
**        SJO - START JOB(S). 
* 
*         USES   T7, CM - CM+4, CN - CN+4.
* 
*         MACROS MONITOR. 
  
  
 SJO      SUBR               ENTRY/EXIT 
          LDD    NC 
          STD    T7 
 SJO1     SOD    T7 
          ZJN    SJOX        IF ALL CP-S CHECKED
          SHN    7
          ADN    STSW 
          CRD    CM 
          ADN    TFSW-STSW
          CRD    CN 
          LDD    CM 
          NJN    SJO1        IF ACTIVITY
          LDD    CN 
          ZJN    SJO1        IF NO JOB
          LDD    T7          CHANGE CP
          STD    CM+1 
          MONITOR CCAM
          LDD    CM+1 
          NJN    SJO1        IF CHANGE REJECTED 
          LDD    NC          CHANGE BACK TO SYSTEM CP 
          STD    CM+1 
          MONITOR CCAM
          UJN    SJO1        LOOP 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPACS 
*CALL     COMPC2D 
 CLT$     EQU    0           DEFINE *COMPGFP* ACCESS TO CLT 
 EJT$     EQU    0           DEFINE *COMPGFP* ACCESS TO EJT 
 FNT$     EQU    0           DEFINE *COMPGFP* ACCESS TO FNT 
 QFT$     EQU    0           DEFINE *COMPGFP* ACCESS TO QFT 
 IFP$     EQU    0           GENERATE *IFP* REMOTE CODE 
*CALL     COMPGFP 
*CALL     COMPIFR 
*CALL     COMPRNS 
*CALL     COMPRSS 
*CALL     COMPSEI 
*CALL     COMPSNT 
*CALL     COMPIRA 
*CALL     COMPWEI 
 WCS$     EQU    1           CONSECUTIVE SECTOR AFTER SYSTEM SECTOR 
*CALL     COMPWSS 
 TAXM     SPACE  4,10 
**        TAXM - EXTENDED MEMORY ALLOCATION TABLE.
  
  
 TAXMW    EQU    4           ALLOW ROOM FOR 4 MACHINES WITH CPU PORTS 
 TAXM     BSS    5*TAXMW
 TAXML    EQU    *
 MSR      SPACE  4,10 
**        MSR - ERROR RETURN FROM *RNS*.
* 
*         EXIT   (A) .LT. 0.
* 
*         MACROS ENDMS. 
  
  
 MSR      CON    0           ENTRY
          ENDMS 
          LCN    1
          LJM    /COMPRNS/RNSX  RETURN TO CALLER
 ERR      SPACE  4,10 
**        ERR - PROCESS ERROR.
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE.
  
  
 ERR      STM    ERRA 
          LDD    NC          STORE MESSAGE
          SHN    7
          ADN    MS2W 
          CWM    *,TR 
 ERRA     EQU    *-1
          LDD    RS          CHECK RECOVERY STATUS
          LPN    FLMK 
          LMN    FLCM 
          NJN    *           IF FILES NOT RECOVERED FROM CM 
          LDN    6           SET *1CK* FUNCTION 
          STM    RECC+2 
          LJM    REC10       PROCESS OUTSTANDING CHECKPOINT REQUESTS
 SCA      SPACE  4,10 
**        SCA - SET CP/PCP AREA ADDRESS.
* 
*         ENTRY  (A) = CP/PCP NUMBER. 
*                (NC) = SYSTEM CP NUMBER. 
* 
*         EXIT   (A) = CP/PCP AREA ADDRESS. 
  
  
 SCA1     ADD    NC          SET REAL CP AREA ADDRESS 
          SHN    7
  
 SCA      SUBR               ENTRY/EXIT 
          SBD    NC 
          MJN    SCA1        IF REAL CP 
          ZJN    SCA1        IF SYSTEM CP 
          SHN    7
          ADC    0           ADD BASE PCPA ADDRESS - CPA LENGTH 
 SCAA     EQU    *-1
          UJN    SCAX        RETURN 
 SRM      SPACE  4,10 
**        SRM - SEND RECOVERY MESSAGES. 
* 
*         USES   T1, T5, T6, T7.
* 
*         CALLS  ACS, C2D, DFM. 
  
  
 SRM3     STD    CM          CLEAR MESSAGE BUFFER 
          LDD    NC 
          SHN    7
          ADN    MS1W 
          CWD    CM 
  
 SRM      SUBR               ENTRY/EXIT 
          LDD    RS 
          ZJN    SRMX        IF NOT RECOVERY DEADSTART
          LCN    0           SET MESSAGE TABLE INDEX
          STD    T7 
          LDC    BFMS        SET ASSEMBLY BUFFER ADDRESS
          STD    T5 
          ADN    2
          STD    T6 
 SRM1     LDD    T6 
          STD    T1 
          LDC    2L          ADD BLANK SEPARATOR
          STI    T6 
 SRM2     AOD    T7          ADVANCE INDEX
          LMN    MXFC 
          ZJN    SRM3        IF END OF TABLE
          LDM    SRMA,T7
          ZJN    SRM2        IF FILE CATEGORY NOT ENCOUNTERED 
          SHN    -6 
          RJM    C2D
          STI    T5 
          LDM    SRMA,T7     CONVERT COUNT
          RJM    C2D
          STM    1,T5        INSERT IN MESSAGE ASSEMBLY 
          LDM    SRMB,T7
          ZJN    SRM2        IF KEY MESSAGE UNDEFINED 
          RJM    ACS
          LDC    SRMC        COMPLETE MESSAGE 
          RJM    ACS
          LDD    T5          ISSUE MESSAGE TO DAYFILE 
          RJM    DFM
          LJM    SRM1        LOOP 
  
  
 SRMA     BSS    0
 EJCT     BSS    0
          CON    -0 
          ORG    EJCT+MXJS
 P1L      EQU    *-EJCT 
  
 QFCT     BSS    0
          CON    -0 
          ORG    QFCT+NRQT
 P2L      EQU    *-QFCT 
  
 MSCT     BSS    0
          LOC    0
 FACT     CON    0           FAST ATTACH FILE COUNT 
 PXL      BSS    0
          LOC    *O 
 MXFC     EQU    *-SRMA 
  
  
 SRMB     BSS    0
 P1       INDEX 
          INDEX  PRJS,(=Z*PRE-INITIAL JOB*) 
          INDEX  EXJS,(=Z*EXECUTING JOB*) 
          INDEX  ROJS,(=Z*ROLLOUT*) 
          INDEX  SIJS,(=Z*SCP ROLLIN*)
          INDEX  SOJS,(=Z*SCP ROLLOUT*) 
          INDEX  TOJS,(=Z*T/E ROLLOUT*) 
          INDEX  IOJS,(=Z*I/A ROLLOUT*) 
          INDEX  DOJS,(=Z*DISABLED ROLLOUT*)
          INDEX  SUJS,(=Z*SUSPENDED ROLLOUT*) 
          INDEX  PCJS,(=Z*PCP ROLLOUT*) 
          INDEX  ERJS,(=Z*ROLLOUT ERROR*) 
          INDEX  NVJS,(=Z*NVE ENTRY*) 
          INDEX  PWJS,(=Z*PRE-INITIAL WAIT*)
          INDEX  SWJS,(=Z*SERVICE LIMIT WAIT*)
          INDEX  P1L
  
 P2       INDEX 
          INDEX  INQT,(=Z*INPUT*) 
          INDEX  PHQT,(=Z*PUNCH*) 
          INDEX  PLQT,(=Z*PLOT*)
          INDEX  PRQT,(=Z*PRINT*) 
          INDEX  WTQT,(=Z*WAIT QUEUE*)
          INDEX  SNQT,(=Z*SPECIAL*) 
          INDEX  P2L
  
 PX       INDEX 
          INDEX  FACT,(=Z*FAST ATTACH*) 
          INDEX  PXL
  
          USE    LITERALS 
  
 SRMC     DATA   C* FILES RECOVERED.* 
          SPACE  4,10 
 OVLD     EQU    *+5         OVERLAY LOAD ADDRESS 
          TITLE  CONTROL POINT RECOVERY.
 CCP      SPACE  4,10 
**        CCP - CLEANUP CONTROL POINTS. 
* 
*         ERROR  TO *ABT* IF CP/PCP MOVING. 
* 
*         USES   PN, CM - CM+4. 
* 
*         CALLS  CRS, PLF.
* 
*         MACROS EXECUTE, MONITOR, NFA. 
  
  
 CCP      SUBR               ENTRY/EXIT 
          EXECUTE  4RD       LOAD RECOVERY ROUTINES 
          LDN    0
          STD    PN 
 CCP1     AOD    PN          ADVANCE CP/PCP NUMBER
          SBD    NS 
          SBN    1
          ZJN    CCPX        IF END OF CP/PCP-S 
          RJM    CRS         CHECK ROLLIN/ROLLOUT STATUS
          ZJN    CCP1        IF NO JOB ASSIGNED TO CP/PCP 
          LDC    0           CHECK CONTROL POINT MOVING 
 CCPA     EQU    *-1
          LMD    PN 
          NJN    CCP4        IF NOT MOVING
 CCPB     LDN    0
*         LDN    1           (IF MOVING EM) 
          NJN    CCP4        IF MOVING EXTENDED MEMORY
          LDD    CN 
          ZJN    CCP6        IF NO NFL ASSIGNED 
 CCP3     LJM    ABT         ABORT CM RECOVERY
  
 CCP4     LDD    CN 
          ZJN    CCP6        IF NO NFL ASSIGNED 
          SBN    DNFL 
          MJN    CCP3        IF LESS THAN DEFAULT 
          SBN    MNFL+1-DNFL
          PJN    CCP3        IF GREATER THAN MAXIMUM
          LDD    PN 
          SBD    NC 
          PJN    CCP1        IF PSEUDO CP OR SYSTEM CP
          RJM    PLF         PROCESS LOCAL FNT
          NFA    DAPN+2      FETCH DAYFILE STATUS WORD
          CRD    CM 
          LDN    3           CLEAR DAYFILE INTERLOCKS 
          STD    CM+4 
          NFA    DAPN+2      STORE DAYFILE FST
          CWD    CM 
 CCP6     LDD    CP          GET JOB CONTROL INFORMATION
          ADN    JCIW 
          CRD    CM 
          ADK    RFCW-JCIW   GET DM* FILE POINTERS
          CRD    CN 
          LDD    CM+3        CLEAR *DIS* FLAG 
          LPC    6777 
          STD    CM+3 
          LDN    0           CLEAR DM* FILE POINTERS
          STD    CN 
          STD    CN+1 
          LDD    CP 
          ADN    JCIW 
          CWD    CM 
          ADK    RFCW-JCIW
          CWD    CN 
          LDD    NC 
          STD    CM+1 
          MONITOR CCAM       RETURN TO SYSTEM CP
          LJM    CCP1        LOOP FOR NEXT CP/PCP 
 RMT      SPACE  4,10 
**        RMT - RECOVER MANAGED TABLES. 
* 
*         ERROR  TO *ERR* IF ERROR RETURN FROM PROCESSOR. 
* 
*         USES   EO, LM, QA, QI, QT, ST, T3, CA - CA+4. 
* 
*         CALLS  CLT, EJT, FNT, QFT, *4RF*. 
* 
*         MACROS EXECUTE. 
  
  
 RMT      SUBR               ENTRY/EXIT 
          LDC    RMTA-1      SET LIST ADDRESS 
          STD    ST 
          EXECUTE  4RF       MANAGED TABLE RECOVERY 
 RMT1     AOD    ST          ADVANCE LIST ADDRESS 
          LDI    ST 
          ZJN    RMTX        IF END OF TABLES 
          CRD    CA          READ TABLE POINTER 
          LDN    0
          STD    QT 
          STD    QI 
          STD    QA 
          STD    EO 
          LDD    EC          SET NUMBER OF ASSIGNED ENTRIES 
          SBD    LM 
          STD    LM 
          LDM    RMTB-RMTA,ST  SET PROCESSOR ADDRESS
          STD    T3 
          RJM    0,T3        PROCESS MANAGED TABLE
          ZJN    RMT1        IF TABLE FULLY RECOVERED 
          LDM    RMTC-RMTA,ST 
          STM    RMTD        SET TABLE IDENTIFIER 
          LDC    RMTD 
          LJM    ERR         DISPLAY MESSAGE AND HANG 
  
 RMTA     BSS    0           LIST OF TABLE POINTER ADDRESSES
          CON    QFTP 
          CON    EJTP 
          CON    FNTP 
          CON    CLTP 
 RMTAA    CON    LIDP 
          CON    FOTP 
          CON    0           END OF LIST
  
 RMTB     BSS    0           LIST OF PROCESSOR ADDRESSES
          CON    QFT
          CON    EJT
          CON    FNT
          CON    CLT
  
 RMTC     BSS    0           LIST OF TABLE IDENTIFIERS
          CON    2RQF 
          CON    2REJ 
          CON    2RFN 
          CON    2RCL 
          CON    2RLI 
          CON    2RFO 
  
 RMTD     DATA   C*FNT POINTER WORD ERROR.* 
          SPACE  4,10 
**        MESSAGES. 
  
  
 MSGA     DATA   C*RECOVERY COMPLETE.*
  
 OVLA     EQU    *+5         OVERLAY LOAD ADDRESS 
  
 MSGR     DATA   C*CHECKPOINT DEVICE ERROR.*
 MSGS     DATA   C*CMR LENGTH CHANGED.* 
 MSGT     DATA   C*VE ENTRY REQUIRED.*
 MSGU     DATA   C*SECURITY MODE CHANGED.*
 RTB      SPACE  4,10 
**        RTB - READ TABLE. 
* 
*         ENTRY  (A) = LENGTH.
*                (CA - CA+1) = FWA. 
* 
*         EXIT   (A) .LT. 0 IF NOT ENOUGH SPACE FOR TABLE.
*                TO *SYS2* IF UNRECOVERED READ ERROR. 
* 
*         USES   T1, LM - LM+1. 
* 
*         CALLS  RNS. 
  
  
 RTB2     ZJN    RTBX        IF EMPTY SECTOR
          LDD    LM 
          SHN    14          CHECK LENGTH 
          ADD    LM+1 
          SBD    T1 
          MJN    RTBX        IF NO ROOM FOR SECTOR
          STD    LM+1        DECREMENT LENGTH 
          SHN    -14
          STD    LM 
          LDD    CA          STORE SECTOR 
          SHN    14 
          ADD    CA+1 
          CWM    BUF+2,T1 
          STD    CA+1        ADVANCE TABLE ADDRESS
          SHN    -14
          STD    CA 
          LDD    T1          CHECK WORD COUNT 
          SHN    -6 
          NJN    RTB1        IF NOT EOR 
  
 RTB      SUBR               ENTRY/EXIT 
          STD    LM+1 
          SHN    -14         SET LENGTH 
          STD    LM 
 RTB1     LDC    BUF         READ NEXT SECTOR 
          RJM    RNS
          PJN    RTB2        IF SUCCESSFUL READ 
          LJM    SYS2        PROCESS READ ERROR 
          SPACE  4
**        COMMON DECKS WHICH ARE OVERLAID.
  
  
*CALL     COMPICT 
*CALL     COMPLDB 
          TITLE  SYSTEM RECOVERY. 
 SYS      SPACE  4
**        SYS - RECOVER SYSTEM. 
* 
*         EXIT   (A) = JOB RECOVERY STATUS. 
  
  
 SYS      SUBR               ENTRY/EXIT 
          LDD    CE          SET CHECKPOINT DEVICE EST ORDINAL
          STD    T5 
          LDD    ST          SET SYSTEM TABLE TRACK 
          STD    T6 
          SETMS  IO 
          LDC    NSYT        SET SYSTEM TABLE ADDRESS 
          RJM    RSS         READ SYSTEM SECTOR 
          ZJN    SYS4        IF VALID SYSTEM SECTOR 
 SYS2     LDC    MSGR        *CHECKPOINT DEVICE ERROR.* 
          LJM    ERR         ISSUE MESSAGE AND HANG 
  
 SYS4     AOD    T7 
          LDC    PBUF+500-2  READ SECOND SECTOR OF TABLE POINTERS 
          RJM    RNS
          MJN    SYS2        IF READ ERROR
          LDN    FSMS 
          STD    T7 
          LDC    PBUF-2      READ FIRST SECTOR OF TABLE POINTERS
          RJM    RNS
          MJN    SYS2        IF READ ERROR
          AOD    T7 
          RJM    SKR         SKIP EST 
          RJM    SKR         SKIP CHANNEL TABLES
  
*         VERIFY EST LENGTH.
  
          LDN    ESTP 
          CRD    CM 
          LDD    CM+2        COMPARE LENGTHS
          SBM    PBUF+ESTP*5+2
          NJN    SYS7        IF LENGTHS DIFFER
          RJM    PCT         PROCESS SUBSYSTEM TABLES 
  
*         VERIFY LENGTH OF MANAGED TABLES.
  
 SYS6     LDC    RMTA        VERIFY TABLE LENGTHS 
          RJM    VTL
          ZJN    SYS8        IF TABLE LENGTHS VALID 
          LDM    RMTC-RMTA,QA 
          STM    SYSA        SET TABLE IDENTIFIER 
 SYS7     ENDMS 
          LDC    SYSA 
          LJM    ERR         DISPLAY MESSAGE AND HANG 
  
 SYS8     STM    RMTAA
          LDD    RS          CHECK RECOVERY STATUS
          LPN    FLMK 
          LMN    FLCM 
          NJN    SYS9        IF FILES NOT RECOVERED FROM CM 
          RJM    SKR         SKIP MANAGED TABLES
          LJM    SYS11       READ LIBRARY TABLES
  
*         VERIFY OPERATING SYSTEM SECURITY MODE.
  
 SYS9     LDK    SSML 
          CRD    CM 
          LDM    PBUF+SSML*5
          LMD    CM 
          LPN    7
          ZJN    SYS10       IF SECURITY MODE UNCHANGED 
          LDC    MSGU        *SECURITY MODE CHANGED.* 
          LJM    ERR         PROCESS ERROR
  
 SYS10    LDK    SSML        RESTORE ACCESS CATEGORIES
          CWM    PBUF+SSML*5,ON 
          LDK    JSNL        RESTORE JOB SEQUENCE NUMBER
          CWM    PBUF+5*JSNL,ON 
          LDC    377777      READ MANAGED TABLES
          RJM    RTB
          LDN    ZERL 
          CRD    CM 
          LDN    FNTP        SET SYSTEM FILE BUSY 
          CRD    CM+3 
          ERRNZ  SYFO        SYSTEM FILE ORDINAL .NE. 0 
          MONITOR  UTEM 
*         LDN    0           INTERLOCK *PROBE* TABLE
          STM    PBUF+PRBP*5
          LDC    PRBP        RESTORE *PROBE* TABLE POINTER
          CWM    PBUF+PRBP*5,ON 
          LDD    RS          CHECK RECOVERY STATUS
          LPN    SYMK 
          NJN    SYS11       IF SYSTEM RECOVERY REQUESTED 
          LJM    SYS20       COMPLETE MASS STORAGE OPERATION
  
*         READ LIBRARY TABLES.
  
 SYS11    LDC    RPLP        FETCH RPL POINTER
          CRD    CN 
          CRD    CM 
          ADN    PLDP-RPLP   GET PLD POINTER
          CRD    FS 
          LDM    PBUF+RPLP*5 CHECK LIBRARY POINTER
          STD    CA 
          SBD    CN 
          SHN    14 
          ADM    PBUF+RPLP*5+1
          STD    CA+1 
          SBD    CN+1 
          PJN    SYS12       IF CMR LENGTH HAS NOT INCREASED
          ENDMS 
          LDC    MSGS        *CMR LENGTH CHANGED.*
          LJM    ERR
  
 SYS12    RAD    CN+1        ADJUST RPL ADDRESS 
          SHN    -14
          RAD    CN 
          LDN    0
          STD    CM          SET RPL LOCKED 
          STD    CM+1 
          STD    FS          SET DIRECTORY LOCKED 
          STD    FS+1 
          LDC    RPLP        STORE RESIDENT LIBRARY POINTER 
          CWD    CM 
          ADN    PLDP-RPLP   STORE PLD POINTER
          CWD    FS 
 SYS16    LDM    PBUF+5*CMRL+4  REQUEST STORAGE 
          STD    CM+1 
          LDC    1000        SET CMR REQUEST
          STD    CM+2 
          MONITOR RSTM
          LDK    CMRL 
          CRD    CM 
          LDD    CM+4 
          LMM    PBUF+5*CMRL+4
          NJN    SYS16       IF NOT ASSIGNED
          LDC    377777      READ LIBRARY TABLES
          RJM    RTB
  
*         SET LIBRARY TABLE ADDRESSES.
  
          LDM    PBUF+5*PLDP+1  RESTORE PLD ADDRESS 
          STD    FS+1 
          LDM    PBUF+5*PLDP
          STD    FS 
          LDC    RPLP        UNLOCK RPL 
          CWD    CN 
          ADN    PLDP-RPLP   STORE PLD POINTER
          CWD    FS 
          SBN    PLDP-RCLP   FETCH RCL POINTER
          CRD    CM 
          LDM    PBUF+5*RCLP+1  RESTORE RCL ADDRESS 
          STD    CM+1 
          LDM    PBUF+5*RCLP
          STD    CM 
          LDC    RCLP        STORE RCL POINTER
          CWD    CM 
          LDN    DSSL        SET RECOVERY LEVEL 
          CRD    CM 
          LDM    PBUF+5*DSSL+4
          LMD    CM+4 
          SCN    7
          LMD    CM+4 
          STM    PBUF+5*DSSL+4
          LDN    DSSL        STORE SYSTEM LABEL 
          CWM    PBUF+5*DSSL,ON 
          LDC    EPDP+PSTP*  READ EPD POINTER 
          CRD    CM 
          LDM    PBUF+5*EPDP+1  RESTORE EPD ADDRESS 
          STD    CM+1 
          LDM    PBUF+5*EPDP
          STD    CM 
  
          ERRNZ  PSTP-EPDP   POINTERS NOT IN SAME WORD
  
          LDM    PBUF+5*PSTP+3  RESTORE PST ADDRESS 
          STD    CM+3 
          LDM    PBUF+5*PSTP+2
          STD    CM+2 
          LDC    EPDP+PSTP*  SET EPD AND PST ADDRESS
          CWD    CM 
          SBN    EPDP-LBDP   FETCH PBD POINTER
          CRD    CM 
          LDM    PBUF+5*LBDP+3  RESTORE LBD ADDRESS 
          STD    CM+3 
          LDM    PBUF+5*LBDP+2
          STD    CM+2 
          LDN    SSTL        FETCH SYSTEM STATUS WORD 
          CRD    FS 
          ADN    PRBP-SSTL   GET *PROBE* TABLE ADDRESS
          CRD    CN 
          ADN    LBDP-PRBP   STORE LBD POINTER
          CWD    CM 
          ADN    BIOL-LBDP   READ BUFFERED I/O STATUS 
          CRD    FN 
          LDD    FS+2        CHECK *PROBE* ENABLED
          SHN    21-6 
          MJN    SYS19       IF *PROBE* NOT ENABLED 
          LDD    FN+1 
          ADD    FN+2 
          ZJN    SYS18       IF NO BUFFERED I/O 
          LDN    0
          RJM    RTB         RETRIEVE BUFFERED DEVICE POINTER TABLE 
          LDD    FN+1 
          SHN    14 
          LMD    FN+2 
          ADN    IOSP        RESET BUFFERED I/O *PROBE* DATA POINTER
          CWM    BUF+2+5*IOSP,ON
 SYS18    LDC    4000        CLEAR *PROBE* TABLE INTERLOCK
          STD    CN 
          LDC    PRBP        UPDATE *PROBE* TABLE POINTER 
          CWD    CN 
 SYS19    RJM    LDB
          LDN    1           INITIALIZE *CPUMTR* TABLES 
          RJM    ICT
 SYS20    ENDMS 
          LDD    RS          SET EXIT CONDITION 
          LPC    JBMK 
          LMD    HN 
          ERRNZ  100-JBCM    ADJUST IF VALUE CHANGES
          LJM    SYSX        RETURN 
  
 SYSA     DATA   C*EST LENGTH CONFLICT.*
          SPACE  4,10 
**        SYSTEM SECTOR FNT ENTRIES.
  
  
 NSYT     VFD    42/0LSYSTAB,6/1,6/SYFT,6/0 
 FDS      SPACE  4,10 
**        FDS - FIND DESCRIPTOR IN SAB. 
* 
*         ENTRY  (A) = DESCRIPTOR ID. 
*                (BUF) = SAB. 
* 
*         EXIT   (A) = 0  IF DESCRIPTOR FOUND.
*                (A) .NE. 0  IF DESCRIPTOR NOT FOUND. 
*                (T2) = BYTE OFFSET OF DESCRIPTOR.
* 
*         USES   T0 - T2. 
  
  
 FDS      SUBR               ENTRY/EXIT 
          STD    T0          SAVE DESCRIPTOR ID 
          LDN    0
          STD    T1 
 FDS1     LDD    T1          SET BYTE OFFSET
          SHN    2
          ADD    T1 
          STD    T2 
          LDM    BUF+2,T2 
          SHN    14 
          RAD    T1          ADVANCE INDEX
          SHN    -14
          LMD    T0 
          ZJN    FDSX        IF DESCRIPTOR FOUND
          LDD    T1 
          SBM    BUF+1
          NJN    FDS1        IF NOT END OF SAB
          ENDMS 
          LDN    1           INDICATE ERROR 
          UJN    FDSX        RETURN 
 PCT      SPACE  4,10 
**        PCT - PROCESS CONTROL TABLES. 
* 
*         USES   CA - CA+4, CM - CM+4, CN - CN+4. 
* 
*         CALLS  RTB, SKR, VEM. 
* 
*         MACROS ENDMS. 
  
  
 PCT3     RJM    SKR         SKIP EVENT TABLE 
          RJM    SKR         SKIP SSCT AND SSAT 
          RJM    SKR         SKIP SERVICE CLASS CONTROL TABLE 
          RJM    SKR         SKIP SABB INFORMATION
          RJM    SKR         SKIP STATISTICAL DATA AREA 
  
 PCT      SUBR               ENTRY/EXIT 
          LDD    RS 
          LPN    SYMK 
          LMN    SYCM 
          ZJN    PCT3        IF SYSTEM RECOVERED FROM CM
          LDK    EVTP        FETCH EVENT TABLE FWA
          CRD    CN 
          LDD    CN          SET ADDRESS OF TABLE 
          STD    CA 
          LDD    CN+1 
          STD    CA+1 
          LDN    EVTLL       READ EVENT TABLE 
          RJM    RTB
          LDD    CN          CLEAR TABLE INTERLOCK
          SHN    14 
          LMD    CN+1 
          CRD    CM 
          LDD    CM+4 
          SCN    1
          STD    CM+4 
          LDD    CN 
          SHN    14 
          LMD    CN+1 
          CWD    CM 
          LDC    SSCP        FETCH SUBSYSTEM CONTROL TABLE POINTER
          CRD    CM 
          LDD    CM+2        SET ADDRESS OF TABLES
          STD    CA 
          LDD    CM+3 
          STD    CA+1 
          LDN    SSCTL*2     READ SSCT AND SSAT 
          RJM    RTB
          LDK    JBCP        SET FWA OF JOB CONTROL TABLE 
          CRD    CA 
          LDK    JCBE*/SCD/MXJC  READ CONTROL TABLES
          RJM    RTB
          RJM    VEM         VERIFY MICROCODE/EI NAMES
          LDC    SDAP        SET STATISTICAL DATA AREA ADDRESS
          CRD    CA 
          LDN    SDAL        READ STATISTICAL DATA AREA 
          RJM    RTB
  
*         SET RESERVED EJT ORDINAL. 
  
          LDM    PBUF+EIBP*5+3  GET PREVIOUS *EICB* ADDRESS 
          SHN    14 
          ADM    PBUF+EIBP*5+4
          ZJN    PCT2        IF NO EICB PREVIOUSLY
          LDN    SSTL 
          CRD    CM 
          LDD    CM+3        CHECK FOR *VE=* ENTRY
          LMM    PBUF+5*SSTL+3
          SHN    21-13
          PJN    PCT1        IF *VE* STATUS NOT CHANGED 
          ENDMS 
          LDC    MSGT        (*VE ENTRY REQUIRED.*) 
          LJM    ERR         ISSUE MESSAGE AND HANG 
  
 PCT1     LDK    NVOL 
          CRD    CM 
          LDM    PBUF+NVOL*5+4  SET NOS/VE EJT ORDINAL
          STD    CM+4 
          LDK    NVOL 
          CWD    CM 
 PCT2     LJM    PCTX        RETURN 
 SKR      SPACE  4
**        SKR - SKIP RECORD.
* 
*         ENTRY  (T4 - T7) = MASS STORAGE PARAMETERS. 
* 
*         EXIT   (T6 - T7) UPDATED. 
*                TO *SYS2* IF UNRECOVERED READ ERROR. 
* 
*         CALLS  RNS. 
  
  
 SKR2     SHN    -6 
          NJN    SKR1        IF NOT EOR 
  
 SKR      SUBR               ENTRY/EXIT 
 SKR1     LDC    BUF         READ NEXT SECTOR 
          RJM    RNS
          PJN    SKR2        IF NO READ ERROR 
          LJM    SYS2        ISSUE ERROR MESSAGE AND HANG 
 VEM      SPACE  4,10 
**        VEM - VERIFY EI AND MICROCODE NAMES.
* 
*         EXIT   TO *ERR* IF VALUES DO NOT COMPARE. 
*                TO *SYS2* IF I/O ERROR.
* 
*         USES   T0 - T2, CM - CM+4, CN - CN+4. 
* 
*         CALLS  FDS, RNS.
* 
*         MACRO  ENDMS. 
  
  
 VEM7     LJM    SYS2        ISSUE ERROR MESSAGE AND HANG 
  
 VEM      SUBR               ENTRY/EXIT 
          LDC    BUF
          RJM    RNS         READ NEXT SECTOR 
          MJN    VEM7        IF ERROR 
          LDK    EABL+MFEI   GET MAINFRAME DESCRIPTOR ADDRESS 
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          LMD    CM 
          SHN    6
          CRD    CN 
          ADN    1           GET EI NAME
          CRD    CM 
          LDD    CN+1 
          SHN    -6 
          LMN    7
          NJN    VEMX        IF NOT CYBER 180 MACHINE 
          LDN    3           FIND MAINFRAME DESCRIPTOR
          RJM    FDS
 VEM1     NJN    VEM7        IF NOT FOUND 
          LDM    BUF+2+5+3,T2 
          STM    VEMB+6 
          LMD    CM+3 
          NJP    VEM5        IF EI MISMATCH 
          LDK    EABL+CPEI   GET PROCESSOR DESCRIPTOR 
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          LMD    CM 
          SHN    6
          ADN    2
          CRD    CM 
          LDN    2           FIND PROCESSOR DESCRIPTOR
          RJM    FDS
          NJN    VEM1        IF NOT FOUND 
          STD    T0 
          LDN    3
          STD    T1 
          RAD    T2 
 VEM2     LDM    BUF+2+2*5,T2 
          STM    VEMA+12,T1 
          LMM    CM,T1
          ZJN    VEM3        IF THIS BYTE MATCHES 
          AOD    T0          SET NO MATCH FLAG
 VEM3     SOD    T2 
          SOD    T1          DECREMENT INDEX
          PJN    VEM2        IF MORE TO COMPARE 
          LDD    T0 
          ZJN    VEM6        IF MICROCODE MATCHES 
 VEM4     ENDMS 
          LDC    VEMA        *MICROCODE MISMATCH* 
*         LDC    VEMB        (EI MISMATCH)
 VEMC     EQU    *-1
          LJM    ERR         DISPLAY MESSAGE AND HANG PP
  
 VEM5     LDK    VEMB-VEMA
          RAM    VEMC 
          UJN    VEM4        DISPLAY MESSAGE AND HANG 
  
 VEM6     LJM    VEMX        RETURN 
  
 VEMA     DATA   C*MICROCODE MISMATCH,        * 
 VEMB     DATA   C*EI MISMATCH,  *
 VTL      SPACE  4,10 
**        VTL - VERIFY TABLE LENGTHS. 
* 
*         ENTRY  (A) = LIST ADDRESS OF TABLE POINTERS.
* 
*         EXIT   (A) = 0 IF TABLE LENGTHS VALID.
*                (CA - CA+1) = FWA OF LAST TABLE IN LIST. 
* 
*         USES   EC, QA, T2, LM - LM+1. 
  
  
 VTL1     STD    T2 
          CRD    CA          READ TABLE POINTER 
          SHN    2
          ADC    PBUF+2      SET ADDRESS OF CHECKPOINTED POINTER
          RAD    T2 
          LDD    EC          COMPARE NUMBER OF TABLE ENTRIES
          LMI    T2 
          NJN    VTLX        IF TABLE LENGTHS DIFFER
          LDD    RS 
          LPN    FLMK 
          LMN    FLCM 
          ZJN    VTL2        IF FILES RECOVERED FROM CM 
          LDM    1,T2 
          STD    LM 
          LDM    2,T2        RESET POINTER PARAMETERS 
          STD    LM+1 
          LDI    QA          UPDATE POINTER WORD
          CWD    CA 
 VTL2     AOD    QA          ADVANCE LIST ADDRESS 
 VTL3     LDI    QA 
          NJN    VTL1        IF NOT END OF LIST 
  
 VTL      SUBR               ENTRY/EXIT 
          STD    QA 
          UJN    VTL3        ENTER LOOP 
 BUFFERS  SPACE  4
*         BUFFER DEFINITIONS. 
  
  
 PBUF     EQU    *+2
 BUF      EQU    PBUF+5*BQRL
  
          ERRPL  BUF+502-EPFW  BUFFER OVERFLOW
          TITLE  PRESET PROGRAM.
 PRS      SPACE  4
**        PRS - PRESET. 
* 
*         EXIT   (RS) = RECOVERY STATUS.
*                (NC) = NUMBER OF CONTROL POINTS. 
*                (NS) = NUMBER OF CP-S + PCP-S + 1 (SYS CP).
*                (CE) = CHECKPOINT DEVICE EST ORDINAL.
*                (ST) = SYSTEM TRACK FOR RECOVERY.
*                (LO) = LAST MASS STORAGE ORDINAL + 1.
* 
*         USES   CM - CM+4, CN - CN+4.
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDN    SMRL 
          CRD    CM 
          LDD    CM+4        SET STORAGE MOVE STATUS
          STM    CCPA 
          LDD    CM+3 
          LPN    77 
          RAM    CCPB 
          LDD    IR+4        SET RECOVERY STATUS
*         STD    RS 
          STM    RECC+4 
          LDN    NCPL        FETCH CONTROL POINT COUNT
          CRD    CM 
          ADN    MCTP-NCPL   GET MCT POINTER
          CRD    CN 
          AOD    CM+1        SET SYSTEM CP
          STD    NC 
          RAM    RECC+1 
          ERRNZ  MCTP-PCPP   CODE DEPENDS ON VALUE
          LDD    CN+3 
          SHN    14          FORM BASE PCPA ADDRESS 
          LMD    CN+4 
          SBK    CPAS 
          STM    SCAA        SET ADDRESS - CPA LENGTH 
          SHN    -14
          RAM    SCAA-1 
          SOD    CN+2        SET CP + PCP + SYS CP COUNT
          STD    NS 
          LDD    IA 
          CWD    IR 
          MONITOR CCAM
*         LDN    0
          STD    ST 
          LDN    ESTP        READ EST POINTER 
          CRD    CM 
          LDD    CM+3        SET LAST MASS STORAGE ORDINAL + 1
          STD    LO 
          LDN    TAXMW       SET TAXM WORD COUNT
          STD    T2 
          LDN    ZERL 
          CRD    CM 
          ADN    DSDL+1-ZERL FETCH *TAXM* TABLE GENERATED BY *SET*
          CRM    TAXM,T2
          RJM    IFP         INITIALIZE TABLE ACCESS ROUTINES 
  
*         FIND SYSTEM DEVICE. 
  
          LDN    NOPE-1 
          STD    T5 
 PRS1     AOD    T5          INCREMENT EST ORDINAL
          STM    RECF        SET POSSIBLE SYSTEM DEVICE 
          LMD    LO 
          ZJP    PRS5        IF END OF SCAN 
          SFA    EST,T5 
          ADK    EQDE 
          CRD    FN          READ EST ENTRY 
          LDD    FN 
          SHN    21-13
          PJN    PRS1        IF NOT MASS STORAGE
          SHN    13-12
          PJN    PRS1        IF NOT SYSTEM DEVICE 
  
*         FIND CHECKPOINT DEVICE. 
  
          LDN    NOPE-1 
          STD    CE 
 PRS2     AOD    CE          INCREMENT EST ORDINAL
          LMD    LO 
          ZJN    PRS4        IF END OF SCAN 
          SFA    EST,CE 
          ADK    EQDE 
          CRD    FN 
          LDD    FN 
          SHN    21-13
          PJN    PRS2        IF NOT MASS STORAGE
          SHN    13-2 
          PJN    PRS2        IF NOT CHECKPOINT DEVICE 
          LDD    FN+4        SET SYSTEM TABLE TRACK 
          SHN    3
          ADN    DULL 
          CRD    FS 
          LDD    FS+3 
          SHN    21-13
          PJN    PRS2        IF NOT VALID CHECKPOINT FILE 
          SHN    13-21
          STD    ST 
          STM    RECE 
 PRS3     RJM    STU         SCAN TAPE UNITS
          LJM    PRSX        RETURN 
  
 PRS4     LDD    RS 
          ZJN    PRS3        IF NOT RECOVERY DEADSTART
          LDN    PRSB-PRSA
 PRS5     ADC    PRSA 
          LJM    ERR         DISPLAY MESSAGE AND HANG 
  
 PRSA     DATA   C*SYSTEM DEVICE NOT FOUND.*
 PRSB     DATA   C*CHECKPOINT DEVICE NOT FOUND.*
  
 IFP      HERE               DUMP *IFP* REMOTE CODE 
 STU      SPACE  4,10 
**        STU - SCAN TAPE UNITS IN *MAGNET*.
* 
*         EXIT   JOB STATUS UPDATED IN *UST1* WORD OF UDT ENTRIES.
* 
*         USES   CM - CM+4, CN - CN+4, FN - FN+4, FS - FS+4.
* 
*         CALLS  AST. 
* 
*         MACROS PAUSE, SFA.
  
  
 STU      SUBR               ENTRY/EXIT 
          LDC    FECF*10000+MTSI  GET *MAGNET* SSCT ENTRY 
          RJM    AST
          SHN    21-13
          PJN    STUX        IF *MAGNET* NOT ACCESSIBLE 
          LDC    FEAF*10000+MTSI  GET *MAGNET* SSAT ENTRY 
          RJM    AST
          ZJN    STUX        IF *MAGNET* NOT AT CONTROL POINT 
          SFA    EJT         GET *MAGNET* CP NUMBER 
          ADN    SCHE 
          CRD    CM 
          LDD    CM+3        CHECK *MAGNET* SUBSYSTEM IDENTIFICATION
          SHN    7
          ADN    JCIW 
          CRD    CM 
          SBN    JCIW-FLSW   GET *MAGNET* RA AND FL 
          CRD    CN 
          SCN    77 
          LMM    CCPA 
          ZJN    STUX        IF *MAGNET* MOVING 
          LDD    CM+2 
          LMC    MTSI 
          NJN    STUX        IF NOT CORRECT SUBSYSTEM IDENTIFICATION
          LDK    MABL        CHECK MAINFRAME TYPE 
          CRD    CM 
          LDD    CM+1 
          SHN    21-13
          MJN    STU1        IF NOT CM EXTENSION
          LRD    CN+2 
          LDC    4000 
          STD    CN+3 
 STU1     LDD    CN+3        GET *MAGNET* UDT FWA AND LWA+1 
          SHN    6
          ADN    /MTX/UBUF
          CRD    CM 
          LDD    CM+4        VALIDATE UDT FWA AND LWA+1 
          SBN    2
          MJN    STU2        IF UDT FWA .LE. 1
          LDD    CN+4 
          SHN    6
          SBD    CM+2 
          SBN    1
          MJN    STU2        IF UDT LWA+1 .GE. FL 
          LDD    CM+4 
          SBD    CM+2 
          MJN    STU4        IF UDT FWA .LT. LWA+1
 STU2     PAUSE  NE          RESET R REGISTER FOR CME MACHINE 
          LJM    STUX        RETURN 
  
 STU3     LDN    /MTX/UNITL 
          RAD    CM+4 
          SBD    CM+2 
          PJN    STU2        IF END OF UDTS 
 STU4     LDD    CN+3        CHECK NEXT UDT 
          SHN    6
          ADD    CM+4 
          ADK    /MTX/UST1  GET JOB STATUS
          CRD    FS 
          ADK    /MTX/UVRI-/MTX/UST1  GET EJT ORDINAL 
          CRD    FN 
          LDD    FS          CLEAR JOB ROLLED OUT FLAG
          SCN    1
          STD    FS 
          SFA    EJT,FN      GET JOB STATUS 
          ADK    JSNE 
          CRD    FN 
          LDD    FN+4 
          LPN    76 
          LMN    EXJS*2 
          ZJN    STU5        IF UNIT NOT ASSIGNED OR JOB AT CP
          AOD    FS          INDICATE JOB ROLLED OUT
 STU5     LDD    CN+3 
          SHN    6
          ADD    CM+4 
          ADN    /MTX/UST1
          CWD    FS 
          UJN    STU3        PROCESS NEXT UDT 
          SPACE  4,10 
**        PRESET COMMON DECKS.
  
  
*CALL     COMPAST 
          TTL    REC/4RA - RECOVER DAYFILES.
          TITLE 
          QUAL   RDB
          IDENT  4RA,RDFX 
 QUAL$    EQU    1           DONT QUALIFY COMMON DECKS
*COMMENT  REC - RECOVER DAYFILES. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
**        4RA - RECOVER DAYFILES. 
* 
*                *4RA* USES THE DAYFILE RECOVERY INFORMATION DEVELOPED
*         BY *RMS* TO SETUP THE DAYFILE FST ENTRIES.  IT ALSO SETS
*         THE RECOVERED DAYFILES LENGTH IN THE CORRESPONDING
*         SYSTEM SECTOR.  IF A DAYFILE IS NOT RECOVERED, *4RA*
*         WILL START A NEW DAYFILE ON THE DEVICE DEFINED BY 
*         THE DAYFILE CMRDECK DIRECTIVES. 
          SPACE  4,3
***       ENTRY CONDITIONS. 
* 
*         (SE) = SYSTEM EQUIPMENT.
          SPACE  4,3
***       OPERATOR MESSAGES.
* 
*         *FILENAM   UNRECOVERABLE.*  = DAYFILE SPECIFIED 
*         NOT RECOVERABLE.
          SPACE  4
          ORG    OVLA 
  
  
 RDF      SUBR               ENTRY/EXIT 
          RJM    IDF         INITIALIZE DAYFILES
          UJN    RDFX        RETURN 
 RDB      SPACE  4,10 
          QUAL
  
*         *4RA*/*4RE* COMMUNICATION BLOCK.
  
  
 RDBA     BSS    0           CREATION DATE BUFFERS
          BSSZ   5           SYSTEM DAYFILE 
          BSSZ   5           ACCOUNT DAYFILE
          BSSZ   5           ERRLOG DAYFILE 
          BSSZ   5           MAINTENANCE LOG DAYFILE
  
 RDBB     BSS    0           EOI DATE BUFFERS 
          BSSZ   5           SYSTEM DAYFILE 
          BSSZ   5           ACCOUNT DAYFILE
          BSSZ   5           ERRLOG DAYFILE 
          BSSZ   5           MAINTENANCE LOG DAYFILE
  
 RDBC     BSS    0           EOI TIME BUFFERS 
          BSSZ   5           SYSTEM DAYFILE 
          BSSZ   5           ACCOUNT DAYFILE
          BSSZ   5           ERRLOG DAYFILE 
          BSSZ   5           MAINTENANCE LOG DAYFILE
  
 RDBD     BSS    0
          DATA   H*DAYFILE   *
          DATA   H*ACCOUNT   *
          DATA   H*ERRLOG    *
          DATA   H*MAINLOG   *
 RDBE     BSS    0
  
 RDBF     BSSZ   EXDF        FIRST TRACK OF CREATED DAYFILES
  
*         THE FOLLOWING MESSAGE, *ARSY, LN, YY/MM/DD.* IS ISSUED WHEN 
*         THE ACCOUNT DAYFILE IS RECOVERED ON DEADSTART LEVEL *LN*. 
*         THE MESSAGE *ABSY,  YY/MM/DD.* IS ISSUED WHEN THE ACCOUNT 
*         DAYFILE IS INITIALIZED. 
  
 RDBG     DATA   H*ARSY, 0, YY/MM/D*
          CON    0,0
 RDBH     DATA   C*FILENAM   RECOVERED, EQXXX.* 
 RDBI     DATA   C*FILENAM   CREATION DATE YY/MM/DD. *
 RDBI1    EQU    *-6
 RDBJ     DATA   C*FILENAM   UPDATED YY/MM/DD. HH.MM.SS. *
 RDBJ1    EQU    *-13 
 RDBK     CON    RDBG+4      MESSAGE ADDRESS FOR DATE 
          SPACE  4,10 
 OVLB     EQU    *+5         ORIGIN FOR *4RE* 
          QUAL   RDB
          TITLE  SUBROUTINES. 
 IDF      SPACE  4,9
**        IDF - INITIALIZE DAYFILES.
* 
*         ENTRY  (RS) = RECOVERY STATUS.
*                (RECF) = SYSTEM EQUIPMENT. 
* 
*         EXIT   (USST) = EQUIPMENT AND FIRST TRACK OF NEW DAYFILES.
* 
*         USES   T1 - T7, CM - CM+4, CN - CN+4, FN - FN+4,
*                FS - FS+4, USST, QT, QS, FA. 
* 
*         CALLS  C2D, FMM, GDT, IEM, IRA, RDS, RSS, SEI, TLM, WEI, WSS. 
* 
*         MACROS ENDMS, MONITOR, SETMS, SFA.
  
  
 IDF      SUBR               ENTRY/EXIT 
          LDD    RS          CHECK RECOVERY STATUS
          LPN    FLMK 
          LMN    FLCM 
          ZJN    IDFX        IF FILES RECOVERED FROM CM 
          LDN    0           CLEAR FST ADDRESS
          STD    FA 
          STD    QS          CLEAR *USST* INDEX 
          LDN    ZERL 
          CRD    CM 
  
*         THE FIRST WORD OF THE SYSTEM DAYFILES BUFFER CONTAINS 
*         THE DAYFILE RECOVERY INFORMATION. 
  
          LDN    DFPP        SET FWA OF DAYFILE POINTERS
          CRD    CN 
          LDD    CN 
          SHN    14 
          ADD    CN+1 
          CRD    FS 
          SBN    1           INITIALIZE DAYFILE STATUS WORD ADDRESS 
          STD    CN+1 
          SHN    -14
          STD    CN 
          LCN    0           INITIALIZE DAYFILE INDEX 
          STD    CN+3 
          LDD    FS 
          SHN    14 
          LMD    FS+1 
          CRD    FN 
          CWD    CM 
          LDD    FN+1        CHECK ACCOUNT FILE RECOVERY INFORMATION
          SHN    21-13
          PJN    IDF1        IF RECOVERY SELECTED 
          SOM    RDBK 
          LCN    1RR-1RB     SET *ABSY* IN MESSAGE
          RAM    RDBG 
  
*         LOOP TO PROCESS EACH DAYFILE. 
  
 IDF1     AOD    CN+3        ADVANCE DAYFILE INDEX
          LMN    EXDF 
          NJN    IDF2        IF NOT LAST OF EXCESS DAYFILES 
          LJM    IDFX        RETURN 
  
 IDF2     LDN    3           SET STATUS WORD ADDRESS
          RAD    CN+1 
          SHN    -14
          RAD    CN 
          SHN    14 
          ADD    CN+1 
          CRD    FS          READ DAYFILE STATUS WORD 
          SBN    1           READ DAYFILE BUFFER LENGTH WORD
          CRD    CM 
          LDD    CM+3 
          ZJN    IDF1        IF ZERO LENGTH BUFFER
          STD    CM+2 
          LDN    0
          STD    CM+3 
          LDD    CN          ACTIVATE DAYFILE 
          SHN    14 
          ADD    CN+1 
          SBN    1
          CWD    CM 
  
*         PROCESS DAYFILE RECOVERY. 
  
          LDM    FN,CN+3     SET DAYFILE EST ORDINAL
          LPC    777
          STD    T5 
          LMN    NEEQ 
          ZJN    IDF3        IF DEFAULT EQUIPMENT 
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM          CHECK EQUIPMENT
          SHN    -6 
          LPN    45 
          LMN    40 
          ZJN    IDF4        IF MASS STORAGE, NOT REMOVABLE, AVAILABLE
 IDF3     LDM    RECF        DEFAULT TO SYSTEM DEVICE 
          STD    T5 
 IDF4     RJM    IRA         INITIALIZE RANDOM ACCESS PROCESSORS
          LDD    T5          SET EQUIPMENT IN FST 
          STD    FS 
          RJM    GDT         GET DAYFILE TRACKS 
          LDM    FN,CN+3
          SHN    21-13
          PJN    IDF6        IF RECOVERY OF DAYFILE SELECTED
 IDF5     LJM    IDF11       INITIALIZE DAYFILE 
  
 IDF6     LDM    IDFD,CN+3   CHECK TRACK ASSIGNED 
          NJN    IDF7        IF TRACK ASSIGNED
          LDD    T5          CHECK REQUESTED EQUIPMENT
          LMM    FN,CN+3
          LPC    777
          NJN    IDF5        IF DEFAULT EQUIPMENT 
          LJM    IDF10       TRACK NOT ASSIGNED RECOVERY IMPOSSIBLE 
  
*         UPDATE RECOVERY INFORMATION IN SYSTEM SECTOR. 
  
 IDF7     STD    T6 
          STD    FS+1 
          SETMS  IO,(SM,RW) 
          LDM    IDFB,CN+3
          RJM    RSS         READ SYSTEM SECTOR 
          NJN    IDF8        IF INCORRECT SYSTEM SECTOR 
          ENDMS 
*         LDN    0           (FORCE CURRENT TRT)
          RJM    SEI         SET CURRENT POSITION TO EOI
          LDD    T6 
          STD    FS+2 
          LDD    T7 
          STD    FS+3        SET SECTOR 
          LDD    T2          SAVE LENGTH
          STM    FLSS 
          LDD    T3 
          STM    FLSS+1 
          RJM    TLM         TERMINATE LAST MESSAGE 
          LDC    SBUF 
          RJM    RDS         READ EOI SECTOR
          MJN    IDF9        IF READ ERROR
          LDM    SBUF 
          ADM    SBUF+1 
 IDF8     NJN    IDF9        IF NOT EOI 
          RJM    FMM         FORMAT MESSAGES
          LJM    IDF15
  
*         IF NO TRACK ASSIGNED, ERROR IN SYSTEM SECTOR
*         OR ERROR IN EOI SECTOR. 
  
 IDF9     ENDMS 
 IDF10    RJM    IEM         ISSUE ERROR MESSAGE
  
*         CREATE A NEW DAYFILE. 
  
 IDF11    LDM    IDFD,CN+3
          ZJN    IDF12       IF NO TRACK ASSIGNED 
          STD    CM+2 
          LDD    T5 
          STD    CM+1 
          MONITOR DTKM       DROP TRACKS
 IDF12    LDN    ZERL 
          CRD    CM 
          LDD    T5          SET EST ORDINAL
          STD    CM+1 
          LMC    4000 
          STM    USST,QS
          MONITOR RTCM       RESERVE TRACK CHAIN
          LDD    CM+4        SET TRACK
          STD    T6 
          STM    RDBF,CN+3
          NJN    IDF13       IF TRACK ASSIGNED
          LDD    T5          CONVERT UPPER TWO DIGITS OF EST ORDINAL
          SHN    -3 
          RJM    C2D
          STM    IDFC+1 
          LDD    T5          CONVERT LOWER DIGIT OF EST ORDINAL 
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    IDFC+2 
          LDC    IDFC        *EQXXX, DAYFILE TRACK LIMIT.*
          LJM    ERR
  
 IDF13    STM    USST+1,QS
          STD    CM+2        SET PRESERVED FILE BIT 
          LDD    T5 
          STD    CM+1 
          LDN    SPFS 
          STD    CM+3 
          MONITOR STBM
*         LDN    0           FORCE DEADSTART CHECKPOINT 
          STM    RECB 
          LDN    2           ADVANCE SYSTEM SECTOR UPDATE INDEX 
          RAD    QS 
          LDM    IDFB,CN+3   SET DAYFILE NAME 
          STM    IDFA 
          LDC    501-ETEI 
          STD    T1 
 IDF14    LDN    0           CLEAR SYSTEM SECTOR / EOI BUFFER 
          STM    BFMS+ETEI,T1 
          SOD    T1 
          PJN    IDF14       LOOP UNTIL CLEAR 
          LDD    MA 
          CWM    *,ON 
 IDFA     EQU    *-1
          SBN    1
          CRM    FNSS,ON
          RJM    WSS         WRITE SYSTEM SECTOR
          RJM    WEI         WRITE EOI
          ENDMS 
          LDD    T5          SET EQUIPMENT
          STD    FS 
          LMC    4000 
          STD    CM+1 
          LDD    T6          SET TRACK
          STD    FS+1 
          STD    FS+2 
          LPC    3777 
          STD    CM+2 
          LDD    T7          SET SECTOR 
          STD    FS+3 
          STD    CM+3 
          MONITOR DTKM       SET EOI IN TRT 
  
*         COMPLETE PROCESSING FOR THIS DAYFILE. 
  
 IDF15    ENDMS 
          LDD    CN          STORE DAYFILE FST
          SHN    14 
          ADD    CN+1 
          CWD    FS 
          LJM    IDF1        LOOP FOR NEXT DAYFILE
  
*         TABLE OF ADDRESSES FOR DAYFILE FNT ENTRIES. 
  
 IDFB     BSS    0
          CON    NDYF 
          CON    NACF 
          CON    NERL 
          CON    NBML 
  
 IDFC     DATA   C*EQXXX, DAYFILE TRACK LIMIT.* 
 IDFD     BSS    5           DAYFILES FIRST TRACK BUFFER
  
*         DAYFILE FNT ENTRIES.
  
 NDYF     VFD    42/0LDAYFILE,6/1,6/LIFT,6/0
 NACF     VFD    42/0LACCOUNT,6/1,6/LIFT,6/0
 NERL     VFD    42/0LERRLOG,6/1,6/LIFT,6/0 
 NBML     VFD    42/0LMAINLOG,6/1,6/LIFT,6/0
 IEM      SPACE  4
**        IEM - ISSUE ERROR MESSAGE.
* 
*         ENTRY  (CN+3) = DAYFILE INDEX.
* 
*         USES   CM - CM+4. 
  
  
 IEM      SUBR               ENTRY/EXIT 
          LDM    IDFB,CN+3
          STM    IEMA 
          LDD    MA 
          CWM    *,ON        FILENAME FOR MESSAGE 
 IEMA     EQU    *-1
          SBN    1
          CRM    IEMB,ON
          LDC    2R          BLANK FILE NAME
          STM    IEMB+4 
          LDM    IEMB+3 
          SCN    77 
          LMN    1R 
          STM    IEMB+3 
  
*         SET PAUSE BIT.
  
          LDD    NC          SYSTEM CONTROL POINT 
          SHN    7
          ADN    SNSW        SENSE SWITCH WORD
          CRD    CM 
          STD    T1 
  
*         SET PAUSE BIT AND WAIT FOR OPERATOR ACTION. 
  
          LDD    CM+3 
          SCN    1
          LMN    1
          STD    CM+3 
          LDD    T1 
          CWD    CM 
          ADN    MS2W-SNSW
          CWM    IEMB,TR
 IEM1     LDN    77 
          SBN    1
          NJN    *-1         DELAY
          LDD    T1 
          CRD    CM 
          LDD    CM+3 
          LPN    1
          NJN    IEM1        IF PAUSE BIT STILL SET 
          LJM    IEMX        RETURN 
  
  
 IEMB     DATA   C*DAYFILE   UNRECOVERABLE.*
 FMM      SPACE  4,15 
**        FMM - FORMAT MESSAGES.
* 
*         ENTRY  CHANNEL RESERVED.
*                (T5) = EST ORDINAL.
*                (QS) = INDEX TO *USST* LIST. 
*                SYSTEM SECTOR AT BFMS. 
*                EOI SECTOR AT SBUF.
*                (CN+3) = DAYFILE INDEX.
*                (FS - FS+4) = DAYFILE STATUS WORD. 
*                *SETMS IO,RW* PERFORMED. 
* 
*         EXIT   SYSTEM SECTOR UPDATED. 
*                MESSAGE INFORMATION SAVED. 
* 
*         USES   T1, T2, T6, T7.
* 
*         CALLS  WSS. 
  
  
 FMM      SUBR               ENTRY/EXIT 
          LDD    CN+3        SAVE DATE AND TIME 
          SHN    2
          ADD    CN+3 
          ADC    RDBA 
          STM    FMMA 
          ADN    RDBB-RDBA
          STM    FMMC 
          ADN    RDBC-RDBB
          STM    FMMB 
  
*         SAVE SYSTEM SECTOR CREATION DATE. 
  
          LDD    MA 
          CWM    BFMS+DTEI+2*5,ON 
          SBN    1
          CRM    **,ON
 FMMA     EQU    *-1
  
*         SAVE UPDATE TIME. 
  
          SBN    1
          CWM    SBUF+DTEI+5,ON 
          SBN    1
          CRM    **,ON
 FMMB     EQU    *-1
  
*         SAVE UPDATE DATE. 
  
          SBN    1
          CWM    SBUF+DTEI+2*5,ON 
          SBN    1
          CRM    **,ON
 FMMC     EQU    *-1
  
*         UPDATE SYSTEM SECTOR WITH NEW LENGTH. 
  
          SETMS  POSITION 
          LDM    FTSS        REWRITE SYSTEM SECTOR
          STM    USST+1,QS
          STD    T6 
          RJM    WSS
          LDD    T5          SET RECOVERED DAYFILE IN *USST*
          LMC    2000 
          STM    USST,QS
          LDN    2
          RAD    QS 
          LDD    FS+1        CHECK STATUS OF DAYFILE
          LMD    FS+2 
          NJN    FMM1        IF BUFFER DUMPED TO DISK 
          LDD    FS+3 
          LMN    FSMS 
          NJN    FMM1        IF BUFFER DUMPED 
          LDD    T6          SET FIRST TRACK IN CREATION TABLE
          STM    RDBF,CN+3
 FMM1     LJM    FMMX        RETURN 
 GDT      SPACE  4,10 
**        GDT - GET DAYFILE TRACKS. 
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         EXIT   (IDFD) = FIRST TRACKS OF EXCESS DAYFILES.
*                       = 0 IF NO DAYFILES ON DEVICE. 
* 
*         EREXIT TO *ERR* IF ERROR READING SECTOR OF LOCAL AREAS. 
* 
*         CALLS  C2D, RLA.
  
  
 GDT1     ZJN    GDT2        IF NO SECTOR OF LOCAL AREAS
          STM    GDTA 
          LDD    MA          MOVE DAYFILE TRACKS TO DIRECT CELLS
          CWM    *,ON 
 GDTA     EQU    *-1
          SBN    1
 GDT2     CRM    IDFD,ON
  
 GDT      SUBR               ENTRY/EXIT 
          RJM    RLA         READ LOCAL AREA SECTOR 
          PJN    GDT1        IF NO ERRORS 
          LDD    T5          CONVERT UPPER TWO DIGITS OF EST ORDINAL
          SHN    -3 
          RJM    C2D
          STM    GDTB+1      STORE IN MESSAGE 
          LDD    T5          CONVERT LOWER DIGIT OF EST ORDINAL 
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    GDTB+2 
          LDC    GDTB        *EQXXX, LOCAL AREA SECTOR ERROR.*
          LJM    ERR         DISPLAY MESSAGE AND HANG 
  
 GDTB     DATA   C*EQXXX, LOCAL AREA SECTOR ERROR.* 
 TLM      SPACE  4,15 
**        TLM - TERMINATE LAST DAYFILE MESSAGE. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = (FS+2) = EOI TRACK FOR DAYFILE. 
*                (T7) = (FS+3) = EOI SECTOR.
*                (FS+1) = FIRST TRACK OF DAYFILE. 
*                (CN+3) = DAYFILE INDEX.
*                (CN - CN+1) = FWA OF DAYFILE POINTERS. 
*                (T2 - T3) = DAYFILE LENGTH (SECTOR COUNT). 
* 
*         USES   T2, CM - CM+4. 
* 
*         CALLS  RDS, SNT.
  
  
 TLM      SUBR               ENTRY/EXIT 
          LDD    CN+3 
          LMN    MLDY 
          ZJN    TLMX        IF MAINTENANCE LOG 
          LDD    T3 
          LMN    FSMS 
          ADD    T2 
          ZJN    TLMX        IF DAYFILE EMPTY 
          SOD    T7 
          PJN    TLM2        IF EOI NOT ON TRACK BOUNDARY 
          LDD    FS+1 
          STD    T6 
 TLM1     LDD    T6          SAVE CURRENT TRACK 
          STD    T2 
          RJM    SNT         SET NEXT TRACK 
          STD    T6 
          LMD    FS+2 
          NJN    TLM1        IF NOT EOI TRACK 
          LDD    T2 
          STD    T6 
          LDM    SLM         SET LAST DATA SECTOR 
          SBN    1
          STD    T7 
 TLM2     LDC    SBUF        READ LAST SECTOR OF DAYFILE DATA 
          RJM    RDS
          MJN    TLM3        IF READ ERROR
          LDM    SBUF+1 
          LMD    HN 
          NJN    TLM3        IF NOT FULL SECTOR (BUFFER FLUSHED)
          LDM    SBUF+501 
          ZJN    TLM3        IF LAST MESSAGE COMPLETE 
          LDD    CN 
          SHN    14 
          ADD    CN+1 
          SBN    2
          CRD    CM 
          AOD    CM+4        ADVANCE IN POINTER 
          LDD    CN 
          SHN    14 
          ADD    CN+1 
          SBN    2
          CWD    CM 
 TLM3     LDD    FS+2        RESTORE EOI ADDRESS
          STD    T6 
          LDD    FS+3 
          STD    T7 
          LJM    TLMX        RETURN 
 USS      SPACE  4
**        USS - UPDATE SYSTEM SECTOR. 
* 
*         ENTRY  EST ORDINAL AND FIRST TRACK OF SELECTED DAYFILES 
*                STORED IN USST.
* 
*         EXIT   DAYFILE SYSTEM SECTORS UPDATED WITH CURRENT TIME.
* 
*         USES   T5, T6, QS.
* 
*         CALLS  RSS, WSS.
* 
*         MACROS ENDMS, SETMS.
  
  
 USS      SUBR               ENTRY/EXIT 
          LDN    0           CLEAR FILE INDEX 
          STD    QS 
          STD    FA 
 USS1     LDM    USST,QS     CHECK FOR SELECTED EQUIPMENT 
          ZJN    USSX        IF END OF FILES
          LPC    777
          STD    T5 
          SETMS  IO,RW
          LDM    USST+1,QS   SET FIRST TRACK
          STD    T6 
          LDN    0           READ SYSTEM SECTOR 
          RJM    RSS
          NJN    USS3        IF ERROR IN SYSTEM SECTOR
          LDM    USST,QS
          SHN    21-12
          MJN    USS2        IF A RECOVERED DAYFILE 
          LDN    PDTL        ENTER CREATION DATE AND TIME 
          CRM    DTSS,TR
 USS2     RJM    WSS         UPDATE TIME IN SYSTEM SECTOR 
 USS3     ENDMS 
          LDN    2
          RAD    QS 
          LJM    USS1        LOOP FOR NEXT FILE 
  
  
**        TABLE OF DAYFILE SYSTEM SECTORS TO UPDATE.
*         ENTRY = 2 WORDS, ZERO WORD TERMINATES THE TABLE.
* 
*T, USST  3/FLAGS, 9/ ESTORD, 12/ FIRST TRACK 
* 
*         FLAGS - 
*                4 = NEW DAYFILE. 
*                2 = RECOVERED DAYFILE. 
  
  
 USST     BSSZ   2*EXDF+1 
          SPACE  4
*         COMMON DECKS. 
  
  
*CALL     COMPRLA 
          SPACE  4
          USE    LITERALS 
  
 SBUF     EQU    *           SCRATCH BUFFER 
          ERRNG  BFMS-SBUF-502  SCRATCH BUFFER OVERFLOW INTO *BFMS* 
          TTL    REC/4RB - ALLOCATE/RECOVER USER XM.
          TITLE 
          QUAL   ECS
          IDENT  4RB,ECSX 
*COMMENT  REC - ALLOCATE/RECOVER USER XM. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 4RB      SPACE 4,10
***       ECS - ALLOCATE/RECOVER USER EXTENDED MEMORY.
* 
*                *ECS* PERFORMS THE ALLOCATION AND RECOVERY OF USER 
*         ACCESS EXTENDED MEMORY. THE ALLOCATED XM FOR USER DIRECT
*         ACCESS IS MAINTAINED AS A PRESERVED FILE OF TYPE *LIFT* AND 
*         IS NAMED -**UECS.-.  THE FILE IS COMPOSED OF UP TO 5
*         SUB-CHAINS.  THE FIRST SUB-CHAIN IS ONE TRACK LONG AND IS 
*         TO GUARANTEE A SYSTEM SECTOR FOR THE ENTIRE CHAIN.  EACH
*         SUBSEQUENT SUB-CHAIN, UP TO 4, IS COMPOSED OF ENOUGH
*         CONTINUOUS TRACKS TO MEET THE SPACE REQUIRMENTS OF ONE
*         MACHINES DIRECT ACCESS AREA.  THE SYSTEM SECTOR CONTAINS
*         INFORMATION DESCRIBING EACH SUB-CHAIN PRESENT.
 4RB      SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         **ECSM* ERROR CLEARING USER XM.* = A HARDWARE ERROR OCCURRED
*         WHILE ATTEMPTING TO CLEAR A JOB-S EXTENDED MEMORY FIELD 
*         LENGTH. 
* 
*         *USER EXTENDED MEMORY IMPROPERLY ALLOCATED.* = AN 
*         INCONSISTENCY HAS BEEN DETECTED, BETWEEN THE REQUESTED USER 
*         EXTENDED MEMORY SPACE AND ALLOCATION INFORMATION IN THE 
*         SYSTEM SECTOR, WHILE ATTEMPTING TO RECOVER THE USER 
*         DIRECT ACCESS SPACE.
* 
*         *USER EM SPACE UNAVAILABLE.* = THE AMOUNT 
*         REQUESTED FOR USER EXTENDED MEMORY (VIA THE *XM* ENTRY IN 
*         *EQPDECK*) IS NOT AVAILABLE.
* 
*         *USER EXTENDED MEMORY SYSTEM SECTOR ERROR.* = AN ERROR WAS
*         DETECTED WHILE READING THE SYSTEM SECTOR FOR THE USER 
*         EXTENDED MEMORY CHAIN.
 4RB      SPACE  4,10 
****      DIRECT CELL DEFINITIONS LOCAL TO *4RB*. 
  
  
 T8       EQU    26          POINTER TO SUB-CHAIN ENTRY 
 T9       EQU    27          CURRENT MACHINE ID 
 KA       EQU    QS          CP/PCP NUMBER
 KB       EQU    QI          MCT ENTRY COUNT
 AB       EQU    FN          CM WORD BUFFER 
  
****
 ECS      TITLE  MAIN PROCESSING ROUTINE. 
 ECS      SPACE  4,10 
**        ECS - MAIN ROUTINE. 
  
  
          ORG    OVLA 
 ECS      SUBR               ENTRY/EXIT 
          RJM    PRS         PRESET OVERLAY 
          LDM    TAXM 
          ZJN    ECS1        IF NO ENTRY FOR THIS MACHINE 
          LDM    TAXM+2      GET LENGTH OF USER EXTENDED MEMORY 
          STD    FS+2 
 ECS1     RJM    SDI         INTERLOCK ECS
          LDM    ECSE+ACGL*5+1  CHECK FOR FIRST TRACK OF UEC CHAIN
          ZJN    ECS2        IF MST NOT INITIALIZED 
          LJM    ECS8        IF SOME USER ECS SPACE ALLOCATED 
  
*         INITIALIZE USER EXTENDED MEMORY CHAIN AND MST.
  
 ECS2     LDD    FS+2 
          ZJN    ECS4        IF NO USER ECS REQUESTED FOR THIS MACHINE
          LDD    RS 
          NJN    ECS6        IF NOT LEVEL 0 DEADSTART 
          RJM    ISS         INITIALIZE SYSTEM SECTOR 
          LDM    ECSE+ACGL*5+1  END OF CURRENT CHAIN
          STD    FS+4 
          LDC    BFMS+2+4*5  SET FIRST ENTRY POINTER
          STD    T8 
  
*         ASSIGN USER EXTENDED MEMORY AREA. 
  
 ECS3     RJM    ACE         ASSIGN TRACKS
          RJM    SSS         STORE SYSTEM SECTOR
 ECS4     RJM    CDI         CLEAR INTERLOCK
 ECSA     RJM    SCP         SETUP CONTROL POINT AREAS
*         UJN    *+2         (DURING MMF PROCESSING)
 ECS5     LDC    0
 ECSB     EQU    *-1
          LMD    FS 
          ZJN    ECS7        IF ALLOCATING ON MMF LINK
 ECS5.1   LJM    ECSX        RETURN 
  
*         ERROR IN USER EXTENDED MEMORY ALLOCATION. 
  
 ECS6     RJM    CDI         CLEAR INTERLOCK
          LDC    =C*USER EXTENDED MEMORY IMPROPERLY ALLOCATED.* 
          LJM    HNG         ISSUE ERROR AND HANG 
  
*         SET UP TO PROCESS MULTIMAINFRAME ALLOCATION.
  
 ECS7     LDC    UJNI+2      SET MMF SWITCHES 
          STM    ECSA 
          LDD    HN 
          ERRNZ  100-LJMI    ADJUST IF VALUE CHANGES
          STM    ECSC 
          LDC    ECS5 
          STM    ECSC+1 
          RJM    CAD         CLEAR THIS MACHINES ID AND DATA
          RJM    FAD         FETCH NEW MACHINE ID AND DATA
          ZJN    ECS5.1      IF NO MORE MACHINES TO ALLOCATE
          STD    T9 
          LDM    2,T1        SET NEW USER EXTENDED MEMORY AREA LENGTH 
          STD    FS+2 
          LJM    ECS1        PROCESS ANOTHER MACHINE
  
*         PROCESS EXISTING USER EXTENDED MEMORY CHAIN.
  
 ECS8     RJM    CDI         CLEAR INTERLOCK ON ECS 
          RJM    FSS         FETCH EXISTING SYSTEM SECTOR 
          RJM    FTM         FIND THIS MACHINES ENTRY 
          LDM    2,T8 
          NJN    ECS9        IF SPACE EXISTS FOR THIS MACHINE 
          LDD    FS+2 
          ZJN    ECS12       IF SPACE NOT REQUESTED FOR THIS MACHINE
          LDD    RS 
          NJN    ECS10       IF NOT LEVEL 0, THEN ERROR 
          UJN    ECS14       LOCATE END OF USER EXTENDED MEMORY CHAIN 
  
*         PROCESS EXISTING SUB-CHAIN. 
  
 ECS9     LDM    3,T8        SET RAE FROM SYSTEM SECTOR 
          STD    FS+3 
          LDM    1,T8        SET FIRST TRACK OF SUB CHAIN 
          STD    FS+1 
          LDD    FS+2 
          NJN    ECS13       IF SPACE REQUESTED 
          LDD    RS 
          ZJN    ECS11       IF LEVEL 0 DEADSTART 
 ECS10    LJM    ECS6        REPORT ERROR 
  
*         RELEASE EXISTING SUB-CHAIN. 
  
 ECS11    RJM    RLS         RELEASE SPACE
          STD    T9          CLEAR SUB-CHAIN ENTRY
          STD    FS+2 
          RJM    SSS         STORE UPDATED SYSTEM SECTOR
 ECS12    LJM    ECS4        COMPLETE PROCESSING
  
*         UPDATE EXISTING SUB-CHAIN.
  
 ECS13    LDM    2,T8 
          SBD    FS+2 
          ZJN    ECS12       IF SPACE MATCHES 
          LDD    RS 
          NJN    ECS10       IF NOT LEVEL 0 DEADSTART, THEN ERROR 
 ECSC     RJM    RLS         RELEASE SPACE
*         LJM    ECS5        (DURING MMF PROCESSING)
  
*         FIND LAST TRACK OF USER EXTENDED MEMORY CHAIN.
  
 ECS14    LDD    FS          SET EQUIPMENT
          STD    T5 
          LDM    ECSE+ACGL*5+1  SET FIRST TRACK 
          STD    T6 
          RJM    IRA         INITIALIZE RANDOM ACCESS PROCESSORS
          LDN    0           FORCE TRT UPDATE 
          RJM    SEI         SEARCH FOR EOI 
          LDD    T6          SET LAST TRACK 
          STD    FS+4 
          LJM    ECS3        ASSIGN TRACKS
  
  
 ECSE     BSS    3*5         BUFFER FOR MST GLOBAL WORDS
 ECSF     VFD    42/7H**UECS.,6/0,6/SYFT,6/0
          TITLE  SUBROUTINES. 
 ACE      SPACE  4,10 
**        ACE - ASSIGN CONTIGUOUS EXTENDED MEMORY TRACKS. 
* 
*         ENTRY  (FS) = EXTENDED MEMORY EST ORDINAL.
*                (FS+2) = LENGTH OF USER EXTENDED MEMORY AREA / *EMBS*. 
*                (FS+4) = LAST TRACK OF CURRENT CHAIN.
* 
*         EXIT   (FS+1) = FIRST TRACK OF SUB-CHAIN. 
*                (FS+3) = RA/*EMBS* OF USER EXTENDED MEMORY AREA. 
*                (FS+4) = LAST TRACK OF NEW SUB-CHAIN.
* 
*         USES   CM - CM+7, CN - CN+4, FS+1 - FS+3, T0 - T7.
* 
*         CALLS  CAT, CDI.
  
  
 ACE17    LDN    0           CLEAR FIELDS 
          STD    FS+1 
          STD    FS+3 
  
 ACE      SUBR               ENTRY/EXIT 
          LDD    FS+2 
          ZJN    ACE17       IF NO USER EXTENDED MEMORY TO BE ALLOCATED 
          ADN    2
          SHN    5
          STD    T1          ALLOW FOR *EMBS* WORD BLOCKS 
          SHN    -14
          STD    T6 
          LDN    0           TRACK COUNT = (FL*40) / 101
          STD    T7 
 ACE0     AOD    T7          ADVANCE TRACK COUNT
          LDC    -101 
          RAD    T1 
          PJN    ACE0        IF NOT UNDERFLOW 
          AOD    T1 
          SOD    T6 
          PJN    ACE0        IF NOT END OF CONVERSION 
          LDN    17 
 ACEB     SHN    -4          ADJUST FOR BLOCKING FACTOR 
*         SHN    -4+UESC-EMSC 
          RAD    T7 
          RJM    CDI         CLEAR INTERLOCK ON ECS 
          UJN    ACE2        ENTER LOOP 
  
 ACE1     LDD    NC          WRITE MESSAGE TO SYSTEM CONTROL POINT
          SHN    7
          ADN    MS2W 
          CWM    =C*USER EM SPACE UNAVAILABLE.*,TR
 ACE2     PAUSE  NE 
          LCN    1           SET TO REQUEST ALL TRACKS
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDD    FS          SET EST ORDINAL
          STD    CM+1 
          LDD    FS+4        SET CURRENT TRACK
          STD    CM+2 
          MONITOR RTCM       REQUEST ALL AVAILABLE ECS SPACE
          LDD    CM+4 
          ZJN    ACE1        IF TRACKS NOT AVAILABLE
          RJM    CAT         CALCULATE FWA OF TRT 
          STM    ACEA+1 
          SHN    -14
          ADC    ADCI 
          STM    ACEA 
  
*         FIND BEST FITTING CONTIGUOUS TRACK CHAIN. 
*         (T0) = POINTER TO FIRST TRACK OF CHAIN UNDER CONSIDERATION. 
*         (T1) = FIRST TRACK OF CHAIN UNDER CONSIDERATION.
*         (T2) = LENGTH OF CHAIN UNDER CONSIDERATION. 
*         (T3) = POINTER TO FIRST TRACK OF BEST FIT SO FAR. 
*         (T4) = FIRST TRACK OF BEST FIT SO FAR.
*         (T5) = LENGTH OF BEST FIT SO FAR. 
*         (T6) = BYTE INDEX.
*         (T7) = LENGTH OF TRACK CHAIN REQUESTED. 
*         (CM) = POINTER TO FIRST TRACK OF LONGEST CHAIN SO FAR.
*         (CM+1) = FIRST TRACK OF LONGEST CHAIN SO FAR. 
*         (CM+2) = LENGTH OF LONGEST CHAIN SO FAR.
  
          LDN    ZERL 
          CRD    T0 
          LDN    0
          STD    CM 
          STD    CM+1 
          STD    CM+2 
          LDD    NC          CLEAR MESSAGE AT SYSTEM CONTROL POINT
          SHN    7
          ADN    MS2W 
          CWD    CM 
          LCN    0           PRESET AMOUNT OF SLOP IN BEST FIT
          STD    T5 
          LDD    CM+4        SET FIRST TRACK
          LJM    ACE9 
  
*         SCAN TRT FOR CONTIGUOUS TRACKS. 
  
 ACE4     AOD    T2          INCREMENT LENGTH OF THIS CHAIN 
          LDD    CM+3        SET BYTE INDEX 
          LPN    3
          STD    T6 
          NJN    ACE6        IF NOT POINTER TO NEW WORD 
 ACE5     LDD    CM+3        READ NEW TRT WORD
          SHN    -2 
 ACEA     ADC    TRTS 
          CRD    CN 
 ACE6     AOD    CM+3 
          LMM    CN,T6
          ZJN    ACE4        IF CONTIGUOUS TRACK
          LDD    T2          CHECK FOR LONGEST CHAIN
          SBD    CM+2 
          MJN    ACE7        IF OLD TRACK CHAIN LONGER
          RAD    CM+2        SET NEW LENGTH 
          LDD    T0          SET POINTER TO FIRST TRACK 
          STD    CM 
          LDD    T1          SET FIRST TRACK
          STD    CM+1 
 ACE7     LDD    T2          CHECK IF THIS CHAIN LONG ENOUGH
          SBD    T7 
          MJN    ACE8        IF NOT LONG ENOUGH 
          SBD    T5          COMPARE AMOUNT OF SLOP 
          PJN    ACE8        IF OLD CHAIN HAS LESS SLOP 
          RAD    T5          SET NEW AMOUNT OF SLOP 
          LDD    T0          SET POINTER TO FIRST TRACK 
          STD    T3 
          LDD    T1          SET FIRST TRACK
          STD    T4 
 ACE8     SOD    CM+3        SET POINTER TO FIRST TRACK OF NEXT CHAIN 
          STD    T0 
          LDM    CN,T6       CHECK FOR EOI
 ACE9     SHN    6
          PJN    ACE10       IF EOI 
          SHN    -6 
          STD    CM+3        SET FIRST TRACK OF NEXT CHAIN TO CHECK 
          STD    T1 
          LPN    3           SET BYTE INDEX 
          STD    T6 
          LDN    1
          STD    T2 
          LJM    ACE5 
  
*         COMPLETE PROCESSING.
  
 ACE10    LDD    T7          ADJUST TRACK CHAIN LENGTH
          RAD    T5 
          LDD    T4          CHECK IF LARGE ENOUGH CHAIN FOUND
          NJN    ACE11       IF CHAIN FOUND 
          LDD    FS+4 
          UJN    ACE14       DROP SHORT TRACK TRAIN 
  
*         DROP UNUSED TRACKS. 
  
 ACE11    LMD    CM+4 
          ZJN    ACE12       IF ONLY NEED TO DROP TRACKS OFF END
          LDD    FS          SET EXTENDED MEMORY EQ NUMBER
          STD    CM+1 
          LDD    FS+4        SET TRACK TO LINK TO 
          LPC    3777 
          STD    CM+2 
          LDD    T4          SET FIRST TRACK OF CONTIGUOUS CHAIN
          STD    CM+3 
          LDD    T3          SET LAST TRACK TO DROP 
          STD    CM+4 
          MONITOR DLKM
 ACE12    LDD    T7          CHECK IF ALL REQUEST SPACE FOUND 
          SBD    T5 
          PJN    ACE13       DROP UNNEEDED TRACKS 
          RAD    T5 
 ACE13    LDD    T4          COMPUTE LAST TRACK NEEDED IN CHAIN 
          ADD    T5 
          SBN    1
 ACE14    LPC    3777 
          STD    CM+2 
          LDD    FS          SET EXTENDED MEMORY EQ NUMBER
          LMC    4000 
          STD    CM+1 
          LDN    0           SET SECTOR NUMBER
          STD    CM+3 
          MONITOR DTKM       DROP TRACKS
  
*         COMPUTE RA AND LAST TRACK OF USER EXTENDED MEMORY AREA. 
  
          LDD    T4          SET FIRST TRACK
          NJN    ACE15       IF USER EXTENDED MEMORY SPACE FOUND
          LJM    ISS2        REPORT ERROR 
  
 ACE15    STD    FS+1 
          LPC    3777        COMPUTE USER EXTENDED MEMORY RA
          STD    T6 
          SHN    6           *100 
          ADD    T6          *101 
          SHN    1           *202 
          ADN    77          ROUND TO NEAREST *EMBS* WORDS
          SHN    -6 
          STD    FS+3        SET USER EXTENDED MEMORY RA
          LDN    17          ROUND TO NEAREST *UEBS* WORDS
 ACEC     SHN    -4 
*         SHN    -4+UESC-EMSC 
          RAD    FS+3 
          LDD    T5          COMPUTE USER EXTENDED MEMORY FL
          RAD    T6 
          STD    FS+4        SET LAST TRACK 
          SHN    6           *100 
          ADD    T6          *101 
          SHN    -5          *202/100 
          SBD    FS+3        SUBTRACT EXTENDED MEMORY RA
          SBD    FS+2 
          PJN    ACE16       IF SUFFICIENT SPACE
          LJM    ECS6        REPORT ERROR 
  
 ACE16    LDC    3777        POINT TO LAST TRACK
          RAD    FS+4 
          LJM    ACEX        RETURN 
 CAD      SPACE  4,10 
**        CAD - CLEAR ALLOCATION DATA.
* 
*         ENTRY  (T9) = ID OF MACHINE TO BE CLEARED.
* 
*         USES   T1.
  
  
 CAD2     STI    T1          CLEAR ENTRY
  
 CAD      SUBR               ENTRY/EXIT 
          LDC    TAXM 
          STD    T1 
 CAD1     LDI    T1 
          LMD    T9 
          ZJN    CAD2        IF MATCH FOUND 
          LDN    5
          RAD    T1 
          LMC    TAXML
          NJN    CAD1        LOOP 
          UJN    CADX        RETURN 
 CAT      SPACE  4,10 
**        CAT - CALCULATE ADDRESS OF TRT. 
* 
*         ENTRY  (CATA) = EXTENDED MEMORY MST ADDRESS / 10. 
* 
*         EXIT   (A) = FWA OF TRT - 1000. 
* 
*         USES   T0 - T4. 
  
  
 CAT      SUBR               ENTRY/EXIT 
          LDC    **          READ TRT ADDRESS FROM EXTENDED MEMORY MST
 CATA     EQU    *-1         (ECS MST ADDRESS)
          SHN    3
          ADN    TRLL 
          CRD    T0 
          LDD    T0+3 
          LPN    77 
          SHN    14 
          LMD    T0+4 
          SBD    TH          4000/4 
          UJN    CATX        RETURN 
 CDI      SPACE  4,10 
**        CDI - CLEAR DEVICE INTERLOCK ON ECS.
* 
*         ENTRY  (FS) = EXTENDED MEMORY EST ORDINAL.
* 
*         EXIT   (DIFL) = 0.
* 
*         USES   CM - CM+4. 
  
  
 CDI      SUBR               ENTRY/EXIT 
          LDM    DIFL 
          ZJN    CDIX        IF INTERLOCK NOT SET 
          LDD    FS          SET EQUIPMENT
          STD    CM+1 
          LDN    CDIS        SET FUNCTION 
          STD    CM+3 
          LDN    0
          STD    CM+2 
          STD    CM+4 
          MONITOR STBM
*         LDN    0           CLEAR INTERLOCK FLAG 
          STM    DIFL 
          UJN    CDIX        RETURN 
 CTE      SPACE  4,10 
**        CTE - CREATE MEMORY CONTROL TABLE ENTRY.
* 
*         ENTRY  (KA) = CP/PCP NUMBER.
*                (CN) = RAX BACKWARD LINK.
*                (CN+1) = RAX FORWARD LINK. 
* 
*         USES   AB - AB+4, CM - CM+4.
* 
*         CALLS  SCA. 
  
  
 CTE      SUBR               ENTRY/EXIT 
          LDD    KA 
          RJM    SCA         SET CURRENT CPA/PCPA ADDRESS 
          ADN    ECSW 
          CRD    CM          READ MEMORY CONTROL WORD 
          LDD    CM+4 
          RAD    CM+3        FORM RAX + FLX 
          SHN    -14
          RAD    CM+2        NEXT POTENTIAL RAX 
          LDD    CN+1 
          ZJN    CTE1        IF SYSTEM CP 
          LMD    NC 
          NJN    CTE2        IF NOT LINKED TO SYSTEM CP 
 CTE1     STD    CM+2 
          UJN    CTE3        SET NO UNASSIGNED MEMORY 
  
 CTE2     LDD    CN+1        GET FORWARD LINKED CP/PCP ADDRESS
          RJM    SCA
          ADN    ECSW        READ FL CONTROL WORD 
          CRD    AB 
          LDD    AB+2        RAX OF FORWARD LINK
          SHN    14 
          LMD    AB+3 
          SBD    CM+3        SUBTRACT CURRENT RAX + FLX 
 CTE3     STD    CN+4 
          SHN    -14
          SBD    CM+2        SET UNASSIGNED MEMORY
          STD    CN+3 
          LDD    KA          FORM CONTROL TABLE ADDRESS 
          SHN    1
          ADC    1           STORE MCT WORD 
 CTEA     EQU    *-1
          CWD    CN 
          UJP    CTEX        RETURN 
 FAD      SPACE  4,10 
**        FAD - FETCH ALLOCATION DATA.
* 
*         EXIT   (A) = ((T1)) = MACHINE ID,IF ONE FOUND.
*                    = 0 IF NO ENTRIES IN ALLOCATION DATA.
* 
*         USES   T1.
  
  
 FAD      SUBR               ENTRY/EXIT 
          LDC    TAXM 
          STD    T1 
 FAD1     LDI    T1 
          NJN    FADX        IF ENTRY FOUND 
          LDN    5
          RAD    T1 
          LMC    TAXML
          ZJN    FADX        IF END OF SEARCH 
          UJN    FAD1        LOOP 
 FSS      SPACE  4,10 
**        FSS - FETCH SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN. 
* 
*         ENTRY  (ECSE) = MST GLOBAL WORDS. 
*                (FS) = EXTENDED MEMORY EST ORDINAL.
* 
*         EXIT   (BFMS) = SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN. 
* 
*         USES   T5, T6.
* 
*         CALLS  CDI, RSS.
  
  
 FSS1     ENDMS 
  
 FSS      SUBR               ENTRY/EXIT 
          LDD    FS          SET EST ORDINAL
          STD    T5 
          LDM    ECSE+ACGL*5+1  SET FIRST TRACK 
          STD    T6 
          SETMS  IO 
          LDC    ECSF        READ SYSTEM SECTOR 
          RJM    RSS
          ZJN    FSS1        IF NO ERROR IN SYSTEM SECTOR 
          RJM    CDI         CLEAR DEVICE INTERLOCK 
          LDC    =C*USER EXTENDED MEMORY SYSTEM SECTOR ERROR.*
          UJN    HNG         ISSUE ERROR AND HANG 
 FTM      SPACE  4,10 
**        FTM - FIND THIS MACHINES ID IN THE SYSTEM SECTOR. 
* 
*         ENTRY  (T9) = MACHINE ID TO BE FOUND. 
*                (BFMS) = SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN. 
* 
*         EXIT   (T8) = POINTER TO THIS MACHINES ID OR POINTER TO THE 
*                       FIRST EMPTY SUB-CHAIN ENTRY.
*                IF NO MATCH AND NO EMPTY ENTRY THEN EXIT TO *ECS6* 
*                TO REPORT ERROR CONDITION. 
* 
*         USES   T1, T8.
  
  
 FTM3     LDD    T1 
          NJN    FTM4        IF EMPTY ENTRY FOUND 
          LJM    ECS6        REPORT ERROR 
  
 FTM4     STD    T8          SET POINTER TO EMPTY SUB-CHAIN 
  
 FTM      SUBR               ENTRY/EXIT 
          LDC    BFMS+2+3*5  INITIALIZE POINTERS
          STD    T8 
          LDN    0
          STD    T1 
 FTM1     LDN    5           INCREMENT POINTER
          RAD    T8 
          LMC    BFMS+2+10*5
          ZJN    FTM3        IF END OF SUB-CHAIN ENTRIES
          LDI    T8 
          NJN    FTM2        IF NOT AN EMPTY ENTRY
          LDD    T1 
          NJN    FTM1        IF FIRST EMPTY ENTRY ALREADY FOUND 
          LDD    T8          SET POINTER TO EMPTY ENTRY 
          STD    T1 
          UJN    FTM1        LOOP 
  
 FTM2     LMD    T9 
          ZJN    FTMX        IF MATCH FOUND 
          UJN    FTM1        LOOP 
 HNG      SPACE  4,10 
**        HNG - ISSUE MESSAGE AND HANG. 
* 
*         ENTRY  (A) = ERROR MESSAGE ADDRESS. 
  
  
 HNG      STM    HNGA        SAVE MESSAGE ADDRESS 
          LDN    4
          STD    T1 
          LDD    NC          WRITE MESSAGE TO SYSTEM CONTROL POINT
          SHN    7
          ADN    MS2W 
          CWM    **,T1
 HNGA     EQU    *-1
          UJN    *           HANG 
 ISS      SPACE  4,10 
**        ISS - INITIALIZE SYSTEM SECTOR FOR USER EXTENDED MEMORY AREA. 
* 
*         ENTRY  (FS) = EXTENDED MEMORY EST ORDINAL.
*                (CATA) = EXTENDED MEMORY MST ADDRESS / 10. 
*                (ECSE) = GLOBAL MST WORDS. 
* 
*         EXIT   UPDATED GLOBAL MST STORED IN CENTRAL MEMORY. 
*                SYSTEM SECTOR INITIALIZED. 
* 
*         USES   CM - CM+4, FA, T1, T2, T5, T6. 
* 
*         CALLS  CDI, DCH, RCH, SDI, SMS, WEI, WSS. 
  
  
 ISS      SUBR               ENTRY/EXIT 
          LDC    500         INITIALIZE TO CLEAR SYSTEM SECTOR
          STD    T1 
 ISS1     LDN    0           CLEAR SYSTEM SECTOR
          STM    BFMS+2,T1
          SOD    T1 
          NJN    ISS1        IF NOT TIME TO MOVE FNT ENTRY
          STD    FA 
          LDD    MA          SET FNT ENTRY IN SYSTEM SECTOR 
          CWM    ECSF,ON
          SBN    1
          CRM    FNSS,ON
          RJM    CDI         CLEAR INTERLOCK ON ECS 
          LDN    ZERL        REQUEST FIRST TRACK OF USER ECS CHAIN
          CRD    CM 
          LDD    FS 
          STD    CM+1 
          STD    T5 
          MONITOR RTCM
          LDD    CM+4 
          NJN    ISS3        IF TRACK ASSIGNED
 ISS2     LDC    =C*USER EXTENDED MEMORY SPACE UNAVAILABLE.*
          LJM    HNG         ISSUE ERROR AND HANG 
  
 ISS3     STD    T6 
          RJM    SDI         INTERLOCK ECS
          LDD    T6 
          STM    ECSE+ACGL*5+1  SET FIRST TRACK IN GLOBAL DATA
          LDM    CATA        SET FIRST TRACK IN MST 
          SHN    3
          ADN    ACGL 
          CWM    ECSE+ACGL*5,ON 
          RJM    CDI         CLEAR INTERLOCK ON ECS 
          SETMS  IO 
          RJM    WSS         WRITE SYSTEM SECTOR
          RJM    WEI         WRITE EOI
          ENDMS 
          LDD    T6          PRESERVE USER EXTENDED MEMORY AREA 
          STD    CM+2 
          LDN    SPFS 
          STD    CM+3 
          LDD    FS          SET EXTENDED MEMORY EQUIPMENT
          ADC    4000        SET CHECKPOINT REQUEST 
          STD    CM+1 
          MONITOR STBM
          LJM    ISSX        RETURN 
 RLS      SPACE  4,10 
**        RLS - RELEASE EXISTING USER EXTENDED MEMORY SUB-CHAIN.
* 
*         ENTRY  (BFMS) = SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN. 
*                (ECSE) = GLOBAL MST WORDS. 
*                (FS) = EXTENDED MEMORY EST ORDINAL.
*                (T8) = POINTER TO SUB-CHAIN ENTRY TO BE RELEASED.
* 
*         EXIT   (A) = (FS+1) = (FS+3) = (FS+4) = 0.
*                TO *ECS6* IF UNABLE TO LOCATE PREDECESSOR TRACK FOR
*                SUB-CHAIN TO BE RELEASED.
* 
*         USES   CM - CM+4, T1, T3. 
* 
*         CALLS  CAT. 
  
  
 RLS      SUBR               ENTRY/EXIT 
          RJM    CAT         CALCULATE FWA OF TRT 
          STM    RLSA+1 
          STM    RLSB+1 
          SHN    -14
          LMC    ADCI 
          STM    RLSA 
          STM    RLSB 
          LDC    BFMS+2+3*5+4  INITIALIZE FOR SEARCH
          STD    T3 
          LDM    ECSE+ACGL*5+1
          STI    T3 
  
*         LOCATE PREDECESSOR TRACK OF SUB-CHAIN TO BE RELEASED. 
  
 RLS1     LDI    T3          READ TRT WORD CONTAINING THIS TRACK
          SHN    -2 
 RLSA     ADC    TRTS 
          CRD    CM 
          LDI    T3          SET BYTE INDEX 
          LPN    3
          STD    T1 
          LDM    CM,T1       CHECK LINK 
          LMM    1,T8 
          ZJN    RLS2        IF PREDECESSOR TRACK FOUND 
          LDN    5
          RAD    T3 
          LMC    BFMS+2+10*5+4
          NJN    RLS1        IF MORE ENTRIES TO SEARCH
          LJM    ECS6        REPORT ERROR 
  
*         LOCATE SUCCESSOR TRACK TO SUB-CHAIN TO BE RELEASED. 
  
 RLS2     LDM    4,T8        FIND TRACK TO LINK TO
          SHN    -2 
 RLSB     ADC    TRTS 
          CRD    CM 
          LDM    4,T8 
          LPN    3
          STD    T1 
          LDM    CM,T1
          SHN    21-13
          PJN    RLS3        IF LAST TRACK IN CHAIN 
  
*         DELINK SUB-CHAIN. 
  
          SHN    -6          SET TRACK TO BE LINKED 
          STD    CM+3 
          LDI    T3          SET TRACK TO LINK TO 
          LPC    3777 
          STD    CM+2 
          LDM    4,T8        SET LAST TRACK TO DROP 
          STD    CM+4 
          LDD    FS          SET EST ORDINAL
          ADC    4000        SET CHECKPOINT REQUEST 
          STD    CM+1 
          MONITOR DLKM
          UJN    RLS4        COMPLETE PROCESSING
  
*         DROP LAST SUB-CHAIN.
  
 RLS3     LDI    T3          GET PREDECESSOR TRACK
          LPC    3777        SET TO DROP AFTER THIS TRACK 
          STD    CM+2 
          LDN    0
          STD    CM+3 
          STD    CM+4 
          LDD    FS          SET EST ORDINAL
          ADC    4000        SET CHECKPOINT REQUEST 
          STD    CM+1 
          MONITOR DTKM
  
*         COMPLETE RELEASE SUB-CHAIN PROCESSING.
  
 RLS4     LDN    0           CLEAR TRACK POINTERS 
          STD    FS+1 
          STD    FS+4 
          STD    FS+3        CLEAR RA OF RELEASED SUB-CHAIN 
          LJM    RLSX        RETURN 
 SCP      SPACE  4,10 
**        SCP - SETUP CONTROL POINT AREAS.
* 
*         ENTRY  (FS+2) = LENGTH OF USER EXTENDED MEMORY AREA / *EMBS*. 
*                (FS+3) = RA/*EMBS* OF USER EXTENDED MEMORY AREA. 
*                (NC) = NUMBER OF CONTROL POINTS. 
*                (NS) = NUMBER OF CP-S + PCP-S. 
* 
*         EXIT   *ECRL* SETUP IN CMR, ALL CONTROL POINT AREAS SETUP.
* 
*         USES   T1, T2, T7, CM - CM+4, FS+1 - FS+4.
* 
*         CALLS  SMT. 
  
  
 SCP      SUBR               ENTRY/EXIT 
          LDD    FS+2 
          STD    FS+1 
          LDN    ECRL        COMPLETE BUILD OF *ECRL* 
          CRD    CM 
          LDN    0           CLEAR EXTENDED MEMORY EQUIPMENT
          STD    CM 
          LDD    FS+3        SET USER EXTENDED MEMORY RA
 SCPA     SHN    0
*         SHN    EMSC-UESC
          STD    FS+3 
          STD    CM+3 
          SHN    -14
          STD    FS+2 
          STD    CM+2 
          LDN    ECRL 
          CWD    CM 
          LDD    FS+1 
          ZJN    SCPX        IF NO USER ECS IN ECS EQUIPMENT
          LDD    CM+4 
          STD    FS+4        SAVE USER XM RESERVED FOR CP 0 
          LDN    ZERL 
          CRD    CM 
          LDN    CPNS        SETUP CONTROL POINT AREAS
          STD    T7 
          LDD    FS+2 
          SHN    14 
          ADD    FS+3        SET XM RA IN CONTROL POINT WORK AREA 
          ADD    FS+4 
 SCP2     STD    CM+3 
          SHN    -14
          STD    CM+2 
 SCP3     LDD    T7          FORM CONTROL POINT ADDRESS 
          SHN    7
          ADN    ECSW        SET ECS RA IN CONTROL POINT AREA 
          CWD    CM 
          AOD    T7 
          SBD    NC 
          ZJN    SCP4        IF SYSTEM CP 
          ADD    NC 
          LMN    2
          NJN    SCP3        IF NOT SECOND CP 
          LDD    FS+1 
 SCPB     SHN    0
*         SHN    EMSC-UESC
          ADD    FS+3        ALLOCATE XM FL BETWEEN 1ST AND 2ND CP-S
          SHN    6
          LMD    FS+2 
          SHN    14 
          UJN    SCP2        SETUP SECOND CP AREA 
  
 SCP4     LDD    FS+2        SETUP *ECSW* FOR SYSTEM CONTROL POINT
          STD    CM+2 
          LDD    FS+3 
          STD    CM+3 
          LDD    FS+1 
 SCPC     SHN    0
*         SHN    EMSC-UESC
          STD    CM+4 
          LDD    NC 
          SHN    7
          ADN    ECSW 
          CWD    CM 
          LDD    NS          SET NUMBER OF PSEUDO CONTROL POINTS
          SBD    NC 
          ZJN    SCP6        IF NO PCP-S
          STD    T2 
  
*         SET UP PSEUDO CONTROL POINT AREAS.
  
          LDD    NC          INITIALIZE PCP NUMBER
          STD    T1 
          SBN    CPLK        CP LINK TO PCP-S 
          SHN    7
          ADN    ECSW        GET FLX CONTROL WORD 
          CRD    CM 
 SCP5     AOD    T1          ADVANCE AND SET PCPA ADDRESS 
          RJM    SCA
          ADN    ECSW        STORE FLX CONTROL WORD 
          CWD    CM 
          SOD    T2 
          NJN    SCP5        IF MORE PCP-S
 SCP6     RJM    SMT
          LDN    ACML 
          CRD    CM 
          LDD    FS+1        SET UNASSIGNED USER XM 
 SCPF     SHN    0
*         SHN    EMSC-UESC
          SBD    FS+4        ADJUST FOR USER XM RESERVED FOR CP 0 
          STD    CM+3 
          LDN    ACML        STORE AVAILABLE USER XM
          CWD    CM 
          LDD    FS+4 
          NJN    SCP8        IF USER XM FOR CP 0
 SCP7     LJM    SCPX        RETURN 
  
 SCP8     SHN    11          CONVERT TO WORD COUNT
 SCPD     SHN    0
*         SHN    EMSC-UESC
          STD    T2 
          SHN    -14
          STD    T1 
          LDN    ZERL        CLEAR THE MESSAGE BUFFER 
          CRD    CM 
          LDD    MA 
          CWM    CM,ON
          CWM    CM,ON
          CWM    CM,ON
          CWM    CM,ON
 SCP9     LDD    T1          CLEAR XM BUFFER
          SHN    14 
          LMD    T2 
          SBN    4
          MJN    SCP7        IF END OF BUFFER 
          STD    CM+4 
          STD    T2 
          SHN    -14
          STD    T1 
          LMC    WRES*1000   MERGE SUBFUNCTION
          STD    CM+3 
          LDD    MA          SET CM ADDRESS 
          STD    CM+2 
          LDC    300         SET WORD COUNT-1 
          STD    CM+1 
          MONITOR  ECSM 
          LDD    CM+1 
          ZJN    SCP9        IF NO ERROR
          LDC    SCPE 
          RJM    ERR         DISPLAY MESSAGE AND HANG 
  
  
 SCPE     DATA   C+*ECSM* ERROR CLEARING USER XM.+
 SDI      SPACE  4,10 
**        SDI - SET DEVICE INTERLOCK ON ECS.
* 
*         ENTRY  (FS) = EXTENDED MEMORY EST ORDINAL.
* 
*         EXIT   (ECSE) = MST GLOBAL WORDS. 
*                (CATA) = EXTENDED MEMORY MST ADDRESS / 10. 
*                (DIFL) = 1.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR, SFA.
  
  
 SDI1     SFA    EST,FS 
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4        READ MST GLOBAL WORDS
          STM    CATA 
          SHN    3
          ADK    TDGL 
          CRM    ECSE,TR
  
 SDI      SUBR               ENTRY/EXIT 
          LDC    0
 DIFL     EQU    *-1         DEVICE INTERLOCKED FLAG (CLEARED BY *CDI*) 
          NJN    SDI1        IF DEVICE INTERLOCKED
          STD    CM+2 
          STD    CM+4 
          LDD    FS          SET EQUIPMENT
          STD    CM+1 
          LDN    SDIS        SET FUNCTION 
          STD    CM+3 
          MONITOR STBM
          AOM    DIFL        SET INTERLOCKED FLAG 
          UJN    SDI1        READ MST GLOBAL WORDS
 SMT      SPACE  4,10 
**        SMT - SETUP MEMORY CONTROL TABLE. 
* 
*         ENTRY  (NC) = SYSTEM CP NUMBER. 
*                (NS) = NUMBER OF CP-S + PCP-S. 
* 
*         USES   T5, KA, KB, CN - CN+4. 
* 
*         CALLS  CTE. 
  
  
 SMT      SUBR               ENTRY/EXIT 
          LDN    0
          STD    KA          INITIALIZE CP NUMBER 
          CRD    CN 
          LDD    NS          SET MCT ENTRY COUNT
          ADN    1
          STD    KB          INCLUDE CP-0 
          STD    T5 
 SMT1     LDD    KA 
          STD    CN          SET BACKWARD LINK
          LDD    CN+1 
          STD    KA          CURRENT = PREVIOUS FORWARD LINK
          LMD    NC 
          ZJN    SMT3        IF CREATING ENTRY FOR SYSTEM CP
          AOD    CN+1 
          ADN    CPLK        CHECK NEW FORWARD LINK 
          SBD    NC 
          NJN    SMT2        IF NOT CP TO LINK TO PCP-S 
          LDD    NC 
          ADN    1           SET FIRST PCP NUMBER 
          STD    CN+1 
 SMT2     LDD    CN+1        CHECK NEW FORWARD LINK 
          LMD    T5 
          NJN    SMT4        IF NOT LINKING OUT OF PCP-S
          LDD    NC 
          SBN    CPLK        SET FORWARD LINK TO REAL CP
 SMT3     STD    CN+1 
 SMT4     RJM    CTE         CREATE TABLE ENTRY FOR XM
          SOD    KB 
          NJN    SMT1        IF NOT END OF TABLE
          UJP    SMTX        RETURN 
 SSS      SPACE  4,10 
**        SSS - STORE SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN. 
* 
*         ENTRY  (ECSE) = MST GLOBAL WORDS. 
*                (FS) = EXTENDED MEMORY EST ORDINAL.
*                (FS+1) = FIRST TRACK OF SUB-CHAIN. 
*                (FS+2) = LENGTH OF USER EXTENDED MEMORY AREA.
*                (FS+3) = RA OF USER EXTENDED MEMORY AREA.
*                (FS+4) = LAST TRACK OF SUB-CHAIN.
*                (T8) = POINTER TO SUB-CHAIN DESCRIPTOR ENTRY.
*                (T9) = MMF MACHINE ID FOR CHAIN. 
*                     = 0 IF SUB-CHAIN ENTRY TO BE CLEARED. 
* 
*         EXIT   SYSTEM SECTOR UPDATED WITH NEW INFORMATION.
* 
*         USES   FA, T5, T6.
* 
*         CALLS  WSS. 
* 
*         MACROS ENDMS, SETMS.
  
  
 SSS      SUBR               ENTRY/EXIT 
          LDD    FS          SET EST ORDINAL
          STD    T5 
          LDM    ECSE+ACGL*5+1  SET FIRST TRACK 
          STD    T6 
          LDD    T9          SET MMF ID 
          NJN    SSS1        IF NOT CLEARING ENTRY
          LDD    T8 
          STM    SSSA 
          LDN    ZERL 
          CRM    **,ON
 SSSA     EQU    *-1
          UJN    SSS2        WRITE SECTOR 
  
 SSS1     STI    T8 
          LDD    FS+1        SET FIRST TRACK OF USER ECS AREA 
          STM    1,T8 
          LDD    FS+2        SET LENGTH OF USER EXTENDED MEMORY AREA
          STM    2,T8 
          LDD    FS+3        SET RA OF USER EXTENDED MEMORY AREA
          STM    3,T8 
          LDD    FS+4        SET LAST TRACK OF USER ECS 
          STM    4,T8 
 SSS2     SETMS  IO,DF
          LDN    0           SET FNT DATA PRESTORED 
          STD    FA 
          RJM    WSS         WRITE SYSTEM SECTOR
          ENDMS 
          LJM    SSSX        RETURN 
  
          SPACE  4,10 
          OVERFLOW  ECSX,BFMS 
 PRS      SPACE  4,10 
**        PRS - PRESET PROGRAM. 
* 
*         ENTRY  (FS) = BYTE 0 OF *ECRL* = EM EST ORDINAL FROM *SET*. 
*                (FS+1) = USER XM SIZE / *UEBS*.
*                (FS+2 - FS+3) = USER XM RA / *UEBS*. 
*                (RS) = RECOVERY STATUS.
*                TAXM = EM ALLOCATION TABLE GENERATED BY *SET*. 
* 
*         EXIT   (FS+2) = USER XM SIZE / *EMBS*.
*                (FS+3) = USER XM RA / *EMBS*.
*                (T9) = MACHINE ID. 
* 
*         USES   CM - CM+4, CN - CN+4, T5 - T7. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDN    MEFL 
          CRD    T5          GET XM SHIFT COUNTS
          ADN    MMFL-MEFL
          CRD    CN          FETCH MMF STATUS 
          ADN    MCTP-MMFL
          CRD    CM          READ MCT POINTER 
          LDD    CM+1 
          RAM    CTEA 
          SHN    -14         SET MCT ADDRESS
          ADD    CM 
          RAM    CTEA-1 
          LDD    T7          EXTRACT USER XM SHIFT COUNT *UESC* 
          SHN    -11
          STD    T9 
          LDD    T7          EXTRACT XM SHIFT COUNT *EMSC*
          SHN    -5 
          LPN    3
          STD    T0 
          SBD    T9 
          LPN    77          PRESET SHIFT INSTRUCTIONS
          RAM    SCPA 
          STM    SCPB 
          STM    SCPC 
          STM    SCPD 
          STM    SCPF 
          LMN    77 
          STM    PRSA 
          STM    PRSB 
          LDD    T9 
          SBD    T0 
          RAM    ACEB 
          STM    ACEC 
          LDD    FS+2        ADJUST USER XM RA
          SHN    14 
          ADD    FS+3 
 PRSA     SHN    0
*         SHN    UESC-EMSC
          STD    FS+3 
          LDD    FS+1        ADJUST USER XM FL VALUE
 PRSB     SHN    0
*         SHN    UESC-EMSC
          STD    FS+2 
          LDD    CN+1        CHECK ALLOCATING ON LINK DEVICE
          LPC    777
          STM    ECSB 
          LDD    CN          SAVE MACHINE ID
          STD    T9 
          UJP    PRSX        RETURN 
  
          QUAL
          TTL    REC/4RC - RECOVER CHANNEL/EQUIPMENT STATUS.
          TITLE 
          QUAL   RCE
          IDENT  4RC,RCEX 
*COMMENT  REC - RECOVER CHANNEL/EQUIPMENT STATUS. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       RCE - RECOVER CHANNEL/EQUIPMENT STATUS. 
* 
*                RCE WILL READ THE CHANNEL INTERLOCK TABLES AND THE 
*         EQUIPMENT STATUS TABLE (EST) FROM THE CHECKPOINT FILE.
*         THE FOLLOWING ITEMS MUST BE RESTORED TO THE STATUS THAT 
*         EXISTED BEFORE THE RECOVERY.
*         1. CHANNELS THAT ARE GLOBALLY DOWN. 
*         2. CHANNELS THAT ARE DOWN FOR A SPECIFIC EQUIPMENT, BUT 
*            ARE NOT GLOBALLY DOWN. 
*         3. CHANNELS THAT ARE ASSIGNED TO EJT ORDINALS.
*         4. EQUIPMENTS THAT ARE DOWN.  THE DATA TO BE RESTORED 
*            INCLUDES THE DOWN, UNAVAILABLE AND OFF BITS IN THE 
*            EST, AND GLOBAL DOWN, GLOBAL UNLOAD, UNLOAD
*            REQUESTED AND UNLOADED BITS IN THE MST.
 RCE      SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
*         (SE) = EST ORDINAL OF CHECKPOINT FILE.
*         (RECE) = FIRST TRACK OF CHECKPOINT FILE.
          SPACE  4,10 
          ORG    OVLA 
          SPACE  4,10 
**        RCE - MAIN ROUTINE. 
  
  
 RCE      SUBR               ENTRY/EXIT 
          LDD    RS 
          LPN    SYMK        CHECK RECOVERY LEVEL 
          LMN    SYCM 
          ZJN    RCE1        IF CM RECOVERY 
          LDD    CE 
          STD    T5          CHECKPOINT DEVICE EST ORDINAL
          SETMS  IO 
          LDM    RECE        SET FIRST TRACK OF CHECKPOINT FILE 
          STD    T6 
          LDN    3           SET SECTOR OF EST
          STD    T7 
          RJM    PET         PROCESS EST
          RJM    PCH         PROCESS CHANNEL TABLES 
 RCE1     RJM    RSE         RELEASE SYSTEM ASSIGNED EQUIPMENT
          UJP    RCEX        RETURN 
          TITLE  SUBROUTINES. 
 CDS      SPACE  4,10 
**        CDS - CHECK DEVICE STATUS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (CA) = BUFFER ADDRESS OF EST ENTRY.
* 
*         MACROS SMSTF. 
  
  
 CDS1     LDI    CA          CHECK PREVIOUS RECOVERY STATUS 
          SHN    21-6 
          PJN    CDSX        IF DEVICE AVAILABLE
 CDS2     SMSTF  LUNL        SET UNLOAD REQUESTED 
          SMSTF  LDUL        SET DEVICE UNLOADED
  
 CDS      SUBR               ENTRY/EXIT 
          LDI    CA 
          SHN    21-13
          PJN    CDSX        IF NOT MS DEVICE 
          SHN    14 
          LPN    3           CHECK DEVICE STATE 
          LMN    3
          NJN    CDS1        IF NOT DOWN
          SMSTF  GUNL        SET GLOBAL UNLOAD
          UJN    CDS2        SET LOCAL MST STATUS 
 DDC      SPACE  4,10 
**        DDC - DETERMINE DOWN CHANNELS.
* 
*         ENTRY  (CA) = ADDRESS OF EST ENTRY IN BUFFER. 
* 
*         EXIT   ANY CHANNEL MARKED AS DOWN ON THE CHECKPOINT FILE
*         WILL BE SET DOWN IN THE CM COPY OF THE EST ENTRY. 
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         CALLS  ISF. 
* 
*         MACROS MONITOR. 
  
  
 DDC4     AOD    T1          ADVANCE CHANNEL BYTE ADDRESS 
          LMD    T2 
          NJN    DDC1        IF ANOTHER CHANNEL TO CHECK
  
 DDC      SUBR               ENTRY/EXIT 
          LDD    CA 
          ADN    1           SET CHANNEL BYTE ADDRESS 
          STD    T1 
          ADN    2           SET END OF PATH DESCRIPTORS
          STD    T2 
 DDC1     LDI    T1 
          ZJN    DDC4        IF ACCESS UNDEFINED
          SHN    0-11 
          LMN    4
 DDC2     ZJN    DDC4        IF CHANNEL PRESENT AND UP
          LPN    3
          ZJN    DDC3        IF CHANNEL AVAILABLE 
          LDN    DNCS 
          RJM    ISF         DOWN THE CHANNEL 
 DDC3     LDI    T1 
          SHN    0-13 
          NJN    DDC4        IF CHANNEL PRESENT 
          LDN    DAPS 
          STD    CM+3 
          LDD    EO          SET EST ORDINAL
          STD    CM+1 
          LDI    T1 
          LPN    77 
          STD    CM+2 
          MONITOR  SCSM      DISABLE ACCESS PATH
*         LDN    0
          UJP    DDC4        CHECK FOR ALTERNATE ACCESS 
 IEQ      SPACE  4,10 
**        IEQ - IDENTIFY EQUIPMENT. 
* 
*         ENTRY  (CA) = BUFFER ADDRESS OF EST ENTRY.
*                (T5) = EST ORDINAL.
*                (CN - CN+4) = EST ENTRY FROM CMR.
* 
*         MACROS SFA. 
  
  
 IEQ      SUBR               ENTRY/EXIT 
          LDD    CA 
          ADN    EQAE*5 
          STM    IEQA 
          SFA    EST,T5      REWRITE *EQAE* WORD OF EST ENTRY 
          ADK    EQAE 
          CWM    **,ON
 IEQA     EQU    *-1
          LDI    CA 
          SHN    21-13
          MJN    IEQX        IF MS DEVICE 
          LDM    3,CA 
          STD    CN+3 
          SFA    EST,T5      PRESERVE DEVICE MNEMONIC 
          ADK    EQDE 
          CWD    CN 
          UJP    IEQX        RETURN 
 ISF      SPACE  4,10 
**        ISF - ISSUE *SEQM* FUNCTION.
* 
*         ENTRY  (A) = *SEQM* SUBFUNCTION.
*                (T1) = CHANNEL DESCRIPTOR ADDRESS. 
*                (EO) = EST ORDINAL.
* 
*         EXIT   (A) = 0. 
*                (CM+1) = *SEQM* STATUS.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 ISF      SUBR               ENTRY/EXIT 
          STD    CM+2 
          LDD    EO          SET EST ORDINAL
          STD    CM+1 
          LDI    T1          SET CHANNEL NUMBER 
          LPN    77 
          STD    CM+3 
          LDN    0           CLEAR MUX CHANNEL INDICATOR
          STD    CM+4 
          MONITOR  SEQM      MODIFY PATH DESCRIPTOR 
*         LDN    0
          UJN    ISFX        RETURN 
 PCH      SPACE  4,10 
**        PCH - PROCESS CHANNEL TABLES. 
* 
*         ENTRY  SYSTEM FILE POSITIONED TO CHANNEL TABLES.
* 
*         EXIT   CHANNEL EJT ASSIGNMENT TABLE RESTORED. 
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  RNS. 
* 
*         MACROS ENDMS. 
  
  
 PCH      SUBR               ENTRY/EXIT 
          LDC    BFMS        READ CHANNEL TABLES
          RJM    RNS
          ENDMS 
          LDN    CTALL       SET TABLE LENGTH 
          STD    T1 
          LDC    CHTP        GET CHANNEL TABLE POINTER
          CRD    CM 
          LDD    CM+2 
          SHN    14 
          ADD    CM+3 
          ADK    CTALL
          CWM    BFMS+2+CTALL*5,T1  RESTORE CHANNEL ASSIGNMENT TABLE
          UJN    PCHX        RETURN 
 PET      SPACE  4,10 
**        PET - PROCESS EST.
* 
*         ENTRY  SYSTEM FILE POSITIONED TO EST SECTOR.
* 
*         EXIT   FOR ALL EQUIPMENTS WITH DOWN STATUS SET, 
*                THE DOWN, OFF, AND UNAVAILABLE BITS WILL BE
*                SET IN THE EST, AND THE GLOBAL 
*                UNLOAD, UNLOAD REQUESTED, AND UNLOAD PROCESSED 
*                BITS WILL BE SET IN THE MST. 
*                FOR EQUIPMENTS WITH A CHANNEL DOWN ON THE CHECKPOINT 
*                FILE, BUT NOT IN THE CM EST (CHANNEL IS NOT GLOABALLY
*                DOWN), THE CHANNEL DOWN STATUS IS RESET WITH A *SEQM*
*                FUNCTION.
* 
*         USES   CA, EO, LM, T3, T5, CN - CN+4. 
* 
*         CALLS  CDS, DDC, IEQ, RNS, SES. 
* 
*         MACROS ENDMS, SETMS, SFA. 
  
  
 PET2     AOD    EO          ADVANCE EST ORDINAL
          STD    T5 
          ERRNZ  ESTE/2*2-ESTE  CODE ASSUMES INTEGRAL EST-S PER PRU 
          LDN    5*ESTE      ADVANCE BUFFER ADDRESS 
          RAD    CA 
          SFA    EST,EO      GET EST ENTRY FROM CMR 
          ADK    EQDE 
          CRD    CN 
          RJM    IEQ         IDENTIFY EQUIPMENT 
          RJM    SES
          RJM    DDC
          RJM    CDS         CHECK DEVICE STATUS
 PET4     LCN    ESTE        DECREMENT WORD COUNT 
          RAD    LM 
          PJN    PET2        IF NOT END OF SECTOR 
          LDD    CE          RESET CHECKPOINT DEVICE EST ORDINAL
          STD    T5 
          LDD    T3          CHECK EST SECTOR 
          SHN    -6 
          NJN    PET1        IF NOT EOR 
  
 PET      SUBR               ENTRY/EXIT 
          LCN    0
          STD    EO 
 PET1     LDC    BFMS+2-5*ESTE  INITIALIZE BUFFER POINTER 
          STD    CA 
          ADN    5*ESTE-2    READ NEXT SECTOR OF EST
          RJM    RNS
          STD    LM 
          ENDMS 
          LDD    LM          SET SECTOR WORD COUNT
          STD    T3 
          NJN    PET4        IF NOT EMPTY SECTOR
          UJN    PETX        RETURN 
 RSE      SPACE  4,10 
**        RSE - RELEASE SYSTEM ASSIGNED EQUIPMENT.
* 
*         USES   T5, T6, T7, CM - CM+4, FS - FS+4.
* 
*         MACROS SFA. 
  
  
 RSE2     LDD    CP 
          ADN    EACW        UPDATE EQUIPMENT ASSIGNED COUNT WORD 
          CWD    FS 
  
 RSE      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADN    EACW        GET EQUIPMENT ASSIGNED COUNT WORD
          CRD    FS 
          LDN    ESTP 
          CRD    T7-2        FETCH EST POINTERS 
 RSE1     SOD    T7 
          MJN    RSE2        IF EST SCAN COMPLETE 
          SFA    EST
          ADK    EQAE        READ EST ASSIGNMENT WORD 
          CRD    CM 
          LDD    CM+4        CHECK ASSIGNMENT 
          LMC    7777 
          NJN    RSE1        IF NOT SYSTEM
          STD    CM+4 
          STD    FS          CLEAR EQUIPMENT ASSIGNED COUNT 
          SFA    EST,T7 
          ADK    EQAE        CLEAR SYSTEM ASSIGNMENT
          CWD    CM 
          UJN    RSE1        CONTINUE EST SCAN
 SES      SPACE  4,10 
**        SES - SET EQUIPMENT STATE.
* 
*         ENTRY  (EO) = EST ORDINAL.
*                (CA) = BUFFER ADDRESS OF EST ENTRY.
*                (CN - CN+4) = EST ENTRY FROM CMR.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 SES      SUBR               ENTRY/EXIT 
          LDI    CA 
          LMD    CN          COMPARE EQUIPMENT STATE
          LPN    3
          ZJN    SESX        IF NO CHANGE 
          LDI    CA 
          LPN    3           EXTRACT PREVIOUS STATE 
          STD    CM+2 
          ERRNZ  ONES        CODE DEPENDS ON VALUE
          ERRNZ  IDES-1      CODE DEPENDS ON VALUE
          ERRNZ  OFES-2      CODE DEPENDS ON VALUE
          ERRNZ  DWES-3      CODE DEPENDS ON VALUE
          LDD    EO 
          STD    CM+1        RESTORE EQUIPMENT STATE
          MONITOR  SEQM 
          UJN    SESX        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
 QUAL$    EQU    1           DO NOT QUALIFY COMMON DECKS
*CALL     COMPTGB 
*CALL     COMPTLB 
          SPACE  4,10 
          ERRPL  *-BFMS      OVERFLOW INTO BUFFER 
          SPACE  4,10 
          QUAL
          TTL    REC/4RD - CONTROL POINT RECOVERY ROUTINES. 
          TITLE 
          QUAL   CPR
          IDENT  4RD,CPRX 
*COMMENT  REC - CONTROL POINT RECOVERY ROUTINES.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 CPR      SPACE  4,10 
***       CPR - CONTROL POINT RECOVERY ROUTINES.
 CPR      SPACE  4,10 
          ORG    OVLA 
  
  
 CPR      SUBR               ENTRY/EXIT 
          UJN    CPRX        RETURN AFTER LOAD
          SPACE  4,10 
**        COMMON DECKS. 
  
  
          LIST   X
*CALL     COMPVEI 
          LIST   *
          TITLE  SUBROUTINES. 
 UQE      SPACE  4,15 
**        UQE - UPDATE QFT ENTRY. 
* 
*         ENTRY  (EO) = EJT ORDINAL IF PROCESSING CONTROL POINTS. 
*                     = 0 IF PROCESSING QFT.
*                (FS - FS+4) = FST INFORMATION. 
* 
*         USES   T5, T6.
* 
*         CALLS  RSS. 
* 
*         MACROS ENDMS, SETMS, SFA. 
  
  
 UQE      SUBR               ENTRY/EXIT 
          LDD    FS          SET EQUIPMENT
          STD    T5 
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          SETMS  IO 
          LDN    0           READ SYSTEM SECTOR 
          RJM    RSS
          NJN    UQEX        IF SYSTEM SECTOR ERROR 
          ENDMS 
          LDD    EO 
          ZJN    UQE1        IF PROCESSING QFT
          STM    IOSS+5*ENTQ+4
          LDN    2
 UQE1     STD    T5 
          LDM    IOSS+5*JSNQ+4  SET/CLEAR EJT ASSIGNMENT
          SCN    7
          LMD    T5 
          STM    IOSS+5*JSNQ+4
          LDN    QFTE        LENGTH OF QFT ENTRY
          STD    T6 
          SFA    QFT,GQSS    STORE QFT ENTRY
          CWM    IOSS,T6
          LJM    UQEX        RETURN 
 VEI      SPACE  4,15 
**        VEI - VALIDATE EOI FOR MASS STORAGE FILE. 
* 
*         ENTRY  (FA) = FNT INDEX.
*                (QT) = FILE TYPE.
*                (FS - FS+4) = FST INFORMATION. 
* 
*         USES   QI, T6.
* 
*         CALLS  CLF, C2D, IRA, RDC, RSS, WEI, WSS. 
* 
*         MACROS ENDMS, SETMS, SFA. 
  
  
 VEI5     LDD    QI          RESTORE FNT ORDINAL
          STD    FA 
 VEI6     ENDMS              RELEASE CHANNEL
  
 VEI      SUBR               ENTRY/EXIT 
          LDD    FS 
          ZJN    VEIX        IF NULL EQUIPMENT
          STD    T5 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    0-13 
          ZJN    VEIX        IF NOT MASS STORAGE
          LDD    FS+1 
          ZJN    VEIX        IF FILE NOT USED 
          STD    T6          SET FIRST TRACK
          SHN    -6          PUT STARTING TRACK IN MESSAGE
          RJM    C2D
          STM    VEIC 
          LDD    T6 
          RJM    C2D
          STM    VEIC+1 
          LDD    T5          PUT EST ORDINAL IN MESSAGE 
          SHN    -3 
          RJM    C2D
          STM    VEIB 
          LDD    T5 
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    VEIB+1 
          LDC    DSCP*CPAS+MS1W  DISPLAY MESSAGE
          CWM    VEIA,TR
          SBN    1           SAVE ADDRESS FOR *RDC* MESSAGE 
          STM    RDCA 
          RJM    IRA         INITIALIZE RANDOM ACCESS PROCESSORS
          SETMS  IO,RW
          LCN    1           READ DISK CHAIN
          RJM    RDC
          NJN    VEI2        IF LENGTH/LINKAGE/DISK ERROR 
 VEI1     LJM    VEI6        RETURN 
  
 VEI2     RJM    CLF         CHANGE LENGTH OF FILE IN TRT 
          LDD    FS+4 
          NJN    VEI3        IF NO REWRITE OF EOI REQUIRED
          RJM    WEI         WRITE EOI
 VEI3     LDD    QT          CHECK FILE TYPE
          LMN    PMFT 
          NJN    VEI1        IF NOT DIRECT ACCESS PERMANENT FILE
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          LDD    FA          SAVE FNT ORDINAL 
          STD    QI 
          SETMS  POSITION 
*         LDN    0           SELECT NO FILE NAME VERIFICATION 
          STD    FA 
          RJM    RSS         READ SYSTEM SECTOR 
          NJN    VEI4        IF SYSTEM SECTOR ERROR 
          LDM    /COMSPFM/CTSS+/COMSPFM/FCEC  SET ERROR FLAG IN SS
          LPC    7077 
          LMC    400
          STM    /COMSPFM/CTSS+/COMSPFM/FCEC
          RJM    WSS         REWRITE SYSTEM SECTOR
 VEI4     LJM    VEI5        RESTORE FNT ORDINAL
  
  
 VEIA     DATA   H* VERIFY EQ*
 VEIB     DATA   H*000, A*
 VEIC     DATA   C*0000.* 
          SPACE  4,10 
 OVLC     EQU    *+5         ORIGIN FOR *4RF* 
 ABT      SPACE  4,10 
**        ABT - ABORT CM RECOVERY.
* 
*         ENTRY  (PN) = CP/PCP NUMBER.
* 
*         EXIT   TO *ERR*.
* 
*         USES   PN.
* 
*         CALLS  C2D. 
  
  
 ABT      LDD    PN          CHECK CP NUMBER
          SBD    NC 
          MJN    ABT1        IF REAL CP 
          ZJN    ABT1        IF SYSTEM CP 
          SBN    1
          STD    PN          SAVE PCP OFFSET
          SOM    ABTA 
 ABT1     LDD    PN          CONVERT CP/PCP NUMBER
          RJM    C2D
          STM    ABTB+1      SET NUMBER IN MESSAGE
          LDC    ABTB 
 ABTA     EQU    *-1
          LJM    ERR         DISPLAY ERROR AND HANG 
  
  
          DATA   2H P 
 ABTB     DATA   C*CP00 CPA/MOVING.*
 CRS      SPACE  4,20 
**        CRS - CHECK ROLLIN/ROLLOUT STATUS.
* 
*         ENTRY  (PN) = CP/PCP NUMBER.
* 
*         EXIT   CONTROL POINT RELEASED IF JOB ROLLING IN.
*                TO *ABT* IF PSEUDO-ROLLIN OR PSEUDO-ROLLOUT IN 
*                  PROGRESS.
*                *REC* ASSIGNED TO CP IF CP BEING RECOVERED.
*                (A) = (EO) = EJT ORDINAL IF CP/PCP ASSIGNED. 
*                (A) = (EO) = 0 IF CP/PCP NOT ASSIGNED. 
*                (CP) = REAL CPA ADDRESS. 
*                (CN - CN+4) = *FLSW* WORD FROM CP/PCP AREA.
*                (FN - FN+4) = *STSW* WORD WITH - 
*                              ERROR FLAG SET AS REQUIRED.
*                              ROLLOUT FLAGS CLEARED. 
* 
*         USES   EO, QA, T6, T7, CA - CA+4, CN - CN+4, FN - FN+4, 
*                  FS - FS+4. 
* 
*         CALLS  CSR, DEF, REJ, RJQ, RPJ, RSJ, SCA. 
* 
*         MACROS MONITOR, SFA.
  
  
 CRS      SUBR               ENTRY/EXIT 
  
*         GET CP/PCP PARAMETERS.
  
          LDD    PN          SET CP/PCP ADDRESS 
          RJM    SCA
          ADN    TFSW        FETCH EJT ORDINAL
          CRD    EO 
          ERRNZ  EO+1-CA     CODE DEPENDS ON VALUE
          SBN    TFSW-STSW   READ CONTROL POINT STATUS WORD 
          CRD    FN 
          ADN    FLSW-STSW   READ FL PARAMETERS 
          CRD    CN 
          LDD    EO 
          ZJN    CRSX        IF CONTROL POINT UNASSIGNED
  
*         GET EJT PARAMETERS AND CLEAR ROLLOUT FLAGS IF NOT PCP.
  
          STD    QA 
          SFA    EJT         READ EJT PARAMETERS
          ADK    JSNE 
          CRD    FS 
          ADN    SCHE-JSNE
          CRD    CA 
          LDD    NC 
          SBD    PN 
          MJN    CRS1        IF PCP 
          LDN    0           CLEAR ROLLOUT FLAGS
          STD    FN+2 
          LDD    PN          SET CP/PCP ADDRESS 
          RJM    SCA         UPDATE *STSW*
          ADN    STSW 
          CWD    FN 
          LDD    FS+4        CLEAR JOB ADVANCE TO ALLOW *CCAM*
          LPC    7677 
          STD    FS+4 
          SFA    EJT,EO 
          ADK    JSNE 
          CWD    FS 
          LDD    PN 
          STD    CM+1 
          MONITOR  CCAM      CHANGE ASSIGNMENT TO CP BEING RECOVERED
  
*         CALL JOB STATUS PROCESSOR.
  
 CRS1     LDD    FS+4        EXTRACT JOB STATUS 
          SHN    -1 
          LPN    37 
          STD    T6 
          SBN    MXJS 
          MJN    CRS2        IF VALID STATUS
          RJM    DEF         DETERMINE ERROR FLAG 
          UJN    CRS3        UPDATE CP/PCP STATUS 
  
 CRS2     LDM    TJRP,T6
          ZJN    CRS3        IF PROCESSOR UNDEFINED 
          STD    T7 
  
*         EXIT TO PROCESSOR WITH -
*                (PN) = CP/PCP NUMBER.
*                (CP) = CPA ADDRESS IF REAL CP. 
*                (EO) = (QA) = EJT ORDINAL. 
*                (FS - FS+4) = *JSNE* WORD OF EJT ENTRY.
*                (CA - CA+4) = *SCHE* WORD OF EJT ENTRY.
*                (FN - FN+4) = CONTROL POINT AREA *STSW* WORD.
  
          RJM    0,T7        RECOVER JOB
  
*         RETURN WITH CONTROL POINT ASSIGNED STATUS.
  
 CRS3     LDD    EO 
          LJM    CRSX        RETURN 
 TJRP     SPACE  4,10 
**        TJRP - TABLE OF JOB RECOVERY PROCESSORS.
  
  
 TJRP     INDEX 
          INDEX  PRJS,RPJ 
          INDEX  EXJS,REJ 
          INDEX  ROJS,RJQ 
          INDEX  SIJS,CSR 
          INDEX  SOJS,RJQ 
          INDEX  TOJS,RJQ 
          INDEX  IOJS,RJQ 
          INDEX  DOJS,RJQ 
          INDEX  SUJS,RJQ 
          INDEX  PCJS,RSJ 
          INDEX  ERJS,RJQ 
          INDEX  PWJS,RPJ 
          INDEX  SWJS,RJQ 
          INDEX  MXJS 
 DEF      SPACE  4,20 
**        DEF - DETERMINE ERROR FLAG. 
* 
*         ENTRY  (EO) = EJT ORDINAL.
*                (PN) = CONTROL POINT NUMBER. 
*                (CA - CA+4) = *SCHE* WORD OF EJT ENTRY.
*                (CN - CN+4) = *FLSW* WORD. 
*                (FN - FN+4) = *STSW* WORD. 
*                (FS - FS+4) = *JSNE* WORD OF EJT ENTRY.
* 
*         EXIT   (FN+1) = ERROR FLAG. 
*                ERROR FLAG SET IN CONTROL POINT AREA.
*                *JCRW* CLEARED IF RECOVERED SUBSYSTEM. 
* 
*         USES   FN+1, FS+4, CM - CM+4. 
* 
*         MACROS DELAY, MONITOR, SFA. 
  
  
 DEF3     LDD    CA+2        CHECK *NORERUN* STATUS 
          SHN    0-13 
          ZJN    DEF4        IF JOB IN RERUN STATE
          LDN    RAET&DRET
 DEF4     LMN    DRET        SET ERROR FLAG 
 DEF5     STD    FN+1 
          STD    CM+1 
          MONITOR  CEFM 
  
 DEF      SUBR               ENTRY/EXIT 
          LDD    CA+2 
          LPC    3000 
          NJN    DEFX        IF JOB TERMINATION IN PROGRESS 
          LDD    FN+1 
          LMN    PEET 
          ZJN    DEF2        IF *PEET* ERROR FLAG SET 
          LDD    CN+4 
          ZJN    DEF3        IF NOT RECOVERED SUBSYSTEM 
          LDN    ZERL        CLEAR *JCRW* 
          CRD    CM 
          LDD    CP 
          ADK    JCRW 
          CWD    CM 
          LDN    RSET        SET RECOVERED SUBSYSTEM ERROR
          UJN    DEF5        RETURN 
  
 DEF1     DELAY 
 DEF2     LDD    PN 
          STD    CM+1 
          MONITOR  VFLM      CALL CPUMTR TO VALIDATE FL 
          SOD    CM+1 
          ZJN    DEFX        IF FL VERIFICATION FAILED
          PJN    DEF1        IF FUNCTION WAS IN USE 
          LDD    FS+4        CLEAR JOB ADVANCE FLAG 
          LPC    -100 
          STD    FS+4 
          SFA    EJT,EO 
          ADK    JSNE 
          CWD    FS 
          LDD    CP          SET CPU PRIORITY = *LJCS*
          ADK    CWQW 
          CRD    CM 
          LDK    LJCS 
          SHN    3
          ADC    2000 
          STD    CM 
          LDD    CP 
          ADK    CWQW 
          CWD    CM 
          UJP    DEF3        SET ERROR FLAG 
          TITLE  JOB RECOVERY PROCESSORS. 
 CSR      SPACE  4,10 
**        CSR - CHANGE STATUS TO ROLLOUT. 
* 
*         USES   FS+4.
* 
*         CALLS  RJQ, SET.
  
  
 CSR      SUBR               ENTRY/EXIT 
          LDD    FS+4 
          SCN    76 
          LMN    ROJS*2      CHANGE JOB STATUS
          STD    FS+4 
          RJM    SET         SET ENTRY TIME IN *SCHE* 
          SFA    EJT,EO      UPDATE EJT ENTRY 
          ADK    JSNE 
          CWD    FS 
          ADN    SCHE-JSNE
          CWD    CA 
          RJM    RJQ         RETURN JOB TO QUEUE
          UJN    CSRX        RETURN 
 REJ      SPACE  4,10 
**        REJ - RECOVER EXECUTING JOB.
* 
*         USES   CA+2.
* 
*         CALLS  DEF. 
* 
*         MACROS SFA. 
* 
*         EXIT   TO *ABT* IF PSEUDO-ROLLOUT IN PROGRESS.
  
  
 REJ      SUBR               ENTRY/EXIT 
          LDD    NC 
          SBD    PN 
          MJN    REJ1        IF PROCESSING PCP-S
          LDD    CA+2        CLEAR *DMP=* ROLLOUT FLAG
          LPC    7377 
          STD    CA+2 
          SFA    EJT,EO      UPDATE EJT ENTRY 
          ADK    SCHE 
          CWD    CA 
          RJM    DEF         DETERMINE ERROR FLAG 
          UJN    REJX        RETURN 
  
*         IF PROCESSING A PSEUDO-CONTROL POINT AND THE JOB STATE IS 
*         *EXJS*, A PSEUDO-ROLLOUT IS IN PROGRESS.
  
 REJ1     LJM    ABT         ABORT RECOVERY 
 RJQ      SPACE  4,10 
**        RJQ - RETURN JOB TO QUEUE.
* 
*         EXIT   CONTROL POINT RELEASED.
*                (EO) = 0.
*                *REC* ASSIGNED TO SYSTEM CP. 
* 
*         USES   EO, FS+4, CM+1.
* 
*         MACROS MONITOR, SFA.
  
  
 RJQ      SUBR               ENTRY/EXIT 
          LDC    100         SET JOB ADVANCE FOR *JACM* FUNCTION
          RAD    FS+4 
          SFA    EJT,EO 
          CWD    FS 
          LDN    CCPS        SET RELEASE CONTROL POINT
          STD    CM+1 
          MONITOR  JACM      RELEASE CONTROL POINT
*         LDN    0
          STD    EO          CLEAR EJT ORDINAL TO FLAG CP RELEASED
          LDD    NC 
          STD    CM+1 
          MONITOR  CCAM      RETURN TO SYSTEM CP
          UJN    RJQX        RETURN 
 RPJ      SPACE  4,10 
**        RPJ - RECOVER PRE-INITIAL JOB.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  AST, RJQ.
  
  
 RPJ1     RJM    RJQ         RETURN JOB TO QUEUE
  
 RPJ      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADN    JCIW 
          CRD    CM 
          LDC    LSSI        CHECK SUBSYSTEM ID 
          SBD    CM+2 
          PJN    RPJ1        IF NOT SUBSYSTEM 
          LDD    CM+2 
          LMC    CEAF*10000  CLEAR JOB ACTIVE IN *SSAT* 
          RJM    AST
          UJN    RPJ1        RETURN JOB TO QUEUE
 RSJ      SPACE  4,10 
**        RSJ - RECOVER JOB AT PSEUDO-CP. 
* 
*         EXIT   TO *ABT* IF PSEUDO-ROLLIN IN PROGRESS. 
  
  
 RSJ      SUBR               ENTRY/EXIT 
          LDD    NC 
          SBD    PN 
          MJN    RSJX        IF PROCESSING PCP-S
  
*         IF PROCESSING A CONTROL POINT AND THE JOB STATE IS *PCJS*, A
*         PSEUDO-ROLLIN IS IN PROGRESS. 
  
          LJM    ABT         ABORT RECOVERY 
          TITLE  SUBROUTINES. 
 PLF      SPACE  4,15 
**        PLF - PROCESS LOCAL FNT.
* 
*         ENTRY  (CP) = CONTROL POINT ADDRESS.
*                (CN - CN+4) = *FLSW* WORD. 
*                (FN - FN+4) = *STSW* WORD. 
* 
*         EXIT   (RA) = CONTROL POINT REFERENCE ADDRESS / 100.
* 
*         USES   FA, QS, QT, CM - CM+4, FS - FS+4.
* 
*         CALLS  UQE, VEI.
* 
*         MACROS MONITOR, NFA.
  
  
 PLF      SUBR               ENTRY/EXIT 
          LDD    CN          SET END OF NFL 
          SHN    6
          ADN    1
          STD    QS 
          LDC    FNTN-LENF
          STD    FA 
 PLF1     LDN    LENF        ADVANCE FNT ADDRESS
          RAD    FA 
          SBD    QS 
          PJN    PLFX        IF END OF NFL
          NFA    FA,R        READ FNT ENTRY 
          CRD    CM 
          ADN    FSTL 
          CRD    FS 
          LDD    CM 
          ZJN    PLF1        IF EMPTY FNT SLOT
          LDD    CM+4        SET FILE TYPE
          SHN    -6 
          STD    QT 
          LMN    QFFT 
          NJN    PLF2        IF NOT QUEUE FILE
          RJM    UQE         UPDATE QFT ENTRY 
 PLF2     LMN    ROFT&QFFT
          ZJN    PLF5        IF ROLLOUT FILE
          LDD    FS+4 
          LPN    1
          NJN    PLF1        IF FILE NOT BUSY 
 PLF3     AOD    FS+4 
          NFA    FA,R        UPDATE FST 
          ADN    FSTL 
          CWD    FS 
          LDD    FS+4        CHECK LAST OPERATION 
          LPN    2
          ZJN    PLF4        IF NOT WRITE 
          RJM    VEI         VALIDATE EOI FOR FILE
 PLF4     LJM    PLF1        LOOP FOR NEXT FILE 
  
 PLF5     LDN    LOFT-ROFT   SET FILE TYPE TO *LOFT*
          SHN    6
          RAD    CM+4 
          NFA    FA,R        UPDATE FNT 
          CWD    CM 
          LDD    FS+1        SET FIRST TRACK
          ZJN    PLF4        IF TRACKS NOT ASSIGNED 
          STD    CM+2 
          LDD    FS          SET EQUIPMENT
          LMD    TH          SET RETURN ON INACCESSIBLE DEVICE
          STD    CM+1 
          MONITOR  DTKM      RELEASE MASS STORAGE SPACE 
          LDN    ZERL 
          CRD    FS 
          LDN    NEEQ        ASSIGN TO NULL EQUIPMENT 
          STD    FS 
          UJP    PLF3        UPDATE FST 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
          QUAL   AST
 QUAL$    EQU    0           DONT REQUALIFY COMMON DECK 
 AST$     EQU    0           ASSEMBLE *SSAT* MODIFICATION ROUTINES
*CALL     COMPAST 
          QUAL   SET
 QUAL$    EQU    0           DONT REQUALIFY COMMON DECK 
*CALL     COMPRJC 
  
  
 CET$     EQU    0           ASSEMBLE ENTRY TIME CALCULATION ROUTINES 
 T1       EQU    CA+3 
 T2       EQU    CA+4 
*CALL     COMPCPE 
 SET      SPACE  4,15 
**        SET - SET ENTRY TIME. 
* 
*         ENTRY  (EO) = EJT ORDINAL.
*                (CA - CA+4) = *SCHE* WORD OF EJT ENTRY.
* 
*         EXIT   ENTRY TIME SET IN (CA+2 - CA+4) FOR UPPER BOUND
*                  PRIORITY OF SERVICE CLASS. 
* 
*         USES   T1, CA+2 - CA+4, CM - CM+4.
* 
*         CALLS  CET. 
* 
*         MACROS SFA. 
  
  
 SET      SUBR               ENTRY/EXIT 
          SFA    EJT,EO      FETCH SERVICE CLASS FROM EJT ENTRY 
          ADN    SCLE 
          CRD    CM 
          LCN    0           SET MAXIMUM PRIORITY 
          STD    T1 
          LDD    CM          CALCULATE ENTRY TIME 
          SCN    77 
          SHN    6
          LMN    EXQT 
          RJM    CET
          LDD    CA+2        SET ENTRY TIME IN *SCHE* 
          SCN    77 
          STD    CA+2 
          LDD    T1 
          STD    CA+3 
          LDD    T2 
          STD    CA+4 
          UJN    SETX        RETURN 
  
  
          QUAL   CPR
 AST      EQU    /AST/AST 
 CEAF     EQU    /AST/CEAF
 SET      EQU    /SET/SET 
          SPACE  4,10 
          ERRPL  *-BFMS      OVERFLOW INTO BUFFER 
          SPACE  4,10 
          QUAL
 ABT      EQU    /CPR/ABT 
 CRS      EQU    /CPR/CRS 
 OVLC     EQU    /CPR/OVLC
 PLF      EQU    /CPR/PLF 
 UQE      EQU    /CPR/UQE 
 VEI      EQU    /CPR/VEI 
          TTL    REC/4RE - ISSUE DEADSTART MESSAGES.
          TITLE 
          QUAL   IDM
          IDENT  4RE,IDMX 
*COMMENT REC - ISSUE DEADSTART MESSAGES.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 IDF      SPACE  4,10 
***       4RE - ISSUE DEADSTART MESSAGES. 
* 
*         *4RE* ISSUES THE DEADSTART MESSAGES PERTAINING TO RECOVERY, 
*         AS SET UP BY *4RA*. 
 IDF      SPACE  4,20 
***       DAYFILE MESSAGES. 
* 
*         * YY/MM/DD. DEAD START LEVEL  X.* = DATE AND LEVEL NUMBER OF
*         DEADSTART.
*         *X...X* = SYSTEM TITLE. 
* 
*         *X...X* = SYSTEM VERSION. 
* 
* 
*         *EQXXX, DAYFILE TRACK LIMIT.* = DEADSTART IS ABANDONED. 
* 
*         *EQXXX, LOCAL AREA SECTOR ERROR.* = READ ERROR OCCURRED.
* 
*         *FILENAM   RECOVERED, EQXXX.* = SPECIFIED DAYFILE WAS 
*         RECOVERED ON EST ORDINAL XXX. 
* 
*         *FILENAM   CREATION DATE YY/MM/DD. * = CREATION DATE OF 
*         SPECIFIED DAYFILE.
* 
*         *FILENAME   UPDATED YY/MM/DD. HH.MM.SS. * = DATE
*         AND TIME LAST EOI WAS WRITTEN.
 IDM      SPACE  4,10 
***       ACCOUNT FILE MESSAGES.
* 
*         *ABSY,  YY/MM/DD.* = ACCOUNT FILE WAS INITIALIZED.
* 
*         *ARSY, X, YY/MM/DD.* = DAYFILES WERE RECOVERED ON A LEVEL X 
*         DEADSTART ON THE SPECIFIED DATE.
* 
*         *ABST, X...X.* = SYSTEM TITLE.
* 
*         *ABSV, X...X.* = SYSTEM VERSION.
 IDM      SPACE  4,10 
***       ERROR LOG MESSAGES. 
* 
*         *X...X* = SYSTEM TITLE. 
* 
*         *X...X* = SYSTEM VERSION. 
* 
*         *MICROCODE, XX.* = LEVEL OF LOADED MICROCODE. 
* 
*         *EI, XX* = LEVEL OF ERROR INTERFACE.
* 
*         * BUFFERED I/O RECOVERY ERRORS. 
*                * WRITE LIST LINKAGE ERROR.
*                * READ DATA ON WRITE LIST. 
*                * INTERLOCKED BUFFER ON WRITE LIST.
*                * WRITE LIST BUFFER COUNT. 
*                * NON-LINKED WRITE BUFFER. 
* 
*         * BUFFERED I/O RECOVERY ERRORS EQXXX. 
*                * I/O QUEUE SIZE ERROR.
*                * I/O LINKAGE ERROR. 
*                * I/O *PUT* ORDINAL ERROR. 
 IDM      SPACE  4,10 
          ORG    OVLB 
 IDM      SPACE  4,10 
**        IDM - ISSUE DEAD START MESSAGES.
* 
*         ENTRY  (FN - FN+4) = DAYFILE EQUIPMENTS.
* 
*         EXIT   DEAD START MESSAGE ISSUED TO SYSTEM DAYFILE. 
*                DEAD START MESSAGE ISSUED TO ACCOUNT DAYFILE.
*                DEAD START MESSAGE ISSUED TO ERROR LOG DAYFILE.
*                DEAD START MESSAGE ISSUED TO BML.
*                APPROPRIATE MESSAGES CONCERNING DAYFILE RECOVERY.
*                APPROPRIATE MESSAGES CONCERNING MICROCODE AND EI.
*                SYSTEM TITLE AND VERSION ISSUED TO SYSTEM DAYFILE. 
*                SYSTEM TITLE AND VERSION ISSUED TO ACCOUNT DAYFILE.
*                SYSTEM TITLE AND VERSION ISSUED TO ERROR LOG DAYFILE.
*                SYSTEM TITLE AND VERSION ISSUED TO BML.
*                BUFFERED I/O RECOVERY ERRORS PROCESSED.
* 
*         CALLS  ACS, BRM, C2D, DFM.
* 
*         USES   QT, T1, T4, CM - CM+4. 
  
  
 IDM      SUBR               ENTRY/EXIT 
          LDN    DSSL        SET RECOVERY LEVEL 
          CRD    CM 
          LDD    CM+4        CONVERT RECOVERY MODE
          LPN    3
          STM    IDMG+2      SET IN BML MESSAGE 
          ADC    2R 0 
          STM    IDMF1
          SHN    6
          LMN    1R,
          STM    RDBG+3 
  
*         ISSUE DEADSTART MESSAGES. 
  
          LDM    RDBK 
          STM    IDMA 
          LDN    DTEL        READ DATE TO MESSAGE 
          CRM    IDMF,ON
          SBN    1
          CRM    **,ON
 IDMA     EQU    *-1
*         CRM    RDBG+3,ON   (ACCOUNT FILE INITIALIZED) 
*         CRM    RDBG+4,ON   (ACCOUNT FILE RECOVERED) 
          LDC    IDMF        ISSUE MESSAGE TO DAYFILE 
          RJM    DFM
          LDC    ACFN+RDBG   ISSUE MESSAGE TO ACCOUNT DAYFILE 
          RJM    DFM
          LDC    ERLN+IDMF   ISSUE MESSAGE TO ERROR LOG 
          RJM    DFM
          LDM    RDBF+MLDY
          NJN    IDM0        IF MAINTENANCE LOG CREATED 
          LDC    DS0104      SET RECOVERY SYMPTOM 
          STM    IDMG+1 
 IDM0     LDN    IDMGL       SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    BMLN+IDMG   ISSUE MESSAGE TO MAINTENANCE LOG 
          RJM    DFM
  
*         ISSUE SYSTEM TITLE AND VERSION DAYFILE MESSAGES 
  
          LDN    4           READ SYSTEM TITLE
          STD    T1 
          LDN    SYTL 
          CRM    IDMM2,T1 
          LDN    2           READ SYSTEM VERSION
          STD    T1 
          LDN    SVNL 
          CRM    IDMN2,T1 
          LDC    IDMM2       ISSUE SYSTEM TITLE TO MASTER DAYFILE 
          RJM    DFM
          LDC    IDMN2       ISSUE SYSTEM VERSION TO MASTER DAYFILE 
          RJM    DFM
          LDC    ACFN+IDMM+2 ISSUE TITLE TO ACCOUNT DAYFILE 
          RJM    DFM
          LDC    ACFN+IDMN+2 ISSUE SYSTEM VERSION TO ACCOUNT FILE 
          RJM    DFM
          LDC    ERLN+IDMM2  ISSUE SYSTEM TITLE TO ERRLOG 
          RJM    DFM
          LDC    ERLN+IDMN2  ISSUE SYSTEM VERSION TO ERRLOG 
          RJM    DFM
          LDN    ZERL        CLEAR BML AREA 
          CRM    IDMM,ON
          CRM    IDMN,ON
          LDC    DM0400      INSERT BML ID
          STM    IDMM 
          STM    IDMN 
          LDC    SS0100      INSERT BML SYSTEM TITLE SYMPTOM
          STM    IDMM+1 
          LDC    SS0101      INSERT BML SYSTEM VERSION SYMPTOM
          STM    IDMN+1 
          LDN    IDMM1L      SET SYSTEM TITLE MESSAGE LENGTH
          STD    CM+1 
          LDC    BMLN+IDMM   ISSUE MESSAGE TO MAINTENANCE LOG 
          RJM    DFM
          LDN    IDMN1L      SET SYSTEM VERSION MESSAGE LENGTH
          STD    CM+1 
          LDC    BMLN+IDMN   ISSUE MESSAGE TO MAINTENANCE LOG 
          RJM    DFM
  
*         COPY MICROCODE AND EI NAMES AND DATES TO MESSAGES.
  
          LDK    EABL+MFEI   GET MESSAGE INFORMATION
          CRD    CM 
          ADK    CPEI-MFEI
          CRD    CN 
          LDD    CM+1        GET MF DESCRIPTOR
          SCN    77 
          SHN    6
          LMD    CM 
          SHN    6
          CRD    CM 
          ADN    1           READ EI DATE/NAME
          CRM    IDMH1+2*5,ON 
          LDD    CM+1 
          SHN    -6 
          LMN    7
          NJP    IDM3        IF NOT CYBER 180 MACHINE 
          LDD    CM+1 
          LPN    1
          NJN    IDM0.1      IF CPU-0 OFF 
          LDD    CN+1        GET PROCESSOR DESCRIPTOR 
          SCN    77 
          SHN    6
          LMD    CN 
          SHN    6
          UJN    IDM1        FETCH MICROCODE IDENTIFICATION 
  
 IDM0.1   LDD    CN+1 
          LPN    77 
          SHN    14 
          LMD    CN+2 
 IDM1     ADN    2
          CRM    IDMH1,ON    READ MICROCODE NAME/DATE 
          CRM    IDMH1+5,ON 
          LDM    IDMH1+2*5+3 MOVE EI NAME 
          STM    IDMH1+4
          LDM    IDMH1+2*5+4 MOVE VERIFICATION FLAG 
          SHN    1
          RAM    IDMH1+5+4
          LDN    0
          STM    IDMH1+2*5+3
          STM    IDMH1+2*5+4
          LDN    IDMHL       SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    BMLN+IDMH   ISSUE MESSAGE TO MAINTENANCE LOG 
          RJM    DFM
          LDC    IDMJ        SET ASSEMBLY BUFFER ADDRESS
          STD    T1 
          LDC    IDMH1       SET MICROCODE NAME 
          RJM    ACS
          LDC    =C*, *      INSERT SEPARATOR 
          RJM    ACS
          LDC    IDMH1+1*5+0 SET MICROCODE DATE 
          RJM    ACS
          LDM    IDMH1+1*5+4 DETERMINE IF MICROCODE LOADED
          ZJN    IDM2        IF LOADED
          LDC    =C*, *      SET SEPARATOR
          RJM    ACS
          LCN    1
 IDM2     ADC    =C*NL. *+1 
          RJM    ACS
          LDC    IDML        SET ASSEMBLY BUFFER ADDRESS
          STD    T1 
          LDM    IDMH1+0*5+4 SET EI NAME
          STI    T1 
          AOD    T1 
          LDC    =C*, *      INSERT SEPARATOR 
          RJM    ACS
          LDC    IDMH1+2*5+0 SET EI DATE
          RJM    ACS
          LDC    =C*. *      INSERT TERMINATOR
          RJM    ACS
          LDC    ERLN+IDMI   ISSUE MESSAGE TO ERRLOG
          RJM    DFM
          LDC    ERLN+IDMK   ISSUE MESSAGE TO ERRLOG
          RJM    DFM
 IDM3     LCN    0           CLEAR FILE INDEX 
          STD    QT 
  
*         ISSUE DAYFILE RECOVERY MESSAGES.
  
          LDD    RS 
          LPN    FLMK 
          LMN    FLCM 
          NJN    IDM6        IF DAYFILES NOT RECOVERED FROM CM
          RJM    BRM         PROCESS BUFFERED I/O RECOVERY MESSAGES 
 IDM4     LJM    IDMX        RETURN 
  
 IDM6     AOD    QT          ADVANCE TO NEXT FILE 
          SHN    2
          ADD    QT 
          STD    T4 
          ADC    RDBA        CALCULATE DATE AND TIME ADDRESSES
          STM    IDMB 
          ADN    RDBB-RDBA
          STM    IDMC 
          ADN    RDBC-RDBB
          STM    IDMD 
          ADN    RDBD-RDBC
          STM    IDME 
          LMC    RDBE 
          ZJN    IDM4        IF END OF DAYFILES 
          LDM    RDBA,T4
          ZJN    IDM6        IF NO CREATION DATE
          LDM    FN,QT       CONVERT UPPER DIGIT OF EST ORDINAL 
          SHN    -6 
          LPN    7
          ADC    2RQ0 
          STM    RDBH+13
          LDM    FN,QT       CONVERT LOWER TWO DIGITS OF EST ORDINAL
          RJM    C2D
          STM    RDBH+14
  
*         COPY DATES AND TIMES TO MESSAGES. 
  
          LDD    MA          COPY CREATION DATE 
          CWM    **,ON
 IDMB     EQU    *-1
          SBN    1
          CRM    RDBI1,ON 
          SBN    1           COPY UPDATE DATE 
          CWM    **,ON
 IDMC     EQU    *-1
          SBN    1
          CRM    RDBJ1,ON 
          SBN    1           COPY UPDATE TIME 
          CWM    **,ON
 IDMD     EQU    *-1
          SBN    1
          CRM    RDBJ1+1*5,ON 
          SBN    1           COPY FILE NAME 
          CWM    **,ON
 IDME     EQU    *-1
          SBN    1
          CRM    RDBH,ON
          SBN    1
          CRM    RDBI,ON
          SBN    1
          CRM    RDBJ,ON
  
*         ISSUE MESSAGES. 
  
          LDC    RDBH        *FILENAME   RECOVERED, EQXXX.* 
          RJM    DFM
          LDM    RDBB,T4
          ZJN    IDM7        IF FILE NOT UPDATED
          LDC    RDBI 
          RJM    DFM         ISSUE MESSAGES 
          LDC    RDBJ 
          RJM    DFM
 IDM7     LJM    IDM6        ADVANCE TO NEXT FILE 
  
 IDMF     DATA   H* YY/MM/DD. DEAD START LEVEL *
 IDMF1    DATA   C* 0.* 
  
 IDMG     CON    DM0406,DS0101  MAINTENANCE LOG CREATION MESSAGE
          BSSZ   IDMG+6-* 
 IDMGL    EQU    *-IDMG      LENGTH OF MESSAGE
  
 IDMH     CON    DM0407,DS0100  MAINTENANCE LOG MICROCODE/EI MESSAGE
          VFD    36/0 
 IDMH1    BSSZ   3*5         MESSAGE
 IDMHL    EQU    *-IDMH 
  
 IDMI     DATA   H*MICROCODE, *  ERRLOG MICROCODE/EI MESSAGES 
 IDMJ     BSSZ   15 
 IDMK     DATA   H*EI, *
 IDML     BSSZ   6
  
 IDMM     DATA   H*    ABST, *  SYSTEM TITLE MESSGE 
 IDMM2    BSSZ   24          MESSAGE BUFFER 
 IDMM1L   EQU    *-IDMM 
  
 IDMN     DATA   H*    ABSV, *   SYSTEM VERSION MESSAGE 
 IDMN2    BSSZ   12          MESSAGE BUFFER 
 IDMN1L   EQU    *-IDMN 
 BRM      SPACE  4,10 
**        BRM - BUFFERED I/O RECOVERY MESSAGE GENERATOR.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  IGM, IPM.
  
  
 BRM      SUBR               ENTRY/EXIT 
          LDC    BIOL 
          CRD    CM 
          LDD    CM+1 
          ADD    CM+2 
          ZJN    BRMX        IF BUFFERED I/O NOT DEFINED
          RJM    IGM         ISSUE GENERAL MESSAGES 
          RJM    IPM         ISSUE *PUT* RELATED MESSAGES 
          UJN    BRMX        RETURN 
 IGM      SPACE  4,10 
**        IGM - ISSUE GENERAL RECOVERY MESSAGES.
* 
*         USES - T3, CM - CM+4, FN - FN+4.
* 
*         CALLS  DFM. 
  
  
 IGM      SUBR               ENTRY/EXIT 
          LDN    REML 
          CRD    FN 
          LDD    FN+4 
          ZJN    IGMX        IF NO MESSAGES TO ISSUE
          LDC    IGMA+ERLN   ISSUE HEADER MESSAGE 
          RJM    DFM
*         LDN    0           INITIALIZE POINTER 
          STD    T3 
 IGM1     LDD    FN+4 
          SHN    21-0 
          STD    FN+4 
          PJN    IGM2        IF MESSAGE NOT SELECTED
          LDM    IGMB,T3
          ADC    ERLN 
          RJM    DFM
 IGM2     AOD    T3 
          LMN    IGMBL
          ZJN    IGMX        IF END OF MESSAGES 
          UJN    IGM1        CHECK NEXT MESSAGE 
  
  
 IGMA     DATA   C* BUFFERED I/O RECOVERY ERRORS.*
 IGMB     CON    =C*   WRITE LIST LINKAGE ERROR.* 
          CON    =C*   READ DATA ON WRITE LIST.*
          CON    =C*   INTERLOCKED BUFFER ON WRITE LIST.* 
          CON    =C*   WRITE LIST BUFFER COUNT.*
          CON    =C*   NON-LINKED WRITE BUFFER.*
 IGMBL    EQU    *-IGMB 
 IPM      SPACE  4,10 
**        IPM - ISSUE *PUT* RELATED RECOVERY ERROR MESSAGES.
* 
*         USES   T3, CM - CM+4, CN - CN+4, FN - FN+4. 
* 
*         CALLS  DFM. 
  
  
 IPM      SUBR               ENTRY/EXIT 
          LDC    BIOL        SET UP *PUT* SCAN
          CRD    CM 
          LDD    CM+1 
          SHN    14 
          LMD    CM+2 
          ADN    PUTP        READ *PUT* POINTERS
          CRD    CN 
          LDD    CN+3        CLEAR FLAGS
          LPN    77 
          STD    CN+3 
          AOD    CN 
 IPM1     SOD    CN 
          ZJN    IPMX        IF END OF *PUT* ENTRIES
          LDN    PUTL        INCREMENT *PUT* ADDRESS
          RAD    CN+4 
          SHN    -14
          RAD    CN+3 
          SHN    14 
          LMD    CN+4 
          ADK    UNCT 
          CRD    CM 
          ADN    PILL-UNCT
          CRD    FN 
          LDD    FN 
          ZJN    IPM1        IF NO ERRORS FOR THIS *PUT*
          LDD    CM+1        SET EST ORDINAL IN MESSAGE 
          RJM    C2D
          STM    IPMA+21
          LDD    CM+1 
          SHN    -6 
          ADC    2RQ0 
          STM    IPMA+20
          LDC    IPMA+ERLN   ISSUE HEADER MESSAGE 
          RJM    DFM
*         LDN    0
          STD    T3 
 IPM2     LDD    FN 
          SHN    21-0 
          STD    FN 
          PJN    IPM3        IF MESSAGE NOT SELECTED
          LDM    IPMB,T3
          ADC    ERLN 
          RJM    DFM
 IPM3     AOD    T3 
          LMN    IPMBL
          NJN    IPM2        IF NOT END OF MESSAGES 
          LJM    IPM1        LOOP FOR NEXT *PUT*
  
  
 IPMA     DATA   C* BUFFERED I/O RECOVERY ERRORS  EQXXX.* 
  
 IPMB     CON    =C*   I/O QUEUE SIZE ERROR.* 
          CON    =C*   I/O QUEUE LINKAGE ERROR.*
          CON    =C$   I/0 QUEUE *PUT* ORDINAL ERROR.$
 IPMBL    EQU    *-IPMB 
          SPACE  4,10 
          USE    LITERALS 
          OVERFLOW IDMX 
          QUAL
          TTL    REC/4RF - MANAGED TABLE RECOVERY.
          TITLE 
          QUAL   MTR
          IDENT  4RF,MTRX 
*COMMENT  REC - MANAGED TABLE RECOVERY. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 MTR      SPACE  4,10 
***       MTR - MANAGED TABLE RECOVERY. 
          SPACE  4,10 
          ORG    OVLC 
  
  
**        MTR - MANAGED TABLE RECOVERY. 
* 
*         EXIT   (EJTA) = PRIMARY FILE VALIDATION FLAG. 
*                (RPFA) = MASS STORAGE VALIDATION FLAG. 
* 
*         USES   CN - CN+4. 
  
  
 MTR      SUBR               ENTRY/EXIT 
          LDN    SSTL        READ SYSTEM STATUS 
          CRD    CN 
          LDD    CN 
          LPN    4
          NJN    MTRX        IF MASS STORAGE VALIDATION NOT PRESENT 
          LDD    RS 
          SHN    21-6 
          ERRNZ  JBCM-100    ADJUST IF VALUE CHANGES
          PJN    MTR1        IF NOT CM RECOVERY 
          LDD    CN 
          LPN    20 
          NJN    MTRX        IF FILE VALIDATION DISABLED
          LDC    LDDI+QA     ENABLE PRIMARY FILE VALIDATION 
          STM    EJTA 
          LDK    LDNI+PMFT
          STM    FNTA 
 MTR1     SOM    RECA 
          UJN    MTRX        RETURN 
 CNA      SPACE  4,10 
**        CNA - CLEAR NON-ROLLABLE ACCESS FLAG. 
* 
*         ENTRY  (FS - FS+4) = FST ENTRY. 
* 
*         USES   T5, T6, CM - CM+4. 
* 
*         CALLS  RSS, WSS.
* 
*         MACROS ENDMS, SETMS, SFA. 
  
  
 CNA      SUBR               ENTRY/EXIT 
          LDD    FS          SET EQUIPMENT
          STD    T5 
          SFA    EST         FETCH EST ENTRY
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          LPN    20 
          ZJN    CNAX        IF NOT INDEPENDENT SHARED DEVICE 
          SETMS  IO,RW
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          LDN    0           SET NO FILE NAME VERIFICATION
          RJM    RSS         READ SYSTEM SECTOR 
          NJN    CNA1        IF SYSTEM SECTOR ERROR 
          LDM    /COMSPFM/CASS  CLEAR NON-ROLLABLE ACCESS 
          LPC    7545 
          STM    /COMSPFM/CASS
          RJM    WSS         REWRITE SYSTEM SECTOR
 CNA1     ENDMS 
          UJN    CNAX        RETURN 
 CLT      SPACE  4,15 
**        CLT - PROCESS COMMON LIBRARIES TABLE RECOVERY.
* 
*         ENTRY  (EC) = NUMBER OF TABLE ENTRIES.
*                (LM) = NUMBER OF ENTRIES IN USE. 
*                (QA) = (QI) = 0. 
* 
*         EXIT   (A) = 0 IF VALIDATION INFORMATION CLEARED FROM TABLE.
* 
*         USES   LM, QA, CM - CM+4, FN - FN+4, FS - FS+4. 
* 
*         MACROS SFA. 
  
  
 CLT3     LDN    1           RETURN ERROR INDICATOR 
  
 CLT      SUBR               ENTRY/EXIT 
          LDD    EC 
          ZJN    CLTX        IF NO COMMON LIBRARIES TABLE EXISTS
 CLT1     SOD    LM 
          ZJN    CLTX        IF ALL ASSIGNED ENTRIES CHECKED
 CLT2     AOD    QA 
          LMD    EC 
          ZJN    CLT3        IF END OF CLT
          SFA    CLT,QA      READ CLT ENTRY 
          CRD    CM 
          ADN    CLTF-CLTU
          CRD    FN 
          ADN    CLTV-CLTF
          CRD    FS 
          LDD    CM 
          ZJN    CLT2        IF EMPTY ENTRY 
          LDD    CM+3        CLEAR USER INDEX 
          SCN    77 
          STD    CM+3 
          LDN    0
          STD    CM+4 
          STD    FN+4        CLEAR FAMILY EQUIPMENT 
          STD    FS+4        CLEAR PF VALIDATION
          SFA    CLT,QA      REWRITE COMMON LIBRARIES ENTRY 
          CWD    CM          WRITE USER NAME
          ADN    CLTF-CLTU   WRITE FAMILY NAME
          CWD    FN 
          ADN    CLTV-CLTF   WRITE PF VALIDATION
          CWD    FS 
          UJN    CLT1        LOOP FOR NEXT ENTRY
 EJT      SPACE  4,15 
**        EJT - PROCESS EXECUTING JOB TABLE RECOVERY. 
* 
*         ENTRY  (EC) = NUMBER OF TABLE ENTRIES.
*                (LM) = NUMBER OF ENTRIES IN USE. 
*                (QA) = (QI) = (QT) = 0.
* 
*         EXIT   (A) = 0 IF TABLE FULLY RECOVERED.
* 
*         USES   LM, QA, QI, T5 - T7, CM - CM+1, FN - FN+4, 
*                FS - FS+4. 
* 
*         CALLS  RRF, VEI.
* 
*         MACROS SFA. 
  
  
 EJT7     LDN    1           RETURN ERROR INDICATOR 
  
 EJT      SUBR               ENTRY/EXIT 
 EJT1     LDD    QI          CHECK JOB STATUS 
 EJT2     SBN    MXJS 
          PJN    EJT3        IF NON-STANDARD STATUS 
          AOM    EJCT,QI
 EJT3     SOD    LM 
          ZJN    EJTX        IF ALL ASSIGNED ENTRIES CHECKED
 EJT4     AOD    QA 
          LMD    EC 
          ZJN    EJT7        IF END OF EJT
          SFA    EJT,QA 
          ADK    JSNE 
          CRD    FN          READ EJT ENTRY 
          ADN    SCHE-JSNE
          CRD    T5          READ ROLLOUT FILE POINTERS 
          ADN    SCLE-SCHE
          CRD    FS          READ JOB ORIGIN TYPE 
          LDD    FN 
          ZJN    EJT4        IF EMPTY SLOT
          LDD    FN+4 
          LPN    77 
          SHN    21-0        SET JOB STATUS 
          STD    QI 
          PJN    EJT5        IF ENTRY NOT BUSY
          LDD    FN+4        CLEAR JOB ADVANCE/BUSY STATUS
          LPC    7676 
          STD    FN+4 
          SFA    EJT,QA      CLEAR FILE BUSY
          CWD    FN 
          LDD    QI          CHECK JOB STATUS 
 EJT5     LMK    PRJS 
          ZJN    EJT6        IF PRE-INITIAL JOB STATUS
          LMK    PWJS&PRJS
          ZJN    EJT6        IF PRE-INITIAL WAIT JOB STATUS 
          LMK    EXJS&PWJS
          ZJN    EJT6        IF EXECUTING JOB STATUS
          LMK    NVJS&EXJS
          ZJN    EJT6        IF NVE ENTRY 
          RJM    RRF         READ ROLLOUT FILE
 EJTA     UJN    EJT6        PROCESS NEXT ENTRY 
*         LDD    QA          (MS VALIDATION ENABLED ON CM RECOVERY) 
          SFA    EJT
          ADN    PRFE        FETCH PRIMARY FILE POINTERS
          CRD    FS-3 
          RJM    VEI         VERIFY PRIMARY FILE
 EJT6     LJM    EJT1        PROCESS NEXT ENTRY 
 FNT      SPACE  4,15 
**        FNT - PROCESS FILE NAME TABLE RECOVERY. 
* 
*         ENTRY  (EC) = NUMBER OF TABLE ENTRIES.
*                (LM) = NUMBER OF ENTRIES IN USE. 
*                (QA) = (QI) = 0. 
* 
*         EXIT   (A) = 0 IF TABLE FULLY RECOVERED.
* 
*         USES   LM, QA, QT, CM - CM+4, FN - FN+4, FS - FS+4. 
* 
*         CALLS  CNA, VEI.
* 
*         MACROS MONITOR, SFA.
  
  
 FNT7     LDN    1           RETURN ERROR INDICATOR 
  
 FNT      SUBR               ENTRY/EXIT 
 FNT1     SOD    LM 
          ZJN    FNTX        IF ALL ASSIGNED ENTRIES CHECKED
 FNT2     AOD    QA 
          LMD    EC 
          ZJN    FNT7        IF END OF FNT
          SFA    FNT,QA 
          CRD    FN          READ FNT ENTRY 
          ADN    FSTG 
          CRD    FS 
          LDD    FN 
          ZJN    FNT2        IF EMPTY SLOT
          LDD    FN+4 
          SHN    -6 
          LMN    SYFT 
          ZJN    FNT3        IF INACTIVE FAST ATTACH FILE 
          LMN    FAFT&SYFT
          NJN    FNT5        IF NOT ACTIVE FAST ATTACH FILE 
          AOM    MSCT+FACT
          LDD    FS+4 
          SHN    21-1 
          PJN    FNT3        IF NOT ATTACHED WITH NON-ROLLABLE OPTION 
          LDD    FS+4        CLEAR NON-ROLLABLE ACCESS IN FST 
          LPC    375
          STD    FS+4 
          RJM    CNA         CLEAR SYSTEM SECTOR FLAG 
 FNT3     LDD    FN+4 
          SCN    1
          STD    FN+4 
          SFA    FNT,QA      CLEAR FILE BUSY
          CWD    FN 
          ADN    FSTG 
          CWD    FS 
 FNT4     LJM    FNT1        LOOP FOR NEXT ENTRY
  
 FNT5     LMN    PMFT&FAFT
          ZJN    FNT6        IF *CPD* SAMPLE FILE 
          LDD    QA 
          STD    CM+1 
          LDN    PFNT        RELEASE FNT ENTRY
          STD    CM+2 
          MONITOR  MTRM 
          UJN    FNT4        LOOP FOR NEXT ENTRY
  
 FNT6     UJN    FNT4        SKIP EOI VERIFICATION
*         LDN    PMFT        (MS VALIDATION ENABLED ON CM RECOVERY) 
 FNTA     EQU    *-1
          STD    QT 
          RJM    VEI         VERIFY EOI 
          UJN    FNT4        LOOP FOR NEXT ENTRY
 LLF      SPACE  4,15 
**        LLF - LOCATE LIBRARY FILE.
* 
*         ENTRY  (FS+1) = ADDRESS OF FNT ENTRY IN BUFFER. 
*                (QA) = EJT ORDINAL.
*                (FN - FN+4) = FIRST WORD OF EJT ENTRY. 
* 
*         EXIT   ERROR FLAG SET TO *DRET* IF FILE IS *LIFT* AND 
*                THE TRACK INTERLOCK FLAG IS SET IN THE FST.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 LLF      SUBR               ENTRY/EXIT 
          LDM    4,FS+1 
          SHN    -6 
          LMN    LIFT 
          NJN    LLFX        IF NOT LIBRARY TYPE FILE 
          LDM    11,FS+1
          SHN    21-9D
          PJN    LLFX        IF TRACK INTERLOCK NOT SET 
          LDC    4000+DRET   SET ERROR FLAG 
          STD    CM+1 
          LDD    QA          SET EJT ORDINAL
          STD    CM+2 
          LDD    FN          SET JSN
          STD    CM+3 
          LDD    FN+1 
          STD    CM+4 
          MONITOR  CEFM      CHANGE ERROR FLAG
          UJN    LLFX        RETURN 
 QFT      SPACE  4,15 
**        QFT - PROCESS QUEUE FILE TABLE RECOVERY.
* 
*         ENTRY  (EC) = NUMBER OF TABLE ENTRIES.
*                (LM) = NUMBER OF ENTRIES IN USE. 
*                (EO) = (QA) = (QI) = 0.
* 
*         EXIT   (A) = 0 IF TABLE FULLY RECOVERED.
* 
*         USES   LM, QA, QI, CM - CM+4, FN - FN+4, FS - FS+4. 
* 
*         CALLS  UQE, *0DQ*.
* 
*         MACROS EXECUTE, SFA.
  
  
 QFT10    LDN    1           RETURN ERROR INDICATOR 
  
 QFT      SUBR               ENTRY/EXIT 
 QFT1     AOM    QFCT,QI
 QFT2     SOD    LM 
          ZJN    QFTX        IF ALL ASSIGNED ENTRIES CHECKED
 QFT3     AOD    QA 
          LMD    EC 
          ZJN    QFT10       IF END OF QFT
          SFA    QFT,QA 
          ADK    JSNQ 
          CRD    FN          READ QFT ENTRY 
          ADN    ENTQ-JSNQ
          CRD    FS 
          ADN    SCLQ-ENTQ
          CRD    CM 
          LDD    FN 
          ZJN    QFT3        IF EMPTY SLOT
          LDD    FN+4 
          SHN    -11
          STD    QI          SET QUEUE TYPE 
          LDD    FN+4        CHECK FOR *SOQF* OR *SQQF* FILE
          SHN    -6 
          LMN    SOQF 
          ZJN    QFT8        IF *SOQF*
          LMN    SQQF&SOQF
          ZJN    QFT8        IF *SQQF*
          LDD    FN+4 
          LPN    6
          NJN    QFT6        IF CREATION MODE AND/OR ASSIGNED 
          LDD    QI 
          LMK    INQT 
          NJN    QFT4        IF NOT INPUT FILE
          LDD    CM 
          LPN    77 
          LMN    IAOT 
          ZJN    QFT8        IF INTERACTIVE INPUT FILE
 QFT4     LDD    FN+4 
          LPN    1
          ZJN    QFT5        IF ENTRY NOT INTERLOCKED 
          SOD    FN+4 
          SFA    QFT,QA      CLEAR FILE BUSY
          CWD    FN 
 QFT5     LJM    QFT1        LOOP FOR NEXT ENTRY
  
 QFT6     LPN    4
          NJN    QFT7        IF CREATION MODE 
          LDD    FS+4 
          NJN    QFT4        IF ASSIGNED TO EXECUTING JOB 
          RJM    UQE
          UJN    QFT5        LOOP FOR NEXT ENTRY
  
 QFT7     LDN    1
  
*         CALL *0DQ*. 
  
 QFT8     STM    ZDLA-1      DEQUEUE FILE 
          EXECUTE  0DQ,ZDLA 
 QFT9     LJM    QFT2        LOOP FOR NEXT ENTRY
 RRF      SPACE  4,15 
**        RRF - READ ROLLOUT FILE.
* 
*         ENTRY  (T5) = ROLLOUT FILE EST ORDINAL. 
*                (T6) = ROLLOUT FILE FIRST TRACK. 
*                (FS - FS+4) = *SCLE* WORD OF EJT ENTRY.
*                (FN - FN+4) = *JSNE* WORD OF EJT ENTRY.
* 
*         USES   FS - FS+4, T1, T2, T7, CN. 
* 
*         CALLS  LLF, RNS, RSS. 
* 
*         MACROS ENDMS, SETMS.
  
  
 RRF      SUBR               ENTRY/EXIT 
          LDD    T5 
          ZJN    RRFX        IF NO ROLLOUT FILE 
          SETMS  IO 
          LDN    0
          RJM    RSS         READ SYSTEM SECTOR 
          NJN    RRFX        IF ERROR 
          LDC    BUF         READ CONTROL POINT AREA
          RJM    RNS
          MJN    RRFX        IF ERROR 
          AOD    T7          SKIP SECOND CP AREA SECTOR 
          LDM    BUF+2+FLSW*5  GET NFL SIZE 
          SBN    FNTS-1 
          STD    CN          SET NUMBER OF FNT SECTORS
          LDD    FS          CHECK ORIGIN TYPE
          LPN    17 
          LMN    IAOT 
          NJN    RRF3        IF NOT INTERACTIVE ORIGIN
 RRF1     LDC    BUF         SKIP TERMINAL OUTPUT 
          RJM    RNS
 RRF2     MJN    RRFX        IF ERROR 
          LDD    T1 
          SHN    -6 
          NJN    RRF1        IF MORE DATA SECTORS 
 RRF3     LDC    SBUF        INITIALIZE SEARCH ADDRESS
          STD    FS+1 
          SBN    2           INITIALIZE BUFFER POINTER
          STD    FS+2 
          LDN    0           SET INITIAL SEARCH MODE FLAG 
          STD    T2 
          LDN    5           SET INITIAL ADVANCE COUNT
          STD    FS 
  
*         FILL BUFFER WITH DATA.
  
 RRF4     LDD    FS+2 
          ADC    -SBUF-SBUFL+2
          PJN    RRF6        IF BUFFER IS FULL
 RRF5     LDI    FS+2        SAVE TWO BYTES 
          STD    FS+3 
          LDM    1,FS+2 
          STD    FS+4 
          LDD    FS+2        READ SECTOR
          RJM    RNS
          MJN    RRF2        IF ERROR 
          LDD    FS+3        RESTORE TWO BYTES
          STI    FS+2 
          LDD    FS+4 
          STM    1,FS+2 
          LDC    500         ADVANCE BUFFER POINTER 
          RAD    FS+2 
          SOD    CN          DECREMENT SECTOR COUNT 
          NJN    RRF4        IF MORE TO READ
          LDK    -FNTT*5     ADJUST POINTER TO THE LAST FNT ENTRY 
          RAD    FS+2 
  
*         PROCESS FULL BUFFER.
  
 RRF6     LDD    FS+2        CHECK FOR END OF BUFFER
          ADN    2
          SBD    FS+1 
          SBN    LENF*5 
          MJN    RRF9        IF END OF BUFFER 
          LDI    FS+1 
          ZJN    RRF8        IF EMPTY ENTRY 
          LDD    T2 
          NJN    RRF7        IF START OF FNT-S PREVIOUSLY FOUND 
          AOD    T2          CHANGE SEARCH MODE FLAG
          LDN    LENF*5      CHANGE ADVANCE COUNT 
          STD    FS 
 RRF7     RJM    LLF         LOCATE LIBRARY FILE
 RRF8     LDD    FS          ADVANCE TO NEXT ENTRY
          RAD    FS+1 
          UJN    RRF6        CHECK NEXT ENTRY 
  
 RRF9     ADN    LENF*5 
          STD    T1          SAVE AMOUNT TO MOVE
          LDD    CN 
          ZJN    RRF13       IF END OF FNT ENTRIES
          LDD    T1 
          NJN    RRF10       IF NOT EXACT END OF BUFFER 
          LDC    SBUF        RESET START OF SEARCH
          STD    FS+1 
          UJN    RRF12       REFILL BUFFER
  
*         MOVE PARTIAL ENTRY TO TOP OF BUFFER.
  
 RRF10    LDD    FS+1        SET ADDRESS TO MOVE FROM 
          STM    RRFA 
          LDC    SBUF        SET ADDRESS TO MOVE TO 
          SBD    T1 
          STM    RRFB 
          STD    FS+1        RESET START OF SEARCH
          SOD    T1 
 RRF11    LDM    **,T1       MOVE PARTIAL ENTRY TO TOP
 RRFA     EQU    *-1         (ADDRESS TO MOVE FROM) 
          STM    **,T1
 RRFB     EQU    *-1         (ADDRESS TO MOVE TO) 
          SOD    T1 
          PJN    RRF11       IF MORE TO MOVE
 RRF12    LDC    SBUF-2      RESET BUFFER POINTER 
          STD    FS+2 
          LJM    RRF5        REFILL BUFFER
  
 RRF13    ENDMS              RELEASE MS RESERVATIONS
          LJM    RRFX        RETURN 
  
  
 ZDLA     EQU    *+1         *0DQ* LOAD ADDRESS 
  
          ERRPL  ZDLA+ZDQL-BFMS  OVERFLOW INTO BUFFER 
  
  
*         ROLLOUT FILE FNT SECTOR BUFFER. 
  
 SBUF     EQU    *+LENF*5-5  LEAVE ROOM FOR FNT ENTRY - ONE WORD
  
          ERRPL  SBUF+SBUFL-EPFW  BUFFER OVERFLOW 
          SPACE  4,10 
          QUAL
 CLT      EQU    /MTR/CLT 
 EJT      EQU    /MTR/EJT 
 FNT      EQU    /MTR/FNT 
 QFT      EQU    /MTR/QFT 
          QUAL   *
          TTL    REC/4RG - PROCESS ERROR LOGS.
          TITLE 
          QUAL   PEL
          IDENT  4RG,PELX 
*COMMENT  REC - PROCESS ERROR LOGS. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 CEL      SPACE  4,10 
***       PEL - PROCESS ERROR LOGS. 
 CEL      SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPCHM 
 CEL      SPACE  4,10 
*         DIRECT CELL DEFINITIONS.
  
  
 AP       EQU    20 - 24     *DSAL* 
 SC       EQU    61          ERROR STATUS 
 EA       EQU    62          ERROR MESSAGE ADDRESS
 WX       EQU    63          ASSEMBLY BUFFER INDEX
 BX       EQU    64          SUPPLEMENT INDEX 
 CX       EQU    65          CEL BUFFER INDEX 
 CEL      SPACE  4,10 
*         CONSTANTS.
  
  
 AC       EQU    0           *APP* INTERFACE CHANNEL
 CEL      SPACE  4,10 
          ORG    OVLD 
  
 PEL      SUBR               ENTRY/EXIT 
          LDC    OVL0        SET MASS STORAGE IDENT LOAD ADDRESS
          STD    LA 
          LDN    3           ISSUE BOTH ERRLOG AND BML MESSAGES 
          RJM    IME         IDENTIFY MASS STORAGE EQUIPMENT
          RJM    CEL         DUMP DEADSTART ERROR LOG 
          RJM    IEL         INITIATE *DFT* ERROR LOGGING 
          UJN    PELX        RETURN 
 CEL      SPACE  4,10 
**        CEL - DUMP CRITICAL ERROR LOG.
* 
*         USES   CM+1, EA, AP - AP+4. 
* 
*         CALLS  AAP, DAP, DFM, LPR, PCL. 
* 
*         MACROS MONITOR. 
  
  
 CEL      SUBR               ENTRY/EXIT 
          LDK    DSAL        READ *APP* PARAMETERS
          CRD    AP 
          RJM    LPR         PLACE *PPR* IN *DBUF*
          RJM    AAP         ACTIVATE *APP* 
          MJN    CEL1        IF *APP* NOT RESPONDING
          RJM    PCL         PROCESS CRITICAL ERROR LOG 
          MJN    CEL2        IF *APP* NOT RESPONDING
          RJM    DAP         TERMINATE *APP* AND LOAD *PPR* 
          ZJN    CEL2        IF NO ERRORS 
 CEL1     STD    EA 
 CEL2     LDN    0           DROP *APP* INTERFACE CHANNEL 
 CELA     EQU    CEL2 
          ZJN    CEL3        IF CHANNEL NOT RESERVED
          STD    CM+1 
          MONITOR  DCHM 
 CEL3     LDD    EA 
          ZJN    CELX        IF NO ERROR
          LMC    ERLN        ISSUE MESSAGE TO ERROR LOG 
          RJM    DFM
          LJM    CELX        RETURN 
 AAP      SPACE  4,10 
**        AAP - ACTIVATE *APP*. 
* 
*         ENTRY  (AP - AP+4) = *DSAL*.
* 
*         EXIT   (A) = 1/1, 5/0, 12/MESSAGE ADDRESS IF *APP* NOT
*                      RESPONDING.
*         (EA) = (SC) = 0.
* 
*         CALLS  ECI, PRS.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 AAP      SUBR               ENTRY/EXIT 
          LDC    CHTP 
          CRD    CM 
          LDN    NCTAL       SET CHANNEL TABLE LENGTH 
          STD    CM 
          LDD    CM+2        READ UP CHANNEL TABLE
          SHN    14 
          LMD    CM+3 
          CRM    BFMS,CM
          LDM    BFMS,AP     CHECK *APP* CHANNEL
          LPN    40 
          NJN    APP1        IF CHANNEL DOWN
          LDD    AP 
          STD    CM+1        SET CHANNEL IN REQUEST 
          STD    CM+2 
          RAM    CELA 
          MONITOR  RCHM      RESERVE THE CHANNEL
 APP1     LDN    0
          STD    EA          INITIALIZE MESSAGE ADDRESS 
          STD    SC 
          LDN    DSCL        FETCH DEADSTART CONTROL WORD 
          CRD    CM 
          LDD    AP 
          LMC    4000        ACTIVATE ALTERNATE PP
          STD    CM 
          LDK    DSCL        POST REQUEST 
          CWD    CM 
          LDD    AP          PRESET CHANNEL INSTRUCTIONS
          RJM    /COMPAPI/PRS 
          LDC    IJMI        WAIT FOR CHANNEL ACTIVE
          RJM    /COMPAPI/ECI 
          SHN    0-13 
          ZJN    AAP2        IF NO ERROR
          LDC    /COMPAPI/CAIA+400000 
 AAP2     UJP    AAPX        RETURN 
 CCF      SPACE  4,10 
**        CCF - CLEAR CEL FLAG IN DEADSTART SECTOR. 
* 
*         EXIT   (A) = 0  IF CEL FLAG CLEARED.
*                    .NE. 0  IF I/O ERROR.
* 
*         CALLS  FEE, WDS, *0PI*. 
* 
*         MACROS ENDMS, EXECUTE.
  
  
 CCF2     LDC    =C*DEADSTART SECTOR ERROR.*
  
 CCF      SUBR               ENTRY/EXIT 
          RJM    FEE         FIND EST ENTRY OF DEADSTART DISK 
          NJN    CCFX        IF EST ENTRY NOT FOUND 
          LDD    T5          SET *0PI* PARAMETERS 
          LMC    4000 
          STM    OVL0-1 
          EXECUTE  0PI,OVL0  READ DEADSTART SECTOR
 CCF1     NJN    CCF2        IF NOT A VALID DEADSTART SECTOR
          LDM    BFMS+CFBP
          SCN    20          CLEAR CEL FLAG 
          STM    BFMS+CFBP
          LDC    BFMS+WLSF   REWRITE DEADSTART SECTOR 
          RJM    WDS
          MJN    CCF1        IF I/O ERROR 
          ENDMS 
*         LDN    0
          LJM    CCFX        RETURN 
 CSC      SPACE  4,10 
**        CSC - COMPUTE SYMPTOM CODE. 
* 
*         ENTRY  (CX) = CEL BUFFER INDEX. 
* 
*         EXIT   (A) = SYMPTOM CODE.
* 
*         USES   T0.
  
  
 CSC      SUBR               ENTRY/EXIT 
          LDM    BFMS+APDL,CX 
          SHN    -10
          STD    T0 
          LDN    2
          SBD    T0 
          SHN    10 
          ADK    /COMSDFS/HS0001
          UJN    CSCX        RETURN 
 DAP      SPACE  4,10 
**        DAP - DEADSTART *APP*.
* 
*         EXIT   (A) = 0 IF NO ERROR LOADING *PPR*. 
  
  
 DAP      SUBR               ENTRY/EXIT 
          LDC    **          (ERROR MESSAGE ADDRESS)
 DAPA     EQU    *-1
          NJN    DAPX        IF *PPR* LOAD FAILURE
          LDK    MSFW+1      OUTPUT P ADDRESS 
          OAN    AC 
          LDK    PPFW-1      OUTPUT *PPR* 
          OAM    DBUF+6,AC
          FJM    *,AC        IF CHANNEL FULL
          DCN    AC 
*         LDN    0
          UJN    DAPX        RETURN 
 FAB      SPACE  4,10 
**        FAB - FLUSH ASSEMBLY BUFFER.
* 
*         EXIT   (WX) = 0.
* 
*         USES   T1, WX.
* 
*         CALLS  DFM. 
  
  
 FAB      SUBR               ENTRY/EXIT 
          LDN    6*5         SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    MBUF+BMLN   ISSUE BML MESSAGE
          RJM    DFM
*         LDN    0           RESET ASSEMBLY BUFFER INDEX
          STD    WX 
          LDN    3*5+4       CLEAR REGISTER AREA OF BUFFER
          STD    T1 
 FAB1     LDN    0
          STM    MBUF+2*5,T1
          SOD    T1 
          PJN    FAB1        IF MORE BYTES TO CLEAR 
          UJN    FABX        RETURN 
 FEE      SPACE  4,10 
**        FEE - FIND EST ENTRY OF DEADSTART DISK. 
* 
*         ENTRY  (AP+4) = 6/UNIT, 6/CHANNEL.
* 
*         EXIT   (A) = 0  IF EST ENTRY FOUND. 
*                    = ERROR MESSAGE ADDRESS IF EST ENTRY NOT FOUND.
*                (T5) = DEADSTART DISK EST ORDINAL. 
* 
*         USES   T2 - T6, CM - CM+4.
* 
*         MACROS SFA. 
  
  
 FEE4     LDC    =C*CEL DEVICE UNDEFINED.*
  
 FEE      SUBR               ENTRY/EXIT 
          LDK    ESTP 
          CRD    T2 
 FEE1     SOD    T5          DECREMENT EST ORDINAL
          LMK    NOPE-1 
          ZJN    FEE4        IF END OF EST SCAN 
          LMK    NOPE-1 
          SFA    EST
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    -6 
          LPN    42 
          LMN    42 
          NJN    FEE1        IF NOT MASS STORAGE/*LDAM* DEVICE
          LDD    CM+1 
          LMD    AP+4 
          LPN    77 
          ZJN    FEE3        IF MATCH ON PRIMARY CHANNEL
          LDD    CM+2 
          ZJN    FEE1        IF NO ALTERNATE ACCESS 
          LMD    AP+4 
          LPN    77 
 FEE2     NJN    FEE1        IF NOT A MATCH ON SECONDARY CHANNEL
 FEE3     LDD    CM+4 
          SHN    3
          ADK    DDLL 
          CRD    CM 
          LDD    AP+4 
          SHN    -6 
          LMD    CM+4 
          LPN    77 
          NJN    FEE2        IF NOT A MATCH ON UNIT 
          LJM    FEEX        RETURN 
 IBM      SPACE  4,15 
**        IBM - ISSUE BML MESSAGES. 
* 
*         ENTRY  (BFMS) = WORD COUNT. 
*                (BFMS+1 - BFMS+477) = CEL SECTOR.
* 
*         EXIT   (EA) = ERROR MESSAGE ADDRESS IF BAD WORD COUNT.
* 
*         USES   BX, CX, EA, EI, T6, T7, WX, CM - CM+4, CN - CN+4.
* 
*         CALLS  CSC, FAB, MSW, TRS.
  
  
 IBM      SUBR               ENTRY/EXIT 
          LDC    MMFL        SET MACHINE ID INTO BML
          CRD    CN 
          LDD    CN 
          STM    MBUF+5+3 
          LDK    PPCP 
          CRD    CN 
          LDD    IA          DETERMINE PP NUMBER
          SBD    CN+4 
          SHN    3
          RAM    MBUF+2 
          LDK    ZERL        INITIALIZE SUPPLEMENT WORD 
          CRD    CN 
          LDN    0           INITIALIZE INDEX CELLS 
          STD    WX 
          STD    BX 
          STD    CX 
 IBM1     RJM    CSC         COMPUTE SYMPTOM CODE 
          STM    MBUF+1 
          LDN    4           SET CONTINUATION FLAG
          STM    MBUF+5+1 
          LDM    BFMS+APDL+6,CX  SET ELEMENT NUMBER 
          LPN    7
          STD    T7          SAVE ELEMENT NUMBER
 IBM2     LDC    BFMS+APDL+1  STORE BITS 0 - 59 OF REGISTER 
          ADD    CX 
          STM    IBMA 
          LDD    WX 
          SHN    2
          ADD    WX 
          ADC    MBUF+2*5 
          STM    IBMB 
          LDD    MA 
          CWM    **,ON
 IBMA     EQU    *-1
          SBN    1
          CRM    **,ON
 IBMB     EQU    *-1
          AOD    WX          INCREMENT ASSEMBLY BUFFER INDEX
          LDM    BFMS+APDL+6,CX  STORE REGISTER NUMBER AND UPPER BITS 
          SCN    7
          STM    CN,BX
          LDM    BFMS+APDL,CX 
          LPC    377
          RAM    CN,BX
          AOD    BX          INCREMENT SUPPLEMENT BYTE INDEX
 IBM3     LDD    WX 
          LMN    4
          NJN    IBM4        IF NOT FULL ASSEMBLY BUFFER
          RJM    FAB         FLUSH ASSEMBLY BUFFER
          LDM    MBUF+5+1    SET NOT FIRST BLOCK BIT
          SCN    10 
          LMN    10 
          STM    MBUF+5+1 
 IBM4     LDD    BX 
          LMN    4
          NJN    IBM5        IF SUPPLEMENT WORD NOT FULL
          RJM    MSW         MOVE SUPPLEMENT WORD TO ASSEMBLY BUFFER
          UJN    IBM3        CHECK FOR ASSEMBLY BUFFER FULL 
  
 IBM5     LDN    7           ADVANCE CEL BUFFER INDEX 
          RAD    CX 
          SBM    BFMS 
          NJN    IBM7        IF NOT END OF CEL BUFFER 
 IBM6     RJM    TRS         TERMINATE REGISTER SET 
          LJM    IBMX        RETURN 
  
 IBM7     PJN    IBM10       IF BAD WORD COUNT
          RJM    CSC         COMPUTE SYMPTOM CODE 
          LMM    MBUF+1 
          NJN    IBM8        IF SYMPTOM CODE CHANGED
          LDM    BFMS+APDL+6,CX 
          LPN    7
          LMD    T7 
          ZJN    IBM9        IF ELEMENT NUMBER UNCHANGED
  
*         CHECK IF NEXT REGISTER IS FOR THE SECOND PROCESSOR. 
  
          LDM    BFMS+APDL,CX 
          SHN    0-10 
          NJN    IBM8        IF NOT A PROCESSOR ERROR 
  
*         CHANGE ELEMENT NUMBER IN BITS 32 - 39 OF ELEMENT ID REGISTER
*         TO 10(16) TO INDICATE SECOND PROCESSOR. 
  
          LDM    BFMS+APDL+3,CX 
          SCN    17 
          ADK    0#10S-4     SET ELEMENT NUMBER TO 10(16) 
          STM    BFMS+APDL+3,CX 
 IBM8     RJM    TRS         TERMINATE REGISTER SET 
          LJM    IBM1        PROCESS NEXT REGISTER SET
  
 IBM9     LJM    IBM2        PROCESS NEXT REGISTER
  
 IBM10    LDC    =C*BAD CEL WORD COUNT.*
          STD    EA 
          LJM    IBM6        TERMINATE REGISTER SET AND RETURN
  
  
 MBUF     BSS    0           BML MESSAGE HEADER 
  
          VFD    12//COMSDFS/HM0250  MESSAGE ID 
          VFD    12/0        SYMPTOM CODE 
          VFD    6/0         PP NUMBER
          VFD    6/17        MAINTENANCE CHANNEL
          VFD    24/0        UNUSED 
  
          VFD    12/0        UNUSED 
          VFD    12/4        CONTINUATION FLAG
          VFD    12/0        UNUSED 
          VFD    12/0        MACHINE ID 
          VFD    12/0        UNUSED 
  
          BSSZ   4*5         MESSAGE ASSEMBLY BUFFER
 IEL      SPACE  4,10 
**        IEL - INITIATE ERROR LOGGING BY *DFT*.
* 
*         EXIT   TO *ERR* IF *DFT* DETERMINES THE REVISION LEVEL OF THE 
*                *DFT/OS* INTERFACE IS INCORRECT. 
*                *1MB* INHIBIT FLAG IN *SCRL* CLEARED.
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS DCHAN, DELAY, EXECUTE, MONITOR, RCHAN. 
  
  
 IEL      SUBR               ENTRY/EXIT 
          LDK    EIBP        READ *EICB* POINTER WORD 
          CRD    CM 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          ZJP    IEL2        IF NO *DFT* VERIFICATION REQUIRED
          ADN    DSCM+3 
          CRD    CM 
          LDD    CM+2        SAVE ADDRESS OF *DFT* CONTROL WORD 
          SHN    14 
          LMD    CM+3 
          SHN    -4 
          SHN    6
          LMD    CM 
          CRD    CM          READ *DFT* CONTROL WORD
          STM    IELA 
          SHN    -14
          RAM    IELA-1 
          LDD    CM+4 
          SHN    21-/DFT/DCDM 
          MJN    IEL0        IF NOT DEDICATED *DFT* 
          LDN    DSAL        RESERVE *CIP* CHANNEL
          CRD    CM 
          LDD    CM+4 
          LPN    77 
          STD    T1          SAVE CHANNEL 
          RCHAN 
 IEL0     LDD    MA 
          CWM    IELB,ON     WRITE PP CALL TO MESSAGE BUFFER
          LDN    0
          STD    CM+1 
          EXECUTE  1MP,=
          MONITOR  RPPM      REQUEST PP FOR *1MB* 
 IEL1     DELAY 
          LDC    **          READ *DFT* CONTROL WORD
 IELA     EQU    *-1
          CRD    CM 
          LDD    CM+4        CHECK RESPONSE 
          STD    T2 
          SHN    21-/DFT/DCVR  CHECK VERIFICATION FLAG
          PJN    IEL1        IF NO REPLY FROM *DFT* 
          SHN    /DFT/DCVR-/DFT/DCDM
          MJN    IEL1.1      IF NOT DEDICATED *DFT* 
          LDD    T1          RELEASE *CIP* CHANNEL
          DCHAN 
 IEL1.1   LDD    T2          CHECK RESPONSE 
          SHN    21-/DFT/DCRJ 
          MJN    IEL4        IF REVISION LEVEL REJECTED BY *DFT*
          SHN    /DFT/DCRJ-/DFT/DCDM
          MJN    IEL3        IF NOT DEDICATED *DFT* 
  
*         CLEAR *1MB* INHIBIT FLAG IN *SCRL*. 
  
 IEL2     LDC    SCRL        READ *SCRL*
          CRD    CM 
          LDD    CM          CLEAR *1MB* INHIBIT FLAG 
          LPC    3777 
          STD    CM 
          LDC    SCRL        REWRITE *SCRL* 
          CWD    CM 
 IEL3     LJM    IELX        RETURN 
  
*         PROCESS *DFT* REJECT. 
  
 IEL4     LDC    IELC        *DFT REVISION LEVEL MISMATCH*
          LJM    ERR         DISPLAY MESSAGE AND HANG 
  
  
 IELB     VFD    18/3L1MP,6/**,12/0,24/0
 IELC     DATA   C*DFT REVISION LEVEL MISMATCH.*
 LPR      SPACE  4,10 
**        LPR - LOAD AND PREPARE *PPR* IN *DBUF*. 
* 
*         ENTRY  (AP - AP+4) = *DSAL*.
* 
*         EXIT   (DBUF - DBUF+PPFW-1) = *PPR*.
* 
*         USES   T1, T2, T5 - T7, CM - CM+4, CN - CN+4. 
* 
*         CALLS  RNS. 
* 
*         MACROS ENDMS, MONITOR, SETMS. 
  
  
 LPR      SUBR               ENTRY/EXIT 
          LDC    0L1PR       SET *PPR* NAME 
          STD    CM+3 
          SHN    -14
          STD    CM+2 
          MONITOR  SPLM      SEARCH PERIPHERAL LIBRARY
          LDD    CM+1        SET EST ORDINAL
          LPC    777
          STD    T5 
          LDD    CM+2        SET TRACK NUMBER 
          STD    T6 
          LDD    CM+3        SET SECTOR NUMBER
          STD    T7 
          SETMS  READSYS,ND 
          LDC    DBUF-2 
          STD    T2 
 LPR1     LDI    T2          SAVE TWO WORDS 
          STD    CN 
          LDM    1,T2 
          STD    CN+1 
          LDD    T2 
          RJM    RNS         READ NEXT SECTOR 
          MJN    LPR3        IF I/O ERROR 
          LDD    CN          RESTORE TWO WORDS
          STI    T2 
          LDD    CN+1 
          STM    1,T2 
          LDC    500         ADVANCE BUFFER ADDRESS 
          RAD    T2 
          LDD    T1 
          SHN    -6 
          NJN    LPR1        IF NOT END OF *PPR*
          ENDMS 
          LDK    PPCP        GET FWA OF PP COMMUNICATIONS AREA
          CRD    CM 
          LDD    AP          *APP* PP NUMBER
          SHN    3
          ADD    CM+4 
          STM    DBUF+IA+5   SET UP *IA*
          ADN    1
          STM    DBUF+OA+5   SET UP *OA*
          ADN    1
          STM    DBUF+MA+5   SET UP *MA*
 LPR2     LJM    LPRX        RETURN 
  
 LPR3     LDC    =C* PPR LOAD ERROR.* 
          STM    DAPA 
          UJN    LPR2        RETURN 
 MSW      SPACE  4,10 
**        MSW - MOVE SUPPLEMENT WORD TO ASSEMBLY BUFFER.
* 
*         ENTRY  (WX) = ASSEMBLY BUFFER INDEX.
*                (CN - CN+4) = SUPPLEMENT WORD. 
* 
*         EXIT   (BX) = 0.
*                (CN - CN+4) = 0. 
* 
*         USES   BX, WX, CN - CN+4. 
  
  
 MSW      SUBR               ENTRY/EXIT 
          LDD    WX          MOVE SUPPLEMENT WORD 
          SHN    2
          ADD    WX 
          ADC    MBUF+2*5 
          STM    MSWA 
          LDD    MA 
          CWD    CN 
          CRM    **,ON
 MSWA     EQU    *-1
          AOD    WX          INCREMENT ASSEMBLY BUFFER INDEX
          LDK    ZERL        CLEAR SUPPLEMENT WORD
          CRD    CN 
          LDN    0           RESET BYTE INDEX 
          STD    BX 
          UJN    MSWX        RETURN 
 PCL      SPACE  4,15 
**        PCL - PROCESS CRITICAL ERROR LOG. 
* 
*         ENTRY  (AP - AP+4) = *DSAL*.
* 
*         EXIT   (A) = 0  IF CRITICAL ERROR LOG NOT PRESENT OR READ 
*                         WITHOUT ERROR.
*                    .GT. 0  IF ERROR OTHER THAN *APP* NOT RESPONDING.
*                    .LT. 0  IF *APP* NOT RESPONDING. 
* 
*         USES   EA, SC, CM+1.
* 
*         CALLS  CCF, CDA, IBM. 
* 
*         MACROS MONITOR. 
  
  
 PCL3     LDD    SC          SET EXIT CONDITION 
          SHN    14 
  
 PCL      SUBR               ENTRY/EXIT 
          LDD    AP+3 
          ZJN    PCLX        IF CRITICAL ERROR LOG NOT PRESENT
          LDD    AP+4        REQUEST DEADSTART CHANNEL
          LPN    37 
          STD    CM+1 
          LDN    0
          STD    CM+2 
          MONITOR  RCHM 
          LDC    3RLCE       SET PROGRAM NAME 
          STM    BFMS 
          SHN    -6 
          SCN    77 
          STM    BFMS+1 
          LDK    CDAS*10000+BFMS  REQUEST CRITICAL ERROR LOG
          RJM    CDA         COMMON DISK AREA REQUEST 
          ZJN    PCL1        IF NO ERROR
          STD    EA          SAVE STATUS
          SHN    -14
          STD    SC 
 PCL1     MONITOR  DCHM 
          LDM    BFMS 
          SHN    21-13
          PJN    PCL2        IF NO DATA OR ERROR
          SHN    3
          SHN    13-21-3
          STM    BFMS 
          RJM    IBM         ISSUE BML MESSAGES 
          RJM    CCF         CLEAR CEL FLAG IN DEADSTART SECTOR 
          ZJN    PCL2        IF NO ERROR
          STD    EA 
          SHN    -14
          STD    SC 
 PCL2     LJM    PCL3        RETURN 
 TRS      SPACE  4,10 
**        TRS - TERMINATE REGISTER SET. 
* 
*         ENTRY  (BX) = SUPPLEMENT BYTE INDEX.
*                (WX) = ASSEMBLY BUFFER INDEX.
* 
*         USES   T6, WX.
* 
*         CALLS  FAB, MSW.
  
  
 TRS      SUBR               ENTRY/EXIT 
          LDD    BX 
          ZJN    TRS3        IF SUPPLEMENT WORD IN CURRENT BLOCK
          LDD    WX 
          SBD    BX 
          STD    T6 
          PJN    TRS1        IF SUPPLEMENT WORD NOT IN CURRENT BLOCK
          ADN    4
          UJN    TRS2        PROCESS SUPPLEMENT WORD IN CURRENT BLOCK 
  
 TRS1     RJM    FAB         FLUSH ASSEMBLY BUFFER
          LDD    T6 
 TRS2     STD    WX 
          RJM    MSW         MOVE SUPPLEMENT WORD TO ASSEMBLY BUFFER
 TRS3     LDM    MBUF+5+1    CLEAR CONTINUATION BIT 
          SCN    4
          STM    MBUF+5+1 
          RJM    FAB         FLUSH ASSEMBLY BUFFER
          UJN    TRSX        RETURN 
 CEL      SPACE  4,10 
*         COMMON DECKS. 
  
  
          QUAL
 CDA$     SET    1           SELECT *COMPAPI* COMMON DISK AREA ROUTINE
 PRS$     SET    1           SELECT *COMPAPI* PRESET PROCESSOR
          QUAL   *
          LIST   X
*CALL     COMPAPI 
          LIST   *
 CEL      SPACE  4,10 
          RSTC               RESTORE CHANNEL I/O INSTRUCTIONS 
 CEL      SPACE  4,10 
          USE    BUFFER 
  
*         DATA BUFFER.
  
 DBUF     EQU    *+2
          SPACE  4,10 
**        OVERLAID COMMON DECKS.
  
  
          LIST   X
*CALL     COMPPDI 
          LIST   *
          SPACE  4,10 
*         OVERLAY ORIGINS.
  
  
 OVL0     EQU    DBUF+PPFW   *0PI* ORIGIN 
          ERRPL  OVL0+500-BFMS  BUFFER OVERFLOW 
 CEL      SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          ERRPL  OVL0+ZPXL-BFMS  BUFFER OVERFLOW
          TTL    REC/4RH - RECOVER MASS STORAGE DEVICES.
          TITLE 
          QUAL   RMD
          IDENT  4RH,RMDX 
*COMMENT  REC - RECOVER MASS STORAGE DEVICES. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 RMD      SPACE  4,10 
***       RMD - RECOVER MASS STORAGE DEVICES. 
* 
*         *RMD* SCANS THE EST FOR MASS STORAGE DEVICES
*         AND INITIATES A COPY OF *1RF* FOR EACH ONE. 
 RMD      SPACE  4,10 
          ORG    OVLA 
  
  
**        RMD - RECOVER MASS STORAGE DEVICES. 
* 
*         ENTRY  (RS) = RECOVERY STATUS.
*                (NC) = SYSTEM CONTROL POINT NUMBER.
  
  
 RMD      SUBR               ENTRY/EXIT 
          LDD    RS          SET RECOVERY STATUS IN PP CALL 
          STM    RMDA+4 
          LDN    ESTP        GET ORDINAL OF LAST MS EQUIPMENT + 1 
          CRD    T7-3 
          LDN    NOPE-1      SET BEGINNING OF EST SEARCH
          STD    T6 
          LDN    0           CLEAR PP COUNT 
          STD    T5 
          STD    T4 
          STD    DI          CLEAR INITIALIZE COUNT 
          LDN    EJTE 
          STD    T3 
          LDN    EJTP        FETCH EJT POINTER
          CRD    CA 
          LDD    CA          GET SYSTEM EJT ENTRY 
          SHN    14 
          LMD    CA+1 
          CRM    BUFM,T3
 .EO      EQU    DSEO-1 
          ADK    .EO*EJTE    SAVE DEADSTART EJT ENTRY SLOT
          CRM    RMDC,T3
          SBN    EJTE        STORE DEADSTART EJT ENTRY
          CWM    BUFM,T3
  
*         REQUEST PP-S TO PROCESS DEVICES.
  
 RMD1     RJM    GND         GET NEXT DEVICE
          ZJN    RMD3        IF NO MORE DEVICES 
          STM    RMDA+2      SET EST ORDINAL TO RECOVER 
          LDK    PPAL 
          CRD    CM 
          LDD    CM+4        CHECK NUMBER OF REMAINING PP-S 
          SBN    3
          MJN    RMD4        IF LESS THAN 3 FREE
          EXECUTE  1RF,=
          LDD    MA          REQUEST ANOTHER COPY OF *1RF*
          CWM    RMDA,ON
          LDN    1           SET PRIORITY REQUEST 
          STD    CM+1 
          MONITOR  RPPM      REQUEST PP 
          LDD    CM+1 
          ZJN    RMD4        IF NO PP AVAILABLE 
          STM    RMDB,T5
          AOD    T5 
          AOM    RMDA+3      ADVANCE CONTROL POINT NUMBER 
          SBD    NC 
          NJN    RMD1        IF MORE CONTROL POINTS AVAILABLE 
  
*         AS PP-S COMPLETE, START THEM ON ANOTHER DEVICE. 
  
 RMD2     RJM    GND         GET NEXT DEVICE
 RMD3     ZJN    RMD5        IF NO MORE DEVICES 
 RMD4     RJM    CRP         CHECK RUNNING PP-S 
          LDD    T6 
          STD    CN+2 
          LDM    RMDB,T1     TELL PP TO START NEXT DEVICE 
          CWD    CN 
          UJN    RMD2        LOOP 
  
*         AS PP-S FINISH, TELL THEM TO DROP.
  
 RMD5     RJM    CRP         CHECK RUNNING PP-S 
          LDC    4000 
          STD    CN+2 
          LDM    RMDB,T1     TELL PP TO DROP
          CWD    CN 
          LDN    0           INDICATE THAT PP HAS DROPPED 
          STM    RMDB,T1
          AOD    T4          INCREMENT COUNT OF DROPPED PP-S
          LMD    T5 
          NJN    RMD5        IF PP-S STILL RUNNING
          LDC    MMFL 
          CRD    CN          READ MMF STATUS WORD 
          LDD    CN+2 
          ZJN    RMD6        IF DAT NOT INTERLOCKED 
          LDD    DI 
          NJN    RMD6        IF INITIALIZATION REQUESTS PENDING 
          STD    CN+2 
          LDC    MMFL        CLEAR INTERLOCK STATUS 
          CWD    CN 
          LCN    DATI        RELEASE FLAG REGISTER INTERLOCK
          RJM    IFR
 RMD6     LDD    CA          EJT BASE ADDRESS 
          SHN    14 
          LMD    CA+1 
          ADK    DSEO*EJTE   RESTORE DEADSTART EJT ENTRY SLOT 
          CWM    RMDC,T3
          LJM    RMDX        RETURN 
  
  
 RMDA     VFD    18/3R1RF,6/0,12/0,12/1,12/0
 RMDB     BSSZ   20D-4       PP INPUT REGISTER LIST 
 RMDC     BSS    5*EJTE      EJT ENTRY SAVE AREA
 CRP      SPACE  4,10 
**        CRP - CHECK RUNNING PP-S. 
* 
*         EXIT   (T1) = INDEX INTO PP TABLE.
*                (T5) = ASSIGNED PP COUNT.
*                (CN - CN+4) = CONTENTS OF PP INPUT REGISTER. 
* 
*         USES   T1, T2, FN - FN+4. 
  
  
 CRP      SUBR               ENTRY/EXIT 
 CRP1     LDN    0
          STD    T1 
 CRP2     LDM    RMDB,T1
          ZJN    CRP3        IF PP HAS ALREADY DROPPED
          CRD    CN 
          LDD    CN+2 
          ZJN    CRPX        IF PP DONE 
 CRP3     AOD    T1 
          LMD    T5 
          NJN    CRP2        IF MORE PP-S TO CHECK
          UJN    CRP1        LOOP 
  
 GND      SPACE  4,10 
**        GND - GET NEXT DEVICE.
* 
*         ENTRY  (T6) = ORDINAL OF LAST DEVICE PROCESSED. 
* 
*         EXIT   (A) = 0 IF NO MORE DEVICES.
*                    = (T6) = ORDINAL OF NEXT DEVICE TO PROCESS.
* 
*         USES   FN - FN+4. 
  
  
 GND      SUBR               ENTRY/EXIT 
 GND1     AOD    T6 
          LMD    T7 
          ZJN    GNDX        IF END OF MASS STORAGE DEVICES 
          SFA    EST,T6 
          ADK    EQDE        READ EST ENTRY 
          CRD    FN 
          LDD    FN          CHECK DEVICE AVAILABILITY
          SHN    -6 
          LPN    41 
          LMN    40 
          NJN    GND1        IF NOT AVAILABLE MS DEVICE 
          LDD    FN 
          LPN    3
          LMN    DWES 
          ZJN    GND1        IF DEVICE IS *DOWN*
          LDD    FN+4 
          SHN    3
          ADK    STLL        FETCH LOCAL MST STATUS 
          CRD    FN 
          LDD    FN 
          SHN    22-LIAL+LIAL/12D*12D 
          LPN    1
          RAD    DI          COUNT INITIALIZED DEVICES
          LDD    T6 
          UJP    GNDX        RETURN 
          SPACE  4,10 
 BUFM     BSS    0           MESSAGE HOLDING BUFFER 
          SPACE  4,10 
**        OVERFLOW CHECK. 
  
  
          ERRPL  BUFM+5*3-10001  MESSAGE WRAPS PP MEMORY
          TTL    REC - SYSTEM RECOVERY PROCESSOR. 
          TTL    REC - SYSTEM RECOVERY PROCESSOR. 
          SPACE  4,10 
          END 
