Trailing-Edge
-
PDP-10 Archives
-
tops10_tools_bb-fp64b-sb
-
10,7/mcbda/mdadte.bli
There are no other files named mdadte.bli in the archive.
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