Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/msdpmd.beg
There are no other files named msdpmd.beg in the archive.
%TITLE 'STIRS FAULT ISOLATION DATA FOR M8621 (DPM) BOARD'

MODULE MSDPMD	(
		LANGUAGE(BLISS36)
		) =

BEGIN

!
!			  COPYRIGHT (C) 1979 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:	DECSYSTEM 2020 DIAGNOSTIC RELEASE TAPE 'DSTIR'
!
! ABSTRACT:
!
!	THIS MODULE CONTAINS THE FAULT ISOLATION DATA FOR THE KS10
!	STIMULUS/RESPONSE (STIRS) DIAGNOSTIC FOR THE M8621 (DPM) BOARD.
!	IT IS LINKED TO THE 'MSSTRC' AND 'MSDPMT' MODULES TO PRODUCE
!	THE 'MSDPM.EXE' FILE.
!
! ENVIRONMENT: 	RUNS UNDER 'CSL' ON A TOPS-20 SYSTEM.
!
! AUTHOR: ARON INSINGA	, CREATION DATE: 01-SEP-78!
! MODIFIED BY:
!
!	ARON INSINGA, 23-MAY-79; VERSION 0.1
!--
!
! EQUATED SYMBOLS:
!

    GLOBAL LITERAL
	DATA_VERSION = 1,
	DATA_EDIT = 0;

    COMPILETIME
	ALLOC_B = 35,	! PDP-11 STYLE BIT # IN WORD, READY TO OVERFLOW
	ALLOC_W = -1,	! WORD #, SO WE WILL START WITH 0 AFTER OVERFLOW
	ALLOC_N = 0,	! NUMBER OF THINGS ALLOCATED
	ALLOC_N_1 = 0,	! (ALLOC_N - 1) TEMPORARY
	ALLOC_W_1 = 0,	! (ALLOC_W + 1) TEMPORARY
	ALLOC_B_1 = 0;	! (35 - ALLOC_B) TEMPORARY

