          CTEXT  SCI VPB DEADSTART CYBER 2000
          CTEXT  SCI VPB DEADSTART CYBER 2000
          OVERLAY  (SCI VPB DEADSTART CYBER 2000),CY2OVL
          SPACE  4,10
*         NOTE - THE FIRST INSTRUCTION OF *DTE* AND ANY CODE THAT LOADS
*                OTHER OVERLAYS MUST RESIDE BEFORE ADDRESS 10000 SO THAT
*                THE *CALL* MACRO AND THE *LNO* ROUTINES WORK CORRECTLY.
*                ALSO, ANY CODE THAT RESIDES BEFORE ADDRESS 10000 CAN
*                NOT BE EXECUTED AFTER *HBUF* HAS BEEN USED.
 LRO      SPACE  4,10
**        LRO - LOAD RESIDENT AND IDLE OVERLAYS.
*
*         EXIT   RESIDENT OVERLAY AND IDLE OVERLAY LOADED.
*                (TIMA) INITIALIZED.
*
*         MACROS LOADOV.


 LRO      SUBR               ENTRY/EXIT
          LOADOV RESOL,P     LOAD RESIDENT OVERLAY
          LOADOV IDL         LOAD IDLE OVERLAY
          IAN    14          INITIALIZE TIMER BASE TIME
          STML   TIMA
          UJN    LROX        RETURN
 DTE      SPACE  4,10
**        DTE - DEADSTART CYBER 2000.


 DTE      ROUTINE

          ERRPL  DTE-10000   SEE ABOVE NOTE

          RJM    PRS         PRESET VPB/CYBER 2000
          LDC    **          GET RESTART FLAG
 DTEA     EQU    *-1
          LMC    4000B
          ZJN    DTE1        IF RESTART
          RJM    BEI         BUILD THE EICB
          RJM    ISP         INITIALIZE *SCI* PARAMETER TABLE
          RJM    ADF         ACTIVATE *DFT*
          RJM    GHI         GET HARDWARE INFORMATION
          RJM    CNB         CONFIGURE NOS/VE BOOT
          RJM    LBS         LOAD AND BUILD THE SSR
          RJM    BRS         BUILD RESOURCE TABLE
          RJM    CTS         COPY MEMORY TO SAVE AREA
          RJM    BPT         BUILD PAGE TABLE
          RJM    LVC         LOAD VCB
          RJM    DFP         DEADSTART FIRST PROCESSOR
          CALL   SMT         SET MODE TABLE
*         LJM    IDL         *SMT* RETURNS TO THE IDLE LOOP

 DTE1     CALL   RMD         RESTORE MODE DEFINITIONS FROM SCDPT
*         LJM    IDL         *RMD* EVENTUALLY RETURNS TO IDLE LOOP
 ADF      SPACE  4,15
**        ADF - ACTIVATE *DFT*.
*
*         ENTRY  (LA - LA+1) = NEXT AVAILABLE CM ADDRESS.
*
*         EXIT   (DP - DP+1) = R-REGISTER OF *DFT* BUFFER.
*                (DFTO) = *DFT* OFFSET TO ACCESS *DFT* CONTROL WORD.
*                (CD - CD+2) = OFFSET AND R-REGISTER TO TEMPORARY SCI DFT
*                              REQUEST BUFFER.
*                (LA - LA+1) = ADVANCED.
*                (VP - VP+3) = R-POINTER TO NOS/VE REQUEST BLOCK.
*                *DFT* ACTIVATED.
*
*         USES   CN - CN+3.
*
*         CALLS  ALA, CCM, IDT, IIB, TDF.


*         ALLOCATE THE *DFT* BUFFER.

 ADF5     LDN    1           SET R-POINTER OFFSET
          STM    DFTO
          STD    CN
          STD    CD
          LRD    LA          SET R-REGISTER
          SRD    DP
          SRD    CN+1
          SRD    CD+1
          LDML   BOCT+BCTDL  CREATE OFFSET TO TEMPORARY SCI DFT REQUEST BUFFER
          RADL   CD
          LDN    DSDFT       WRITE THE BUFFER POINTER TO THE EICB
          RJM    IIB
          CWDL   CN
          LDML   BOCT+BCTDL  ZERO OUT THE BUFFER
          ADN    TSDRBL      INCLUDE TEMPORARY SCI DFT REQUEST BUFFER
          RJM    CCM         CLEAR MEMORY
 ADF10    LDML   BOCT+BCTDL  GET BUFFER LENGTH
          ADN    TSDRBL      INCLUDE TEMPORARY SCI DFT REQUEST BUFFER
          RJM    ALA         ADVANCE LOAD ADDRESS

*         SET THE *DFT* ACTIVATION FLAG IN THE BOOT CONTROL TABLE.

          LDN    1           SET THE FLAG
          SHN    BCTDA
          RAML   BOCT+BCTFL
          LDN    BCTP+1
          CWML   BOCT+BCTFL,ON
          RJM    TDF         TIMEOUT *DFT* AFTER 3 SECONDS

*         FETCH THE NOS/VE REQUEST POINTER FROM THE DFT/OS BUFFER.

          LDN    NVEP
          RJM    IDT
          CRDL   VP

 ADF      SUBR               ENTRY/EXIT
          LDN    DSDFT       GET POSSIBLE *DFT* POINTER
          RJM    IIB
          CRDL   CN
          LDDL   CN+1
          ADDL   CN+2
          ZJP    ADF5        IF NO PREVIOUS *DFT* BUFFER
          LDDL   CN
          STM    DFTO        SAVE *DFT* BUFFER OFFSET
          LRD    CN+1
          SRD    DP          SAVE R-REGISTER
          SRD    CD+1        SAVE TEMPORARY DFT REQUEST BUFFER POINTER
          LDML   BOCT+BCTDL
          ADN    1
          STDL   CD

