*         CTEXT  CTP$DFT_PRESET_STANDARD_OVL
*
*         THIS DECK HOLDS THE PRESET ACTIVITIES WHICH OCCUR
*         AFTER THE DFT STRUCTURE IS BUILT.

          ROUTINE PSO


*         SAVE MAINTENANCE REGISTER BUFFER POINTER.

          LDN    MRBP
          RJM    IDA
          CRDL   W0          MAINTENANCE REGISTER BUFFER POINTER
          LRD    W1
          SRD    MP+1
          LDD    W0
          STDL   MP
          LDN    HDRP        READ DFT HEADER
          RJM    IDA
          CRDL   CM
          LDDL   CM+DHRL     RELEASE LEVEL
          SHN    -DH.RL
          STM    VRSN        SAVE HEADER VERSION
          LDM    IOUN
          ZJN    PRS70       IF IN IOU 0
          LDN    VER5
          RJM    VCK
          MJN    PRS70       IF LESS THAN VERSION 5
          LDN    NRSP
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   W0          READ IN NRSB POINTER
          LRD    W1
          LDD    W0
          ADC    RR
          CRDL   W0          READ IN THE NRSB HEADER WORD
          LDDL   W2
          STML   NNRB        NUMBER OF NON REGISTER BUFFERS
          LDDL   W3
          STML   SNRB        SIZE OF NON REGISTER BUFFERS
 PRS70    LDDL   CM+DHRL
          SHN    -DH.RL
          SBN    CURNTV      CURRENT DFT VERSION
          ZJP    PRS80       IF LATEST VERSION THEN OK
          MJP    PRS80       IF PREVIOUS VERSION THEN OK ALSO
          LDN    CM
          RJM    CLR
          LDBC   (DH.FR,DH.FV)  REJECT FLAG AND VERIFICATION FLAG
          STDL   CM+DHFLG
          LDN    HDRP
          RJM    IDA
          RDSL   CM          SET REJECT FLAG

*         DFT ANALYSIS - WRONG VERSION IN CENTRAL MEMORY INTERFACE.

          SETDAN (EPUN,DAVM)
          LDC    DAVM+TDFT   IF DFT SAW WRONG VERSION
          STML   RTP1
          CALL   ERRH

*         INITIALIZE REGISTER LIST ADDRESSES FOR CORRECTED AND
*         UNCORRECTED ERRORS ON ALL ELEMENTS.

 PRS80    RJM    SMV         SET UP MODEL DEPENDENT VALUES
          RJM    SSO         SETUP SPECIAL OVERLAY IF REQUIRED
          RJM    ICP         ISSUE CLEAR PACKETS REQUEST
          LDN    HDRP
          RJM    IDA
          CRDL   CM          READ DFT HEADER
          LDD    CM+DHSEQ    GET SEQUENCE NUMBER
          LPC    0#FF        JUST SEQUENCE
          STD    T2
          LDN    CM
          RJM    CLR
          LDBC   DH.FV       SET VERIFICATION FLAG
          STDL   CM+DHFLG
          LDD    T2          GET SAVED SEQUENCE NUMBER
          NJN    PRS90       IF ALREADY SET DONT INITIALIZE
          LDN    1           SEQUENCE COUNT STARTS AT 1
          STDL   CM+DHSEQ

