mirror of
https://github.com/PDP-10/stacken.git
synced 2026-05-03 14:59:18 +00:00
366 lines
9.4 KiB
Plaintext
366 lines
9.4 KiB
Plaintext
|
||
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
|