*         CLEAR *DFT* VERIFIED FLAG.

          LDN    HDRP        READ *DFT* CONTROL WORD
          RJM    IDT
          CRDL   CN
          LDDL   CN+DHFLG
          LPC    0#FF7F
          ERRNZ  DH.FV-7     MASK ASSUMES *DH.FV* IS 2**7
          STDL   CN+DHFLG
          LDN    HDRP        REWRITE *DFT* CONTROL WORD
          RJM    IDT
          CWDL   CN

*         CLEAR THE NOS/VE REQUEST BUFFER.

          LDN    NVEP        READ REQUEST POINTER
          RJM    IDT
          CRDL   CN
          LDDL   CN+3
          RJM    CCM         CLEAR MEMORY
          LJM    ADF10       RETURN
 BCT      SPACE  4,10
**        BCT - BUILD CIP TABLES.
*
*         EXIT   (IB - IB+2) = R-POINTER TO EICB.
*                EICB AND DFT BUFFERS ARE AVAILABLE.
*
*         USES   CN - CN+3.
*
*         CALLS  ALA, CCM, IIB, PEM, PIB.


 BCT      SUBR               ENTRY/EXIT
          RJM    PIB         PRESET EICB POINTER
          LDDL   W2
          NJN    BCT5        IF NO EXISTING EICB (ADDRESS TOO LARGE)
          LDDL   W3
          NJN    BCT10       IF EICB ALREADY EXISTS (VALID ADDRESS)

*         INITIALIZE NEW EICB AND STORE POINTER.

 BCT5     LDN    0           SET UP *CCM* PARAMETERS
          STD    CN
          LRD    LA
          SRD    CN+1
          LDN    BCTP        CLEAR WORD 0 TO BEGINNING OF BOOT CONTROL TABLE
          RJM    CCM
          LDN    BCTP+BCTTL-100
          STD    CN
          LDC    EICBFWA-BCTP-BCTTL+EICBL  BOOT CONTROL TABLE END TO EICB END
          RJM    CCM         CLEAR MEMORY
          LDN    0
          STD    IB          SAVE POINTER TO EICB
          SRD    IB+1
          LDC    EICBFWA     SAVE ADDRESS OF EICB
          STM    MBUF+3
          LDN    EICBP
          CWML   MBUF,ON     WRITE THE POINTER TO THE EICB
          RJM    PIB         PRESET EICB POINTER

*         UPDATE EXISTING EICB.

 BCT10    RJM    PEM         PRESET THE EICB MESSAGE BUFFER
          LDN    D8CPT       CLEAR THE CRITICAL PAGE TABLE POINTER
          RJM    IIB
          CWML   BCTA,ON
          LDC    EICL        SET EICB LEVEL
          STM    BCTA+3
          LDN    D7TY        GET POINTER TO EICB HEADER
          RJM    IIB
          CWML   BCTA,ON     CLEAR THE 170 EICB HEADER EXCEPT VERSION NUMBER

*         IT IS OK TO WRITE THE CIP DIRECTORY POINTER DIRECTLY FROM DIRECT CELLS
*         CD - CD+3 EVEN THOUGH CD+3 IS ACTUALLY DIRECT CELL IB, BECAUSE IB IS
*         ALWAYS ZERO ANYWAY (SET ABOVE AS EICB OFFSET).

          LDN    DSEBP
          RJM    IIB         INCREMENT INTERFACE BLOCK
          CWDL   CD          WRITE CTI DIRECTORY POINTER
          LDC    EICBFWA+EICBL  END OF EICB
          RJM    ALA         ADVANCE LOAD ADDRESS
          LJM    BCTX        RETURN

 BCTA     BSSZ   4           USED IN CLEARING EICB WORDS
 BEI      SPACE  4,10
**        BEI - BUILD THE EICB.
*
*         EXIT   EICB ALLOCATED AND PRESET.
*
*         CALLS  BCT, IIB, SSI.


 BEI      SUBR               ENTRY/EXIT
          RJM    BCT         BUILD CIP TABLES
          LDML   BOCT+BCTIP  GET IOU NUMBER
          SHN    -8D
          RJM    SSI         SET *SCI* IOU NUMBER AND MODEL NUMBER
          LDC    DFCM+7      MOVE PACKED DATE/TIME TO EICB
          RJM    IIB
          CWML   BOCT+BCTDT,ON
          LDN    D8RLP       CLEAR THE CPU/PP COMMUNICATION BUFFER POINTER
          RJM    IIB
          CWML   BEIA,ON
          LDN    1           SET EICB ACTIVATION FLAG IN THE BOOT CONTROL TABLE
*         SHN    BCTEA
          ERRNZ  BCTEA       CODE DEPENDS ON EICB ACTIVATION FLAG IN BIT 0
          RAML   BOCT+BCTFL
          LDN    BCTP+1
          CWML   BOCT+BCTFL,ON
          UJN    BEIX        RETURN

 BEIA     BSSZ   4           WORD OF ZEROS
 BRS      SPACE  4,15
**        BRS - BUILD RESOURCE TABLE.
*
*         ENTRY  (PPNO) = *SCI* PP NUMBER.
*
*         EXIT   RESOURCE TABLE WRITTEN TO THE *VEPP* SSR ENTRY.
*
*         USES   T3, T4, T6.
*
*         CALLS  MCN, PPC.
*
*         MACROS SSRE.


 BRS      SUBR               ENTRY/EXIT
          LDC    IRTL-1      SET RESOURCE TABLE LENGTH
          STD    T3
 BRS5     LDC    0#0F0F      SET ALL PPS AND CHANNELS TO UNAVAILABLE
          STML   CBUF,T3
          SOD    T3
          PJN    BRS5        IF MORE ENTRIES TO SET

*         PROCESS THE PP FIELDS OF THE RESOURCE TABLE.

          LDC    IOSUBPP     SET IOU SUB-ELEMENT TO PP DESCRIPTOR
          STDL   T6
          RJM    PPC         PROCESS PP FIELDS

*         PROCESS THE CHANNEL FIELDS OF THE RESOURCE TABLE.

          LDC    IOSUBCH     SET IOU SUB-ELEMENT TO CHANNEL DESCRIPTOR
          STDL   T6
          LDC    0#FF        RESET MASK TO PROCESS CHANNELS
          STM    PPCA+1
          LDC    LPCI
          STM    PPCA
          RJM    PPC         PROCESS CHANNEL FIELDS