*         SAVE BUFFER CONTROL WORDS POINTER

 PRS90    LDN    VER4
          RJM    VCK         CHECK VERSION
          MJN    PRS95       IF LESS THAN VERSION 4
          LDN    BCWP
          RJM    IDA
          CRDL   BW

 PRS95    LDN    HDRP
          RJM    IDA
          RDSL   CM
          LDM    VRSN
          SBN    VER1
          NJN    PRS100      IF NOT VERSION 1 DFT BLOCK
          LDN    6           1 HEADER + 5 POINTERS
          STM    NUMHW
          LDN    HDRP
          RJM    IDA
          CRDL   CM          GET DFT HEADER
          UJN    PRS110      CONTINUE

 PRS100   LDN    HDRP
          RJM    IDA
          CRDL   CM          GET DFT HEADER WORD
          LDDL   CM
          SHN    -10         GET TO NUMBER OF POINTERS
          LPN    0#F
          STM    NUMHW       SAVE NUMBER OF POINTERS
 PRS110   RJM    MPW         MODIFY POINTER WORDS TO ZERO UPPER 4 BITS
          LDDL   CM+2
          SHN    -10
          STM    LBUF        SAVE LENGTH OF MAINTENANCE BUFFER ENTRY
          LDDL   CM+2
          LPC    0#FF
          STM    NBUF        SAVE NUMBER OF MAINTENANCE BUFFER ENTRIES
          RJM    CBW         CLEAN UP BUFFER CONTROL WORDS
          LDN    VER2
          RJM    VCK         CHECK VERSION
          PJN    PRS120      IF GREATER THAN VERSION 1
          LDN    SECP
          RJM    IDA
          CRDL   CM          GET SECDED ID POINTER
          LDN    CMID        MEMORY ID
          RJM    FHE         GET ELEMENT
          MJP    PRS140      IF NOT FOUND
          STD    EI          SAVE ELEMENT INDEX
          LDM    NBUF
          ADM    NUMHW
          ADD    EI          FROM PREVIOUS FIND OF MEMORY ELEMENT
          STD    T1
          RJM    IDA
          CRDL   W0          GET COUNTER (MEMORY)
          LDDL   W0
          NJN    PRS120
          LDDL   CM+3        LENGTH OF SECDED ID TABLE
          STDL   W0          SAVE AS CORRECTED MEMORY ERROR THRESHOLD
          LDD    T1
          RJM    IDA
          CWDL   W0          REWRITE UPDATED SECDED ID TABLE ENTRY
 PRS120   LDN    0
          STM    ELCO        ELEMENT COUNTER
          RJM    /DSIGHE/RHT
 PRS130   RJM    GNE         GET AN ELEMENT
          MJP    PRS180      IF THROUGH SEARCHING FOR ELEMENTS
          AOM    ELCO
          UJN    PRS130      LOOP

*         DFT ANALYSIS - NO MRT ENTRY FOR ELEMENT.
*         DFT FLAGS - VALID 170, VALID 180, LOGGING.
*         DFT ACTION - TERMINATE PROCESSING.
*         OS ACTION - STEP SYSTEM.

 PRS140   SETDAN (EPUN,DAME)

          LDC    DAME+TDFT   613 - DFT NO DESC IN MRT
          UJP    PRS170      ISSUE MESSAGE

*         DFT ANALYSIS - COMMUNICATION FAILURE.
*         DFT FLAGS - VALID 170, VALID 180, LOGGING.
*         DFT ACTION - TERMINATE PROCESSING.
*         OS ACTION - STEP SYSTEM.

 PRS150   SETDAN (EPUN,DACF)

          LDC    DACF+TDFT   614 - DFT COMM FAILURE
 PRS170   LJM    PRS200      ISSUE MESSAGE

 PRS180   RJM    RCS         RESET CALL STACK
          LDM    IOUN        CHECK IOU NUMBER
          NJP    PRS190      IF IN SECONDARY IOU

*         IF THE SECONDARY DFT BUFFER POINTER IS PRESENT, THEN
*         ZERO OUT THE FIRST TWO BYTES OF THE BUFFER AS A FLAG
*         THAT THE SECONDARY *DFT* IS NOT YET ACTIVE.

          LDN    VER6
          RJM    VCK         CHECK VERSION
          MJP    PRS185      IF PRIOR TO VERSION 6
          LRD    DP+1
          RJM    SPB         SET OS PP BOUNDS
          LDN    SDBP        GET POINTER TO SECONDARY *DFT* BUFFER
          RJM    IDA
          CRDL   T1
          LDDL   T4
          ZJN    PRS185      IF BUFFER NOT PRESENT
          LRD    T2          ZERO OUT FIRST TWO BYTES OF BUFFER
          LDDL   T1
          ADC    RR
          CRDL   T2
          LDN    0
          STDL   T2
          LDDL   T1
          ADC    RR
          CWDL   T2
          LDN    PSO_O
          STM    CUOV        PRESET THIS OVERLAY NUMBER
          LDML   IOUN
          SHN    -14
          NJN    PRS185      IF DUAL IOU DONT READ EPM
          CALL   RED         READ EPM POWER MONITOR DATA
 PRS185   LJM    DFT5        RETURN TO MAIN LOOP

 PRS190   LDN    D8ST        SET DEADSTART DFT-S FLAG
          RJM    IIB
          CRDL   W0
          LDDL   W3
          LPC    0#F7FF      CLEAR DEADSTART DFT-S FLAG
          STDL   W3
          LDN    D8ST
          RJM    IIB
          CWDL   W0
          LJM    DFT10       RETURN TO MAIN LOOP

 PRS200   STML   RTP1        SAVE MESSAGE CODE AND TERMINATION FLAG
          CALL   ERRH        ISSUE MESSAGE AND EXIT

          TITLE  PRESET SUBROUTINES.
 CBW      SPACE  4,10
