*DECK DB$DUMP 
          IDENT  DB$DUMP
          IPARAMS 
          TITLE  DB$DUMP  -  WRITE MEMORY DUMP TO OUTPUT
          COMMENT  WRITE MEMORY DUMP TO OUTPUT
          DATA   10L  DB$DUMP 
*#
* *   DB$DUMP                                    PAGE  1
* *   R L MCALLESTER                             7/27/79
* 
* DC  PURPOSE 
* 
*     WRITE A MEMORY DUMP TO OUTPUT.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
*     1. ADDRESS OF FIRST WORD TO BE DUMPED.
*     2. ADDRESS OF LAST WORD TO BE DUMPED. 
* 
* DC  EXIT CONDITIONS 
* 
*     A MEMORY DUMP IS WRITTEN TO THE FILE OUTPUT 
* 
* DC  CALLING ROUTINES
* 
*     DB$RCVD    CDCS REPRIEVE ROUTINE - BEFORE CRM REPRIEVE
*     DB$ODMP    OPERATOR DUMP ROUTINE
* 
* DC  CALLED ROUTINES 
* 
*     DB$LINE    LINE OUTPUT CONTROLLER 
*     SYS=       OPERATING SYSTEM INTERFACE ROUTINE 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     ENTRY POINTS CIO= SYS= AND WNB= 
* 
* DC  DESCRIPTION 
* 
*     THE ENTRY POINTS CIO=, SYS= AND WNB= ARE USED BY
*     THE PROCEDURE DB$LINE WHEN IT IS CALLED TO FLUSH
*     THE OUTPUT BUFFER.
*     THESE ARE VERY IMPORTANT ENTRY POINTS TO BE USED IN 
*     A DUMP WHEN ANALYZING WHAT WAS HAPPENING WHEN THE 
*     DUMP OCCURED. 
*     FOR THAT REASON THEY ARE SAVED AND RESTORED AFTER 
*     THE DB$LINE CALL. 
* 
*     THE DB$LINE CALL FLUSHES THE OUTPUT BUFFER TO BE
*     SURE THAT ALL OF THE MESSAGES THAT WERE ISSUED BEFORE 
*     THE DUMP WILL BE ON THE OUTPUT FILE AHEAD OF THE DUMP.
* 
*     WHEN THE DUMP IS TAKEN, MEMORY IS VERY CLOSE TO AS IT 
*     WAS WHEN THE ERROR EXIT OCCURED.
*#
          LIST   F
          ENTRY  DB$DUMP
DB$DUMP   EQ   *+1S17 
          SA2    =XCIO=      SAVE ENTRY POINTS USED TO FLUSH THE BUFFER 
          SA3    =XSYS= 
          SA4    =XWNB= 
          BX6    X2 
          BX7    X3 
          SB1    1
          SA6    SAVE 
          SA7    A6+B1
          BX6    X4 
          SX7    A1 
          SA6    A7+B1
          SA7    A6+B1       SAVE THE PARAMETER POINTER 
          SA1    APLIST1
          RJ   =XDB$LINE     FLUSH THE PRINT FILE BUFFER
  
          SA2    SAVE 
          SA3    A2+B1
          SA4    A3+B1
          SA1    A4+B1
          BX6    X2 
          BX7    X3 
          SA1    X1 
          SA6    =XCIO= 
          SA7    =XSYS= 
          BX6    X4 
          SA6    =XWNB= 
          SA3    A1+B1
          SA1    X1          (X1) = 1ST WORD TO BE DUMPED 
          SA3    X3          (X3) = LAST WORD TO BE DUMPED
NOSBE     IFC    EQ,*"OS.NAME"*SCOPE *
          LX1    18 
          BX7    X1+X3
          LX7    12 
          SA7    PARAM
          QUAL   SYS
          SYSTEM DMP,R,A7 
          QUAL   *
          EQ   DB$DUMP
  
PARAM     BSSZ   1
  
NOSBE     ENDIF 
  
NOS       IFC    EQ,*"OS.NAME"*KRONOS*
          QUAL   SYS
          SYSTEM DMD,R,X3,X1
          QUAL   *
          EQ   DB$DUMP
NOS       ENDIF 
  
SAVE      BSSZ   4           1. ENTRY POINT CIO=
*                            2. ENTRY POINT SYS=
*                            3. ENTRY POINT WNB=
*                            4. PARAMETER LIST (APLIST) ADDRESS 
  
*         PARAMETER LIST FOR DB$LINE CALL 
  
APLIST1   CON    MINUS
          CON    MINUS
MINUS     CON    -1 
          SPACE  5,10 
*         A LOCAL SYS= IS USED SO THAT DB$DUMP WILL NOT DESTROY 
*         DIAGNOSTIC INFORMATION AT THE SHARED SYS= ENTRY POINT.
  
          QUAL   SYS
  
 SYS1     SA1    A1          WAIT (RA.MTR) CLEAR IF AUTO RECALL 
          LX1    59-40
          MI     X1,SYS1
  
 SYS=     EQ     *+1S17 
 +        SA1    1           WAIT (RA.MTR) CLEAR
          NZ     X1,* 
          SA6    A1          ENTER REQUEST
          EQ     SYS1 
  
          QUAL   *
  
          END 