*         ON CYBER 2000, CHANNELS 32 AND 33 ARE REALLY NIO CHANNELS, SO MOVE
*         THEIR ENTRIES FROM CIO TO NIO AND MAKE CIO CHANNELS 32 AND 33
*         UNAVAILABLE.

          LDN    IRTL/4      SET OFFET TO IOU0 CIO CHANNEL 32
          SHN    1
          SBN    2
          STD    T3
          LDN    IRTL/4      SET OFFSET TO IOU0 NIO CHANNEL 32
          SBN    2
          STD    T4
          RJM    MCN         MOVE CIO ENTRIES TO NIO ENTRIES
          LDN    IRTL/4      RESET OFFSETS TO IOU1
          SHN    1
          RAD    T3
          LDN    IRTL/4
          SHN    1
          RAD    T4
          RJM    MCN         MOVE CIO ENTRIES TO NIO ENTRIES


*         SET THE *SCI* PP UNAVAILABLE.

          LDM    PPNO        SET *SCI* PP OFFSET
          SBN    20
          MJN    BRS10       IF LOWER PP
          ADN    20-4        SET UPPER PP OFFSET
          UJN    BRS15       CONTINUE

 BRS10    ADN    20
 BRS15    ADN    IRTL/4      SKIP TO CIO PORTION OF TABLE
          STD    T3
          LDML   CBUF,T3     SET *SCI* PP UNAVAILABLE
          LPC    0#FF00
          ADN    0#0F
          STML   CBUF,T3

*         WRITE THE RESOURCE TABLE TO CENTRAL MEMORY.

          SSRE   VEPP        GET RESOURCE TABLE ADDRESS
          CWML   CBUF,W4     WRITE RESOURCE TABLE
          LJM    BRSX        RETURN
 CNB      SPACE  4,10
**        CNB - CONFIGURE NOS/VE BOOT.
*
*         EXIT   (SZ - SZ+1) = LOGICAL MEMORY SIZE.
*                (HPSM) = PAGE SIZE MASK.
*                (HPTL) = PAGE TABLE LENGTH IN WORDS.
*                TO *FED* IF CENTRAL MEMORY ELEMENT DESCRIPTOR NOT PRESENT.
*
*         USES   CM+2.
*
*         CALLS  IGD, VMB.


 CNB      SUBR               ENTRY/EXIT
          LDN    CMSUBED     SET SUBELEMENT FIELD
          STD    CM+2
          LDN    EIDCM       GET CM ELEMENT DESCRIPTOR
          RJM    IGD         ISSUE GET ELEMENT DESCRIPTOR *DFT* REQUEST
          ZJP    FED         IF ELEMENT NOT PRESENT
          LDML   HBUF+EDCMAM+2  SAVE LOGICAL CM SIZE
          STD    SZ+1
          SHN    -14
          STD    SZ
          LDML   HBUF+EDCMAM+1
          SHN    4
          RAD    SZ
          LDM    HBUF+EDCMPS FETCH PAGE SIZE/1000B
          SBN    1           CREATE MASK
          STML   HPSM        SAVE PAGE SIZE MASK
          LMC    7777
          LPDL   SZ+1        ROUND DOWN TO NEAREST MULTIPLE OF PAGE SIZE
          STD    SZ+1
          RJM    VMB         VALIDATE MEMORY BOUNDS
          LDM    HBUF+EDCMPTL  PAGE TABLE LENGTH MASK/10000(8)
          ADN    1           CHANGE TO PAGE TABLE LENGTH
          SHN    3           CHANGE TO WORDS
          STML   HPTL        SAVE HARDWARE PAGE TABLE LENGTH
          SBN    1           CHECK IF LOAD ADDRESS ALREADY 0 MOD PTL
          LPDL   LA+1
          ZJN    CNB5        IF LOAD ADDRESS ALREADY 0 MOD PTL
          LDML   HPTL        ROUND LOAD ADDRESS TO MULTIPLE OF PTL
          RAD    LA+1
          SHN    -14
          RAD    LA
          LDML   HPTL
          SBN    1
          LMC    7777
          LPDL   LA+1
          STD    LA+1

*         NEXT, PREPARE THE DFT REQUEST FOR FLAW FREE MEMORY.

 CNB5     LDN    D8SV+4
          RJM    IIB
          CRDL   W0
          LDDL   W1
          ADDL   W2
          ZJN    CNB5.5      IF PTA POINTER NOT DEFINED
          LDDL   W1
          STDL   LA
          LDDL   W2
          STDL   LA+1
          LJM    CNBX        RETURN


 CNB5.5   LDN    BCTP
          CRDL   CM
          LDC    0#30C       LEVEL 780(10)
          STDL   T1
          LDDL   CM+1
          SBDL   T1
          PJN    CNB5.6      IF LEVEL SUPPORTS DFT REQUEST
          UJP    CNB7        IGNORE MAKING THE REQUEST

 CNB5.6   LDN    0
          STML   IDRA
          STDL   CM+3
          STDL   CM+2
          STDL   CM+1
          STDL   CM
          LDDL   LA
          STML   IDRA+1      START R UPPER
          LDDL   LA+1
          STML   IDRA+2      START R LOWER
          LDML   HPTL        PAGE TABLE LENGTH IN WORDS
          SHN    -6          /100B
          STML   IDRA+3
          LDN    GGM
          RJM    IDR         ISSUE DFT REQUEST
          LMN    RCNF
          ZJP    CNB7        IF COULD NOT GET FLAW FREE MEMORY
          LMN    RCNE&RCNF
          NJN    CNB6        IF ERROR FROM DFT
          LDDL   CD
          LMC    RR+2
          CRDL   W0          READ RESPONSE
          LDDL   W1
          STDL   LA
          LDDL   W2
          STDL   LA+1        REWRITE LA WITH FLAW FREE RESPONSE
 CNB7     LDN    0           SAVE PAGE TABLE POINTER IN EICB
          STD    W0
          LDDL   LA
          STDL   W1
          LDDL   LA+1
          STDL   W2
          LDML   HPTL
          STDL   W3
          LDN    D8SV+4
          RJM    IIB
          CWDL   W0          WRITE PAGE TABLE ADDRESS TO EICB
          LJM    CNBX        RETURN


 CNB6     LDC    DAFF
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR


 DFP      SPACE  4,10
