          CTEXT  SCI VPB DEADSTART NOSVE
          OVERLAY  (SCI VPB DEADSTART NOS/VE - PHASE 1),MDDSI
 DSTW     SPACE  4,10
**        DSTW - DEADSTART STATUS WORD.


 DSTW     BSSZ   4
 DDS      SPACE  4,10
**        DDS - DEADSTART DUAL-STATE NOS/VE.
*
*         THIS ROUTINE IS CALLED FROM THE *TVO* ROUTINE IN THE IDLE LOOP
*         IF THE LEAST SIGNIFICANT BIT HAS BEEN SET IN WORD *D8DS* OF THE
*         EICB.  THIS ROUTINE WILL PRESET THE *VPB* MODE.
*
*         TO DEADSTART THE PROCESSOR FOR DUAL-STATE, PP ROUTINES *SDA*
*         (A C170-STATE PP), *SCI*, AND *DFT*, AS WELL AS *EI*, ARE
*         INVOLVED IN A SEQUENCE OF EVENTS.  EICB WORD *D8DS* IS USED
*         TO COORDINATE THE VARIOUS ROUTINES.
*
*         THE SEQUENCE OF OPERATIONS IS AS FOLLOWS:
*
*         1.  *SDA* SETS BITS 16 - 31 OF *D8DS* NONZERO.
*
*         2.  *SCI* IS LOADED IF NECESSARY.
*
*         3.  *SDA* SETS BIT 63 OF *D8ST*.
*
*         4.  WHEN *SCI/VPB* PRESET IS COMPLETE AND *VCB* HAS BEEN LOADED,
*             WORD *D8DS* AND BIT 63 OF *D8ST* ARE CLEARED BY *SCI*.
*
*         5.  *SDA* EXITS WHEN BITS 16 - 31 OF *D8DS* AND *D8ST* BIT 63
*             ARE CLEARED.
*
*         6.  *DSMDST* CALLS *EI* WHICH SETS BITS 32 - 63 OF *D8DS* TO -1.
*
*         7.  *EI* ENTERS MONITOR MODE AND SETS *D8DS* BITS 16 - 31 = 3 AND
*             BITS 32 - 63 = 1.
*
*         8.  *SCI* WAITS FOR *D8DS* BIT 63 TO SET.
*
*         9.  *EI* NOW WAITS FOR *D8DS* BIT 63 TO CLEAR; HOWEVER, WHAT WILL
*             ACTUALLY OCCUR IS THAT *DFT* DEADSTARTS *VCB*.
*
*         NOTE   THE PURPOSE OF THE DDS ENTRY POINT
*                IS TO FORCE THE LOADING OF THE COMMON
*                SUBROUTINES AND TO CALL *DD2*.


 DDS      ROUTINE

          CALL   DD2         DEADSTART DUAL-STATE NOS/VE PHASE 2
 DSA      SPACE  4,10
**        DSA - DEADSTART STANDALONE NOS/VE.


 DSA      ROUTINE

          RJM    PS1         PRESET FOR STANDALONE PHASE 1
          CALL   DS2         DEADSTART STANDALONE NOS/VE PHASE 2
 PRR      SPACE  4,10
**        PRR - PROCESS RELOCATION REQUEST.
*
*         NOTE   THE PURPOSE OF THE *PRR* ENTRY POINT IS TO
*                FORCE THE LOADING OF THE COMMON SUBROUTINES
*                AND TO CALL *PR2*.


 PRR      ROUTINE

          CALL   PR2         PROCESS RELOCATION REQUEST PHASE 2
          EJECT
 NOTE     SPACE  4,10
**        PROGRAMMING NOTE.
*
*         THE FOLLOWING ROUTINES ARE USED BY ALL PHASES OF DEADSTART.
*         ADDITIONAL ROUTINES NEEDED BY MORE THAN ONE PHASE SHOULD BE
*         ADDED TO THIS PORTION OF THE OVERLAY.
*COPY     CTP$SCI_ADVANCE_LOAD_ADDRESS
*COPY     CTP$SCI_CLEAR_CENTRAL_MEMORY
*COPY     CTP$SCI_COPY_CM_DATA
*COPY     CTP$SCI_INCREMENT_DFT_BUFFER
*COPY     CTP$SCI_INCREMENT_DFT_VE_BLOCK
 IDR      SPACE  4,10
**        IDR - ISSUE DFT REQUEST.
*
*         ENTRY  (A) = PARAMETER FOR DFT.
*                (VP - VP+3) = DFT REQUEST POINTER.
*
*         EXIT   REQUEST ISSUED TO DFT.
*                (A) = DFT RESPONSE CODE.
*
*         USES   CM - CM+3.
*
*         CALLS  IVB, SPB.


 IDR      SUBR               ENTRY/EXIT
          STDL   CM          SAVE PARAMETER WORD
          LRD    VP+1
          RJM    SPB         SET PP BOUNDARY FOR NOS/VE REQUEST BLOCK
          LDD    VP+3
          RJM    IVB         INDEX TO VPB BLOCK
          CWDL   CM          WRITE DFT REQUEST
          STDL   CM
          ADN    1
          CWML   IDRA,ON     WRITE ADDITIONAL PARAMETERS
          SRD    CM+1        BUILD REQUEST POINTER
          LDN    2
          STD    CM+3
          LDN    0
          RJM    IVB         INDEX NOS/VE BLOCK
          CWDL   CM          WRITE DFT REQUEST POINTER
 IDR1     LDD    VP+3        INDEX TO VPB REQUEST
          RJM    IVB
          CRDL   W0          READ STATUS WORD
          LDDL   W0
          SHN    -10
          ZJN    IDR1        IF NOT COMPLETE
          UJN    IDRX        RETURN

 IDRA     CON    0,0,0,0
*COPY     CTP$SCI_LOAD_CIP_PROGRAM
 PDC      SPACE  4,10
**        PDC - PRESET DIRECT CELLS.
*
*         EXIT   (BL - BL+1) = 0.
*                (LA - LA+1) = 0.
*                (SZ - SZ+1) = 0.
*                (VP - VP+3) = 0.
*
*         USES   T1.


 PDC      SUBR               ENTRY/EXIT
          LDN    BL          SET FWA TO CLEAR
          STD    T1
 PDC1     LDN    0           CLEAR NEXT DIRECT CELL
          STI    T1
          AOD    T1
          LMN    VP+3+1
          NJN    PDC1        IF MORE TO CLEAR
          UJN    PDCX        RETURN
*COPY     CTP$SCI_ZERO_PP_BUFFER
 NOTE     SPACE  4,10
**        PROGRAMMING NOTE.
*
*         DEADSTART PHASE 2 AND PHASE 3 ARE LOADED HERE.  THEREFORE, ANY
*         ROUTINES WHICH ARE NEEDED BY MORE THAN ONE PHASE OF DEADSTART
*         SHOULD PRECEDE THIS NOTE.


 PH2O     BSS    0           PHASE 2 ORIGIN
 ASP      SPACE  4,10
**        ASP - ALLOCATE *SCI* PARAMETER TABLE.
*
*         EXIT   *SCI* PARAMETER TABLE ALLOCATED.
*
*         USES   CM - CM+3, CN - CN+2.
*
*         CALLS  ALA, CCM, IIB.


 ASP      SUBR               ENTRY/EXIT
          LDN    D7RS+2      READ SCIPT POINTER FROM EICB
          RJM    IIB
          CRDL   CM
          LDDL   CM+2        CHECK IF POINTER EXISTS
          ADDL   CM+3
          NJN    ASP1        IF POINTER ALREADY EXISTS

