Google
 

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