**        CBW - CLEAN UP BUFFER CONTROL WORDS.
*
*         EXIT   INTERLOCKED ENTRIES CLEARED.
*                DFT HEADER FLAGS FOR 170, 180 OS SET IF NECESSARY.
*                CONSOLE LOGGING INITIATED IF NECESSARY.
*
*         USES   CM - CM+3, T1 - T2.
*
*         CALLS  CLR, COR, IDA, LGF, PMB, SNE, SVE.


 CBW      SUBR               ENTRY/EXIT
          RJM    COR         CLEAR OPERATING SYSTEM REQUESTS
          LDN    0
          STM    RTP1
          LRD    DP+1
          RJM    SPB         RE SET OS PP BOUNDS
          LDN    0
          STM    CBWC
          LDM    NBUF        SET NUMBER OF BUFFERS TO BE SCANNED
          SBN    1
          STM    CBWB
 CBW1     LDM    CBWC        READ BUFFER CONTROL WORD (CBWC)
          RJM    IBW         INCREMENT BUFFER CONTROL WORD
          CRDL   CM
          LDDL   CM+BCOA     CLEAR OS ACTION CODE
          LPC    0#FF00
          STDL   CM+BCOA
          LDDL   CM+BCFLG    CHECK INTERLOCK STATUS
          SHN    21-BC.FI
          PJN    CBW2        IF INTERLOCK NOT SET
          RJM    PMB         PROCESS MODEL DEPENDENT BUFFER
          LDN    0           CLEAR ENTRY
          STD    CM
          STD    CM+1
          STD    CM+2
 CBW2     LDM    CBWC        REWRITE ENTRY
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CWDL   CM
          LDDL   CM+BCFLG    CHECK FLAGS FOR FURTHER CLEANUP REQUIRED
          LPBC   (BC.FV7,BC.FL,BC.FV8,BC.CL)
          ZJN    CBW6        IF NO VALID DATA FLAGS
          LDDL   CM+BCFLG
          LPBC   (BC.FV8)
          ZJN    CBW3        IF *VALID 180* NOT SET
          RJM    SVE         SET 180 FLAG IN DFT HEADER
 CBW3     LDDL   CM+BCFLG
          LPBC   (BC.FV7)
          ZJN    CBW4        IF *VALID 170* NOT SET
          RJM    SNE         SET 170 FLAG IN DFT HEADER
 CBW4     LDDL   CM+BCFLG
          LPBC   (BC.FL)
          ZJN    CBW5        IF *LOG ERROR* NOT SET
          RJM    LGF         SET LOGGING FLAG IN DFT HEADER
 CBW5     LDDL   CM+BCFLG
          RJM    CCL         CHECK CONSOLE LOGGING (STUB IF NO PACKETS)
 CBW6     AOM    CBWC
          SOM    CBWB
          PJP    CBW1        IF MORE TO PROCESS
          LDML   CBWA
          ZJP    CBW7        IF NO FLAG TO SET
          LDN    CM
          RJM    CLR         CLEAR CM AREA
          LDML   CBWA
          STDL   CM+DHFLG    SET E7 FLAG IN MASK
          LDN    HDRP
          RJM    IDA
          RDSL   CM          SET LOCK
 CBW7     LDM    RTP1
          NJP    CBW8        IF THRU PROCESSING BOTH BCW AND NRSB
          LDN    VER5
          RJM    VCK         CHECK VERSION
          MJN    CBW8        IF LESS THAN VERSION 5
          LDM    IOUN
          NJN    CBW8        IF IN SECONDARY IOU
          LDN    1
          STM    RTP1        SET TO DO NRSB
          LDM    NNRB
          SBN    1
          STM    CBWB
          LDN    0
          STM    CBWC
          UJP    CBW1        DO THE NON REGISTER STATUS BUFFER

 CBW8     LDN    0
          STM    RTP1
          LJM    CBWX        RETURN

 CBWA     CON    0
 CBWB     CON    0           MAXIMUM NUMBER OF BUFFER CONTROL WORDS TO SEARCH
 CBWC     CON    0           INDEX TO BUFFER CONTROL WORDS
 PMB      SPACE  4,15