*         CREATE AN RMA FROM THE CURRENT LOAD ADDRESS AND STORE IN THE EICB.

*         LDN    0
          STD    CM
          STD    CM+1
          LDD    LA+1
          SHN    6
          STDL   CM+3        STORE RIGHT 16 BITS
          SHN    -16D
          STD    CM+2        SAVE POSSIBLE CARRY (2 BITS)
          LDD    LA          STORE LEFT 6 BITS
          SHN    6-4
          RAD    CM+2
          LDN    D7RS+2      SET SCIPT RMA INTO THE EICB
          RJM    IIB
          CWDL   CM
          LDN    0           SET UP R-REGISTER FOR SCIPT ADDRESS
          STD    CN
          LRD    LA
          SRD    CN+1
          LDN    SCIPTL
          RJM    CCM         CLEAR *SCI* PARAMETER TABLE
 ASP1     LDN    SCIPTL
          RJM    ALA         ADVANCE LOAD ADDRESS
          LJM    ASPX        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, PIB.


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

*         INITIALIZE NEW EICB AND STORE POINTER.

 BCT1     LDN    0           SET UP *CCM* PARAMETERS
          STD    CN
          LRD    LA
          SRD    CN+1
          LDC    100+EICBL   CLEAR FROM WORD 0 TO END OF EICB
          RJM    CCM
          LDN    0
          STD    IB          SAVE POINTER TO EICB
          SRD    IB+1
          LDC    100         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.

 BCT2     LDN    D8CPT       CLEAR THE CRITICAL PAGE TABLE POINTER
          RJM    IIB         INCREMENT INTERFACE BLOCK
          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
          LDN    0           INSERT CURRENT CTI DIRECTORY POINTER
          STD    CD+3
          LDN    DSEBP
          RJM    IIB         INCREMENT INTERFACE BLOCK
          CWDL   CD          WRITE CTI DIRECTORY POINTER
          LDC    100+EICBL   END OF EICB
          RJM    ALA         ADVANCE LOAD ADDRESS
          LJM    BCTX        RETURN

 BCTA     BSSZ   4           USED IN CLEARING EICB WORDS
 PS1      SPACE  4,10
**        PS1 - PRESET STANDALONE PHASE 1.


 PS1      SUBR               ENTRY/EXIT
          RJM    PDC         PRESET DIRECT CELLS
          RJM    BCT         BUILD CIP TABLES
          RJM    UTE         INITIALIZE TIME IN EICB
          RJM    ASP         ALLOCATE *SCI* PARAMETER TABLE
          UJN    PS1X        RETURN
 COMMON   SPACE  4,10
**        COMMON DECKS WHICH MAY BE OVER WRITTEN WITH THE IOU RESOURCE TABLE.


          LIST   X
*copy     ctp$update_time_in_eicb
          LIST   *
 EQUAL    SPACE  4,10
          QUAL   *

 ALA      EQUAL
 CCM      EQUAL
 CPY      EQUAL
 DSTW     EQUAL
 IDR      EQUAL
 IDT      EQUAL
 IDRA     EQUAL
 IVB      EQUAL
 LCP      EQUAL
 PDC      EQUAL
 PH2O     EQUAL
          OVERFLOW  MBUF     CHECK FOR OVERFLOW
          OVERLAY  (SCI VPB DEADSTART NOS/VE - PHASE 2),PH2O
          EJECT
 DD2      SPACE  4,10
**        DD2 - DEADSTART DUAL-STATE NOS/VE PHASE 2.


 DD2      ROUTINE

          RJM    PDS         PRESET FOR DUAL-STATE
          UJN    DS21        CONTINUE DEADSTART
 DS2      SPACE  4,10
**        DS2 - DEADSTART STANDALONE NOS/VE PHASE 2.
*
*         THIS ROUTINE IS CALLED TO PERFORM A STANDALONE NOS/VE DEADSTART.


 DS2      ROUTINE

          RJM    PSA         PRESET FOR STANDALONE
 DS21     CALL   CDS         CONTINUE DEADSTART
 PR2      SPACE  4,10
**        PR2 - PROCESS RELOCATION REQUEST PHASE 2.
*
*         ENTRY  (CM - CM+3) = RELOCATION CONTROL WORD.
*                (W4 - W7) = R-POINTER TO RELOCATION CONTROL WORD.
*
*         EXIT   TO *DSX*.
*                *DFT* RELOCATED IF REQUESTED.
*                *SCI* IDLED IF REQUESTED.
*
*         USES   CM - CM+3, W4 - W7.
*
*         CALLS  IIB, RDT.


 PR2      ROUTINE

*         PROCESS *DFT* FLAGS.

          LDD    CM          CHECK DFT FLAGS
          SHN    21-10
          MJN    PR24        IF *DFT* DELIBERATELY DIED
          SHN    21-7-21+10
          MJN    PR23        IF *DFT* READY TO BE RELOCATED
          SHN    21-6-21+7
          PJN    PR24        IF *REQUEST DFT IDLE* NOT PENDING
          LDM    PRRA        CHECK TIMER VALIDITY
          NJN    PR21        IF TIMER ACTIVE
          LDN    10D+1       INITIALIZE 10 SECOND TIMER
          STM    PRRA
 PR21     SOM    PRRA        DECREMENT TIMER
          ZJN    PR23        IF TIMED OUT
 PR22     CALL   DSX         RELOAD RESIDENT AND EXIT

*         RELOAD *DFT*.

 PR23     RJM    RDT         RELOCATE *DFT*
          LRD    W4+1
          LDD    W4          REREAD RELOCATION CONTROL WORD
          ADC    RR
          CRDL   CM
          LDDL   CM          CLEAR *DFT* FLAGS
          LPC    0#803F
          STDL   CM

*         PROCESS *SCI* FLAGS.

 PR24     LDD    CM+1        PROPAGATE *REQUEST SCI IDLE* TO *SCI IDLED*
          LPC    100
          SHN    1
          RADL   CM+1
          LRD    W4+1
          LDD    W4          REWRITE RELOCATION CONTROL WORD
          ADC    RR
          CWDL   CM
          LDDL   CM+1
          SHN    21-6
          PJN    PR22        IF *REQUEST SCI IDLE* NOT SET
          UJN    *           WAIT FOR *DFT* TO IDLE PP
 ADT      SPACE  4,10
