ASMB,R,L
      NAM \DUMP,0 24999-16313 REV.2024 800116 
      ENT \DUMP       ENTRY POINT 
      EXT $MRMP       POINTER TO MEMORY RESIDENT MAP
* 
A     EQU 0 
B     EQU 1 
****************************************************************************
* 
*     THIS CODE, IN CONJUNCTION WITH THE MEMORY RESIDENT PROGRAM #DUMP, 
*     WILL PRODUCE A DUMP OF A CRASHED SYSTEM.  TO RUN, LOAD THE P REGISTER 
*     WITH THE ADDRESS OF THE ENTRY POINT \DUMP.  THE S REGISTER CONTAINS 
*     THE SELECT CODE OF THE DUMP DEVICE. 
* 
*     THIS CODE LOCATES THE MEMORY RESIDENT PROGRAM #DUMP AND EXECUTES
*     IT.  IT ALSO SAVES THE MEMORY STATUS REGISTER AND THE SYSTEM MAP. 
*     NOTE THAT THE SYSTEM MAP IS WRITTEN OVER THIS CODE. 
* 
* 
*     JEF 01/16/80
****************************************************************************
MSTAT DEF *-*         CONTENTS OF MEM STATUS REGISTER 
* 
\DUMP RSA             SAVE
      STB MSTAT           MEM STATUS REG
      LDB 1657B       GET ADDR OF 
      STB KTBL            KEYWORD TABLE 
L1    LDB KTBL,I      GET ADDR OF ID SEGMENT
      SZB,RSS         IS THIS THE END OF THE TABLE? 
      JMP HLT         YES - GO AND HALT 
      ADB D12         NO - POINT TO NAME
* 
*     CHECK THE NAME IN THE ID SEGMENT
* 
      LDA B,I         GET WORD
      CPA NAM1        MATCH?
      RSS 
      JMP NIX         NO
      INB 
      LDA B,I         NEXT WORD 
      CPA NAM2        MATCH?
      RSS 
      JMP NIX         NO
      INB 
      LDA B,I         NEXT WORD 
      AND HIBYT       KEEP HIGH CHAR
      CPA NAM3        MATCH?
      JMP FOUND       YES - THIS IS THE ID SEGMENT
NIX   ISZ KTBL        NO - BUMP TO NEXT ENTRY 
      JMP L1              AND GO TRY IT 
HLT   HLT 0           IF THE ENTRY WASN'T FOUND...
      JMP HLT 
* 
D3    DEF 3 
D7    DEF 7 
D12   DEF 12
KTBL  DEF *-* 
NAM1  ASC 1,#D        "#DUMP" 
NAM2  ASC 1,UM
NAM3  OCT 050000      LETTER P
HIBYT OCT 177400      MASK TO GET THE HIGH BYTE 
HIBIT OCT 100000      TO OR INTO STADR FOR SYA
STADR DEF \DUMP       FOR SYA INSTRUCTION 
* 
*     WE HAVE FOUND THE PROGRAM - GET THE ENTRY POINT 
* 
FOUND LDB KTBL,I      ID SEG ADDR 
      ADB D7              + 7 
      LDB B,I              IS THE PRIMARY ENTRY POINT 
      ADB D3          BUMP BY THREE TO SKIP SAFETY
      STB ENTP
      LDA STADR       SAVE
      IOR HIBIT           -OR IN DIRECTION- 
      SYA                 SYSTEM MAP
      LDA $MRMP       LOAD
      SYA                 MEM RES MAP 
      LDA STADR           LOAD \DUMP ADDR 
      SJP ENTP,I      AND GO EXECUTE THE ROUTINE
* 
ENTP  DEF *-*         THE ENTRY POINT 
      END 
                                                                                                                      