**        DFP - DEADSTART FIRST PROCESSOR.
*
*         EXIT   TO *AAC* IF ERROR RETURNED ON *DFT* REQUEST.
*
*         CALLS  IDR, *AAC*.


 DFP      SUBR               ENTRY/EXIT
          LDN    DVP         DEADSTART VIRTUAL PROCESSOR
          RJM    IDR         ISSUE *DFT* REQUEST
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJN    DFPX        IF *DFT* REQUEST COMPLETED WITH NO ERROR
          LDC    DAS8        625 - *SCI* DETECTED *DFT* ERROR WHILE STARTING
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 FED      SPACE  4,10
**        FED - FATAL ELEMENT DESCRIPTOR ERROR.
*
*         EXIT   TO *AAC* TO ACTIVATE ANALYSIS CODE ERROR PROCESSOR.


 FED      SUBR               ENTRY/EXIT

*         SET ANALYSIS CODE TO 629 - *SCI* DETECTED *DFT* ERROR GETTING
*         ELEMENT DESCR.

          LDC    DAED
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 GHI      SPACE  4,10
**        GHI - GET HARDWARE INFORMATION.
*
*         EXIT   (MION) = 1 IF IOU1 PRESENT.
*                (CPUT) = 6/NUMBER OF CPU-S, 6/CPU TYPE.
*                TO *FED* IF CRITICAL ELEMENT IS NOT PRESENT.
*
*         USES   CM+2, T7.
*
*         CALLS  FED, IGD.


 GHI      SUBR               ENTRY/EXIT

*         DETERMINE IF A SECONDARY IOU IS LOGICALLY ON.

          LDN    IOSUBED     SET IOU SUB-ELEMENT
          STD    CM+2
          LDN    EIDIOU1     LOOK FOR IOU1 DESCRIPTOR
          RJM    IGD         ISSUE GET ELEMENT DESCRIPTOR *DFT* REQUEST
          ZJN    GHI5        IF IOU1 ELEMENT NOT PRESENT
          LDM    HBUF+EDIOS  CHECK IF IOU1 LOGICALLY ON
          SHN    -8D
          NJN    GHI5        IF NOT LOGICALLY ON
          AOM    MION        SET IOU1 LOGICALLY ON FLAG

*         GET CPU TYPE AND NUMBER OF CPU-S.

 GHI5     LDN    CPSUBED     SET SUBELEMENT FIELD
          STD    CM+2
          LDN    EIDCPU0     GET CPU0 DESCRIPTOR
          RJM    IGD         ISSUE GET ELEMENT DESCRIPTOR *DFT* REQUEST
          ZJP    FED         IF CPU0 ELEMENT NOT PRESENT
          LDM    HBUF+EDCPMN GET CPU MODEL NUMBER
          SHN    -4
          LPN    17
          STM    CPUT        SAVE CPU TYPE
          LDN    1           INITIALIZE CPU COUNTER
          STD    T7
          LDN    EIDCPU1     INITIALIZE CPU ELEMENT ID
          RJM    IGD         ISSUE GET ELEMENT DESCRIPTOR *DFT* REQUEST
          ZJN    GHI10       IF NEXT CPU NOT PRESENT
          LDM    HBUF+EDCPS
          SHN    -8D
          LMN    77
          ZJN    GHI10       IF NOT PHYSICALLY PRESENT
          AOD    T7          COUNT THIS CPU

 GHI10    LDD    T7          SAVE NUMBER OF CPU-S
          SHN    6
          RAM    CPUT
          LJM    GHIX        RETURN
 IDR      SPACE  4,15
**        IDR - ISSUE DFT REQUEST.
*
*         ENTRY  (A) = PARAMETER FOR DFT REQUEST.
*                (CM+1 - CM+3) = PARAMETERS FOR DFT REQUEST.
*                (CD - CD+2) = SCI DFT REQUEST BUFFER POINTER.
*                (VP - VP+3) = DFT REQUEST POINTER.
*
*         EXIT   (A) = DFT RESPONSE CODE.
*                REQUEST ISSUED TO DFT.
*
*         USES   CM, W0 - W0+3.
*
*         CALLS  IVB.


 IDR      SUBR               ENTRY/EXIT
          STDL   CM          SAVE PARAMETER WORD

*         WRITE THE DFT REQUEST TO THE SCI DFT REQUEST BUFFER.

          LRD    CD+1
          SRD    W0+1
          LDDL   CD
          STDL   W0
          LMC    RR
          CWDL   CM          WRITE DFT REQUEST
          ADN    1
          CWML   IDRA,ON     WRITE ADDITIONAL PARAMETERS

*         WRITE THE POINTER TO THE SCI DFT REQUEST BUFFER INTO THE DFT REQUEST
*         POINTER.

          LDN    2           SET REQUEST LENGTH
          STD    W0+3
          LDN    0
          RJM    IVB         INDEX NOS/VE BLOCK
          CWDL   W0          WRITE DFT REQUEST POINTER

*         ON A CYBER 2000 MAINFRAME, THE SERVICE PROCESSOR *DFT* MUST BE TOLD
*         THAT THERE IS A *DFT* REQUEST PENDING.  THIS IS ACCOMPLISHED BY
*         SENDING AN INTERRUPT TO IOU0.

          INPN   2           INTERRUPT IOU0

*         WAIT FOR REQUEST COMPLETE.

          LRD    CD+1
 IDR5     LDDL   CD          INDEX TO VPB REQUEST
          LMC    RR
          CRDL   W0          READ STATUS WORD
          LDDL   W0
          SHN    -10
          ZJN    IDR5        IF NOT COMPLETE
          UJN    IDRX        RETURN

 IDRA     CON    0,0,0,0
 IGD      SPACE  4,15