**        ADT - ACTIVATE DFT PROGRAM.
*
*         ENTRY  EICB AND DFTB SET UP.
*                (ADTA) = 4/DFT PP TYPE, 8/DFT PP NUMBER.
*                TO *AAC* IF DFT NOT FOUND.
*
*         USES   T6, CM - CM+3.
*
*         CALLS  LCM, TDF.
*
*         MACROS FINDCM.


 ADT      SUBR               ENTRY/EXIT
          LDC    **          DFT PP TYPE AND NUMBER
 ADTA     EQU    *-1
          STD    T6
          FINDCM DFT         FIND DFT WITHIN THE CIP DIRECTORY
          ZJN    ADT20       IF *DFT* NOT FOUND IN CIP DIRECTORY
          RJM    LCM         LOAD CIP MODULE
          RJM    TDF         TIMEOUT *DFT* AFTER 3 SECONDS
          UJN    ADTX        RETURN

 ADT20    LDC    DADN        61B - DFT NOT FOUND IN CIP DIRECTORY
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 BRT      SPACE  4,15
**        BRT - BUILD RESOURCE TABLE.
*
*         ENTRY  EICB INITIALIZED.
*                (DO) = DEADSTART ORIGIN.
*                     = 0, IF DUAL-STATE.
*                     = 1, IF STANDALONE.
*
*         EXIT   (CBUF) = TABLE OF AVAILABLE PPS AND CHANNELS.
*
*         CALLS  FHE, SDU, SSU.
*
*         USES   T1, T2, T3, T5, T6.


 BRT      SUBR               ENTRY/EXIT
          LDC    IRTL-1      INITIALIZE RESOURCE TABLE SIZE
          STD    T1
 BRT10    LDC    0#0F0F      SET ALL PPS AND CHANNELS TO UNAVAILABLE
          STML   CBUF,T1
          SOD    T1
          PJN    BRT10       IF MORE ENTRIES TO SET
          RJM    SSU         READ IOU DESCRIPTOR AND SET *SCI* PP UNAVAILABLE
          LDD    DO          USE DEADSTART ORIGIN FOR IOU 0
          STD    T6
          ZJN    BRT30       IF NOT STANDALONE DEADSTART
          RJM    SDU         SET *DFT* PP UNAVAILABLE
 BRT30    LDM    HBUF+CIOM   CHECK FOR MODEL 44(16)
          SHN    -4
          LMC    0#43
          ZJN    BRT32       IF NOT MODEL 43(16)
          LMN    0#44&0#43
          NJN    BRT35       IF NOT MODEL 44(16)

 BRT32    LDN    IRTL/4      SET OFFSET TO CIO PORTION OF TABLE
          STM    BRTG
          RAM    BRTG+1
          LDN    1           PROCESS PP-S 0-11 AND 20-31
          UJN    BRT36       GET OFFSET TO PP STATUS

 BRT35    LDN    2
 BRT36    STD    T5
 BRT40    LDM    BRTE,T5
          STD    T1          OFFSET TO PP STATUS
          LDM    HBUF,T1
          LPC    1777        PP'S 12 AND 13 IMPOSSIBLE
          LMC    1777
          STD    T1          PP STATUS
          LDM    BRTF,T5
          STD    T2          OFFSET TO CHANNEL STATUS
          LDM    HBUF,T2
          LMC    7777
          STD    T2          CHANNEL STATUS
          LDM    BRTG,T5
          STD    T3          STARTING PP/CH NUMBER
 BRT50    LDD    T1
          SHN    21-0
          STD    T1
          PJN    BRT60       IF PP IS NOT AVAILABLE
          LDD    T6          DEADSTART ORIGIN
          SHN    7           A = 80(16) IF IN STANDALONE
          ADML   CBUF,T3
 BRTA     EQU    *-1
          LPC    0#FF80
          STML   CBUF,T3     DEFINE PP AS ACTIVE/AVAILABLE
 BRTB     EQU    *-1
 BRT60    LDD    T2
          SHN    21-0
          STD    T2
          PJN    BRT70       IF PP IS NOT AVAILABLE
          LDD    T6          DEADSTART ORIGIN
          SHN    17          A = 8000(16) IF IN STANDALONE
          ADML   CBUF,T3
 BRTC     EQU    *-1
          LPC    0#80FF
          STML   CBUF,T3     DEFINE CHANNEL AS ACTIVE/AVAILABLE
 BRTD     EQU    *-1
 BRT70    AOD    T3
          SBN    1+IRTL/2
          MJN    BRT50       IF BARREL NOT FINISHED
          SOD    T5
          PJP    BRT40       IF MORE ENTRIES TO PROCESS
          LDM    BRTH        CHECK IF MAXIMUM IOU ORDINAL PROCESSED
          SBM    MION
          ZJN    BRT80       IF LAST IOU PROCESSED
          AOM    BRTH
          SHN    14
          ADN    IOUID
          RJM    FHE         FIND HARDWARE ELEMENT
          LDN    0
          STD    T6
          LDC    CBUF+IRTL/2 SET OFFSET INTO TABLE FOR IOU 1
          STM    BRTA
          STM    BRTB
          STM    BRTC
          STM    BRTD
          LJM    BRT30       PROCESS NEXT IOU

 BRT80    LJM    BRTX        RETURN

 BRTE     CON    07,10,15    OFFSET TO PP STATUS
 BRTF     CON    12,13,16    OFFSET TO CH STATUS
 BRTG     CON    00,20,34    OFFSET IN PP/CH TABLE
*BRTG     CON    34,54       (I4C)
 BRTH     CON    0           IOU COUNTER
 CDB      SPACE  4,15
**        CDB - CONFIGURE DFT BUFFER.
*
*         ENTRY  (LA - LA+1) = NEXT AVAILABLE CM ADDRESS.
*                (CDBB+1) = DFT PP NUMBER (STANDALONE DEADSTART ONLY).
*
*         EXIT   (DP - DP+1) = R-REGISTER OF DFT BUFFER.
*                (DFTO) = DFT OFFSET TO ACCESS DFT CONTROL WORD.
*                (LA - LA+1) = ADVANCED.
*                (VP - VP+3) = R-POINTER TO NOS/VE REQUEST BLOCK.
*                RELOCATION CONTROL WORD POINTER CLEARED.
*                TO *ABD* TO ABORT DEADSTART IF BOOT PIECES NOT LOADED.
*
*         USES   CM - CM+3, CN - CN+2, T1, T2, W0 - W3.
*
*         CALLS  ALA, CCM, FHE, IDT, IIB, *ABD*.


*         SAVE THE DFT/OS BUFFER INTERFACE VERSION LEVEL IN THE DFT BUFFER.

 CDB2     LDN    VER7        FORCE INTERFACE VERSION LEVEL 7
          SHN    10
          RAML   CDBB+1      MERGE WITH DFT PP NUMBER

*         ALLOCATE SPACE FOR NEW DFT BUFFER.  THE ACTUAL INITIALIZATION
*         OF THE BUFFER WILL BE PERFORMED BY DFT PRESET CODE.

          LDN    1           SET OFFSET TO POINT TO DFT CONTROL WORD
          STM    DFTO
          STD    CM
          LDN    0           SET OFFSET TO CLEAR FROM WORD -1 OF BUFFER
          STD    CN
          LRD    LA          SET DFT R-REGISTER VALUE
          SRD    DP
          SRD    CN+1
          SRD    CM+1
          LDN    DSDFT       WRITE DFT POINTER IN EICB
          RJM    IIB
          CWDL   CM
          CRML   CDBD,ON
          LRD    CN+1        CLEAR DFT BUFFER
          LDML   CDBA+3
          ADN    3+1         INCLUDE TEMPORARY NOS/VE BUFFER
          RJM    CCM

*         WRITE DFT HANDOFF INFORMATION TO DFT BUFFER.

          LDML   CDBA+3      CREATE TEMPORARY NOS/VE REQUEST POINTER
          RAML   CDBD
          LDN    1
          STM    CDBD+3
          LRD    DP
          LDM    DFTO
          ADC    RR-1
          CWML   CDBA,ON     WRITE BUFFER-1 (DFT BUFFER SIZE)
          CWML   CDBB,ON     WRITE BUFFER+0 (DFT INTERFACE VERSION/PP NUMBER)
          CWML   CDBC,ON     WRITE BUFFER+1 (PP RESIDENT BUFFER)
          CWML   CDBD,ON     WRITE BUFFER+2 (NOS/VE REQUEST BUFFER)
          SBN    1
          CRDL   VP          SET POINTER TO TEMPORARY NOS/VE BUFFER