!
! MACROS:
!

    MACRO
	ALLOC(ALLOC_NAME,ALLOC_SLIT) =	! ALLOCATE FAULT ANALYSIS BITS
	    %ASSIGN(ALLOC_B,ALLOC_B + 1)
	    %IF ALLOC_B EQL 36
	    %THEN
		%ASSIGN(ALLOC_B,0)
		%ASSIGN(ALLOC_W,ALLOC_W + 1)
		COMPILETIME
		    %NAME(W_,%NUMBER(ALLOC_W)) = 0;
	    %FI
	    ! PRINT THE WORD # AND PDP-10 BIT # INTO THE LISTING
	    %ASSIGN(ALLOC_B_1,35 - ALLOC_B)
	    %PRINT(%NUMBER(ALLOC_W),',',%NUMBER(ALLOC_B_1))
	    MACRO
		ALLOC_NAME =
		    %QUOTE %ASSIGN
		    (
			%QUOTE %EXPAND %NAME(W_,%NUMBER(ALLOC_W)),
			%QUOTE %EXPAND %NAME(W_,%NUMBER(ALLOC_W)) OR
			    (1 ^ %QUOTE %EXPAND %NUMBER(ALLOC_B))
		    )
		    %QUOTE % ;
	    BIND
		%NAME(N_,%NUMBER(ALLOC_N)) =
		    %IF %NULL(ALLOC_SLIT)
		    %THEN
			%ASSIGN(ALLOC_N_1,ALLOC_N - 1)
			%NAME(N_,%NUMBER(ALLOC_N_1))
		    %ELSE
			UPLIT(%ASCIZ ALLOC_SLIT)
		    %FI ;
	    %ASSIGN(ALLOC_N,ALLOC_N + 1)
	%,
	DUMP(X,N)[] =		! X0, ... XN
	    %IF %COUNT GEQ N %THEN %EXITMACRO %FI
	    %IF %COUNT NEQ 0 %THEN , %FI
	    %NAME(X,%NUMBER(%COUNT))
	    DUMP(X,N)
	%,
	DUMP_ASSIGN(N)[] =	! %ASSIGN(X0,0) ... %ASSIGN(XN,0)
	    %IF %COUNT GEQ N %THEN %EXITMACRO %FI
	    %QUOTE %ASSIGN (%NAME(W_,%NUMBER(%COUNT)),0)
	    DUMP_ASSIGN(N)
	%;
    ! DPM 1
    ALLOC(DBM_SEL_SCAD,'DPM1: DBM MUX SELECT')
    ALLOC(DBM_SEL_PF)
    ALLOC(DBM_SEL_APR)
    ALLOC(DBM_SEL_APR_EN)
    ALLOC(DBM_SEL_BYTES)
    ALLOC(DBM_SEL_BYTES35)
    ALLOC(DBM_SEL_EXP)
    ALLOC(DBM_SEL_MSEC)
    ALLOC(DBM_SEL_DP)
    ALLOC(DBM_SEL_DP_SWAP)
    ALLOC(DBM_SEL_VMA)
    ALLOC(DBM_SEL_MEM)
    ALLOC(DBM_SEL_N)

    ! DPM 1,2
    ALLOC(DBM_SCAD,'DPM1,2: DBM MUX')
    ALLOC(DBM_PF)
    ALLOC(DBM_APR)
    ALLOC(DBM_APR_EN)
    ALLOC(DBM_BYTES)
    ALLOC(DBM_BYTES35)
    ALLOC(DBM_EXP)
    ALLOC(DBM_MSEC)
    ALLOC(DBM_DP)
    ALLOC(DBM_DP_SWAP)
    ALLOC(DBM_VMA)
    ALLOC(DBM_VMA_MEM)
    ALLOC(DBM_MEM)
    ALLOC(DBM_N)

    ! DPM 3
    ALLOC(SCADA_SC,'DPM3: SCAD A MUX')
    ALLOC(SCADA_SN)
    ALLOC(SCADA_44)
    ALLOC(SCADA_BYTE1)
    ALLOC(SCADA_BYTE2)
    ALLOC(SCADA_BYTE3)
    ALLOC(SCADA_BYTE4)
    ALLOC(SCADA_BYTE5)
    ALLOC(SCADA_SEL_SC,'DPM3: SCAD A MUX SELECT')
    ALLOC(SCADA_SEL_SN)
    ALLOC(SCADA_SEL_44)
    ALLOC(SCADA_SEL_BYTE1)
    ALLOC(SCADA_SEL_BYTE2)
    ALLOC(SCADA_SEL_BYTE3)
    ALLOC(SCADA_SEL_BYTE4)
    ALLOC(SCADA_SEL_BYTE5)
    ALLOC(SCADB_FE,'DPM3: SCAD B MUX')
    ALLOC(SCADB_EXP)
    ALLOC(SCADB_SHIFT)
    ALLOC(SCADB_SIZE)
    ALLOC(SCADB_SEL_FE,'DPM3: SCAD B MUX SELECT')
    ALLOC(SCADB_SEL_EXP)
    ALLOC(SCADB_SEL_SHIFT)
    ALLOC(SCADB_SEL_SIZE)

    ! DPM 3,4
    ALLOC(SCAD_A_MUL2,'DPB3,4: SCAD')
    ALLOC(SCAD_OR)
    ALLOC(SCAD_SUBB)
    ALLOC(SCAD_SUB)
    ALLOC(SCAD_ADD)
    ALLOC(SCAD_AND)
    ALLOC(SCAD_A_DEC)
    ALLOC(SCAD_A)

    ! DPM 4
    ALLOC(VMA_USER_DP,'DPM4: VMA USER')
    ALLOC(VMA_USER_N)
    ALLOC(VMA_PREV_DP,'DPM4: VMA PREVIOUS')
    ALLOC(VMA_PREV_N)
    ALLOC(VMA_PHYS_DP,'DPM4: VMA PHYSICAL')
    ALLOC(VMA_PHYS_N)
    ALLOC(VMA_FETCH_DP,'DPM4: VMA FETCH')
    ALLOC(VMA_FETCH_N)
    ALLOC(VMA_CYCLE_DP,'DPM4: VMA CYCLE')
    ALLOC(VMA_CYCLE_N)
    ALLOC(VMA_SWEEP,'DPM4: VMA SWEEP')
    ALLOC(VMA_SWEEP_CD)
    ALLOC(VMA_SWEEP_PT)
    ALLOC(VMA,'DPM4: VMA REGISTER')
    ALLOC(FE,'DPM4: FE REGISTER')
    ALLOC(FE_EN,'DPM4: FE ENABLE')
    ALLOC(FE_SIGN,'DPM4: FE SIGN')
    ALLOC(SC,'DPM4: SC REGISTER')
    ALLOC(SC_EN,'DPM4: SC ENABLE')
    ALLOC(SC_SIGN,'DPM4: SC SIGN')
    ALLOC(AC_REF,'DPM4: VMA IS AC')

    ! DPM 5
    ALLOC(MEM_READ_N,'DPM5: MEM READ')
    ALLOC(MEM_READ_DP)
    ALLOC(MEM_READ_DRO)
    ALLOC(MEM_WRITE_N,'DPM5: MEM WRITE')
    ALLOC(MEM_WRITE_DP)
    ALLOC(MEM_WRITE_DRO)
    ALLOC(MEM_WR_TEST_N,'DPM5: MEM WRITE TEST')
    ALLOC(MEM_WR_TEST_DP)
    ALLOC(MEM_WR_TEST_DRO)
    ALLOC(MEM_CAC_INH_N,'DPM5: MEM CACHE INHIBIT')
    ALLOC(MEM_CAC_INH_DP)
    ALLOC(MEM_CAC_INH_DRO)
    ALLOC(BUS_REQ,'DPM5: BUS REQUEST')
    ALLOC(BUS_REQ_A)
    ALLOC(CLK_APR,'DPM5: CLOCK APR')
    ALLOC(MEM_DELAY,'DPM5: MEM DELAY')
    ALLOC(VMA_EN,'DPM5: VMA EN')
    ALLOC(MEM_EN,'DPM5: MEM EN')
    ALLOC(SPEC,'DPM5: SPEC')
    ALLOC(STOP,'DPM5: STOP MEM')
    ALLOC(MEM_WAIT,'DPM5: MEM WAIT')
    ALLOC(FORCE,'DPM5: FORCE RAMFILE')

    ! DPM 5,6,C
    ALLOC(BUS_CYCLE,'DPM5,6,C: BUS CYCLE CONTROL')

    ! DPM 6
    ALLOC(PT_ADR,'DPM6: PAGE TABLE')
    ALLOC(PT_IO)
    ALLOC(PT_VAL_WRT)
    ALLOC(PT_USR)
    ALLOC(PT_CAC)
    ALLOC(PT_PAR)
    ALLOC(PT_RAM_PAG_USR)
    ALLOC(PT_RAM_VAL_WRT)
    ALLOC(PT_RAM_CAC)
    ALLOC(PT_RAM_PAR)
    ALLOC(PF,'DPM6: PAGE FAIL')
    ALLOC(PF_WT)
    ALLOC(PF_NXM)
    ALLOC(PF_BAD)
    ALLOC(PF_OK)
    ALLOC(PT_PAR_GEN,'DPM6: PT PARITY')
    ALLOC(PAR_ERR,'DPM6: PARITY ERR')

    ! DPM 7
    ALLOC(CD_ADR,'DPM7: CACHE DIR')
    ALLOC(CD_IO)
    ALLOC(CD_VAL)
    ALLOC(CD_CMP,'DPM7: CD COMPARATOR')
    ALLOC(CD_HIT,'DPM7: CD HIT')
    ALLOC(CD_PAR,'DPM7: CD PARITY')
    ALLOC(CD_RAM_PAG_USR)
    ALLOC(CD_RAM_VAL)
    ALLOC(CD_RAM_PAR)

    ! DPM 8,9
    ALLOC(BUS_MUX_DP,'DPM8,9: DBM MUX')
    ALLOC(BUS_MUX_VMA)
    ALLOC(BUS_MUX_PAGE)
    ALLOC(BUS_PAR,'DPM8,9: BUS PARITY')

    ! DPM 8,9,C
    ALLOC(BUS_T,'DPM8,9: BUS XCVR')
    ALLOC(BUS_R);

    ! DPM A
    ALLOC(CLK,'DPMA: CLOCK')
    ALLOC(RAM_CLK,'DPMA: RAM CLOCK')
    ALLOC(BUS_CLK,'DPMA: BUS CLOCK')
    ALLOC(BUS_XMIT,'DPMA: BUS XMIT')
    ALLOC(RESET,'DPMA: RESET')
    ALLOC(PXCT,'DPMA: PXCT')
    ALLOC(PXCT_MUX,'DPMA: PXCT MUX')
    ALLOC(PXCT_MUX_DPE)
    ALLOC(SPEC_PREV,'DPMA: SPEC 10')
    ALLOC(SPEC_APR)
    ALLOC(SPEC_SWEEP)
    ALLOC(SPEC_APR_EN)
    ALLOC(SPEC_PXCT_OFF)
    ALLOC(SPEC_MEMCLR)
    ALLOC(SPEC_MEMCLR_NXM)
    ALLOC(SPEC_MEMCLR_BAD)
    ALLOC(SPEC_MSEC,'DPMA: SPEC 20')
    ALLOC(SPEC_PAGE)
    ALLOC(SPEC_PXCT_EN)

    ! DPM A,C
    ALLOC(PT_CLK,'DPMA,C: PT CLOCK')

    ! DPM B
    ALLOC(APR,'DPMB: APR FLAGS')
    ALLOC(APR_EN,'DPMB: APR EN')
    ALLOC(TRAP_EN,'DPMB: TRAP EN')
    ALLOC(PAGE_EN,'DPMB: PAGE EN')

    ! DPM C
    ALLOC(BUS_TIMEOUT,'DPMC: BUS TIMEOUT')
    ALLOC(BUS_NXM,'DPMC: NXM ERR')
    ALLOC(BAD_DATA,'DPMC: BAD DATA')
    ALLOC(MEM_CYCLE,'DPMC: MEM CYCLE')
    ALLOC(IO_CYCLE,'DPMC: IO CYCLE')
    ALLOC(MSEC,'DPMC: MSEC')
    ALLOC(MSEC_FREQ,'DPMC: MSEC FREQUENCY')