**        PMB - PROCESS MODEL DEPENDENT BUFFER.
*
*         ENTRY  (CM - CM+3) = THE BUFFER CONTROL WORD (BCW) CURRENTLY
*                BEING EXAMINED.
*
*         EXIT   IF THE BCW HAS THE MDB BIT SET, THE
*                ASSOCIATED MODEL DEPENDENT BUFFER CONTROL
*                WORD OFFSET FIELD WITHIN THE MODEL DEPENDENT BUFFER
*                WILL BE CLEARED THUS MAKING THE MDB AVAILABLE.
*
*         USES   W0 - W7.
*
*         CALLS  GMO, IDA, VCK.


 PMB      SUBR               ENTRY/EXIT
          LDN    MDLP        READ IN MDB POINTER WORD
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   W0
          LDDL   W3
          ZJN    PMBX        IF NO MDB DEFINED
          LDN    VER4
          RJM    VCK         CHECK VERSION
          MJN    PMBX        IF VERSION 3 OR EARLIER
          LDDL   CM+BCFLG    GET MDB DATA TO LOG FLAG
          SHN    21- BC.MDB
          PJN    PMBX        IF NO MDB DATA TO LOG
          RJM    GMO         GET MODEL DEPENDENT BUFFER OFFSET
          ADD    W0
          LRD    W1
          ADC    RR
          CRDL   W0          READ CORRECT MDB POINTER WORD FROM OFFSET
          LDDL   W0
          LRD    W1
          ADC    RR
          CRDL   W4          READ IN THE FIRST WORD OF THIS MDB
          LDDL   W4
          LPC    0#F000      CLEAR CWO AND LTIF
          STDL   W4
          LDDL   W0          MAKE THE MDB AVAILABLE
          ADC    RR
          CWDL   W4
          LJM    PMBX        RETURN
 GMO      SPACE  4,10
**        GMO - GET MODEL DEPENDENT BUFFER ORDINAL.
*
*         ENTRY  (CBWC) = CURRENT BUFFER CONTROL WORD.
*
*         EXIT   (A) = THE MODEL DEPENDENT BUFFER ORDINAL.
*
*         USES   W4 - W7, T4 - T7, T1, T2, *CBWB*.
*
*         CALLS  IDA.


 GMO      SUBR               ENTRY/EXIT
          LDN    SSBP        READ IN THE SSB POINTER
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   W4
          LDDL   W4          READ IN THE SSB HEADER WORD
          LRD    W5
          ADC    RR
          CRDL   T4
          LDM    CBWC        INDEX TO BUFFER CONTROL WORD
          SBN    1           MINUS SCRATCH BUFFER
          STD    T2
          LDN    1           ACCOUNT FOR SSB HEADER
          STD    T1          INITIALIZE OFFSET TO DESIRED SSB
 GMO1     LDDL   T7          SSB SIZE
          RADL   T1
          SODL   T2
          PJN    GMO1        IF NOT AT CORRECT BCW OFFSET YET
          LDDL   W4          READ IN DESIRED SSB HEADER WORD
          ADD    T1          INDEX BY OFFSET TO SSB
          ADC    RR
          CRDL   W4
          LDDL   W6
          LPC    0#FF        RETURN JUST CONTROL WORD OFFSET
          UJN    GMOX        RETURN
 COR      SPACE  4,10
**        COR - CLEAR OPERATING SYSTEM REQUESTS.
*
*         EXIT   ANY REQUESTS WILL BE CLEARED.
*
*         USES   T1, CM - CM+3, W0 - W3.
*
*         CALLS  IDA, IIB.


 COR      SUBR               ENTRY/EXIT
          LDN    NVEP        180 REQUEST POINTER
          RJM    IDA
          CRDL   CM          GET NVE POINTER
          LDD    CM+3        GET LENGTH
          ZJN    CORX        IF NO LENGTH

