          EJECT
          TITLE  DFT PRESET.
*         CTEXT  CTP$DFT PRESET.
*
*         THIS DECK HOLDS THE PRESET FUNCTIONS WHICH MUST
*         BE PROCESSED BEFORE THE CALL MECHANISM OR THE DFT
*         STRUCTURE IS BUILT.
 PRS      SPACE  4,15
**        PRS - PRESET DFT.
*
*         ENTRY  (23) = RESTART FLAG - 0 = NORMAL START, 1 = RESTART,
*                       FLAG IS VALID ONLY FOR NOS/VE START OF DFT.
*                (24 - 26) = OS BOUNDS ADDRESS IF RUNNING IN IOU1.
*                (70) = NUMBER OF IOU IN WHICH DFT IS RUNNING.
*
*         EXIT   DIRECT CELLS AND GLOBAL VARIABLES INITIALIZED AND/OR
*                RESTORED FROM SAVE AREA.
*                TO *DFT5* IF RUNNING IN PRIMARY IOU.
*                TO *DFT10* IF RUNNING IN SECONDARY IOU.


 PRS      BSS    0           ENTRY
          LDD    23          SAVE RESTART FLAG
          STM    PRSA
          LDDL   24          SAVE OS BOUNDS
          STML   PRSC
          LDDL   25
          STML   PRSC+1
          LDDL   26
          STML   PRSC+2
          LDD    70          SAVE IOU NUMBER
          STM    IOUN
          ZJN    PRS10       IF IOU0
          CCF    *,MX        CLEAR MUX CHANNEL FLAG
          CCF    *,MR        CLEAR MAINTENANCE CHANNEL FLAG
          DCN    MR+40       CLEAR ACTIVE ON CHANNEL
 PRS10    IAN    14          INITIALIZE TIMER BASE TIME
          STML   TIMA
          RJM    PIB         INITIALIZE INTERFACE BLOCK

*         SET UP POINTER TO DFT BLOCK.

          LDN    DSCM+3
          RJM    IIB
          CRDL   W0          READ DFT BLOCK POINTER
          LDM    IOUN
          ZJN    PRS12       IF IOU0
          LRD    W1          READ SECONDARY DFT BLOCK POINTER
          LDDL   W0
          ADC    RR+SDBP
          CRDL   W0
 PRS12    LDD    W0
          STD    DP          DFT BLOCK POINTER (A) OFFSET
          LDDL   W1
          STDL   DP+1
          LDDL   W2
          STDL   DP+2        SAVE R-REGISTER

*         DETERMINE TYPE OF DFT START.

          LDN    HDRP        GET DFT HEADER
          RJM    IDA
          CRDL   W0
          LDDL   W3          EXTRACT LOGGING FLAG
          SHN    21-BC.FL
          ZJN    PRS15       IF NOS/VE IS ACTIVE
          LDN    0           SET NORMAL START FOR DFT
          STML   PRSA

 PRS15    LDM    IOUN
          NJN    PRS20       IF NOT IOU0
          LDM    PRSA
          NJN    PRS20       IF RELOCATED DFT
          LDN    0
          STD    W0
          STD    W1
          STD    W2
          STD    W3
          LDN    D8RLP
          RJM    IIB
          CWDL   W0          CLEAR ANY PREVIOUS COMMUNICATION POINTER
          RJM    PEF         PRESET EICB FIELDS
 PRS20    RJM    RCS         SET UP CALL RETURN MECHANISM

*         BEFORE IT IS POSSIBLE TO PROCESS ERRORS WHICH REQUIRE THE
*         ERROR HANDLING OVERLAY, THE FOLLOWING MUST BE SET UP -
*                IB - IB+2
*                *RCS* MUST HAVE BEEN CALLED.

          EXITMR FMR
          FATALMR  FMR

          RJM    PHT         PREPARE HARDWARE TABLES
          FINDCM DFT
          SRD    DH+1        SAVE DFT POINTER
          STD    DH
          ADN    1
          CRDL   W0          GET RESIDENT HEADER
          LDDL   W1
          ADN    2           ADD CIP AND RESIDENT HEADER SIZES
          STDL   DO          SAVE AS DIRECTORY OFFSET
          RJM    SUM         SET UP HARDWARE MODELS AND MAINT CH CONNECT CODES
          LDM    IOUN
          NJN    PRS25       IF IN IOU1
          RJM    /PRS/UTE    UPDATE TIME IN EICB
 PRS25    LDC    DIMP        SET TASK LIST ADDRESS FOR DEGRADING A CPU
          STM    DTLA
          RJM    LSR         LOAD SECONDARY ROUTINES

          RJM    PDI         PRESET DUAL IOUS

