Trailing-Edge
-
PDP-10 Archives
-
tops10_tools_bb-fp64b-sb
-
10,7/mcbda/mdadmc.bli
There are no other files named mdadmc.bli in the archive.
MODULE DMC ( !Display the data base for a DMC11
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 DMC11 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
DMCLN : NOVALUE, !Display DMC11 system line data base.
PUTCCBS : NOVALUE; !Display a chain of CCBs.
!
! INCLUDE FILES:
!
LIBRARY 'MDACOM'; !MDA common definitions.
!
! MACROS:
!
MACRO
GETBYT_SIGNED (ADR) =
BEGIN
LOCAL TEMP;
TEMP=GETBYT(ADR);
.TEMP<0,8,1>
END %;
!
! EQUATED SYMBOLS:
!
!
! OWN STORAGE:
!
!
! EXTERNAL REFERENCES:
!
EXTERNAL ROUTINE
BITLS : NOVALUE, !Interpret bits into ASCII text.
CNV18 : NOVALUE,
GETBYT, !Get a byte from the dump image.
GETWRD, !Get a word from the dump image.
MAPAPR : NOVALUE, !Map APR to block of memory.
MEMDMP : NOVALUE,
PUTCCB : NOVALUE, !Display a CCB.
SKIP : NOVALUE,
VMADMP : NOVALUE;
EXTERNAL
FLAGS : BITVECTOR [M_MAX_BITS];
GLOBAL ROUTINE DMCLN (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 ('DMC')
THEN
BEGIN
%if FALSE %then
LOCAL
ADR;
PUTLN (2, CH$ASCIZ ('DMC11 LINE # %O ADDRESS: %P CSR ADDRESS: %P'),
GETWRD (.LINE_ADDRESS + SYMBOL ('D.LINE')), .LINE_ADDRESS,
GETWRD (.LINE_ADDRESS + SYMBOL ('D.SEL0')));
PUTLN (0, CH$ASCIZ (' LONG TIMER - CURRENT: %O INITIAL: %O'),
GETBYT (.LINE_ADDRESS + SYMBOL ('D.TIMR')), GETBYT (.LINE_ADDRESS + SYMBOL ('D.TIME')));
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.STAT'))) NEQ 0
THEN
BEGIN
LITERAL
STSTP = 1^0, !STOP IN PROGRESS
STDIS = 1^1, !DISABLE IN PROGRESS
STMC = 1^7; !DMC MICRO-PROCESSOR IS STOPPED
BIND
LINE_STAT = BITS_LIST (('STSTP', 'STOP'), ('STDSC', 'DISCONNECT'), ('STDIS', 'DISABLE'));
PUTLN (0, CH$ASCIZ (' PENDING FUNCTIONS: %@'), BITLS, LINE_STAT, .ADR)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.ERRS'))) NEQ 0
THEN
BEGIN
BIND
LINE_ERRS = BITS_LIST ('CE.ABO', 'CE.DIS', 'CE.ERR', 'CE.MOP', 'CE.RTE', 'CE.SRC', 'CE.TMO');
PUTLN (0, CH$ASCIZ (' PENDING ERROR: %@'), BITLS, LINE_ERRS, .ADR)
END;
IF DEFINED (ADR = SYMBOL ('D.LOGG'))
THEN
IF (ADR = GETWRD (.LINE_ADDRESS + .ADR)) NEQ 0
THEN
PUTLN (0,
CH$ASCIZ (' EVENT LOGGING WORD: %P'), .ADR);
PUTLN (0, CH$ASCIZ (' THERE ARE %M. RECEIVE BUFFERS ASSIGNED OUT OF %M.'),
(ADR = -GETBYT_SIGNED (.LINE_ADDRESS + SYMBOL ('D.RBFC'))) + GETBYT_SIGNED (.LINE_ADDRESS + SYMBOL
('D.RAQC')), .ADR);
PUTLN (0, CH$ASCIZ (' THERE ARE %M. TRANSMIT BUFFERS ASSIGNED OUT OF %M.'),
(ADR = -GETBYT_SIGNED (.LINE_ADDRESS + SYMBOL ('D.XBFC'))) + GETBYT_SIGNED (.LINE_ADDRESS + SYMBOL
('D.XAQC')), .ADR);
BEGIN
BIND
D_PLEX = SYMBOL ('D.PLEX');
DEVCHA (GETWRD (.LINE_ADDRESS + D_PLEX + 0), GETWRD (.LINE_ADDRESS + D_PLEX + 2))
END;
BEGIN
PUTLN (1, CH$ASCIZ (' STATISTICS COUNTERS - TIME WHEN ZEROED: %P'),
GETWRD (.LINE_ADDRESS + SYMBOL ('D.TLZ'))^1);
PUTLN (0, CH$ASCIZ ('%4SBLOCKS RECEIVED: %M., SENT: %M.'),
GETWRD (.LINE_ADDRESS + SYMBOL ('D.RCV')), GETWRD (.LINE_ADDRESS + SYMBOL ('D.XMT')));
MAPAPR (6, GETWRD (.LINE_ADDRESS + SYMBOL ('D.LBIA')));
ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.LVA'));
PUTLN (0, CH$ASCIZ ('%4SNAKS RECEIVED: %M.'), GETBYT (.ADR + 5));
PUTLN (0, CH$ASCIZ ('%4SNAKS SENT -'));
PUTLN (0, CH$ASCIZ ('%6SNO BUFFER AVAILABLE: %M.'), GETBYT (.ADR + 6));
PUTLN (0, CH$ASCIZ ('%6SBAD HEADER CRC: %M.'), GETBYT (.ADR + 7));
PUTLN (0, CH$ASCIZ ('%6SBAD DATA CRC: %M.'), GETBYT (.ADR + 8));
PUTLN (0, CH$ASCIZ ('%4SREPS RECEIVED: %M., SENT: %M.'), GETBYT (.ADR + 9), GETBYT (.ADR + 10));
END;
IF .FLAGS [M_CEX_DUMP]
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4SLINE TABLE:'));
SKIP (1);
VMADMP (0, .LINE_ADDRESS, .LINE_ADDRESS + SYMBOL ('D.LEN'));
END;
BEGIN
LOCAL
BIAS;
PUTLN (1, CH$ASCIZ (' DMC BASE TABLE BIAS: %P ADDRESS: %P'),
(BIAS = GETWRD (.LINE_ADDRESS + SYMBOL ('D.LBIA'))),
(ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.LVA'))));
IF .FLAGS [M_CEX_DUMP]
THEN
BEGIN
LOCAL
LOW_PHYSICAL : VECTOR [2],
HIGH_PHYSICAL : VECTOR [2];
CNV18 (LOW_PHYSICAL, .ADR, .BIAS);
CNV18 (HIGH_PHYSICAL, .ADR + 64*2, .BIAS);
SKIP (1);
MEMDMP (LOW_PHYSICAL, LOW_PHYSICAL, HIGH_PHYSICAL);
END;
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.RASQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE RECEIVE CCBS IN THE DMC QUEUE:'));
FLAGS [M_BUF] = 0;
PUTCCBS (1, .ADR, 0)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.RAWQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE RECEIVE CCBS WAITING FOR THE DMC:'));
FLAGS [M_BUF] = 0;
PUTCCBS (1, .ADR, 0)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.XASQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE TRANSMIT CCBS IN THE DMC QUEUE:'));
FLAGS [M_BUF] = 1;
PUTCCBS (1, .ADR, 0)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.XAWQ'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE TRANSMIT CCBS WAITING FOR THE DMC:'));
FLAGS [M_BUF] = 1;
PUTCCBS (1, .ADR, 0)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.CFNC'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4SCURRENT CONTROL CCB:'));
FLAGS [M_BUF] = 0;
PUTCCB (1, .ADR, 0)
END;
IF (ADR = GETWRD (.LINE_ADDRESS + SYMBOL ('D.PFNC'))) NEQ 0
THEN
BEGIN
PUTLN (1, CH$ASCIZ ('%4STHERE ARE PENDING CONTROL CCBS:'));
FLAGS [M_BUF] = 0;
PUTCCBS (1, .ADR, 0)
END;
%else NO_OPERATION %fi
END; !End of DMCLN
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