**        IGD - ISSUE GET ELEMENT DESCRIPTOR *DFT* REQUEST.
*
*         ENTRY  (A) = DESCRIPTOR ELEMENT ID.
*                (CM+2) = SUB-ELEMENT IF DESCRIPTOR IS AN IOU.
*                (CD - CD+2) = SCI DFT REQUEST BUFFER POINTER.
*
*         EXIT   (A) = 0 IF ELEMENT NOT PRESENT.
*                (HBUF) = ELEMENT DESCRIPTOR.
*                TO *FED* IF ERROR RETURNED ON *DFT* REQUEST.
*
*         USES   CM - CM+3.
*
*         CALLS  IDR, IVB.


 IGD5     LRD    CD+1        READ ELEMENT DESCRIPTOR
          LDN    CMXLEN/4
          STD    CM+3
          LDDL   CD
          ADC    RR+1
          CRML   HBUF,CM+3

 IGD      SUBR               ENTRY/EXIT
          STDL   CM+1
          LDN    CMXLEN/4    SET REQUEST BLOCK LENGTH
          STD    CM+3
          LDN    GED
          RJM    IDR         ISSUE *DFT* REQUEST
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJN    IGD5        IF NO ERROR ON REQUEST
          LMN    RCEN&RCNE   CHECK FOR ELEMENT NOT PRESENT
          ZJN    IGDX        IF ELEMENT NOT PRESENT
          LJM    FED         ISSUE FATAL ELEMENT DESCRIPTOR ERROR
 ISP      SPACE  4,15
**        ISP - INITIALIZE *SCI* PARAMETER TABLE.
*
*         ENTRY  (LA - LA+1) = CURRENT LOAD ADDRESS.
*                (PPNO) = *SCI* PP NUMBER.
*
*         EXIT   *SCI* PARAMETER TABLE INITIALIZED.
*                (LA - LA+1) ADVANCED.
*                (SB - SB+1) = SCIPT R-REGISTER.
*                (SBAO) = OFFSET.
*                (SCMT+DTDB.) = *SCD* DEFINITION BYTE.
*
*         USES   CN - CN+3.
*
*         CALLS  ALA, CCM, IIB, SPA.


 ISP      SUBR               ENTRY/EXIT
          LDN    D7RS+2      GET POSSIBLE SCIPT POINTER
          RJM    IIB
          CRDL   CN
          LDDL   CN+2
          ADDL   CN+3
          NJN    ISP5        IF POINTER ALREADY DEFINED

*         SET SCIPT POINTER INTO THE EICB.

          LDD    LA+1
          SHN    6
          STD    CN+3
          LDD    LA
          SHN    12D
          LMD    LA+1
          SHN    -6
          STD    CN+2
          LDN    D7RS+2      SET ADDRESS IN EICB
          RJM    IIB
          CWDL   CN
 ISP5     RJM    SPA         GET R-REGISTER TO SCIPT
          LDN    0           SET UP *CCM* PARAMETERS
          STD    CN
          SRD    CN+1
          LDN    SCIPTL      LENGTH TO CLEAR
          RJM    CCM         CLEAR MEMORY
          LDM    PPNO        SET *SCI* PP NUMBER
          SHN    4
          RAML   ISPA+1
          LRD    SB          INITIALIZE FIRST WORD
          LDM    SBAO
          LMC    RR
          CWML   ISPA,ON
          LDM    ISPA+2      INITIALIZE PORT DEFINITION BYTE
          STM    SCMT+PTDB.
          LDN    SCIPTL
          RJM    ALA         ADVANCE LOAD ADDRESS
          LJM    ISPX        RETURN

 ISPA     BSS    0           INITIAL FIRST WORD OF THE SCIPT
          VFD    16/0        UNUSED FIELD

          VFD    1/1         *SCD* DEFINITION CHANGED
          VFD    1/0         *MDD* DEFINITION NOT CHANGED
          VFD    1/0         NO CHANGE IN TABLE LENGTH
          VFD    1/0         INTERLOCK = CLEAR
          VFD    2/0         UNUSED FIELD
          VFD    6/0         *SCI* PP NUMBER
          VFD    4/4         LENGTH OF *SCI* PARAMETER TABLE

          VFD    4/0         *SCD* DEFINITION BYTE
          VFD    1/1         CONSOLE STATE = ACTIVE
          VFD    2/2         SYSTEM STATE = VIRTUAL STATE
          VFD    3/1         CONSOLE EMULATES A 721
          VFD    3/0         CONTROLWARE CODE = NO CONTROLWARE
          VFD    3/0         *SCD* PORT NUMBER = PORT 0 ONLY

          VFD    16/0        *MDD* MODE NOT ALLOWED
 LBS      SPACE  4,10
**        LBS - LOAD AND BUILD THE SSR.
*
*         EXIT   SSR LOADED.
*
*         USES   W1 - W5.
*
*         CALLS  CSC, INS, LCP, MCS, SSR, *AAC*.
*
*         MACROS SSRE.


 LBS15    SSRE   BYVE        CLEAR TERMINATION STATUS FLAG
          LDN    0
          STD    W5
          LDDL   W1
          RJM    INS         UPDATE CLEARED *BYVE* ENTRY
          CWDL   W2
          SSRE   DTYP        CLEAR DEADSTART TYPE
          LDN    0
          STD    W4
          STD    W5
          LDDL   W1
          RJM    INS         UPDATE CLEARED *DTYP* ENTRY
          CWDL   W2
 LBS20    SSRE   WAIT        SET OPERATOR PAUSE FLAG
          LDM    WAIT
          STD    W5
          LDDL   W1
          RJM    INS         REWRITE *WAIT* ENTRY
          CWDL   W2

 LBS      SUBR               ENTRY/EXIT
          RJM    SSR         GET SSR ADDRESS
          LDD    SA
          ADD    SA+1
          ZJN    LBS5        IF THE SSR IS NOT ALREADY DEFINED
          RJM    CSC         CREATE SSR CHECKSUM
          LDD    T4          CHECK IF *SCKS* ENTRY FOUND
          ZJN    LBS5        IF *SCKS* ENTRY NOT FOUND
          LDDL   W5          COMPARE CHECKSUMS
          LMDL   T3
          ZJP    LBS15       IF SSR CHECKSUM VERIFIES

 LBS5     BSS    0
          CODE   D
          LRD    LA
          LDC    3RSSR
          RJM    LCP         LOAD PROGRAM FROM COMMON DISK AREA
          CODE   *
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJN    LBS10       IF *DFT* REQUEST COMPLETED WITH NO ERROR
          LDC    DASS        622 - *SCI* DETECTED *DFT* ERROR WHILE LOADING SSR
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR

 LBS10    RJM    MCS         MOVE AND COMPLETE THE SSR
          LJM    LBS20       SET THE OPERATOR PAUSE FLAG


