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

366 lines
9.4 KiB
Plaintext
Raw 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 DTE ( !Display the data base for a DTE20
IDENT = '003010',
LANGUAGE (BLISS16, BLISS36)
) =
BEGIN
!
! COPYRIGHT (c) 1977, 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: MCBDA - MCB Crash Dump Analyzer
!
! ABSTRACT:
!
! Dump the DTE20 system line data base.
!
! ENVIRONMENT: ANY
!
! AUTHOR: ALAN D. PECKHAM , CREATION DATE: 29-SEP-78
!
! MODIFIED BY:
!
! Alan D. Peckham, 12-Aug-80: VERSION 3
! 01 - Update for MCB V3.0
!--
!
! TABLE OF CONTENTS:
!
FORWARD ROUTINE
DTELN : NOVALUE, !Display DTE20 system line data base.
PUTCCBS : NOVALUE; !Display a chain of CCBs.
!
! INCLUDE FILES:
!
LIBRARY 'MDACOM'; !MDA common definitions.
!
! MACROS:
!
!
! EQUATED SYMBOLS:
!
!
! OWN STORAGE:
!
!
! EXTERNAL REFERENCES:
!
EXTERNAL ROUTINE
BITLS : NOVALUE, !Interpret bits into ASCII text.
GETBYT, !Get a byte from the dump image.
GETWRD, !Get a word from the dump image.
PUTCCB : NOVALUE, !Display a CCB.
SKIP : NOVALUE,
VMADMP : NOVALUE;
EXTERNAL
FLAGS : BITVECTOR [M_MAX_BITS];
GLOBAL ROUTINE DTELN (LINE_BIAS, LINE_ADDRESS) : NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
!
! FORMAL PARAMETERS:
!
! NONE
!
! IMPLICIT INPUTS:
!
! NONE
!
! IMPLICIT OUTPUTS:
!
! NONE
!
! ROUTINE VALUE:
!
! NONE
!
! SIDE EFFECTS:
!
! NONE
!
!--
IF SYMBOL_TABLE ('DTE')
THEN
BEGIN
%if FALSE %then
LOCAL
ADR;
PUTLN (2, CH$ASCIZ ('DTE20 # %O SYSTEM LINE # %O ADDRESS: %P CSR ADDRESS: %P'),
GETBYT (.LINE_ADDRESS + SYMBOL ('L.UNT')), GETBYT (.LINE_ADDRESS + SYMBOL ('L.SLN')),
.LINE_ADDRESS, GETWRD (.LINE_ADDRESS + SYMBOL ('L.CST')) - 28);
BEGIN
BIND
LINE_STS = BITS_LIST ('LS.RUN', 'LS.INI', 'LS.ICB');
PUTLN (0, CH$ASCIZ (' STATUS: %@'), BITLS, LINE_STS, GETWRD (.LINE_ADDRESS + SYMBOL ('L.STS')))
END;
IF DEFINED (ADR = SYMBOL ('L.LOG'))
THEN
IF (ADR = GETWRD (.LINE_ADDRESS + .ADR)) NEQ 0
THEN
PUTLN (0,
CH$ASCIZ (' EVENT LOGGING WORD: %P'), .ADR);
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.PSW'))) NEQ 0
THEN
BEGIN
BIND
LINE_PSW = BITS_LIST ('CS.SUC', 'CS.HLT', 'CS.SRO', 'CS.TDN', 'CS.TRE', 'CS.DCK', 'CS.PCK');
PUTLN (0, CH$ASCIZ (' THERE IS A PENDING ASYNCHRONOUS STATUS: %@'), BITLS, LINE_PSW, .ADR)
END;
PUTLN (0, CH$ASCIZ (' LONG TIMER - CURRENT: %O'), GETBYT (.LINE_ADDRESS + SYMBOL ('L.TIM')));
PUTLN (0, CH$ASCIZ (' KEEP-ALIVES - MINE: %P HIS: %P'), GETWRD (.LINE_ADDRESS + SYMBOL ('L.MKA')),
GETWRD (.LINE_ADDRESS + SYMBOL ('L.HKA')));
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.RCT'))) NEQ 0
THEN
BEGIN
PUTLN (0, CH$ASCIZ (' CURRENTLY RECEIVING IN %4A MODE'),
(IF GETBYT (.LINE_ADDRESS + SYMBOL ('L.RTM')) EQL 0 THEN CH$ASCII ('BYTE') ELSE CH$ASCII (
'WORD')));
PUTLN (0, CH$ASCIZ ('%4SSIZE OF THIS MESSAGE: %O CURRENT TRANSFER SIZE: %O'),
GETWRD (.LINE_ADDRESS + SYMBOL ('L.RPZ')), GETWRD (.LINE_ADDRESS + SYMBOL ('L.RCZ')));
PUTLN (0, CH$ASCIZ ('%4SRECEIVE BUSS ADDRESS: %P %P BYTE COUNT: %O'),
GETWRD (.LINE_ADDRESS + SYMBOL ('L.RBA')), GETWRD (.LINE_ADDRESS + SYMBOL ('L.RLA')), .ADR);
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.XCT'))) NEQ 0
THEN
BEGIN
PUTLN (0, CH$ASCIZ (' CURRENTLY TRANSMITTING IN %4A MODE'),
(IF GETBYT (.LINE_ADDRESS + SYMBOL ('L.XTM')) EQL 0 THEN CH$ASCII ('BYTE') ELSE CH$ASCII (
'WORD')));
PUTLN (0, CH$ASCIZ ('%4STRANSMIT BUSS ADDRESS: %P %P BYTE COUNT: %O'),
GETWRD (.LINE_ADDRESS + SYMBOL ('L.XBA')), GETWRD (.LINE_ADDRESS + SYMBOL ('L.XLA')), .ADR);
END;
PUTLN (0, CH$ASCIZ (' PROCESSOR NUMBERS - MINE: %O HIS: %O'),
GETBYT (.LINE_ADDRESS + SYMBOL ('L.MPN')), GETBYT (.LINE_ADDRESS + SYMBOL ('L.HPN')));
PUTLN (0, CH$ASCIZ (' COMM REGION OFFSETS -'));
PUTLN (0, CH$ASCIZ ('%4SEXAMINE HIS GENERAL %O'), GETWRD (.LINE_ADDRESS + SYMBOL ('L.EHG')));
PUTLN (0, CH$ASCIZ ('%4SEXAMINE HIS TO-ME %O'), GETWRD (.LINE_ADDRESS + SYMBOL ('L.EHM')));
BEGIN
BIND
L_DMH = SYMBOL ('L.DMH'),
L_EMG = SYMBOL ('L.EMG');
PUTLN (0, CH$ASCIZ ('%4SEXAMINE MY GENERAL %O'), GETWRD (.LINE_ADDRESS + L_EMG));
PUTLN (0, CH$ASCIZ ('%4SEXAMINE MY TO-HIM %O'),
GETWRD (.LINE_ADDRESS + L_EMG) + GETWRD (.LINE_ADDRESS + L_DMH));
PUTLN (0, CH$ASCIZ ('%4SDEPOSIT MY GENERAL 0'));
PUTLN (0, CH$ASCIZ ('%4SDEPOSIT MY TO-HIM %O'), GETWRD (.LINE_ADDRESS + L_DMH))
END;
BEGIN
BIND
L_RST = SYMBOL ('L.RST');
PUTLN (0, CH$ASCIZ (' TO-ME STATUS WORD: %P %P %P'), GETWRD (.LINE_ADDRESS + L_RST + 4),
GETWRD (.LINE_ADDRESS + L_RST + 2), GETWRD (.LINE_ADDRESS + L_RST + 0));
PUTLN (0, CH$ASCIZ ('%4SHIS COUNT TO ME: %O'), GETBYT (.LINE_ADDRESS + L_RST + 0));
IF ((ADR = GETBYT (.LINE_ADDRESS + L_RST + 4)) AND 1^0) NEQ 0
THEN
PUTLN (0,
CH$ASCIZ ('%4SVALID EXAMINE IS ON'));
IF (.ADR AND 1^1) NEQ 0 THEN PUTLN (0, CH$ASCIZ ('%4SINITIALIZATION HAS BEEN REQUESTED'));
IF (.ADR AND 1^2) NEQ 0 THEN PUTLN (0, CH$ASCIZ ('%4SRELOAD REQUESTED'));
IF (GETBYT (.LINE_ADDRESS + L_RST + 2) AND 1^0) NEQ 0
THEN
PUTLN (0,
CH$ASCIZ ('%4SHE IS RECEIVING FROM ME'));
END;
BEGIN
BIND
L_XST = SYMBOL ('L.XST');
PUTLN (0, CH$ASCIZ (' TO-HIM STATUS WORD: %P %P %P'), GETWRD (.LINE_ADDRESS + L_XST + 4),
GETWRD (.LINE_ADDRESS + L_XST + 2), GETWRD (.LINE_ADDRESS + L_XST + 0));
PUTLN (0, CH$ASCIZ ('%4SMY COUNT TO HIM: %O'), GETBYT (.LINE_ADDRESS + L_XST + 1));
PUTLN (0, CH$ASCIZ ('%4SMY COUNT TO ME: %O'), GETBYT (.LINE_ADDRESS + L_XST + 0));
IF ((ADR = GETBYT (.LINE_ADDRESS + L_XST + 4)) AND 1^0) NEQ 0
THEN
PUTLN (0,
CH$ASCIZ ('%4SVALID EXAMINE IS ON'));
IF (.ADR AND 1^1) NEQ 0 THEN PUTLN (0, CH$ASCIZ ('%4SINITIALIZATION HAS BEEN REQUESTED'));
IF (.ADR AND 1^2) NEQ 0 THEN PUTLN (0, CH$ASCIZ ('%4SRELOAD REQUESTED'));
IF (GETBYT (.LINE_ADDRESS + L_XST + 2) AND 1^0) NEQ 0
THEN
PUTLN (0,
CH$ASCIZ ('%4SI AM RECEIVING FROM HIM'));
END;
IF DEFINED (ADR = SYMBOL ('L.TLZ'))
THEN
BEGIN
PUTLN (0, CH$ASCIZ (' STATISTICS COUNTERS - TIME WHEN ZEROED: %P'),
GETWRD (.LINE_ADDRESS + .ADR));
PUTLN (0, CH$ASCIZ ('%4SBLOCKS RECEIVED: %M., TRANSMITTED: %M.'),
GETWRD (.LINE_ADDRESS + SYMBOL ('L.RCV')), GETWRD (.LINE_ADDRESS + SYMBOL ('L.XMT')));
PUTLN (0, CH$ASCIZ ('%4SRESOURCE ALLOCATION ERRORS: %M.'),
GETBYT (.LINE_ADDRESS + SYMBOL ('L.RES')))
END;
IF .FLAGS [M_CEX_DUMP]
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4SLINE TABLE:'));
SKIP (1);
VMADMP (0, .LINE_ADDRESS, .LINE_ADDRESS + SYMBOL ('$DTELZ'));
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.ICB'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE IS AN INTERRUPT CCB ALLOCATED:'));
FLAGS [M_BUF] = 0;
PUTCCB (1, .ADR, 0);
END;
IF (GETWRD (.LINE_ADDRESS + SYMBOL ('L.RBZ'))) NEQ 0 AND (ADR = GETWRD (.LINE_ADDRESS + SYMBOL (
'L.RCB'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE IS A CURRENT RECEIVE BUFFER:'));
FLAGS [M_BUF] = 0;
PUTCCB (1, .ADR, 0);
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.RFQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE FREE RECEIVE BUFFERS:'));
FLAGS [M_BUF] = 0;
PUTCCBS (1, .ADR, 0)
END;
IF (GETWRD (.LINE_ADDRESS + SYMBOL ('L.XBZ'))) NEQ 0 AND (ADR = GETWRD (.LINE_ADDRESS + SYMBOL (
'L.XCB'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE IS A CURRENT TRANSMIT BUFFER:'));
FLAGS [M_BUF] = 1;
PUTCCB (1, .ADR, 0);
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.XMQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE CCBS WAITING TO BE TRANSMITTED:'));
FLAGS [M_BUF] = 1;
PUTCCBS (1, .ADR, 0)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('L.PCQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE PENDING CONTROL FUNCTIONS:'));
FLAGS [M_BUF] = 0;
PUTCCBS (1, .ADR, 0)
END;
%else NO_OPERATION %fi
END; !End of DTELN
ROUTINE PUTCCBS (LINES, ADR, FORMATTER) : NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
!
! FORMAL PARAMETERS:
!
! NONE
!
! IMPLICIT INPUTS:
!
! NONE
!
! IMPLICIT OUTPUTS:
!
! NONE
!
! ROUTINE VALUE:
!
! NONE
!
! SIDE EFFECTS:
!
! NONE
!
!--
IF .ADR NEQ 0
THEN
BEGIN
LOCAL
CCB_COUNT;
CCB_COUNT = CEX_MAX_CCB;
DO
IF (CCB_COUNT = .CCB_COUNT - 1) LSS 0
THEN
EXITLOOP (PUTLN (1,
CH$ASCIZ (WARNING, 'TOO MANY CCBS')))
ELSE
PUTCCB (.LINES, .ADR, .FORMATTER)
WHILE (ADR = GETWRD (.ADR)) NEQ 0;
END; !End of PUTCCBS
END !End of module
ELUDOM