*         UPDATE LOAD ADDRESS.

 CDB3     LDML   CDBA+3      ADVANCE LOAD ADDRESS
          ADN    3+1         INCLUDE TEMPORARY NOS/VE BUFFER
          RJM    ALA

 CDB      SUBR               ENTRY/EXIT
          LDN    D8RLP       CLEAR DFT/SCI RELOCATION CONTROL IN EICB
          RJM    IIB
          CWML   CDBA,ON

*         DETERMINE IF THE BOOT PIECES HAVE BEEN LOADED.

          LDN    DFTID       READ DFT MRT DESCRIPTOR
          RJM    FHE
          MJN    *           IF NOT FOUND
          LDM    HBUF+DOBIV
          SHN    -6
          LMN    77
          NJN    CDB0        IF BOOT PIECES LOADED
          CALL   ABD         ABORT NOS/VE DEADSTART

*         DETERMINE SIZE OF DFT BUFFER.

 CDB0     LDM    HBUF+DFTSZ  SET TOTAL SIZE OF DFT BUFFER
          SHN    14
          ADM    HBUF+DFTSZ+1
          STML   CDBA+3
          LDN    DSDFT       READ DFT POINTER FROM EICB
          RJM    IIB
          CRDL   CM
          LDDL   CM+2        CHECK POSSIBLE DFT POINTER
          ADDL   CM+3
          ZJP    CDB2        IF NO PREVIOUS DFT BUFFER
          LRD    CM+1        SAVE DFT R-REGISTER VALUE
          SRD    DP
          LDD    CM          SAVE OFFSET
          STM    DFTO
          LDD    DO          CHECK TYPE OF DEADSTART
          ZJN    CDB1        IF DUAL-STATE DEADSTART

*         UPDATE DFT CONTROL WORD.

          LDN    HDRP        READ DFT CONTROL WORD
          RJM    IDT
          CRDL   W0
          LDDL   W0+DHPP     CLEAR OLD DFT PP NUMBER
          LPC    0#FF00
          ADM    CDBB+1      MERGE WITH NEW DFT PP NUMBER
          STDL   W0+DHPP
          LDDL   W0+DHFLG    CLEAR DFT VERIFIED FLAG
          LPC    0#FF7F
          ERRNZ  DH.FV-7     MASK ASSUMES *DH.FV* IS 2**7
          STDL   W0+DHFLG
          LRD    DP
          RJM    SPB         SET PP BOUNDARY
          LDN    HDRP        REWRITE DFT CONTROL WORD
          RJM    IDT
          CWDL   W0

*         CLEAR NOS/VE REQUEST BLOCK.

 CDB1     LDN    NVEP        READ NOS/VE REQUEST POINTER
          RJM    IDT
          CRDL   VP
          CRDL   CN
          LRD    CN+1
          RJM    SPB         SET PP BOUNDARY
          LDDL   CN+3        CLEAR NOS/VE REQUEST BLOCK
          RJM    CCM
          LJM    CDB3        UPDATE LOAD ADDRESS

 CDBA     BSSZ   4           BUFFER-1 - DFT BUFFER SIZE IN BITS 48-63
 CDBB     BSSZ   4           BUFFER+0 - DFT PP NUMBER (24-31), I/F VERSION (32-39)
 CDBC     BSSZ   4           BUFFER+1 - PP RESIDENT POINTER (ZERO)
 CDBD     BSSZ   4           BUFFER+2 - DFT/OS REQUEST AREA POINTER
*COPY     CTP$SCI_CREATE_SSR_CHECKSUM
 CSR      SPACE  4,10
**        CSR - CREATE SSR RECORD.
*
*         EXIT   SSR LOADED.
*                TO *AAC*, IF ERROR RETURNED ON *DFT* REQUEST.
*
*         USES   W1 - W3.
*
*         CALLS  CSC, LCP, MCS, SSR, *AAC*.
*
*         MACROS SSRE.


 CSR2     RJM    MCS         MOVE AND COMPLETE THE SSR

 CSR      SUBR               ENTRY/EXIT
          RJM    SSR
          LDD    SA
          ADD    SA+1
          ZJN    CSR1        IF THE SSR IS NOT ALREADY DEFINED
          RJM    CSC         CREATE SSR CHECKSUM
          LDD    T4          CHECK IF *SCKS* ENTRY FOUND
          ZJN    CSR1        IF *SCKS* ENTRY NOT FOUND
          LDDL   W5          COMPARE CHECKSUMS
          LMDL   T3
          ZJN    CSRX        IF SSR CHECKSUM VERIFIES

 CSR1     BSS    0
          CODE   D
          LRD    LA
          LDC    3RSSR
          RJM    LCP         LOAD CIP PROGRAM
          CODE   *
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJN    CSR2        IF DFT REQUEST COMPLETED WITH NO ERROR
          LDC    DASS        622 - *SCI* DETECTED *DFT* ERROR WHILE LOADING SSR
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 CVB      SPACE  4,10
**        CVB - CONFIGURE NOS/VE BOOT.
*
*         ENTRY  EICB BUILT.
*
*         EXIT   PAGE SIZE OBTAINED.
*                PAGE LENGTH OBTAINED.
*                MEMORY SIZE OBTAINED.
*                PORT CODES OBTAINED.
*
*         CALLS  FHE, VMB.


 CVB      SUBR               ENTRY/EXIT
          LDN    CMID
          RJM    FHE
          LDM    HBUF+7      SAVE LOGICAL CM SIZE
          STD    SZ
          LDM    HBUF+10
          STD    SZ+1
          LDN    GPDID
          RJM    FHE
          LDM    HBUF+GPDPS  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
          LDN    GPDID
          RJM    FHE

*         SET THE PAGE TABLE LENGTH.  THE PAGE TABLE LENGTH MASK
*         INCREASED FOR 256 MEGA BYTE MEMORY SUPPORT.  DUE TO
*         PROBLEMS COORDINATING THIS CHANGE FOR ALL MAINFRAMES
*         WITH *CTI* THIS CODE USES THE OLD *MRT* LOCATION IF NEW
*         LOCATION DOES NOT CONTAIN A VALUE.  IN THE FUTURE, WHEN
*         *CTI* HAS MADE THIS CHANGE FOR ALL MAINFRAMES (INCLUDING
*         S0), THIS CODE COULD BE CHANGED TO SIMPLY USE THE NEW
*         LOCATION.

          LDM    HBUF+GPDLPTL PAGE TABLE LENGTH MASK / 10000(8)
          NJN    CVB0        IF PAGE TABLE LENGTH MASK PRESENT
          LDM    HBUF+GPDPTL PAGE TABLE LENGTH MASK / 10000(8)
          LPC    0#FF
CVB0      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    CVB1
          LDML   HPTL
          RAD    LA+1        ROUND LOAD ADDRESS TO MULTIPLE OF PTL
          SHN    -14
          RAD    LA
          LDML   HPTL
          SBN    1
          LMC    7777
          LPDL   LA+1
          STD    LA+1
 CVB1     LDM    HBUF+GPDOPF SAVE OPERATOR PAUSE FLAG
          SHN    -6          TRIM UNDESIRED BITS
          LPN    1
          STM    WAIT
          LJM    CVBX        RETURN
*COPY     CTP$SCI_DELAY_ROUTINE
*COPY     CTP$SCI_FETCH_CM_BOUND_VALUES
 FPD      SPACE  4,15
