README.md
THESE PROGRAMS IMPLEMENT A CORE DUMP FACILITY FOR
RSX-11D AND IAS, FOR USER TASKS (RATHER THAN CDA WHICH ONLY
ANALYSES SYSTEM CRASHES). IT IS USEFUL FOR FINDING BUGS IN
PROGRAMS WHICH ARE "ALREADY" DEBUGGED BUT ABORTED UNEXPECTEDLY
(AND UNDER POSSIBLY UNKNOWN CONDITIONS), FOR PROGRAMS WHICH
CANNOT RUN UNDER ODT FOR VARIOUS REASONS, OR FOR FINDING
HARDWARE MEMORY ERRORS NOT OCCURRING AS PARITY ERRORS. IT
IS NOT INDENDED AS A REPLACEMENT FOR ODT OR DDT WHICH ARE
INTERACTIVE DEBUGGING TOOLS AND WHICH IN MOST CASES ALLOW
MUCH FASTER DEBUGGING THAN IS POSSIBLE WITH SUCH A DUMP FACILITY,
WHICH IS MORE LIKE A BATCH STREAM DEBUGGING TOOL THAN MOST
RSX SOFTWARE.

THE CORE DUMP SYSTEM CONSISTS OF TWO PARTS, A SUBROUTINE
TO .TKTN. WHICH DUMPS APPROPRIATE ABORTING TASKS' IMAGES INTO
BINARY FILES, AND AN ANALYSIS PROGRAM WHICH WILL FORMAT THE OUTPUT
INTO A MORE READABLE FORM.

LOG IN TO A SYSTEM OR PRIVILEGED ACCOUNT, REFERRED TO AS
[?,?]. TO INSTALL THE SYSTEM, IT IS FIRST NECESSARY TO
ASSEMBLE THE FIXES TO .TKTN.. EDIT THE FILE 'DMPCOR.MAC'.
ON THE THIRD PAGE ARE A NUMBER OF ASSEMBLY PARAMETERS
REGARDING THE PRECISE TYPES OF TASKS WHICH WILL BE DUMPED,
THE TYPE OF INFORMATION TO DUMP, AND WHERE TO PLACE THE
DUMP FILE. THERE IS ALSO A SELECTION FOR A SOURCE LEVEL OR AN
OBJECT LEVEL CHANGE TO .TKTN.; IF YOU DO NOT HAVE SOURCES OR
DO NOT WISH TO MAKE A SOURCE LEVEL CHANGE THE SYMBOL 'PATCH'
MUST BE DEFINED.

AFTER THESE CHANGES HAVE BEEN MADE, ASSEMBLE THE FILE:
MCR>MAC DMPCOR,LP:/LI:TTM=DMPCOR
NEXT: 1) IF YOU ARE MAKING A SOURCE LEVEL CHANGE, EDIT THE
FILE [311,13]TKTN.MAC. LOCATE THE LINE BEGINNING
WITH 'START:'. AFTER THAT SYMBOL, BEFORE THE
LINE 'ATLSCN: MOV PSEXP,-(SP)', PLACE AN INSTRUCTION
'CALL DMPINI'. NEXT FIND THE LINE 'MOV #"SP,TMPL2+2'.
FIND THE NEXT CALL TO 'TYPREG' AFTER THAT LINE AND PLACE
AN INSTRUCTION 'CALL DMPCOR' AFTER THE CALL TO TYPREG.
EXIT THE EDITOR AND ASSEMBLE .TKTN.:
MCR>MAC TKTN,LP:/LI:TTM=[311,13]TKTN
2) IF YOU ARE MAKING AN OBJECT LEVEL PATCH, ASSEMBLE THE
MODULE 'TKTNPAT.MAC':
MCR>MAC TKTNPAT,LP:/LI:TTM=TKTNPAT
NOW APPLY THE PATCH FILE TO [11,13]TKTN.OBJ (IT MIGHT BE
A GOOD IDEA TO KEEP A COPY IN CASE OF MISHAP).
MCR>INS [11,1]PAT
MCR>PAT TKTN=[11,13]TKTN,[?,?]TKTNPAT

NOW BUILD .TKTN., REMOVE .TKTN. AND RE-INSTALL:
MCR>TKB @TKTN
MCR>REM .TKTN.
MCR>INS TKTN

