          EJECT
*         CTEXT  CTP$DFT_MAIN_NON_RES_DUAL_I4
*
*         THIS DECK PROVIDES CODE IN THE MAIN NON RESIDENT OVERLAY
*         OF DFT TO SUPPORT DUAL I4 SYSTEMS
 PSS      SPACE  4,10
**        PSS - PROCESS STATUS SUMMARY REGISTERS.
*
*         EXIT   (SS) = LOGICAL OR OF IOU0 AND IOU1 STATUS SUMMARY.
*                (T3) = IOU1 SUMMARY STATUS (IF IOU1 PRESENT AND RUNNNING
*                       IN IOU0 (*DFT*).
*
*         USES   SS, T1, W0 - W3.
*
*         CALLS  *DDA*, *ERRH*, FHE, IDA, *RIR*, RMR, WSS.
*
*         MACROS SETDAC.


*         PROCESS SS FOR *DFT*.

 PSS60    STDL   T3          INITIALIZE IOU1 SS
          LDML   IOUN        CHECK NUMBER OF IOU-S
          SHN    -14
          ZJN    PSS80       RETURN IF SINGLE IOU
          LDN    CMSS        SUMMARY STATUS WORD
          RJM    GCM         GET CM RESIDENT WORD
          LDDL   CM+3
          LPC    0#FF
          STDL   T3
          LPC    0#40
          ZJN    PSS70       IF NOT BIT 57 ERROR IN IOU1
          LDN    1
          STM    /HB57/BI57  SET BIT 57 ERROR FLAG
 PSS70    LDDL   CM+3
          SHN    21-17
          MJN    PSS85       IF ACKNOWLEDGEMENT SET, CHECK FOR LONG WARN
          LDDL   T3
          NJN    PSS95       IF ERROR IN IOU1
          LDD    T3          PRESERVE IOU1 SUMMARY STATUS
          STM    PSSA
          LDN    1           SET FLAG
          RJM    SER         SET SS ERROR READ FLAG TO VALUE
          LDM    PSSA        RESTORE IOU1 SUMMARY STATUS
          STD    T3
 PSS80    UJN    PSS100      RETURN

 PSS85    LDDL   T3          CHECK FOR LONG WARNING
          LPN    1
          NJN    PSS90       IF LONG WARNING
          STDL   T3
          UJN    PSS100      RETURN NO ERROR IN IOU1

 PSS90    ADN    20          SET SUMMARY STATUS BIT
          STDL   T3
 PSS95    LCN    0           RETURN LOGICAL OR OF SS FOR IOU1 AND IOU0
          LMDL   T3
          LPDL   T1
          LMDL   T3
          STDL   T1
          LDDL   SS
          LPC    0#F000
          ADDL   T1
          STDL   SS
          LDDL   T3
          LMN    21
          NJN    PSS100      IF OTHER THAN LONG WARNING
          LDD    T3          PRESERVE IOU1 SUMMARY STATUS
          STM    PSSA
          LDN    1           SET FLAG
          RJM    SER         SET SS READ FLAG TO VALUE
          LDM    PSSA        RESTORE IOU1 SUMMARY STATUS
          STD    T3
 PSS100   LJM    PSSX        RETURN

          ROUTINE  PSS

*         READ STATUS SUMMARY FOR THE CURRENT IOU.

          LDN    SSMR
          STD    RN
          LDM    I0CC        GET IOU CONNECT CODE
          RJM    RMR         READ THE SUMMARY STATUS (SS)
          STDL   T1
          LDDL   SS
          LPC    0#F000
          ADDL   T1
          STDL   SS
          LPBC   (SSBA)
          ZJN    PSS5        IF CM ACCESS NOT BLOCKED
          RJM    /HB57/BCA   HANDLE BLOCKED ACCESS

 PSS5     LDM    IOUN        CHECK IOU NUMBER
          ZJP    PSS60       IF RUNNING IN IOU0

*         PROCESS SS FOR *DFT-S*.

          LDD    SS          CHECK FOR ERRORS
          NJN    PSS30       IF ERRORS
          LDDL   SS          CHECK ERRORS LAST TIME
          SHN    -14
          NJN    PSS20       IF ERRORS LAST TIME
 PSS10    UJN    PSS100      RETURN - NO ERRORS THIS TIME NOR LAST TIME

*         WHEN *DFT* HAS READ IOU1 SS, THEN CLEAR STATUS SUMMARY IN THE
*         SECONDARY *DFT* BUFFER FOR USE BY *DFT*.

 PSS20    LDN    CMSS        SUMMARY STATUS
          RJM    GCM         GET CM RESIDENT WORD
          LDDL   CM+3
          SHN    21-17       SS ERROR READ FLAG
          PJN    PSS10       IF *DFT* HAS NOT READ PREVIOUS VALUE
          RJM    WSS         WRITE SS
          LDN    0           STATUS IS NO ERROR LAST TIME
          LJM    PSS50       SET STATUS AND RETURN

*         WHEN *DFT* HAS READ IOU1 SS, THEN SET CURRENT STATUS SUMMARY
*         ERROR INTO THE SECONDARY *DFT* BUFFER FOR USE BY *DFT*.
*         THERE ARE THREE STATUS VALUES RECORDED IN THE SS DIRECT CELL
*         TO CONTROL THE RETURNING OF STATUS AND CLEARING OF ERRORS -
*         0 = NO ERROR LAST TIME.
*         1 = REGISTER(S) READ AND PLACED IN BUFFER.
*         2 = ERRORS CLEARED IN IOU.

 PSS30    LDN    CMSS        SUMMARY STATUS
          RJM    GCM         GET CM RESIDENT WORD
          LDDL   CM+3
          SHN    21-17       SS ERROR READ FLAG
          PJN    PSS10       IF *DFT* HAS NOT READ PREVIOUS VALUE
          LDDL   SS          CHECK STATUS
          SHN    -14
          SBN    1
          ZJN    PSS40       IF STATUS IS REGISTERS PASSED
          LDD    SS          SET SUMMARY STATUS
          STM    SUMS
          LPBC   (SSBA)
          ZJN    PSS31       IF MEMORY ACCESS NOT BLOCKED (BIT 57)
          RJM    /HB57/BCA   HANDLE BLOCKED CM ACCESS
 PSS31    LDN    IOUID       SET IOU ELEMENT TYPE
          STDL   ET
          LDC    10000+IOUID READ IOU1 DESCRIPTOR INTO *HBUF*
          RJM    FHE         FIND HARDWARE ELEMENT
          MJN    PSS55       IF ERROR
          CALL   RIR         RETRIEVE IOU REGISTERS
          RJM    WSS
          LDN    1           SET STATUS TO REGISTERS PASSED
          UJN    PSS50       SET STATUS AND RETURN

 PSS40    SETDAC DDCL        CLEAR ERRORS
          CALL   DDA
          LDN    2           SET STATUS TO ERRORS CLEARED

*         SET STATUS AND RETURN.

 PSS50    SHN    14-0        POSITION NEW STATUS
          STDL   T1
          LDD    SS          CLEAR OLD STATUS
          LMDL   T1
          STDL   SS
          LJM    PSSX        RETURN

*         DFT ANALYSIS - MISSING DESCRIPTOR IN THE MRT.

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

 PSSA     BSS    1           IOU1 SS SAVE AREA
 WSS      SPACE  4,10
**        WSS - WRITE SS TO MEMORY.
*
*         ENTRY  (SS) = 4/, 12/STATUS SUMMARY.
*
*         USES   W4.
*
*         CALLS  SER.


 WSS      SUBR               ENTRY/EXIT
          LDN    CMSS
          RJM    GCM
          LDDL   CM+3
          LPC    0#FF00
          LMD    SS
          STDL   CM+3
          LDN    0           CLEAR FLAG
          RJM    SER         SET SS ERROR READ TO VALUE
          UJN    WSSX        RETURN
 PRO      SPACE  4,15
**        PRO - PASS REQUEST TO OTHER IOU.
*
*         ENTRY  (T1) = IOU FIELD OF REQUEST.
*                (T5) = OFFSET IN NOS/VE REQUEST BLOCK.
*                (W0 - W3) = R-POINTER TO NOS/VE REQUEST BLOCK.
*
*         EXIT   TO *ERRH*, IF ERROR IN PROCESSING IOU FIELD.
*
*         USES   W0, W3 - W7.
*
*         CALLS  IIB, SPB, SRS.


 PRO30    LDD    T5          BUILD R-POINTER TO REQUEST
          RADL   W0
          LDN    1
          STDL   W3
          LDN    SDBP        GET R-POINTER TO SECONDARY DFT BUFFER
          RJM    IDA
          CRDL   W4
          LRD    W5          CHECK IF SECONDARY BUFFER HAS BEEN BUILT
          LDDL   W4
          ADC    RR
          CRDL   T1
          LDDL   T1
          ZJN    PRO10       IF REQUEST FOR DFT-S  BEFORE IT IS ACTIVE
          RJM    SPB         SET PP BOUNDS
          LDN    NVEP        SET NOS/VE POINTER IN SECONDARY DFT BUFFER
          ADD    W4
          ADC    RR
          CWDL   W0

 PRO      SUBR               ENTRY/EXIT
          LDML   IOUN        MAXIMUM IOU ORDINAL
          SHN    -14
          NJN    PRO20       IF MULTI IOU
 PRO10    LJM    ERR         PROCESS ERROR

 PRO20    LDD    T1
          SBN    2
          PJN    PRO10       IF IOU ORDINAL OUT OF RANGE
          LDM    IOUN
          ZJP    PRO30       IF IN IOU 0
          LDC    0#200       TERMINATE REQUEST WITH ERROR
          STM    JOBF
          RJM    SRS         SET REQUEST STATUS
          SETDAN (EPUN,DAPR)
          LDC    TDFT+DAPR   61A - IOU FIELD PROCESSING ERROR
          STML   RTP1
          CALL   ERRH

*         END CTP$DFT_MAIN_NON_RES_DUAL_I4