**        FPD - FIND A PP FOR *DFT*.
*
*         EXIT   FIRST AVAILABLE PP IN SAME BARREL AS *SCI* RESERVED FOR *DFT*.
*                (ADTA) = 4/DFT PP TYPE, 8/DFT PP NUMBER.
*                (SDUA) = *LDN DFTPP*.
*                (CDBB+1) MODIFIED TO REFLECT *DFT* PP.
*                TO *AAC*, IF *DFT* PP NOT FOUND.
*
*         USES   CM, CM+1, T1, T2, T3.
*
*         CALLS  SSU.


 FPD2     LDD    T1          SAVE *DFT* PP NUMBER
          STM    CDBB+1
          RAM    SDUA
          LDD    T1
          LMD    T3
          STM    ADTA

 FPD      SUBR               ENTRY/EXIT
          RJM    SSU         SET *SCI* PP UNAVAILABLE IN *HBUF*
          STD    T2          SAVE BARREL FLAG
          SHN    4
          STD    T1
          ADN    11+1        SET LAST PP IN BARREL
          STD    CM
          LDN    0           SET NIO PP TYPE
          STDL   T3
          LDM    HBUF+CIOM   CHECK FOR MODEL 44(16)
          SHN    -4
          LMC    0#43
          ZJN    FPD05       IF MODEL 43(16)
          LMN    0#44&0#43
          NJN    FPD0        IF NOT MODEL 44(16)
 FPD05    LDD    T1
          ADN    4+1         DFT MUST BE IN CLUSTER ZERO
          STD    CM
          LDC    0#100       SET CIO PP TYPE
          STDL   T3
 FPD0     LDM    HBUF+CIOPLM,T2
          STD    CM+1
 FPD1     LDD    CM+1
          SHN    21-0
          PJP    FPD2        IF PP AVAILABLE
          STD    CM+1
          AOD    T1
          LMD    CM
          NJN    FPD1        IF BARREL/CLUSTER NOT EXHAUSTED
          LDC    DAND        618 - NO PP AVAILABLE FOR DFT
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 LCM      SPACE  4,10
**        LCM - LOAD CIP MODULE.
*
*         ENTRY  (A) = CM ADDRESS OF PP DIRECTORY HEADER.
*                (T6) = PP TO LOAD.
*
*         EXIT   PP EXECUTING PROGRAM.
*                TO *AAC* IF PP LOAD ERROR.
*
*         CALLS  DLP, IDP, IIB, SCF.


 LCM      SUBR               ENTRY/EXIT
          ADN    1
          STML   LCMA+SC     SAVE A
          CRML   T3+LCMA,ON  READ DIRECTORY ENTRY
          LDD    CM+1
          STML   LCMA+SC+1
          LDD    CM+2
          STML   LCMA+SC+2
          LDN    DSEBP
          RJM    IIB
          CRML   LCMA+CD,ON  FETCH CIP DIRECTORY POINTER
          LDM    S0FLG       TEST IOU TYPE
          ZJN    LCM1        IF NOT AN S0/S0E
          LDD    T6
          RJM    /"PRGNAM"AD/IDP
          UJN    LCM2        CONTINUE

 LCM1     LDD    T6
          RJM    IDP         IDLE PP
 LCM2     LDN    MX
          STD    T1          DEADSTART ON MUX CHANNEL
          RJM    SCF         SET CHANNEL FLAG ON MUX CHANNEL
          LDM    S0FLG       TEST IOU TYPE
          ZJN    LCM3        IF NOT AN S0/S0E
          LDD    T6
          RJM    /"PRGNAM"AD/DLP
          UJN    LCM4        CONTINUE

 LCM3     LDD    T6
          RJM    DLP         DEADSTART LOAD PP
 LCM4     LDN    LCMAL
          OAM    LCMA,MX     OUTPUT PROGRAM
          FJM    *,MX        WAIT CHANNEL EMPTY
          DCN    MX+40
          CCF    *,MX        CLEAR CHANNEL INTERLOCK
          ZJP    LCMX        IF TRANSFER COMPLETE
          LDC    DALE        60C - PP LOAD ERROR
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR

 LCMA     BSS    0
          LOC    0
          CON    BTS-1
          BSS    2
 T3       CON    0,0,0,0     DIRECTORY ENTRY

 BTS      LDD    T3
          STD    BTSA
          LDD    SC
          ADC    RR+1
          LRD    SC+1
          CRML   **,T3+1
 BTSA     EQU    *-1         LOAD ADDRESS OF PROGRAM
          LDN    0           *DFT* IOU NUMBER
          STD    70
          LJM    100         START RUNNING PROGRAM

 RF       CON    0           *DFT* RESTART FLAG
          ERRNZ  RF-23       *DFT* PRESET MUST BE CHANGED
          BSS    30-*
 SC       CON    0,0,0       ADDRESS OF PROGRAM DIRECTORY ENTRY
          CON    0           (UNUSED)
 CD       CON    0,0,0,0     POINTER TO CIP DIRECTORY
 LCMAL    BSS    0
          LOC    *O
*COPY     CTP$SCI_MOVE_AND_COMPLETE_SSR
 PDS      SPACE  4,10
**        PDS - PRESET FOR DUAL-STATE.
*
*         CALLS  BRT, CDB, CSR, CVB, PDC, PIB, SSI, UDS.


 PDS      SUBR               ENTRY/EXIT
          RJM    PDC         PRESET DIRECT CELLS
          RJM    PIB         PRESET EICB POINTER
          LDN    0           *SCI* ALWAYS IN IOU 0 FOR NON-CYBER 2000
          RJM    SSI         SET *SCI* IOU NUMBER AND MODEL NUMBER
          RJM    UDS         UPDATE DEADSTART STATUS AND SET *SCD/VE* PORT
          RJM    PEM         PRESET EICB MESSAGE BUFFER
          RJM    CDB         CREATE/CONFIGURE DFT BUFFER
          RJM    CVB         CONFIGURE NOS/VE BOOT
          RJM    CSR         SET UP COMMUNICATIONS WITH SSR
          RJM    BRT         BUILD RESOURCE TABLE
          UJN    PDSX        RETURN
*COPY     CTP$SCI_PRESET_EICB_MSG_BUFFER
 PSA      SPACE  4,10
**        PSA - PRESET FOR STANDALONE.
*
*         CALLS  ADT, BCT, BRT, CDB, CSR, CVB, FPD, IAD, INS, PDC, PEM,
*                SBI, SSI, UTE.


 PSA      SUBR               ENTRY/EXIT
          RJM    PEM         PRESET EICB MESSAGE BUFFER
          LDN    0           *SCI* ALWAYS IN IOU 0 FOR NON-CYBER 2000
          RJM    SSI         SET *SCI* IOU NUMBER AND MODEL NUMBER
          RJM    FPD         FIND A PP FOR DFT
          RJM    CDB         CREATE/CONFIGURE DFT BUFFER
          RJM    SBI         SET BARREL INTERLEAVES
          RJM    CVB         CONFIGURE NOS/VE BOOT
          RJM    ADT         ACTIVATE DFT
          RJM    CSR         LOAD AND BUILD THE SSR
          RJM    BRT         BUILD RESOURCE TABLE
          RJM    IAD         IDLE ALL DRIVERS
          LDN    3           SET FAKE *EI* PERMISSION TO DEADSTART
          STM    DSTW+1
          LDN    1           SET DEADSTART FLAG
          STM    DSTW+3
          SSRE   WAIT        SET OPERATOR PAUSE FLAG
          LDM    WAIT
          STD    W5
          LDD    W1
          RJM    INS         UPDATE *WAIT* WITH OPERATOR PAUSE FLAG
          CWDL   W2
          SSRE   DTYP        SET DEADSTART ORIGIN
          LDN    0
          STD    W4          CLEAR DEADSTART TYPE
          STD    W5
          LDD    W1
          RJM    INS         UPDATE CLEARED *DTYP* ENTRY
          CWDL   W2
          LJM    PSAX        RETURN
 RDT      SPACE  4,10
