          EJECT
*         CTEXT CTP$DFT_DUMP_PP_REGISTERS
*

 DPR      SPACE  4,10
**        DPR - DUMP PP REGISTERS.  THE PP REGISTERS DUMPED ARE A, P, K
*               AND Q.
*
*         ENTRY  (PPTN) = PP TYPE AND NUMBER.
*                (W4 - W7) = POINTER TO AREA FOR PP REGISTERS TO BE WRITTEN
*                          IN MEMORY, R-POINTER FORMAT.
*
*         EXIT   PP REGISTERS WRITTEN TO SPECIFIED MEMORY.
*                (W4) = OFFSET IN R-POINTER UPDATED TO REFLECT WORDS WRITTEN.
*
*         CALLS  LRP, SPB.
*
*         USES   EC, RN, T1, T4, T5.


 DPR      SUBR               ENTRY/EXIT
          LDM    PPTN        GET PP NUMBER AND TYPE
          STD    T1          SAVE PP TYPE AND NUMBER
          LDM    IOUM
          LMC    0#42
          ZJP    DPR1        IF MODEL 42 IOU
          LDD    T1
          SHN    21-10
          PJN    DPR1        IF NIO PP
          LDN    ECIO        CIO *EC* REGISTER
          STM    DPRE
          LDC    SCIO        CIO STATUS REGISTER
          STM    DPRS
          LDD    T1          GET PP
          LPN    0#1F        ISOLATE JUST PP NUMBER
          STM    DPRF        SAVE PP NUMBER
          UJN    DPR2        CONTINUE

 DPR1     LDN    ENIO        NIO *EC* REGISTER
          STM    DPRE
          LDC    SNIO        NIO STATUS REGISTER
          STM    DPRS
          LDD    T1
          LPN    0#1F        ISOLATE JUST PP NUMBER
          LMN    0#20        SET THE AUTO BIT
          STM    DPRF        SAVE PP NUMBER
 DPR2     LDM    I0CC        IOU CONNECT CODE
          STD    EC
          LDN    0
          STD    T4          REGISTER SELECTOR
          STD    T5          BUFFER OFFSET

*         DUMP THE P, A, Q AND K PP REGISTERS.  EACH REGISTER VALUE IS
*         SAVED IN 2 PP WORDS.

 DPR3     LDM    DPRE
          STD    RN
          READMR DPRB        GET *EC* REGISTER
          LDM    DPRB+6      SET REGISTER SELECT
          SCN    3
          LMD    T4
          STM    DPRB+6
          LDD    T1
          SHN    21-10
          PJN    DPR4        IF NIO PP
          LDM    DPRB+4
          SCN    0#1F        CLEAR PP NUMBER
          LMM    DPRF        INSERT PP NUMBER
          STM    DPRB+4      SAVE FOR WRITE
          UJN    DPR5        CONTINUE

 DPR4     LDM    DPRB+4
          SCN    0#3F        CLEAR NIO PP NUMBER
          LMM    DPRF        INSERT PP NUMBER
          STM    DPRB+4
 DPR5     LOCKMR SET
          WRITMR DPRB        WRITE THE *EC* REGISTER WITH PP/REGISTER SELECT
          LDM    DPRS
          STD    RN
          READMR DPRC        READ STATUS REGISTER
          LOCKMR CLEAR
          LDM    DPRC+4
          LPN    3
          STM    DPRR,T5     SAVE UPPER REGISTER VALUE
          LDM    DPRC+5
          SHN    10
          ADM    DPRC+6
          STML   DPRR+1,T5   SAVE LOWER REGISTER VALUE
          LDN    2
          RAD    T5          NEXT BUFFER SLOT
          AOD    T4          NEXT REGISTER
          LPN    4
          ZJP    DPR3        IF MORE REGISTERS

*         LOAD R-REGISTER WITH POINTER TO MEMORY WHERE REGISTERS ARE TO BE SAVED.

          LRD    W5
          RJM    SPB         SET PP BOUNDARY
          LDN    2
          STD    T1          WORD COUNT FOR REGISTER BUFFER SIZE
          LDDL   W4          OFFSET
          LMC    RR
          CWML   DPRR,T1     WRITE REGISTER BUFFER TO OUTPUT SEQUENCE
          LDN    2           UPDATE OFFSET IN R-POINTER
          RADL   W4
          RJM    CIE         CLEAR IOU *EC* REGISTER
          UJP    DPRX        RETURN

 DPRB     BSSZ   10          *EC* REGISTER BUFFER
 DPRC     BSSZ   10          STATUS REGISTER BUFFER
 DPRR     BSSZ   10          OUTPUT REGISTER BUFFER
 DPRE     CON    0           *EC* REGISTER NUMBER
 DPRS     CON    0           STATUS REGISTER NUMBER
 DPRF     CON    0           CIO OR NIO PP NUMBER

*         END CTP$DFT_DUMP_PP_REGISTERS
