1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-05 18:49:02 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

309 lines
6.5 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
MODULE MDA ( !Examine MCB dump
IDENT = '003010',
LANGUAGE (BLISS16, BLISS36) ,
MAIN = MDA
) =
BEGIN
!
!
!
! COPYRIGHT (C) 1978 BY
! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
!
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
! TRANSFERRED.
!
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
! CORPORATION.
!
! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
!
!++
! FACILITY: MDA
!
! ABSTRACT:
!
!
! THIS MODULE CONTAINS THE ROOT ROUTINES FOR THE MCB DUMP ANALYZER
!
!
! ENVIRONMENT: ANY
!
! AUTHOR: ALAN D. PECKHAM, CREATION DATE: 14-AUG-78
!
! MODIFIED BY:
!
! Alan D. Peckham, 2-Jul-80 : VERSION 3
! 01 - Update for MCB V3.0
!--
!
! TABLE OF CONTENTS:
!
FORWARD ROUTINE
MDA : NOVALUE; !MCBDA main routines.
!
! INCLUDE FILES
!
LIBRARY 'MDACOM'; !MDA COMMON DEFINITIONS
!
! MACROS:
!
MACRO
SUPPORT_STRING =
%CHAR(MDA_SUPPORT), %,
VERSION_STRING =
%NUMBER(MDA_VERSION), %,
UPDATE_STRING =
%IF MDA_UPDATE NEQ 0
%THEN %STRING('.', %NUMBER (MDA_UPDATE)), %FI %,
EDIT_STRING =
%IF MDA_EDIT NEQ 0
%THEN %STRING('-', %NUMBER (MDA_EDIT)), %FI %,
VERSION_DISPLAY =
%STRING(SUPPORT_STRING VERSION_STRING UPDATE_STRING EDIT_STRING) %;
!
! EQUATED SYMBOLS:
!
BIND
VERSION = CH$ASCII ('Version ', VERSION_DISPLAY),
LENGTH = %CHARCOUNT ('Version ', VERSION_DISPLAY);
GLOBAL BIND
VERPTR = CH$ASCII (VERSION_DISPLAY),
VERLNG = %CHARCOUNT (VERSION_DISPLAY);
!
! OWN STORAGE:
!
GLOBAL
FLAGS : BITVECTOR [M_MAX_BITS], !Processing flags.
TSKCNT,
TSKLST : BLOCKVECTOR [MDA_MAX_TSKS, 2],
PRCCNT,
PRCLST : BLOCKVECTOR [MDA_MAX_PRCS, 1],
DMPCNT,
DMPLST : BLOCKVECTOR [MDA_MAX_DMPS, 4],
DMPBLK : INITIAL (0),
DMPOFF,
XSTART : INITIAL (1),
LSTBLK : INITIAL (0),
STBBLK : INITIAL (0),
TTYBLK : INITIAL (0);
!
! EXTERNAL REFERENCES:
!
EXTERNAL ROUTINE
ANALYZE : NOVALUE, !Dump crash context.
ATL : NOVALUE, !Dump active task list.
BUFFERS : NOVALUE, !Dump COMM/EXEC buffers.
CEX : NOVALUE, !Dump COMM/EXEC information.
CLOSE, !Close a file.
CLQ : NOVALUE, !Display the clock queue.
CMD, !Get a user command.
DEV : NOVALUE, !Dump the device data bases.
DMPOPN, !Initialize the dump file.
DUMP : NOVALUE, !Dump memory.
FXD : NOVALUE, !Dump the fixed tasks.
HDR : NOVALUE, !Dump the task headers.
HELP : NOVALUE, !Give the user help.
LSTOPN, !Initialize the listing device.
PCBMAP : NOVALUE, !Dump partition map.
PCBS : NOVALUE, !Dump the PCBs.
POOL : NOVALUE, !Dump the RSX pool.
! PROCESS : NOVALUE, !Display a process memory image.
RSX : NOVALUE, !Dump RSX11 information.
STBOPN, !Initialize the symbol tables.
STD : NOVALUE, !Dump the system task directory.
TASK : NOVALUE, !Dump a task image.
TTYOPN : NOVALUE, !Initialize the user's terminal.
TYPE : NOVALUE; !Display a line on the user's tty.
ROUTINE MDA : NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
!
!
!
! FORMAL PARAMETERS:
!
! NONE
!
! IMPLICIT INPUTS:
!
! NONE
!
! IMPLICIT OUTPUTS:
!
! NONE
!
! ROUTINE VALUE:
!
! NONE
!
! SIDE EFFECTS
!
! NONE
!
!--
BEGIN
XSTART = .XSTART - 1; !Retry count
TTYOPN (TTYBLK); !Get the user's tty.
DO
BEGIN
IF CMD ()
THEN
BEGIN
DMPOPN (DMPBLK); !Initialize the dump file
LSTOPN (LSTBLK, .FLAGS [M_WIDE], DMPBLK); !and the listing device
STBOPN (STBBLK); !and the symbol tables.
!+
! Analyze the crash context
!-
IF .FLAGS [M_ANALYZE] THEN ANALYZE (); !Dump the crash context.
!+
! Dump the RSX context information
!-
IF .FLAGS [M_RSX_CTXT] THEN RSX (); !Process the RSX11 data bases.
!+
! Call appropriate routines to dump requested partition information.
!-
IF .FLAGS [M_RSX_PARS] THEN PCBMAP (); !Dump the partition map.
!+
! Dump requested task information.
!-
IF .FLAGS [M_RSX_ATL] THEN ATL (); !Display the active task list.
IF .FLAGS [M_RSX_FXD] THEN FXD (); !Display the fixed tasks.
IF .FLAGS [M_RSX_STD] THEN STD (); !Display the system task directory.
IF .FLAGS [M_RSX_HDR] THEN HDR (); !Display the task headers.
!+
! Dump the Partition Contrl Blocks
!-
IF .FLAGS [M_RSX_PCBS] THEN PCBS (); !Display the PCBs.
!+
! Dump device information.
!-
IF .FLAGS [M_RSX_DEV] THEN DEV (); !Display the device data bases.
!+
! Dump the clock queue.
!-
IF .FLAGS [M_RSX_CLQ] THEN CLQ (); !Display the clock queu entries.
!+
! Dump the RSX pool if asked nicely.
!-
IF .FLAGS [M_RSX_POOL] THEN POOL (); !Display the RSX pool.
!+
! Dump any requested tasks.
!-
IF .TSKCNT GTR 0
THEN
BEGIN
LOCAL
TSKNUM;
INCR TSKNUM FROM 0 TO .TSKCNT - 1 DO
TASK (TSKLST [.TSKNUM, 0, 0, 0, 0]);
TSKCNT = 0;
END;
!+
! Dump the MCB context information
!-
CEX (); !Process the MCB comm/exec data bases.
!+
! Display the buffer pools.
!-
IF .FLAGS [M_CEX_POOL] THEN BUFFERS ();
!+
! Dump any processes requested.
!-
! IF .PRCCNT GTR 0
! THEN
! BEGIN
!
! LOCAL
! PRCNUM;
!
! INCR PRCNUM FROM 0 TO .PRCCNT - 1 DO
! PROCESS (PRCLST [.PRCNUM, 0, 0, 0, 0]);
!
! PRCCNT = 0;
! END;
DUMP (); !Process any memory dump requests.
CLOSE (LSTBLK); !All finished with these.
CLOSE (DMPBLK); !
END;
!+
! Give the MDA version number
!-
IF .FLAGS [M_VERSION] THEN TYPE (VERSION, LENGTH);
!+
! Give the user help
!-
IF .FLAGS [M_HELP] THEN HELP (TTYBLK, CH$ASCIZ ('HLP:MCBDA.HLP'));
END
WHILE NOT .FLAGS [M_EXIT];
END; !OF MDA
END
ELUDOM