**        RDT - RELOCATE *DFT*.
*
*         ENTRY  (CM - CM+3) = RELOCATION CONTROL WORD.
*
*         CALLS  IDT, IVP, LCM.
*
*         USES   CM - CM+3, W0 - W3.


 RDT      SUBR               ENTRY/EXIT

*         IDLE EXISTING COPY OF *DFT*.

          LDD    CM          SET NEW PP NUMBER FOR *DFT*
          LPN    77
          STM    RDTA
          LDN    HDRP        SET PRESENT PP NUMBER FOR *DFT*
          RJM    IDT
          CRDL   CM
          LDDL   CM+DHPP     SAVE EXISTING *DFT* PP NUMBER
          LPN    77
          STM    RDTA+1
          RJM    IVP         IDLE EXISTING *DFT*

*         UPDATE *DFT* HEADER.

          LDDL   CM+DHPP     UPDATE PP NUMBER IN *DFT* HEADER
          LMM    RDTA+1      CLEAR EXISTING PP NUMBER
          LMM    RDTA        MERGE NEW PP NUMBER
          STDL   CM+DHPP
          LDDL   CM+DHFLG    CLEAR *DFT VERIFIED* FLAG
          ERRNZ  DH.FV-7     MASK ASSUMES *DH.FV* IS 2**7
          LPC    0#FF7F
          STDL   CM+DHFLG
          LDN    HDRP        REWRITE DFT HEADER
          RJM    IDT
          CWDL   CM

*         INITIALIZE DIRECT CELLS IN BOOTSTRAP IMAGE.

 RDT1     LDM    RDTA
          STD    T6
          AOM    LCMA+RF     SET *DFT RESTART* FLAG IN BOOTSTRAP
          FINDCM DFT         LOCATE *DFT* IN THE CIP DIRECTORY
          RJM    LCM         LOAD *CIP* MODULE
          LJM    RDTX        RETURN

 RDTA     BSS    2           NEW/OLD PP NUMBER
 SBI      SPACE  4,10
**        SBI - SET BARREL INTERLEAVES.
*
*         CYBER 810/830 FCO 3364 INTRODUCES THE ABILITY TO SELECT HOW
*         CONCURRENT PP ACCESS TO CM IS INTERLEAVED.  THIS ALLOWS THE
*         OS TO SELECT WORD INTERLEAVE MODE FOR IOU BARREL 0 AND BLOCK
*         INTERLEAVE MODE FOR BARREL 1, AND ASSIGN PERFORMANCE CRITICAL
*         HIGH CM ACCESS PP-S TO BARREL 1 ONLY.
*
*         USES   T6, T7.
*
*         CALLS  RMR.


 SBI      SUBR               ENTRY/EXIT
          LDM    CPUT        TEST FOR S1-CR
          LPN    77
          NJN    SBIX        IF NOT S1-CR
          LDK    ISTR
          STD    RN
          LDM    ELIO
          RJM    RMR         READMR RDATA,ELIO,ISTR  READ STATUS REGISTER
          LPN    20          CHECK RECONFIGURATION
          ADN    20
          SHN    6-4
          STD    T6
          LDK    DEMR
          STD    RN
          LDM    ELIO
          RJM    RMR         READMR RDATA,ELIO,DEMR  READ IOU REGISTER
          LPN    0#3F
          ADD    T6
          STM    RDATA+7     SET BARREL 1 TO BLOCK INTERLEAVE MODE
          WRITMR RDATA,ELIO,DEMR
          LJM    SBIX        RETURN
 SDU      SPACE  4,10
**        SDU - SET *DFT* PP UNAVAILABLE.
*
*         ENTRY  (SDUA) = *DFT* PP NUMBER.
*                (HBUF) = IOU DESCRIPTOR.
*
*         EXIT   *DFT* PP SET UNAVAILABLE IN *HBUF*.
*
*         USES   T5.


 SDU1     LDD    T5          *DFT* PP NUMBER
          ADC    SHNI
          STM    SDUC
          LDN    1
 SDUC     SHN    **
          RAM    HBUF+CIOPLM

 SDU      SUBR               ENTRY/EXIT
          LDN    **
 SDUA     EQU    *-1         (*DFT* PP NUMBER)
          STD    T5
          SBN    20          TEST FOR UPPER PP
          MJN    SDU1        IF LOWER
          ADC    SHNI
          STM    SDUB
          LDN    1
 SDUB     SHN    **
          RAM    HBUF+CIOPLM+1
          UJN    SDUX        RETURN
 SSU      SPACE  4,10
**        SSU - READ IOU DESCRIPTOR AND SET *SCI* PP UNAVAILABLE.
*
*         EXIT   (A) = 0 IF *SCI* IN LOWER BARREL.
*                    = 1 IF *SCI* IN UPPER BARREL.
*                (HBUF) = IOU DESCRIPTOR.
*                *SCI* PP SET UNAVAILABLE IN CORRESPONDING *HBUF+CIOPLM* WORD.
*
*         CALLS  FHE.


 SSU1     LDM    PPNO        GET PP NUMBER
          ADC    SHNI
          STM    SSUB
          LDN    1
 SSUB     SHN    **
          RAM    HBUF+CIOPLM  FORCE PP UNAVAILABLE
          LDN    0           RETURN LOWER BARREL FLAG

 SSU      SUBR               ENTRY/EXIT
          LDN    IOUID
          RJM    FHE         FIND IOU INFORMATION IN *2AP*
          LDM    PPNO        FORCE SCI'S PP AS UNAVAILABLE
          SBN    20          TEST FOR UPPER PP
          MJN    SSU1        IF LOWER
          ADC    SHNI
          STM    SSUA
          LDN    1
 SSUA     SHN    **
          RAM    HBUF+CIOPLM+1  FORCE PP AS UNAVAILABLE
          LDN    1
          UJN    SSUX        RETURN
*COPY     CTP$SCI_TIMEOUT_DFT_VERIFIED
 UDS      SPACE  4,10
**        UDS - UPDATE DEADSTART STATUS AND SET *SCD/VE* PORT.
*
*         EXIT   (*D8ST*) BIT 63 CLEARED.
*                (SCDP) = *SCD/VE* PORT BIT(S).
*
*         USES   CM - CM+3.
*
*         CALLS  IIB, SPB.


 UDS      SUBR               ENTRY/EXIT
          LRD    IB+1
          RJM    SPB         SET PP BOUNDS
          LDN    D8ST        READ DEADSTART STATUS WORD
          RJM    IIB
          CRDL   CM
          LDDL   CM+2        EXTRACT *SCD/VE* PORT NUMBER
          SHN    -2
          LPN    1
          STM    SCDP
          LDDL   CM+3        CLEAR START BIT
          SCN    1
          STDL   CM+3
          LDN    D8ST        REWRITE *D8ST*
          RJM    IIB
          CWDL   CM

*         FORCE *MDD* TO GIVE UP THE PORT IF IT HAS THE SAME PORT ATTACHED.

          LDML   MDMT+PTDB.
