      SUBROUTINE DPRINT(ARRAY,NELTS,FMT,LOCATN)                                 
      INTEGER FMT                                                               
C*********PUT THIS FORTRAN SUBPROGRAM AMONG THE OTHER FORTRAN ROUTINES          
C*********AFTER THE MAIN PROGRAM AND BEFORE THE FIRST ASCENT ROUTINE.           
C     THIS IS THE OUTPUT ROUTINE FOR THE ASCENT ROUTINE DEBUG.                  
C     DPRINT PRINTS THE ARRAY ARRAY WITH NELTS ELEMENTS ACCORDING TO            
C     FORMAT FMT.                                                               
C     LOCATN WILL EITHER BE THE ADDRESS OF ARRAY, OR (WHEN REGISTERS ARE        
C     BEING PRINTED) THE ADDRESS OF THE DEBUG CALL.                             
      DIMENSION ARRAY(1),FMT(1)                                                 
      PRINT FMT,  LOCATN,(ARRAY(I),I=1,NELTS)                                   
      RETURN                                                                    
      END                                                                       
C*********INSERT THESE ASCENT CARDS JUST BEFORE THE END CARD OF THE             
C*********ASCENT ROUTINE BEING DEBUGGED.                                        
C*********INSERT A RETURN JUMP (RJ) TO SDEBUG AT EVERY POINT IN THE             
C*********ASCENT ROUTINE AT WHICH DEBUG PRINTING IS TO BE DONE.                 
C*********WARNING... MAKE SURE THAT NONE OF YOUR ASCENT LABELS ARE THE          
C*********SAME AS ANY OF THESE ASCENT LABELS.                                   
C*********WARNING... THE CONTENTS OF REGISTERS A5 AND A7 WILL SOMETIMES         
C*********BE DESTROYED WHEN THIS DEBUGGING IS DONE.                             
C         SAVE STORES ALL REGISTERS EXCEPT A7. A5 AND A7 ARE DESTROYED.         
          VFD    D24/SAVE,N36/0                                                 
 SAVE     JP     *                                                              
          SA7    SX7              STORE X7                                      
          BX7    X6                     X6                                      
          SA7    SX6                                                            
          BX7    X5                     X5                                      
          SA7    SX5                                                            
          BX7    X4                     X4                                      
          SA7    SX4                                                            
          BX7    X3                     X3                                      
          SA7    SX3                                                            
          BX7    X2                     X2                                      
          SA7    SX2                                                            
          BX7    X1                     X1                                      
          SA7    SX1                                                            
          BX7    X0                     X0                                      
          SA7    SX0                                                            
          SX7    A6                     A6                                      
          SA7    SA6                                                            
          SX7    A5                     A5                                      
          SA7    SA5                                                            
          SX7    A4                     A4                                      
          SA7    SA4                                                            
          SX7    A3                     A3                                      
          SA7    SA3                                                            
          SX7    A2                     A2                                      
          SA7    SA2                                                            
          SX7    A1                     A1                                      
          SA7    SA1                                                            
          SX7    A0                     A0                                      
          SA7    SA0                                                            
          SX7    B7                     B7                                      
          SA7    SB7                                                            
          SX7    B6                     B6                                      
          SA7    SB6                                                            
          SX7    B5                     B5                                      
          SA7    SB5                                                            
          SX7    B4                     B4                                      
          SA7    SB4                                                            
          SX7    B3                     B3                                      
          SA7    SB3                                                            
          SX7    B2                     B2                                      
          SA7    SB2                                                            
          SX7    B1                     B1                                      
          SA7    SB1                                                            
          SA5    SX7              RESTORE X7                                    
          BX7    X5                                                             
          SA5    SX5              RESTORE X5                                    
          JP     SAVE             RETURN                                        
C         REST RESTORES THE REGISTERS STORED BY SAVE                            
          VFD    D24/REST,N36/0                                                 
 REST     JP     *                                                              
          SA5    SB7              RESTORE B7                                    
          SB7    X5                                                             
          SA5    SB6                      B6                                    
          SB6    X5                                                             
          SA5    SB5                      B5                                    
          SB5    X5                                                             
          SA5    SB4                      B4                                    
          SB4    X5                                                             
          SA5    SB3                      B3                                    
          SB3    X5                                                             
          SA5    SB2                      B2                                    
          SB2    X5                                                             
          SA5    SB1                      B1                                    
          SB1    X5                                                             
          SA5    SA6                      A6                                    
          SA5    X5                                                             
          BX6    X5                                                             
          SA6    A5                                                             
          SA5    SA4                      A4                                    
          SA4    X5                                                             
          SA5    SA3                      A3                                    
          SA3    X5                                                             
          SA5    SA2                      A2                                    
          SA2    X5                                                             
          SA5    SA1                      A1                                    
          SA1    X5                                                             
          SA5    SA0                      A0                                    
          SA0    X5                                                             
          SA5    SX0                      X0                                    
          BX0    X5                                                             
          SA5    SX1                      X1                                    
          BX1    X5                                                             
          SA5    SX2                      X2                                    
          BX2    X5                                                             
          SA5    SX3                      X3                                    
          BX3    X5                                                             
          SA5    SX4                      X4                                    
          BX4    X5                                                             
          SA5    SX6                      X6                                    
          BX6    X5                                                             
          SA5    SX7                      X7                                    
          BX7    X5                                                             
          SA5    SX5                      X5                                    
          JP     REST             RETURN                                        
          EXT    DPRINT                                                         
