//D1Prin3z.bcpl More of procedure to prettyprint DMux
//DMux addresses 70B-107B printed here.
//	Last edited: 14 July 1979

get "d1.d"
manifest [ get "d1dmux.d" ]

external [
// MPRINS
	PrinV0; NWss; PrinV1; NWss1

// MPATTERN
	@PATTERN

// D1PRIN2
	PrintWrdByt

// Defined here
	PrintDMXz
]


let PrintDMXz(Addr) be
[	let T = nil
	switchon Addr into
	[
case dFLTMEM:
	NWss("ProcSrn← ",#10000)
	NWss("Faults ")
	NWss("LoadFltSrn ")
	NWss("ReportFault ")
	NWss("MapPEInMem ")
	NWss("MapTroubleInMem ")
	NWss("RfshInMem ")
	NWss1("WriteInMem ")
	NWss1("MemWP ")
	NWss1("IOFetchInMem ")
	NWss1("RefUsesD10InMem ")
	NWss1("RefUsesDInMem ")
	NWss1("DirtyIOFetchInMem"); return
case dRFSSRN:
	NWss("STPerr ",#100000)
	NWss("MapPerr ")
	NWss("HitPerr ")
	NWss("WantRfsh ")
	NWss("NeedRfsh ")
	NWss1("StartMema ")
	NWss1("StkWake ")
	NWss1("←FaultInfoDly ")
	PrinV1("MapSrn[0:3]",PATTERN<<nib2)
	PrinV1(" MemSrn[0:3]",PATTERN<<nib3); return
case dEC1MAKE:
	NWss("StartEc2 ",#100000)
	NWss("Ec1Free ")
	NWss("Ec1Idle ")
	PrinV0("Ec1Func[0:1]",(PATTERN rshift 11) & 3B)
	PrinV0(" Ec1State[0:2]",(PATTERN rshift 8) & 7B)
	NWss(" EcWantsAa",#200)
	NWss(" FoutNext")
	NWss1("MakeFout←D ")
	NWss1("MakeD←CD ")
	NWss1("MakeD←Dbuf ")
	NWss1("MakeF←D ")
	NWss1("MakeMD←D ")
	NWss1("MakeMDM←D "); return
case dMAPCTRL:
	PrinV0("MapbufHi[0:1]",PATTERN rshift 14)
	NWss(" MapRAS",#20000)
	NWss(" MapCAS")
	NWss(" MapWE")
	NWss(" RefWE")
	NWss(" DirtyWE")
	NWss1("MapWait ",#200)
	NWss1("WantMapWait ")
	NWss1("ValidMapFltInEc2 ")
	PrinV1("MapFnc[0:1]",(PATTERN rshift 3) & 3B)
	PrinV1(" MapState[0:2]",PATTERN & 7B); return
case dPEEC:
	PrinV0("PEsrn[0:3]",PATTERN<<nib0)
	PrinV0(" Ec1Srn[0:3]",PATTERN<<nib1)
	NWss(" CacheLoad",#200)
	NWss(" Ec2Free")
	NWss1("Ec2Idle ")
	PrinV1("Ec2Func[0:1]",(PATTERN rshift 3) & 3B)
	PrinV1(" Ec2State[0:2]",PATTERN & 7B); return
case dINMAP:
	NWss("RefUsesDInMap ",#100000)
	NWss("RefUsesD10InMap ")
	NWss("DirtyIOFetchInMap ")
	NWss("WriteInMap ")
	NWss("IOFetchInMap ")
	NWss1("←MapInMap ")
	NWss1("Store←InMap ")
	NWss1("EcWantsPipe4 "); return
case dKSTATE:
	NWss("IndexTW ",#40000)
	NWss("SectorTW ")
	NWss("SeekTagTW ")
	NWss("RdFifoTW ")
	NWss("WrFifoTW ")
	NWss("ReadData ")
	NWss("WriteData ")
	NWss1("EnableRun ",#200)
	NWss1("DebugMode ")
	NWss1("RdOnlyBlock ")
	NWss1("WriteBlock ")
	NWss1("CheckBlock ")
	NWss1("Active ")
	PrinV1("Select[0:1]",PATTERN & 3); return
case dKSTAT:
	NWss("SeecInc ",#100000)
	NWss("HeadOvfl ")
	NWss("DevCheck ")
	NWss("NotSelected ")
	NWss("NotOnLine ")
	NWss("NotReady ")
	NWss("SectorOvfl ")
	NWss("FifoUnderflow ")
	NWss1("FifoOverflow ",#200)
	NWss1("ReadDataError ")
	NWss1("ReadOnly ")
	NWss1("CylOffset ")
	NWss1("IOBParityErr ")
	NWss1("FifoParityErr ")
	NWss1("WriteError ")
	NWss1("ReadError "); return
case dKRAM:
	PrinV0("RamAddr[0:3]",PATTERN rshift 12)
	PrinV1("Ram[4:15]",PATTERN & 7777B); return
case dKTAG:
	NWss("DriveTag ",#100000)
	NWss("CylinderTag ")
	NWss("HeadTag ")
	NWss("ControlTag ")
	NWss1("Tag.000 ",#4000)
	NWss1("Tag.00 ")
	PrinV1("Tag[0:9]",PATTERN & #1777); return
case dKFIFO:
	NWss("ShiftIn ",#100000)
	NWss("ShiftOut ")
	NWss("ComputeECC ")
	NWss("NextBlock ")
	NWss("LoadTag ")
	NWss("CntDone ")
	NWss1("OutRegFull ")
	NWss1("InRegFull ")
	PrinV1("FifoWaddr[0:3]",PATTERN<<nib2)
	PrinV1(" FifoRaddr[0:3]",PATTERN & 17B); return
case dERX0:
	PrinV0("PDInput",PATTERN rshift 14)
	PrinV0(" PDCnt[0:3]",(PATTERN rshift 10) & #17)
	NWss(" PDCntCtrl",#1000)
	NWss(" ReportCollisions")
	NWss(" RxWakeupsOn")
	NWss1("EthData.18 ")
	NWss1("RxCRCError ")
	NWss1("RxDataLate ",#10)
	NWss1("RxBusRegFull ")
	NWss1("RxFifoFull ")
	NWss1("RxFifoEmpty"); return
case dETX:
	PrinV0("TxState[0:2]",PATTERN rshift 13)
	NWss(" TxEOP",#10000)
	NWss(" TxBusRegFull")
	NWss(" TxGone")
	NWss(" TxSREmpty")
	NWss(" TxCntDwn")
	NWss(" TxCRCEnbl")
	NWss1("TxGo ")
	NWss1("TxData ")
	PrinV1("TxSRCtrl[0:1]",(PATTERN rshift 3) & 3)
	NWss1(" PEOutput",#4)
	NWss1(" TxFifoFull")
	NWss1(" TxFifoEmpty"); return
case dERX1:
	PrinV0("RxState[0:2]",PATTERN rshift 13)
	NWss(" RxCollision",#10000)
	NWss(" PDCarrier")
	PrinV0(" PDEvent[0:1]",(PATTERN rshift 9) & 3)
	NWss(" RxSRFull",#400)
	NWss(" RxEOP")
	NWss1("RxSync ")
	NWss1("RxIncTrans ")
	NWss1("RxCRCReset ")
	NWss1("RxCRCClk ")
	NWss1("RxData ")
	PrinV1("RxSRCtrl[0:1]",PATTERN & 3); return
default:	endcase
	]
	PrintWrdByt(nil,lv PATTERN,nil,8)
	return
]