*         ZJN    UDSX        IF *MDD* NOT DEFINED
          SHN    21-14
          PJN    UDSX        IF NO PORT ASSIGNED TO *MDD*
          LDM    MDMT+PTUS.
          SHN    -2
          LPN    1
          LMM    SCDP
          NJN    UDS1        IF *MDD* NOT ON SAME PORT
          LDC    BPA         FORCE *MDD* TO GIVE UP PORT
          STM    MDMT+RTNP.
 UDS1     LJM    UDSX        RETURN
*COPY     CTP$SCI_UPDATE_MEMORY_BOUNDS
          SPACE  4,10
*         COMMON DECKS.


*COPY     CTP$SCI_VPB_IDLE_IOU0


          OVERFLOW  CBUF     OVERFLOW INTO IOU RESOURCE TABLE
*COPY     CTP$SCI_SET_IOU_NUMBER
*COPY     CTP$SCI_VERIFY_MEMORY_BOUNDS
          SPACE  4,10
          OVERFLOW  MBUF     CHECK FOR OVERFLOW
          OVERLAY  (SCI VPB DEADSTART NOS/VE - PHASE 3),PH2O
 CDS      SPACE  4,10
**        CDS - CONTINUE DEADSTART.
*
*         ENTRY  PRESET HAS BEEN PERFORMED.
*                (SCDP) = PORT BITS FOR *SCD/VE* MODE.
*
*         EXIT   TO *CRV1* TO CONTINUE DEADSTART.
*
*         CALLS  URT.


 CDS      ROUTINE            ENTRY

          RJM    URT         UPDATE RESOURCE TABLE
          AOD    VA          INDICATE NOS/VE ACTIVE
          LDM    SCDP        UPDATE *SCD* PORT NUMBER
          RAML   ACDS
          RJM    SBL         SET BOOT LOAD OK STATUS IN *D8ST*
          RJM    DVE         DEADSTART NOS/VE
          RJM    SDS         SET DEADSTART STATUS
          RJM    DOP         DEADSTART ONE PROCESSOR
*         CALL   DSX         RETURN TO NORMAL SCI MODE

          ERRNZ  DSX-*       CODE ASSUMES ADJACENT ROUTINE
 DSX      SPACE  4,10
**        DSX - DEADSTART EXIT.
*         RELOAD *MDD* RESIDENT IF NECESSARY AND EXIT.
*
*         EXIT   TO *IDL* IF NOT CALLED FROM *CHK* IN *SCI* PRESET.
*                TO *CHKX* IF CALLED DURING *SCI* PRESET.


 DSX      ROUTINE

          LDML   PPNM        CHECK ENTRY CONDITIONS
          LMC    2R_SC
          ZJN    DSX1        IF IDLE LOOP IS LOADED
          LJM    CHKX        RETURN FROM *VPB* MODE

 DSX1     LDM    MDMT+PTDB.  CHECK IF *MDD* WAS ACTIVE
          SHN    21-13
          MJN    DSX2        IF *MDD* IS ACTIVE
          LJM    IDL         ELSE RETURN FROM *VPB* MODE

 DSX2     LDC    MDDSIO*10000+IDL  RELOAD *MDD* RESIDENT
          RJM    LNO         LOAD OVERLAY
*         LJM    IDL         (PERFORMED BY *LNO*)
 ACD      SPACE  4,10
**        ACD - ACTIVATE CONSOLE DRIVER.
*
*         ENTRY  PORT NUMBER SET IN *ACDS*.
*
*         EXIT   *SCI* PARAMETER TABLE WRITTEN.
*
*         USES   CM - CM+3.
*
*         CALLS  SPA, SPB.


 ACD      SUBR               ENTRY/EXIT
          LDD    SB          CHECK FOR THE PARAMETER TABLE
          ADD    SB+1
          NJP    ACD4        IF AROUND ALREADY
          LDM    PPNO        SET *SCI* PP NUMBER
          SHN    4
          RAML   ACDA+1
          LDML   MDMT+PTDB.  SET *MDD* MODE
          ZJN    ACD1        IF NOT CURRENTLY ACTIVE
          SCN    77
          STML   ACDM
 ACD1     RJM    SPA         SET UP R-REGISTER FOR *SCI* PARAMETER TABLE
          LDD    SB
          ADD    SB+1
          NJP    ACD1.1      IF SCIPT EXISTS

*         LOCATE SCPT ENTRY IN SSR AND USE IT AS THE SCIPT.
*         SET THE ADDRESS FOUND INTO WORD D7RS+2 OF THE EICB.

          SSRE   SCPT        FETCH RESERVED SPACE IN SSR FOR SCIPT
          STML   SBAO        SAVE OFFSET OF SCIPT
          SRD    SB          SAVE R-REGISTER OF SCIPT
          LRD    IB+1        SET R-REGISTER FOR EICB
          RJM    SPB         SET PP BOUNDS
          LDN    0           PREPARE D7RS+2 ENTRY
          STD    CM
          LDN    1           SET *SCIPT IN SSR FLAG*
          STD    CM+1
          LDD    SB+1        CONVERT R-POINTER TO RMA
          SHN    6
          SCN    77
          ADML   SBAO        ADD IN OFFSET
          STDL   CM+3
          SHN    -20         SAVE POSSIBLE CARRY
          STDL   CM+2
          LDD    SB
          SHN    6-4
          RADL   CM+2
          LDN    D7RS+2      WRITE RMA INTO EICB
          RJM    IIB
          CWDL   CM
          RJM    SPA         SET UP SCIPT ADDRESS FROM EICB (GET STD. OFFSET)

