*DECK XDPIP 
  
          IDENT  XDPIP
          B1=1
          SST 
          ENTRY  XDPIP
          EXT    XTRACE 
          EXT    RPVPBLK
*#
*1DC  XDPIP 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        XDPIP               J.C. LEE            80/04/15 
*                            L.T.NGUYEN          82/02/02 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        DUMP NPU DRIVER PIP-S PPU MEMORY TO FILE ZZZZZPP.
* 
*     3. METHOD USED. 
*        IF PIP DUMPS EXIST:  
*          OPEN ZZZZZPP FILE
*          WRITE FILE HEADER TO FILE
*          WRITE PIP PPU MEMORY DUMP(S) TO FILE 
*          CLOSE FILE 
*        CALL REPRIEVE RESET FUNCTION TO RESET PREVIOUS ERROR FLAGS 
* 
*     4. ENTRY PARAMETERS.
*        A1 = ADDRESS OF FWA OF PIP DUMP AREA 
* 
*     5. EXIT PARAMETERS. 
*        NONE 
* 
*     6. COMDECKS USED. 
*        LPMCOM 
* 
*     7. ROUTINES CALLED. 
*        XTRACE 
* 
*     8. DAYFILE MESSAGES.
*        NONE 
* 
*#
  
*CALL MACDEF
*CALL INPARU
  
 ZPFET    VFD    42/7LZZZZZPP,4/0,4/0,10/1
 FIRST    VFD    36/0,6/1,18/0
 IN       VFD    42/0,18/0
 OUT      VFD    42/0,18/0
 LIMIT    VFD    12/0,12/0,18/0,18/0
          VFD    60/0 
* 
*         LOCAL VARIABLES 
* 
* 
*         LPMCOM COMDECK IS USED BY THE NIP ROUTINE - XDPIP TO FORMAT 
*         THE PIP DUMP FILE ZZZZZPP, AND BY THE UTILITY PROGRAM - 
*         LISTPPM TO ANALYZE THE PIP DUMP FILE. 
* 
 PDFHDRL  EQU    3                 PIP DUMP FILE HEADER LENGTH
 PDFID    EQU    0                 INDEX TO DUMP FILE HEADER-ID WORD
 PDFDATE  EQU    1                 INDEX TO DUMP FILE HEADER-DATE WORD
 PDFTIME  EQU    2                 INDEX TO DUMP FILE HEADER-TIME WORD
 PDFHDR   DATA   10HPIP DUMP       PIP DUMP FILE IDENTIFIER 
* 
*         PIP DUMP RECORD HEADER HAS THE FOLLOWING FORMAT,
* 
*           PDR HEADER - 6/PDRID, 18/PDRBS, 24/0, 12/PIPORD 
* 
*           WHERE PDRID = PDR BLOCK IDENTIFIER
*                 PDRBS = PDR BLOCK SIZE
*                PIPORD = PIP ORDINAL OF PIP IN PDR 
* 
 PDRHDRL  EQU    1                 PIP DUMP RECORD HEADER LENGTH
 PDRID    EQU    48 
 PDBUFL   EQU    820+PDRHDRL
 PDBFWA   BSSZ   1
 MEMPAR   BSSZ   1
 CURFL    BSSZ   1
 NUMAPIP  BSSZ   1           NUMBER OF ACTIVE PIPS
* 
 XDPIP    BSSZ   1           ENTRY/EXIT 
          IFEQ   DEBUG,1,6
          SX6    A1 
          SA6    TEMP 
          SX1    XDPIPN 
          RJ     XTRACE      RECORD CALL
          SA1    TEMP 
          SA1    X1 
  
          SB1    1
* 
          SA2    A1+1        ADDR OF SECOND PARAMETER 
          SA1    X1          (X1) = FWA OF PIP DUMP AREA
          ZR     X1,XDPIPX   RETURN IF NO PIP DUMP EXISTS 
          BX6    X1 
          SA6    PDBFWA      SET PIP DUMP AREA FWA
          SA1    X2          NUMBER OF ACTIVE PIPS
          BX6    X1 
          SA6    NUMAPIP
* 
          MEMORY CM,MEMPAR,R,,NA
          SA1    MEMPAR 
          AX1    30          (X1) = NIP-S FL
          BX6    X1 
          SA6    CURFL
          SB2    PDFHDRL     ZZZZZPP FILE HEADER SIZE 
* 
 XDPIP0   BSS    0
          SA2    PDBFWA      (X2) = FWA OF PDB
          SX4    X2+B2
          SB4    X4+PDBUFL   (B4) = NEXT PDB FWA
          SA5    CURFL
          SB5    X5 
          GE     B5,B4,XDPIP1 
          NZ     B2,XDPIPX   RETURN IF NO ZZZZZPP FILE YET
* 
          CLOSE  ZPFET,NR,R 
 XDPIPX   BSS    0
          REPRIEVE RPVPBLK,RESET,77B
          EQ     XDPIP       RETURN AFTER CLOSING ZZZZZPP 
* 
 XDPIP1   BSS    0
          SA3    FIRST
          MX0    42 
          BX5    X0*X3
          BX6    X5+X2
          SA6    A3 
          SX6    B4 
          SA3    LIMIT
          SA6    PDBFWA      SAVE NEXT PDB FWA
          BX5    X3*X0
          BX7    X5+X6
          SA7    A3          SET LIMIT POINTER
          BX6    X2 
          SA6    OUT         SET OUT POINTER
          EQ     B2,B0,XDPIP2 
          SA6    IN          SET FIRST=IN=OUT 
          OPEN   ZPFET,WRITE
          SA3    PDFHDR 
          MX0    54 
          BX3    X0*X3       NUMBER OF ACTIVE PIP INTO HEADER 
          SA4    NUMAPIP
          BX3    X3+X4
          BX6    X3 
          SA3    IN 
          SX3    X3          (X3) = IN POINTER
          SA6    X3 
          SX4    X3+PDFDATE 
          DATE   X4          GET DATE 
          SA3    IN 
          SX3    X3 
          SX4    X3+PDFTIME 
          CLOCK  X4          GET CLOCK TIME 
* 
 XDPIP2   BSS    0
          SA4    LIMIT
          SB4    X4 
          SX6    B4-1 
          SA6    IN          SET IN=LIMIT-1 
          WRITER ZPFET,R
          SB2    B0 
          EQ     XDPIP0      CONTINUE TO PROCESS NEXT DUMP AREA 
  
 XDPIPN   DATA   L*XDPIP* 
 TEMP     BSS    1
          END 