*         AFTER THIS POINT IN DUAL STATE, IT IS POSSIBLE WHEN
*         RUNNING IN IOU1 TO WRITE INTO MEMORY (CALLING *SPB* IF
*         APPROPRIATE) SINCE OS BOUNDS HAS BEEN SET CORRECTLY AND THE
*         PP-S (EXCEPT FOR *DFT*) HAVE BEEN SET TO BE UPPER PP-S.

          RJM    SPO         SETUP MEMORY PORT OFFSET
          LDN    HDRP
          RJM    IDA
          CRDL   CM
          LDN    0           SET NIO PP TYPE BY DEFAULT
          STDL   T1
          LDML   IOUM
          LMC    0#43
          ZJN    PRS40       IF MODEL 43
          LMN    0#44&0#43
          NJN    PRS50       IF NOT MODEL 44
 PRS40    LDC    0#100       SET CIO PP TYPE
          STDL   T1
 PRS50    LDD    CM+DHPP
          LPC    0#FF
          LMDL   T1          INSERT PP TYPE FIELD
          STML   PPNO        DFT PP NUMBER
          LDN    HDRP        RE-READ HEADER
          RJM    IDA
          CRDL   CM
          LDDL   CM+DHFLG
          SHN    21-DH.FV    VALIDATION FLAG
          MJP    PRS210      IF RELOAD FROM STATE MEMORY
          RJM    ISD         IDLE SECONDARY IOU DRIVERS
 PRS60    LDN    D7TY
          RJM    IIB
          CRDL   CM
          LDDL   CM+3
          SHN    -14
          NJN    PRS65       IF NOT 180 STANDALONE
          LDN    1
          STM    ISPB        IF 180 STANDALONE IGNORE OS BOUNDS

*         INITIALIZE PROCESSOR MICROCODE ADDRESSES.

 PRS65    LDN    GPDID       GLOBAL PROCESSOR DESCR
          RJM    FHE         FIND HARDWARE ELEMENT
          MJP    PRS140      IF NOT THERE
          LDML   HBUF+GPDLI
          STML   MLIT        MICROCODE LONG INIT ADDRESS
          LDML   HBUF+GPDIDL
          STML   MIDL        MICROCODE IDLE ADDRESS
          LDML   HBUF+GPDMXO
          STML   HEOM        MICROCODE HEO MON MODE
          LDML   HBUF+GPDJXO
          STML   HEOJ        MICROCODE HEO JOB MODE
          LDML   HBUF+GPDMXI
          STML   HEIM        MICROCODE HEI MON MODE
          LDML   HBUF+GPDJXI
          STML   HEIJ        MICROCODE HEI JOB MODE

*         BRANCH TO APPROPRIATE OVERLAY TO CONTINUE PRESET.
*         CONTROL WILL NOT NORMALLY RETURN BACK TO *PRS* AFTER
*         THIS CALL SINCE A JUMP WILL BE MADE TO *DFT5* OR *DFT10*.

 PRS70    LDM    IOUN        CHECK IOU NUMBER
          NJN    PRS80       IF IN SECONDARY IOU
          CALL   BDS         BUILD DFT CENTRAL MEMORY STRUCTURE

 PRS80    CALL   PSO         STANDARD PRESET OVERLAY ROUTINES

*         DFT ANALYSIS - MISSING DESCRIPTOR IN THE MRT.

 PRS140   SETDAN (EPUN,DAME)
          LDC    DAME+TDFT   613 - DFT NO DESC IN MRT
          STML   RTP1
          CALL   ERRH

 PRS210   LDN    MRBP
          RJM    IDA
          CRDL   W0          GET MAINTENANCE REGISTER BUFFER POINTER
          LRD    W1
          SRD    MP+1
          LDD    W0
          STDL   MP
          LDN    SAVL/4
          STD    T1          SET SIZE OF SAVE AREA
          LDN    0
          RJM    IMB
          CRML   SAVE,T1     RESTORE FROM MAINTENANCE REGISTER BUFFER 0
          LDM    DHSV
          STD    DH
          LDM    DHSV+1
          STD    DH+1
          LDM    DHSV+2      RESTORE DIRECTORY POINTER
          STD    DH+2
          LDN    VER4
          RJM    VCK         CHECK VERSION
          MJP    DFT5        IF LESS THAN VERSION 4
          LDN    BCWP
          RJM    IDA
          CRDL   BW          RE ESTABLISH BUFFER CONTROL WORD POINTER
          LJM    DFT5        RETURN

 PRSA     BSS    1
 PRSB     BSS    1           8/PP TYPE, 8/
 PRSC     BSS    3           OS BOUNDS
 SUM      SPACE  4,10