**        MCS - MOVE AND COMPLETE SSR.
*
*         ENTRY  (LA - LA+1) = R-REGISTER OF ADDRESS OF TEMPORARY SSR LOCATION.
*                (SZ - SZ+1) = CURRENT MEMORY SIZE.
*
*         EXIT   (SZ - SZ+1) = UPDATED MEMORY SIZE.
*                SSR POINTER SET IN THE EICB.
*                SSR MOVED TO PERMANENT LOCATION.
*
*         USES   CM - CM+3, CN - CN+3, W0 - W5.
*
*         CALLS  CCM, CPY, CSC, IIB, INS, SPB.
*
*         MACROS SSRE.


*         DETERMINE MEMORY ADDRESS WHERE THE SSR WILL RESIDE.

 MCS      SUBR               ENTRY/EXIT
          LDC    RR+1
          LRD    LA
          CRDL   W0          READ SSR DIRECTORY HEADER
          LDC    1000        NOS STACK FRAME AREA
          ADDL   W1          ADD THE SSR LENGTH
          STDL   CN+3
          ADN    77          ROUND UP TO NEAREST 100B WORD MULTIPLE
          SHN    -6          SUBTRACT SSR LENGTH FROM MEMORY SIZE
          LMC    7777
          ADN    1           FORM TWOS COMPLEMENT AND ADD
          RAD    SZ+1
          SHN    -14
          ADC    7777
          RAD    SZ
          LDM    HPSM
          LMC    7777
          LPDL   SZ+1        ROUND ADDRESS TO A PAGE SIZE
          STD    SZ+1

          LDN    BCTP
          CRDL   CM
          LDC    0#30C       LEVEL 780(10)
          STDL   T1
          LDDL   CM+1
          SBDL   T1
          PJN    MCS0        IF LEVEL SUPPORTS DFT REQUEST
          UJP    MCS1        IGNORE MAKING THE REQUEST

 MCS0     LDN    0
          STDL   CM+3
          STDL   CM+2
          STML   IDRA
          STDL   CM
          LDDL   SZ
          STML   IDRA+1      START R UPPER
          LDDL   SZ+1
          STML   IDRA+2      START R LOWER
          LDDL   W1          PAGE TABLE LENGTH IN WORDS
          SHN    -6          /100B
          STML   IDRA+3
          LDN    1
          SHN    8D
          STDL   CM+1
          LDN    GGM
          RJM    IDR         ISSUE DFT REQUEST
          LMN    RCNF
          ZJN    MCS1        IF COULDN'T GET FLAW FREE MEMORY
          LMN    RCNE&RCNF
          NJP    MCS2        IF ERROR FROM DFT
          LDDL   CD
          LMC    RR+2
          CRDL   T0          READ RESPONSE
          LDDL   T1
          STDL   SZ
          LDDL   T2
          STDL   SZ+1        REWRITE SZ WITH FLAW FREE RESPONSE
 MCS1     LRD    SZ
          SRD    CN+1
          LDN    0
          STD    CM
          STD    CM+3
          STD    CN
          STM    SAAO
          RJM    SPB         SET PP BOUNDARY
          LDDL   CN+3        SSR SIZE
          RJM    CCM         CLEAR SSR AREA
          LRD    SZ          MOVE SSR DIRECTORY TO 170 STACK + 1000
          SRD    SA
          LDN    1000/100
          RAD    SA+1
          STD    CM+2
          SHN    -14
          RAD    SA
          STD    CM+1

*         SET SSR POINTER INTO THE *EICB*.

          LRD    IB+1
          RJM    SPB         SET PP BOUNDARY
          LDN    D8SSR
          RJM    IIB
          CWDL   CM          SET SSR POINTER INTO THE EICB
          LDN    3           SET LOCATION OF DIRECTORY IMAGE
          STD    CN
          LRD    LA
          SRD    CN+1
          RJM    SPB         SET PP BOUNDARY
          LDC    RR+1
          LRD    LA
          CRDL   W0          RE READ THE SSR LENGTH ENTRY
          LDD    W3          SSR DIRECTORY LENGTH
          RJM    /A/CPY      COPY SSR DIRECTORY TO UPPER MEMORY
          RJM    CSC         CREATE SSR CHECKSUM
          SSRE   SCKS        GET SSR CHECKSUM ENTRY
          LDDL   T3          SET NEW CHECKSUM
          STDL   W5
          LDDL   W1          REWRITE SSR CHECKSUM ENTRY
          RJM    INS
          CWDL   W2
          LJM    MCSX        RETURN

 MCS2     LDC    DAFF
          LJM    AAC         DFT ERROR TRYING TO GET FLAW FREE MEMORY
*COPY  CTP$SCI_CREATE_SSR_CHECKSUM
          QUAL   A
*COPY  CTP$SCI_COPY_CM_DATA
          QUAL   *
 LVC      SPACE  4,10