*         GET WHETHER DUAL-STATE OR STANDALONE.  IF STANDALONE, EXIT,
*         SINCE *SCI/VPB* HAS TAKEN CARE OF IT.

          LDN    D7TY
          RJM    IIB         INCREMENT INTERFACE BLOCK
          CRDL   W0          READ IN D7TY FIELD
          LDDL   W3          GET TO OS TYPE
          SHN    -14
          ZJN    CORX        IF STANDALONE
          LRD    CM+1
          RJM    SPB         SET PP BOUNDS
          LDD    CM+3
          STD    T1          INDEX FOR REQUESTS
          SOD    T1          FOR MJN TEST
 COR1     LDD    CM          GET A OFFSET
          ADD    T1
          ADC    RR
          CWML   CORA,ON     ZERO THE REQUEST
          SOD    T1
          PJN    COR1        IF MORE REQUESTS TO CLEAR
          UJN    CORX        RETURN

 CORA     BSSZ   4           CM WORD OF ZEROES
 LGF      SPACE  4,10
**        LGF - SET LOGGING FLAG.
*
*         ENTRY  (LGFA) = 1 IF FLAG ALREADY SET.
*
*         EXIT   LOGGING FLAG SET.
*
*         USES   W0 - W3.
*
*         CALLS  IDA, SNE, SVE.


 LGF      SUBR               ENTRY/EXIT
          LDM    LGFA
          NJN    LGFX        IF FLAG ALREADY SET
          AOM    LGFA
          LDN    HDRP        READ DFT HEADER
          RJM    IDA
          CRDL   W0
          LDDL   W0+DHFLG    CHECK LOGGING RESPONSIBILITY
          LPBC   (DH.FL)
          ZJN    LGF1        IF 180 LOGS
          RJM    SNE         SET 170 ERROR
          UJN    LGFX        RETURN

 LGF1     RJM    SVE         SET 180 ERROR
          UJN    LGFX        RETURN

 LGFA     CON    0
 MPW      SPACE  4,10
**        MPW - MODIFY POINTER WORD.
*
*         EXIT   UPPER 4 BITS OF MAINTENANCE BUFFER POINTER WORD
*                ARE ZEROED.
*
*         USES   W0, W1, W2, W3.
*
*         NOTE   THIS IS FOR THE CASE OF NOS/BE DUAL STATE WITH
*                NOS/VE LOGGING.


 MPW      SUBR               ENTRY/EXIT
          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
          LDN    MRBP        MODIFY THE MAINTENANCE REGISTER BUFFER POINTER
          RJM    IDA         INDEX INTO DFT BUFFER
          CRDL   W0          READ IN MAINTENANCE BUFFER POINTER WORD
          LDDL   W0
          STD    W0          ZERO OUT THE UPPER 4 BITS OF THE POINTER WORD
          LDN    MRBP
          RJM    IDA
          CWDL   W0          REWRITE POINTER WORD
          UJN    MPWX        RETURN

 SNE      SPACE  4,10
**        SNE - SET 170 FLAG IN HEADER.
*
*         ENTRY  (SNEA) = 1 IF FLAG ALREADY SET.
*
*         EXIT   FLAG SET IN *CBWA*.


 SNE      SUBR               ENTRY/EXIT
          LDM    SNEA
          NJN    SNEX        IF FLAG ALREADY SET
          AOM    SNEA
          LDML   CBWA        SET FLAG IN *CBWA*
          LMBC   (DH.FE7)
          STML   CBWA
          UJN    SNEX        RETURN

 SNEA     CON    0
 SVE      SPACE  4,10
**        SVE - SET 180 FLAG IN HEADER.
*
*         ENTRY  (SVEA) = 1 IF FLAG ALREADY SET.
*
*         EXIT   FLAG SET IN *CBWA*.


 SVE      SUBR               ENTRY/EXIT
          LDM    SVEA
          NJN    SVEX        IF FLAG ALREADY SET
          AOM    SVEA
          LDML   CBWA        SET FLAG IN *CBWA*
          LMBC   (DH.FE8)
          STML   CBWA
          UJN    SVEX        RETURN

 SVEA     CON    0

*         END    CTP$DFT_PRESET_STANDARD_OVL