C         DEBUG CAUSES DPRINT TO PRINT THE REGISTERS STORED BY SAVE             
C         AND POSSIBLY OTHER INFORMATION IF THE PROGRAMMER WISHES.              
          VFD    D30/DEBUG,N30/0                                                
 DEBUG    JP     *                                                              
          SA5    DEBUG            FETCH ENTRY WORD                              
          BX7    X5                                                             
          AX7    30               SHIFT TO GET RETURN ADDRESS RIGHT             
          SA7    SIC              STORE IT                                      
C         INITIALIZE PARAMETERS FOR DPRINT.                                     
          SX6    SKT              INITIALIZE DEBUG POINTER (SKR)                
          SA6    SKR                                                            
          SB4    SIC              SET B4 (LOCATN)                               
 BGLOOP   SA1    SKR              FETCH DEBUG POINTER                           
          SA2    X1               FETCH NEXT PACKED DEBUG CONTROL WORD.         
          NZ     X2 REBUG         ALL DEBUG PRINTING IS DONE IF X2 IS 0         
 +        RJ     REST             GO RESTORE REGISTERS SAVED BY SAVE            
 -        LT     B0 B0 DEBUG-1                                                  
          JP     DEBUG            RETURN                                        
 REBUG    SX6    X1+1             INCREMENT DEBUG POINTER                       
          SA6    SKR                                                            
          SB3    X2               SET B3 (FMT)                                  
          SB2    SKS              SET B2 (NELTS)                                
          AX2    30               SHIFT PACKED DEBUG CONTROL WORD               
          SB1    X2               SET B1 (ARRAY)                                
          SX6    B1               STORE B1 (ADDRESS OF ARRAY)                   
          SA6    LOCATN                                                         
          AX2    18               SHIFT PACKED DEBUG CONTROL WORD               
          SX6    X2               STORE SKS (NELTS)                             
          SA6    SKS                                                            
 +        RJ     DPRINT           GO PRINT                                      
 -        LT     B0 B0 DEBUG-1                                                  
          SB4    LOCATN           SET B4 (LOCATN)                               
          JP     BGLOOP           LOOP BACK FOR NEXT DEBUG CONTROL WORD         
 SKR      BSS    1                COUNTER FOR SKT                               
 SKS      BSS    1                NO. OF WORDS TO BE PRINTED BY DPRINT          
C         SDEBUG SAVES THEN DEBUGS                                              
          VFD    D36/SDEBUG,N24/0                                               
 SDEBUG   JP     *                                                              
 +        RJ     SAVE             GO SAVE                                       
 -        LT     B0 B0 SDEBUG-1                                                 
          SA1    SDEBUG           FAKE NORMAL ENTRY INTO DEBUG                  
          BX6    X1                                                             
          SA6    DEBUG                                                          
          JP     DEBUG+1                                                        
C         LOCATIONS TO STORE REGISTERS IN                                       
 LOCATN   BSS    1                ADDRESS OF ARRAY GIVEN TO DPRINT              
 SIC      BSS    1                INSTRUCTION COUNTER                           
 SA0      BSS    1                                                              
 SA1      BSS    1                                                              
 SA2      BSS    1                                                              
 SA3      BSS    1                                                              
 SA4      BSS    1                                                              
 SA5      BSS    1                                                              
 SA6      BSS    1                                                              
 SB1      BSS    1                                                              
 SB2      BSS    1                                                              
 SB3      BSS    1                                                              
 SB4      BSS    1                                                              
 SB5      BSS    1                                                              
 SB6      BSS    1                                                              
 SB7      BSS    1                                                              
 SX0      BSS    1                                                              
 SX1      BSS    1                                                              
 SX2      BSS    1                                                              
 SX3      BSS    1                                                              
 SX4      BSS    1                                                              
 SX5      BSS    1                                                              
 SX6      BSS    1                                                              
 SX7      BSS    1                                                              
C         ARRAY OF DEBUG CONTROL WORDS. THE FIRST WORD IS FOR THE               
C         PRINTING OF THE REGISTERS.  THE USER MAY SUPPLY OTHER CONTROL         
C         WORDS TO CAUSE FURTHER PRINTING.                                      
C         THE FIRST BIT MUST BE 0.  THE NEXT 11 BIT IS THE NUMBER OF            
C         WORDS TO BE PRINTED.                                                  
C         THE NEXT 18 BITS IS THE ADDRESS OF THE FIRST LOCATION TO BE           
C         PRINTED.                                                              
C         THE NEXT 12 BITS ARE IGNORED.                                         
C         THE LAST 18 BITS IS THE ADDRESS OF THE FORMAT TO BE USED.             
C         WARNING... A WORD OF ZEROES MUST FOLLOW THE LAST CONTROL WORD.        
 SKT      VFD    N12/22,A18/SA0,N12/0,A18/FMT1                                  
C*********INSERT OTHER DEBUG CONTROL WORDS HERE.                                
          CON    0                                                              
C         FORMATS FOR DPRINT                                                    
 FMT1     DPC    53(1H0,O6,12X,5H A0-6,7(8X,O6)/19X,5H B0-7 8X, 6H000000        
          DPC    537(8X,O6)/ 19X,5H X0-3 4O28/19X,5H X4-7 4O28)                 
C*********INSERT OTHER FORMATS HERE.                                            