**        LVC - LOAD VCB.
*
*         EXIT   TO *AAC* IF ERROR RETURNED ON *DFT* REQUEST.
*
*         CALLS  BHR, LCP, RMP.


 LVC5     RJM    RMP         RELOCATE MONITOR PROCESS

 LVC      SUBR               ENTRY/EXIT
          RJM    BHR         BUILD HARDWARE REGISTER
          CODE   D
          LRD    BL
          LDC    3RVCB
          RJM    LCP         LOAD PROGRAM FROM CDA
          CODE   *
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJN    LVC5        IF *DFT* REQUEST COMPLETED WITH NO ERROR
          LDC    DASV        623 - *SCI* DETECTED *DFT* ERROR WHILE LOADING VCB
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 MCN      SPACE  4,10
**        MCN - MOVE CIO ENTRIES TO NIO ENTRIES IN THE RESOURCE TABLE.
*
*         ENTRY  (T3) = OFFSET OF CIO CHANNEL 32 ENTRY.
*                (T4) = OFFSET OF NIO CHANNEL 32 ENTRY.
*                (CBUF) = THE RESOURCE TABLE.
*
*         EXIT   CIO CHANNELS 32 AND 33 ENTRIES MOVED TO NIO CHANNELS 32 AND 33.
*                CIO CHANNELS 32 AND 33 ENTRIES ARE MADE UNAVAILABLE.


 MCN      SUBR               ENTRY/EXIT
          LDML   CBUF,T3     GET CIO CHANNEL 32 STATUS
          STML   CBUF,T4     STORE IN NIO CHANNEL 32 ENTRY
          LDML   CBUF+1,T3   GET CIO CHANNEL 33 ENTRY
          STML   CBUF+1,T4   STORE IN NIO CHANNEL 33 ENTRY
          LDC    0#0F0F      RESET CIO CHANNEL 32 AND 33 TO UNAVAILABLE
          STML   CBUF,T3
          STML   CBUF+1,T3
          UJN    MCNX        RETURN
 PPC      SPACE  4,15
**        PPC - PROCESS PP/CHANNEL FIELDS OF RESOURCE TABLE.
*
*         ENTRY  (T6) = IOU SUB-ELEMENT.
*                (PPCA) SET UP FOR PP OR CHANNEL PROCESSING.
*                (MION) = 1 IF IOU1 IS LOGICALLY ON.
*
*         EXIT   (CBUF) = RESOURCE TABLE WITH PP/CHANNEL FIELDS SET TO
*                         REFLECT THE HARDWARE CONFIGURATION.
*                TO *FED* IF REQUIRED ELEMENT DESCRIPTOR NOT PRESENT.
*
*         USES   CM+2, T3, T4, T5.
*
*         CALLS  FED, IGD.


 PPC      SUBR               ENTRY/EXIT
          LDN    0           PROCESS IOU0 FIRST
          STD    T5
          LDN    IRTL/4      SET OFFSET TO CIO PORTION OF TABLE
          STD    T4
 PPC5     LDDL   T6          SET IOU SUB-ELEMENT
          STDL   CM+2
          LDD    T5          PICK UP IOU1 FLAG
          SHN    4
          ADN    EIDIOU0     GET IOU ELEMENT DESCRIPTOR
          ERRNZ  0#10+EIDIOU0-EIDIOU1  CODE ASSUMES DIFFERENCE OF 10(16)
          RJM    IGD         ISSUE GET ELEMENT DESCRIPTOR *DFT* REQUEST
          ZJP    FED         IF ELEMENT NOT PRESENT
          LDN    0           INITIALIZE DESCRIPTOR INDEX
          STD    T3
 PPC10    LDML   HBUF,T3     CHECK PP/CHANNEL ENTRY
          SHN    -8D
          NJN    PPC15       IF NOT PHYSICALLY PRESENT OR NOT LOGICALLY ON
          LDML   CBUF,T4     SET PP/CHANNEL AVAILABLE IN TABLE
          LPC    0#FF00      PRESERVE CHANNEL STATUS
 PPCA     EQU    *-2
*         LPC    0#FF        (PRESERVE PP STATUS)
          STML   CBUF,T4
 PPC15    AOD    T4          INCREMENT RESOURCE TABLE OFFSET
          SBM    PPCC,T5
          NJN    PPC20       IF NOT SWITCHING BARRELS
          LDN    4           INCREMENT RESOURCE TABLE OFFSET TO NEXT BARREL
          RAD    T4
 PPC20    AOD    T3          INCREMENT DESCRIPTOR INDEX
          SBN    IOSUBL
          NJN    PPC10       IF NOT END OF PP/CHANNEL ENTRIES
          LDM    MION        CHECK FOR SECOND IOU
          ZJN    PPC25       IF NO SECOND IOU
          LDD    T5          CHECK IF IOU1 ALREADY PROCESSED
          NJN    PPC25       IF IOU1 ALREADY PROCESSED
          AOD    T5          SET IOU 1
          LDN    IRTL/4      SET OFFSET TO IOU1 CIO PORTION OF TABLE
          SHN    1
          ADN    IRTL/4
          STD    T4
          LJM    PPC5        PROCESS IOU1

 PPC25    LJM    PPCX        RETURN

*         WHEN THE RESOURCE TABLE OFFSET HITS THIS CONSTANT, INCREMENT TO
*         THE NEXT BARREL.

 PPCC     CON    50,140
 PRS      SPACE  4,15
**        PRS - PRESET VPB/CYBER 2000.
*
*         ENTRY  (T1) = SAVED CONTENTS OF *DOFF*.
*                (SCIA) = 4000, IF RESTART.
*
*         EXIT   UNUSED PP MEMORY ZEROED OUT.
*                VARIABLES PRESET.
*                CHANNELS 15 AND 17 DEACTIVATED.
*                RESIDENT OVERLAY LOADED.
*                IDLE OVERLAY LOADED.
*                MAINTENANCE REGISTER EXIT ADDRESSES SET UP.
*                (BOCT) = BOOT CONTROL TABLE CONTENTS.
*                (IDRB) = *INPN* INSTRUCTION.
*
*         CALLS  LRO.
*
*         MACROS EXITMR, FATALMR.


 PRS      SUBR               ENTRY/EXIT
          LDM    /PRESET/SCIA  SAVE RESTART FLAG
          STM    DTEA