NOW IT IS TIME TO BUILD THE CORE DUMP ANALYSIS
TASK. THE DEFAULT PAGE SIZE CAN BE MODIFIED BY CHANGING
THE SYMBOL 'PAGSIZ' ON THE SECOND PAGE; THE CURRENT
DEFAULT IS 59. THERE ARE NO OTHER CONDITIONAL ASSEMBLIES, SO:
MCR>MAC COREANL,LP:/LI:TTM=COREANL
MCR>MAC PRFCS,LP:/LI:TTM=PRFCS
MCR>TKB @COREANL
MCR>INS COREANL

THE CORE DUMP ANALYSIS TASK IS NAMED ...COR. IT
HAS TWELVE SWITCHES EXPLAINED IN MORE DETAIL ON PAGE 1 IN
THE ASSEMBLER SOURCE FILE:

/R5 DUMP RADIX 50 ON TASK CORE
/BY DUMP IN BYTE MODE BINARY; /-BY DUMPS WORD MODE
/AS PRINT ASCII AS WELL AS BINARY
/N5 NO RADIX 50 EVEN ON SYSTEM TABLES
/RO DUMP TASK READ-ONLY SECTION (ONLY IF THERE)
/CM DUMP COMMON AREAS (LIBRARIES ONLY IF /RO ALSO)
/RW DUMP TASK READ/WRITE SECTION
/SY DUMP SYSTEM TABLES
/HD DUMP TASK HEADER
/SP SPOOL LISTING FILE AND DELETE WHEN DONE.
/MD:X:Y DUMP TASK CORE FROM ADDRESS X TO Y.
/PS:X PAGE SIZE IS TO BE X.

DEFAULTS: /-R5/-BY/AS/-N5/-RO/-CM/RW/SY/HD/SP/MD:0:177777/PS:59

THE PROGRAM WILL NOT ATTEMPT A CORE DUMP IF
A FAULT OCCURRS WHICH DOES NOT PRINT THE REGISTERS
(I. E., DISK READ ERR, DISK WRITE ERR, VIA 'EXIT' WITH PENDING
I/O, MEMORY PARITY ERROR)

ONE WORD OF CAUTION: THE EXEC AND .TKTN. USE THE
A.FM+0 WORD IN THE ATL NODE OF AN ABORTING TASK TO HOLD
THE TERMINATION CODE, AND THE TASK'S STATUS IS ALWAYS
'SUSPENDED FOR TERMINATION MESSAGE', SO THERE IS NO GETTING
THE TASK'S EVENT FLAG MASKS 1-16 OR THE CURRENT OR AST
STATUS OUT AFTER A DUMP !!!

THESE PROGRAMS HAVE A FEW KNOWN DEFICIECNIES, BUT
NO GREAT DIFFICULTIES SHOULD BE ENCOUNTERED BECAUSE OF THEM:

1) THE PROGRAMS DO NOT HANDLE I/D SPACE. IF IT IS
EVER IMPLEMENTED, THE .TKTN. SUBROUTINE PROBABLY
WOULD NOT NEED TO BE MODIFIED, BUT THE COREANL
PROGRAM (PARTICULARLY THE "GETPDR" SUBROUTINE)
WOULD. THIS DOES NOT SEEM SERIOUS AT THE PRESENT
TIME.
2) MORE IMPORTENTLY, NEITHER PROGRAM IMPLEMENTS
THE PLAS FEATURE. I AM NOT SURE HOW THAT FEATURE
WILL LOOK, AND I HAVE NOT HAD A CHANCE TO GET AN
IDEA. PROBABLY THE .TKTN. SUBROUTINE COULD BE
LEFT UNMODIFIED, AND THE COREANL PROGRAM CHANGED
(POSSIBLY IN "GETPDR") TO FIND THAT PART OF THE
PROGRAM WHICH WAS MAPPED INTO THE ADDRESS SPACE AND
DUMP THAT AT THE APPROPRIATE ADDRESS. ALSO, A METHOD
FOR GETTING OUT THE PART OF THE PLAS NOT MAPPED INTO
THE TASK SPACE WOULD BE OF INTEREST.