**        SUM - SET UP HARDWARE MODELS.
*
*         THIS ROUTINE SETS UP MODEL AND MAINTENANCE CHANNEL CONNECT CODES
*         FOR THE PROCESSOR, IOU, AND MEMORY ELEMENTS.
*
*         USES   T5.
*
*         CALLS  FHE.


 SUM      SUBR               ENTRY/EXIT
          LDN    PROCID      READ CPU0 DESCRIPTOR
          RJM    FHE
          MJP    PRS140      IF NOT FOUND
          LDM    HBUF+CPRE+EM  SAVE CPU0 MODEL
          SHN    -4
          STM    CPU0M
          LDM    HBUF+HDRPC  SAVE CPU0 CONNECT CODE
          STM    CP0CC
          LDM    HBUF+CPRPORT  SAVE CPU0 MEMORY PORT
          STM    CP0P
          LDC    PROCID1     READ CPU1 DESCRIPTOR
          RJM    FHE
          MJN    SUM1        IF NOT PRESENT
          LDM    HBUF+CPRE+EM  SAVE CPU1 MODEL
          SHN    -4
          STM    CPU1M
          LDM    HBUF+HDRPC  SAVE CPU1 CONNECT CODE
          STM    CP1CC
          LDM    HBUF+CPRPORT  SAVE CPU1 MEMORY PORT
          STM    CP1P
 SUM1     LDN    CMID        READ MEMORY DESCRIPTOR
          RJM    FHE
          MJP    PRS140      IF NOT FOUND
          LDM    HBUF+CPRE+EM  SAVE MEMORY MODEL
          SHN    -4
          STM    MEMM
          LDM    HBUF+CMIPC  SAVE MEMORY CONNECT CODE
          STM    CMCC
          LDM    IOUN
          ZJN    SUM3        IF PRIMARY DFT
          LDC    10000       SELECT IOU1
 SUM3     ADN    IOUID
          RJM    FHE
          MJP    PRS140      IF NOT FOUND
          LDM    HBUF+CPRE+EM  SAVE IOU MODEL
          SHN    -4
          STM    IOUM
          LDM    HBUF+HDRPC  SAVE IOU CONNECT CODE
          LPC    7417        EXTRACT RELEVANT FIELDS
          STM    I0CC
          LDN    0
          STD    T5
          LDC    10000       SELECT IOU1
          ADN    IOUID
          RJM    FHE         GET IOU ELEMENT
          MJN    SUM4        IF NOT FOUND
          LDM    HBUF+CIOST
          SHN    21-0
          MJN    SUM4        IF SECOND IOU IS LOGICALLY OFF
          AOD    T5          MAXIMUM IOU ORDINAL
 SUM4     LDD    T5          SET MAXIMUM IOU ORDINAL FIELD
          SHN    14-0
          RAML   IOUN
          LDN    DISCID      READ CONSOLE DESCRIPTOR
          RJM    FHE         FETCH HARDWARE ELEMENT
          LDM    HBUF+CDCPCI
          LMN    1
          LPN    1
          STM    PKFLG       PACKET FLAG IS SET IF A PC IS PRESENT
          LJM    SUMX        RETURN
 PEF      SPACE  4,10
**        PEF - PRESET EICB FIELDS.
*
*         ENTRY  IF DUAL STATE, THEN PP MUST BE A LOWER PP.
*
*         USES   T1 - T5.


 PEF      SUBR               ENTRY/EXIT

*         PRESET MESSAGE BUFFER.

          LDN    D7TY        TEST *EICB* LEVEL
          RJM    IIB
          CRDL   T1          READ *D7TY*
          LDD    T1+3
          SHN    -6          EXTRACT EICB REVISION LEVEL
          SBN    4
          MJN    PEFX        IF MESSAGE AREA NOT PRESENT
          LDN    3           SET CONSTANT 3
          STM    T3
          LDN    DFCM        SET MESSAGE ID = 1, LENGTH = 24
          RJM    IIB
          CWML   PEFA,ON
          CWML   PEFB,T3     BLANK FILL EICB MESSAGE BUFFER
          UJP    PEFX        RETURN

 PEFA     VFD    16/,16/24D,16/,16/1
 PEFB     DATA   24H
          QUAL   PRS
 QUAL$    EQU    0           UNQUALIFY PRESET COMMON DECKS
          LIST   X
*COPY     CTP$UPDATE_TIME_IN_EICB
          LIST   *
 SPB      SPACE  4,10
**        SPB - SPECIAL PRESET VERSION OF *SPB* - SET PP BOUNDS.
*
*         ENTRY  *DFT* IS ON THE SAME SIDE OF THE OS BOUNDS
*                AS THE *EICB*, OR ELSE OS BOUNDS CHECKING
*                IS NOT BEING DONE.


 SPB      SUBR               ENTRY/EXIT
          UJN    SPBX        RETURN
          QUAL   *
*         END    CTP$DFT PRESET