*         ZERO OUT ALL CELLS BEFORE THIS OVERLAY EXCEPT SC - SC+2 AND
*         THE AREA WHERE THE PRESET OVERLAY EXISTS.

          LDDL   SC          SAVE *SC*
          STDL   T2
          LDDL   SC+1        SAVE *SC+1*
          STDL   T3
          LDDL   SC+2        SAVE *SC+2*
          STDL   T4
          LDN    T6          SET STARTING ADDRESS
          STD    T5
 PRS5     LDN    0           CLEAR CELL
          STIAO  T5
          LMC    100
          NJN    PRS5        IF MORE TO CLEAR
          LDDL   T2          RESET *SC*
          STDL   SC
          LDDL   T3          RESET *SC+1*
          STDL   SC+1
          LDDL   T4          RESET *SC+2*
          STDL   SC+2
          LDC    EOC         SET STARTING ADDRESS
          STD    T5
 PRS10    LDN    0           CLEAR CELL
          STIAO  T5
          LMC    CY2OVL
          NJN    PRS10       IF MORE TO CLEAR
          LDDL   T1          RESTORE CONTENTS OF *DOFF*
          STML   DOFF

*         SET VARIABLES AND DIRECT CELLS.  THOSE VARIABLES THAT EQUAL ZERO
*         HAVE ALREADY BEEN SET BY THE CLEARING OF MEMORY.

*         LDN    0
*         STM    CTUF        NOT UTILITY MODE *MDD*
*         STM    PPTY        UPPER PP
*         STM    SCDP        *SCD* PORT = 0
          LDN    1
          STD    DO          DEADSTART ORIGIN = 180 DEADSTART
          STD    ON          CONSTANT ONE
          STD    VA          NOS/VE ACTIVE
          STM    NOSL        NOT LOADED BY NOS
          STM    ISPB        IGNORE BOUNDS SETTINGS
          LDC    10000B      SET CYBER 2000 FLAG IN MACHINE TYPE WORD
          STML   S0FLG

*         FETCH THE BOOT CONTROL TABLE AND SAVE VARIABLES FROM IT.

          LDN    BCTIL       SET BOOT CONTROL TABLE INFORMATION LENGTH
          STD    T4
          LDN    BCTP        ADDRESS OF BOOT CONTROL TABLE
          CRML   BOCT,T4
          SBN    1
          CRDL   CD          SAVE THE CIP DIRECTORY POINTER FOR *BCT*
          LDML   BOCT+BCTTY  SAVE THE IOU MODEL NUMBER
          STML   IOUM
          LDML   BOCT+BCTIP  SAVE THE PP NUMBER
          LPC    377
          STM    PPNO
          LDML   BOCT+BCTFL  SAVE THE OPERATOR PAUSE FLAG
          SHN    -BCTOP
          LPN    1
          STM    WAIT

*         DEACTIVATE CHANNELS 15 AND 17 AND LOAD OVERLAYS.

          DCN    MR+40
          DCN    MX+40
          CCF    *,MX
          RJM    LRO         LOAD RESIDENT AND IDLE OVERLAYS

*         SET UP MAINTENANCE REGISTER ADDRESSES.

          EXITMR AAC         SET MAINTENANCE REGISTER READ EXIT ADDRESS
          FATALMR  AAC       SET FATAL MAINTENANCE REGISTER EXIT ADDRESS
          LJM    PRSX        RETURN
 BOCT     SPACE  4,10
**        BOCT - BOOT CONTROL TABLE BUFFER.


 BOCT     BSS    BCTIL*4     CONTENTS OF BOOT CONTROL TABLE INFORMATION WORDS
          EJECT
*         COMMON DECKS.
          SPACE  4,10
*COPY     CTP$SCI_ADVANCE_LOAD_ADDRESS
*COPY     CTP$SCI_BUILD_HARDWARE_REG
*COPY     CTP$SCI_BUILD_PAGE_TABLE
*COPY     CTP$SCI_CLEAR_CENTRAL_MEMORY
*COPY     CTP$SCI_COMPRESS_PAGE_TABLE
*COPY     CTP$SCI_COPY_CM_DATA
*COPY     CTP$SCI_COPY_TO_SAVE_AREA
*COPY     CTP$SCI_DELAY_ROUTINE
*COPY     CTP$SCI_FETCH_CM_BOUND_VALUES
*COPY     CTP$SCI_INCREMENT_DFT_BUFFER
*COPY     CTP$SCI_INCREMENT_DFT_VE_BLOCK
*COPY     CTP$SCI_LOAD_CIP_PROGRAM
*COPY     CTP$SCI_PRESET_EICB_MSG_BUFFER
*COPY     CTP$SCI_RELOCATE_MPS_REGISTERS
*COPY     CTP$SCI_SET_UP_PROCESSOR_REQ
*COPY     CTP$SCI_SET_IOU_NUMBER
*COPY     CTP$SCI_TIMEOUT_DFT_VERIFIED
*COPY     CTP$SCI_UPDATE_MEMORY_BOUNDS
*COPY     CTP$SCI_VERIFY_MEMORY_BOUNDS
*COPY     CTP$SCI_ZERO_PP_BUFFER

*  THE FOLLOWING IS A BUFFER ALLOCATED BECAUSE THE SIZE OF SCI HAS GOTTEN TO
*  THE POINT WHERE ON THE CYBER 2000 AND OTHER MACHINES WITH A DLD A GLITCH IN
*  THE OS BOOT LOAD PROCESS ISN'T CAPABLE OF DEALING WITH THE RECORD SIZE OF SCI
*  AND A BOOT LOAD ERROR OCCURS. THE FOLLOWING BUFFER WILL INCREASE SCI SIZE PAST
*  THE PROBLEM.


 DUMMY    BSSZ      100



          OVERFLOW  20000    CHECK FOR PP OVERFLOW

          ENDX