*         WRITE INFORMATION TO SCIPT.

 ACD1.1   LRD    SB          R-REGISER FOR SCIPT
          RJM    SPB         SET PP BOUNDS
          LDM    SBAO        OFFSET FOR SCIPT
          LMC    RR
          CWML   ACDA,ON     WRITE *SCI* TABLE
 ACD2     LDC    6000        SET *SCD* MODE
          ADM    ACDS        GET PORT NUMBER
          STM    SCMT+PTDB.
 ACD3     LJM    ACDX        RETURN

 ACD4     LDM    SBAO        CHECK IF *SCD* MODE ALREADY ACTIVE
          LRD    SB
          LMC    RR
          CRDL   CM
          LDDL   CM+2
          LPC    4000
          NJN    ACD3        IF *SCD* MODE WAS ALREADY ACTIVE
          LDML   ACDS        SET *SCD* DEFINITION BYTE
          STDL   CM+2
          LDDL   CM+1        SET *SCD* DEFINITION CHANGED FLAG
          LPC    77777
          LMC    100000
          STDL   CM+1
          RJM    SPB         SET PP BOUNDS
          LDM    SBAO        REWRITE PARAMETER TABLE
          LMC    RR
          CWDL   CM
          LJM    ACD2        SET *SCD* MODE/PORT

 ACDA     VFD    16/0        UNUSED FIELD
          VFD    1/1,1/1     *SCD* DEFINITION CHANGED, *MDD* DEFINITION CHANGED
          VFD    1/0         NO CHANGE IN *SCI* PARAMETER 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

 ACDS     VFD    4/0         *SCD* CONSOLE DEFINITION BYTE
          VFD    1/0         CONSOLE STATE = INACTIVE
          VFD    2/2         SYSTEM STATE = VIRTUAL STATE
          VFD    3/1         CONSOLE EMULATES A 721
          VFD    3/0         CONTROLWARE CODE = NO CONTROLWARE
          VFD    3/**        PORT BIT(S)

 ACDM     VFD    4/0         *MDD* CONSOLE DEFINITION BYTE
          VFD    1/**        CONSOLE STATE = INACTIVE
          VFD    2/**        SYSTEM STATE = CTI
          VFD    3/**        PORT BIT(S)
          VFD    6/**        NOS COMMUNICATION CHANNEL
*COPY     CTP$SCI_BUILD_HARDWARE_REG
*COPY     CTP$SCI_BUILD_PAGE_TABLE
*COPY     CTP$SCI_COMPRESS_PAGE_TABLE
*COPY     CTP$SCI_COPY_TO_SAVE_AREA
 DOP      SPACE  4,10
**        DOP - DEADSTART ONE PROCESSOR.
*
*         EXIT   TO *AAC*, IF ERROR RETURNED ON *DFT* REQUESTS.
*
*         CALLS  DVP, IDR, IDT, IIB, RMP, SPB, SPR.
*
*         MACROS SSRE.


 DOP      SUBR               ENTRY/EXIT
          LDD    DO
          NJP    DOP3        IF NOT DUAL-STATE
 DOP1     LDN    D8DS
          RJM    IIB
          CRML   DSTW,ON     READ STATUS WORD
          LDML   DSTW+3
          LMN    1
          NJN    DOP1        IF *EI* NOT READY TO BE DEADSTARTED
          SSRE   DSAV
          RJM    SPR         SET UP PROCESSOR REQUEST
          LDN    H1P         HALT THE 170 PROCESSOR
          RJM    IDR         ISSUE DFT REQUEST
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJN    DOP2        IF DFT REQUEST COMPLETED WITH NO ERROR
          LDC    DAH7        624 - *SCI* DETECTED *DFT* ERROR WHILE HALTING
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR

 DOP2     LRD    DP
          RJM    SPB         SET PP BOUNDARY
          LCN    0           UPDATE THE C170/C180 LOGGING FLAG
          STDL   W0
          STDL   W1
          STDL   W2
          LMN    1S3
          STDL   W3
          LDN    HDRP
          RJM    IDT
          RDCL   W0          SET 180 LOGGING
 DOP3     LDN    0           SET C180 DEADSTART COMPLETE
          STM    DSTW+3
          LDN    D8DS
          RJM    IIB
          CWML   DSTW,ON     WRITE DEADSTART WORD
          RJM    RMP         RELOCATE MONITOR PROCESS
          LDN    DVP         DEADSTART VIRTUAL PROCESSOR
          RJM    IDR         ISSUE DFT REQUEST
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJP    DOPX        IF DFT REQUEST COMPLETED WITH NO ERROR
          LDC    DAS8        625 - *SCI* DETECTED *DFT* ERROR WHILE STARTING
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 DVE      SPACE  4,10
**        DVE - DEADSTART NOS/VE.
*
*         EXIT   TO *AAC*, IF ERROR RETURNED ON *DFT* REQUEST.
*
*         CALLS  ACD, BHR, BPT, CTS, IDT, IIB, INS, LCP, NRP, SPB.
*
*         MACROS SSRE.


 DVE      SUBR               ENTRY/EXIT
          LRD    IB+1        INTERFACE BLOCK ADDRESS
          RJM    SPB         SET PP BOUNDS
          LDN    D7ST        GET *DROPVE* FLAG WORD FROM EICB
          RJM    IIB
          CRDL   T4
          LDDL   T5
          SCN    20          CLEAR *DROPVE* BIT
          STDL   T5
          LDN    D7ST
          RJM    IIB
          CWDL   T4          REWRITE *DROPVE* FLAG WORD
          SSRE   DFTB        CREATE POINTER TO NOS/VE DFT REQUEST AREA
          SRD    CM+1        BUILD NOS/VE POINTER FOR DFT BUFFER
          RJM    NRP         NORMALIZE R-POINTER
          LDD    W4          NOS/VE BLOCK SIZE
          STD    CM+3
          LDN    NVEP
          RJM    IDT
          CWDL   CM          WRITE DFT NOS/VE REQUEST POINTER
          CRDL   VP          UPDATE VP POINTER
          LRD    SA
          RJM    SPB         SET PP BOUNDARY
          SSRE   BYVE        CLEAR TERMINATION STATUS FLAG
          LDN    0
          STD    W5
          LDDL   W1
          RJM    INS
          CWDL   W2
          RJM    ACD         ACTIVATE SYSTEM CONSOLE
          RJM    CTS         COPY MEMORY WHERE THE BOOT IS TO BE LOADED
                             TO THE SAVE AREA.  MAKE ROOM FOR THE CP BOOT.
          RJM    BPT         BUILD PAGE TABLE
          RJM    BHR         BUILD HARDWARE REGISTERS

          CODE   D
          LRD    BL
          LDC    3RVCB
          RJM    LCP         LOAD CIP PROGRAM
          CODE   *
          LMN    RCNE        CHECK FOR NO ERROR ON REQUEST
          ZJP    DVEX        IF DFT REQUEST COMPLETED WITH NO ERROR
          LDC    DASV        623 - *SCI* DETECTED *DFT* ERROR WHILE LOADING VCB
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR
 NRP      SPACE  4,10
**        NRP - NORMALIZE R-POINTER.
*
*         ENTRY  (A) = OFFSET FROM R.
*                (CM - CM+2) = R-POINTER


 NRP      SUBR               ENTRY/EXIT
          LPC    777777-RR
          STDL   CM
          SHN    -6
          RAD    CM+2        UPDATE R-REGISTER POINTER
          SHN    -14
          RAD    CM+1
          LDD    CM          FORM OFFSET TO A
          LPN    77
          STD    CM
          UJN    NRPX        RETURN
*COPY     CTP$SCI_RELOCATE_MPS_REGISTERS
 SBL      SPACE  4,10
**        SBL - SET BOOT LOAD OK STATUS IN *D8ST*.
*
*         EXIT   *SCI* DEADSTART STATUS IN *D8ST* SET TO INDICATE THAT THE
*                BOOT LOAD WAS SUCCESSFUL AND DEADSTART CAN CONTINUE.
*
*         USES   CM - CM+3.
*
*         CALLS  IIB, SPB.


 SBL      SUBR               ENTRY/EXIT
          LDN    D8ST
          RJM    IIB
          CRDL   CM
          LDN    BLOK        SET BOOT LOAD OK
          SHN    6
          RADL   CM+3
          RJM    SPB
          LDN    D8ST        REWRITE *D8ST*
          RJM    IIB
          CWDL   CM
          UJN    SBLX        RETURN
 SDS      SPACE  4,10
**        SDS - SET DEADSTART STATUS.
*
*         CALLS  IIB, SPB.


 SDS      SUBR               ENTRY/EXIT
          LRD    IB+1
          RJM    SPB         SET PP BOUNDARY
          LDN    D8DS        INFORM *SDA* THAT *SCI/VPB* IS READY
          RJM    IIB
          CWML   DSTW,ON
          UJN    SDSX        RETURN
*COPY     CTP$SCI_SET_UP_PROCESSOR_REQ
 URT      SPACE  4,10
**        URT - UPDATE RESOURCE TABLE IN THE SSR.
*
*         CALLS  SPB.


 URT      SUBR               ENTRY/EXIT
          LRD    SA
          RJM    SPB         SET BOUNDARY FOR PP
          SSRE   VEPP        SSR ENTRY POINTING TO TABLE
          CWML   CBUF,W4     WRITE PP/CHANNEL TABLE
          UJN    URTX        RETURN

          OVERFLOW  CBUF     CHECK FOR OVERFLOW

          ENDX
