          EJECT
*         CTEXT  CTP$DFT_PROCESS_DUAL_I4_IOU_ERR
*
*         THIS DECK WILL PREPROCESS DUAL I4 IOU ERRORS SO THAT
*         THE PRIMARY DFT CAN PROCESS THEM.


 CSP      SPACE  4,10
**        CSP - COPY INFORMATION FROM SECONDARY IOU BUFFER TO PRIMARY.
*
*         ENTRY  (A) = NUMBER OF CM WORDS TO COPY.
*                (W0 - W3) = R-POINTER TO FWA OF DESTINATION.
*                (W4 - W7) = R-POINTER TO FWA OF SOURCE
*
*         USES   T1, T2.
*
*         CALLS  SPB.


 CSP      SUBR               ENTRY/EXIT
          STM    CSPA        SAVE NUMBER OF WORDS TO COPY
          LRD    W1
          RJM    SPB         SET PP BOUNDS
          LDM    CSPA        LENGTH OF TRANSFER
          ADN    1
          STD    T1
          LDN    0           WORD OFFSET
          STD    T2
 CSP1     SOD    T1
          ZJN    CSPX        IF TRANSFER COMPLETE
          LRD    W5
          LDDL   W4
          ADD    T2
          ADC    RR
          CRML   CSPB,ON     READ NEXT WORD
          LRD    W1
          LDDL   W0
          ADD    T2
          ADC    RR
          CWML   CSPB,ON     WRITE NEXT WORD
          AOD    T2
          UJN    CSP1        PROCESS NEXT WORD

 CSPA     BSS    1           LENGTH OF TRANSFER
 CSPB     BSS    4           TRANSFER BUFFER
 PIR      SPACE  4,15
**        PIR - PROCESS IOU REGISTERS.
*
*         THE IOU REGISTERS FOR THE SELECTED IOU ORDINAL ARE RETRIEVED.
*         FOR IOU0 THIS OCCURS BY CALLING *RIR* TO READ THE APPROPRIATE
*         MAINTENANCE REGISTERS.  FOR IOU1 THIS OCCURS BY READING THE
*         INFORMATION FROM THE SECONDARY DFT BUFFER.
*
*         ENTRY  (IOUO) = IOU ORDINAL.
*
*         USES   T1, T2, T4 - T7, W0 - W7.
*
*         CALLS  IDA, IIB, *RIR*, SER, SPB.


          ROUTINE  PIR

          LDML   IOUO
          NJN    PIR10       IF NOT IOU0
          CALL   RIR         RETRIEVE IOU REGISTERS
          LJM    PIRX        RETURN

*         COPY SCRATCH MRB FROM THE SECONDARY DFT BUFFER TO THE
*         PRIMARY DFT BUFFER.

 PIR10    LDN    SDBP        READ ADDRESS OF SECONDARY DFT BUFFER
          RJM    IDA
          CRDL   T4
          LRD    T5
          LDDL   T4          SOURCE ADDRESS
          ADC    RR+MRBP
          CRDL   W4
          LDN    MRBP        DESTINATION ADDRESS
          RJM    IDA
          CRDL   W0
          LDML   LBUF        COPY LENGTH
          RJM    CSP         COPY INFORMATION FROM SECONDARY DFT BUFFER TO PRIMARY

*         COPY SCRATCH SUPPORTIVE STATUS FROM THE SECONDARY DFT BUFFER TO THE
*         PRIMARY DFT BUFFER.

          LDN    SDBP        READ ADDRESS OF SECONDARY DFT BUFFER
          RJM    IDA
          CRDL   T4
          LRD    T5
          LDDL   T4          SOURCE ADDRESS
          ADC    RR+SSBP
          CRDL   W4
          AODL   W4          DO NOT COPY THE HEADER WORD
          LDN    SSBP        DESTINATION ADDRESS
          RJM    IDA
          CRDL   W0
          AODL   W0
          LDML   W7          COMPUTE COPY LENGTH
          SBN    1           ALLOW FOR THE LENGTH OF THE HEADER WORD
          RJM    CSP         COPY INFORMATION FROM SECONDARY DFT BUFFER TO PRIMARY

          LDN    CMSS
          RJM    GCM         GET CM RESIDENT WORD
          LDN    1           SET FLAG
          RJM    SER         SET SS ERROR READ FLAG TO VALUE
          LJM    PIRX        RETURN
 RIR      SPACE  4,10
**        RIR - RETRIEVE IOU REGISTERS.
*
*         ENTRY  (SUMS) = 4/, 12/STATUS SUMMARY.
*
*         EXIT   CONTENTS OF RELATED IOU REGISTERS OBTAINED.
*
*         CALLS  BRL, *RMR*.


          ROUTINE  RIR

          LDM    SUMS
          LPN    14
          ZJN    RIR10       IF NOT PROCESSOR HALT OR UNCORRECTED ERROR
          LDM    IO0U        UNCORRECTED IOU ERROR LIST
          RJM    BRL         BUILD REGISTER LIST

 RIR10    LDML   REGI
          NJN    RIR20       IF REGISTERS PRESENT ON LIST
          LDM    SUMS
          LPN    2
          ZJN    RIR20       IF NOT CORRECTED ERROR
          LDM    IO0C        CORRECTED IOU ERROR LIST
          RJM    BRL         BUILD REGISTER LIST

 RIR20    LDML   REGI
          ZJN    RIR30       IF NO REGISTERS ON LIST
          CALL   RMR         READ REGISTERS
 RIR30    LJM    RIRX        RETURN