! COMBINATIONS

    MACRO
	BUS = BUS_T BUS_R %,
	BUS_MUX = BUS_MUX_DP BUS_MUX_VMA BUS_MUX_PAGE %,
	BUS_ALL = BUS BUS_REQ BUS_TIMEOUT BUS_CYCLE BUS_CLK BUS_XMIT BUS_NXM %,
	VMA_ALL_DP = VMA_CYCLE_DP VMA_EN VMA VMA_PHYS_DP VMA_PREV_DP VMA_USER_DP %,
	VMA_ALL_N = VMA_CYCLE_N VMA_EN VMA VMA_PHYS_N VMA_PREV_N VMA_USER_N N_ALL %,
	N_ALL = DBM_N DBM_SEL_N %,
	PT_MESS = SPEC_PAGE PF BUS_ALL MEM_EN BUS_REQ MEM_WRITE_N MEM_READ_N BUS_MUX_PAGE VMA_ALL_N %,
	PF_CODE = PF DBM_PF DBM_SEL_PF %,
	VMA_USER_PREV = VMA_USER_DP VMA_USER_N VMA_PREV_DP VMA_PREV_N %,
	SPEC_PXCT = SPEC_PXCT_OFF SPEC_PXCT_EN %;
!
! EQUATED SYMBOLS:
!

    GLOBAL LITERAL
	MAXNETS = ALLOC_N;

    MACRO
	NTWK =
	    %ASSIGN(ALLOC_W_1,ALLOC_W + 1)
	    DUMP(W_,%NUMBER(ALLOC_W_1))
	    DUMP_ASSIGN(%NUMBER(ALLOC_W_1))
	%;

    ! THIS MAKES A  V E R Y  LONG LISTING WITH EXPANSIONS
    SWITCHES LIST(NOEXPAND);

    GLOBAL BIND
	NET_NAMES = PLIT
	(
	    DUMP(N_,%NUMBER(ALLOC_N))
	);

    ! DOCUMENT WHAT JUST HAPPENED
    %PRINT(%NUMBER(ALLOC_N))
    %PRINT(%NUMBER(ALLOC_W))
    %PRINT(%NUMBER(ALLOC_B))