//D1Prin3Y.bcpl -- DMux addresses 40B to 67B printed here.
// Last edited: 13 September 1979
get "d1.d"
manifest [ get "d1dmux.d" ]
external [
// MASM
@WssCSS; WssCS1; PutsCS1
// MCMD
WnsCS1
// MPRINS
PrinV0; NWss; PrinV1; NWss1
// MPATTERN
@PATTERN
// D1PRIN2
PrintWrdByt
// Defined here
PrintDMXy
]
let PrintDMXy(Addr) be
[ switchon Addr into
[
case dPVAH:
PrinV0("ProcVA[4:15]",PATTERN); return
case dPVAL:
PrinV0("ProcVA[16:31]",PATTERN); return
case dMAPAD:
PrinV0("MapAd[0:8]",PATTERN); return
case dHIT:
NWss("MiscPCHP ",#400)
PrinV0("ColVic[0:1]",(PATTERN rshift 6) & 3)
NWss(" HitColVA.par",#40)
NWss(" HitColDirty")
NWss(" Hita"); return
case dHOLD:
NWss("WantCHdly ",#10000)
NWss("MiscHold ")
NWss("MDhold ")
NWss("RefHold ")
NWss("BLretry ")
NWss("AwasFree ")
NWss("Dbusy ")
NWss1("DbufBusy ")
NWss1("AtookST ")
NWss1("SomeExtHold ")
NWss1("Afree ")
NWss1("StartMap ")
NWss1("AwantsMapFS "); return
case dPAIR:
NWss("Store←InA ",#100000)
NWss("IoStoreInA ")
NWss("Map←InPair ")
NWss("FlushInA ")
NWss("PrefetchInA ")
NWss("IfuRefInA ")
NWss("IoRefInA ")
NWss1("CacheRefInA ")
NWss1("PrivRefInPair ",#100)
NWss1("VicInPair ")
NWss1("FSinPair ")
NWss1("bEcHasA ")
NWss1("KillIfuRef ")
NWss1("←PrVArow ")
NWss1("PairFull "); return
case dPIPEAD:
PrinV0("PipeAd[0:3]",PATTERN<<nib0)
WssCSS(selecton (PATTERN rshift 10) & 3 into
[ case 0: ", und. cache config"
case 1: ", 16K cache, no parity"
case 2: ", 16K cache with parity"
case 3: ", 4K cache"
] )
WssCSS(selecton (PATTERN rshift 8) & 3 into
[ case 0: ", und. page size"
case 1: ", 4k pages"
case 2: ", 1k pages"
case 3: ", 256-word pages"
] )
return
case dMEMD0:
NWss("SinD.00 ",#100000)
NWss("CD.00 ")
NWss("D0in.00 ")
NWss("D1in.00 ")
NWss("EcSout.00 ")
NWss1("D.00 ",#200)
NWss1("dMD.00 ")
NWss1("Fout.00 "); return
case dDAD:
PrinV0("Dad[0:1]f",PATTERN rshift 14)
PrinV0(", Dad[2:8]c",(PATTERN rshift 7) & 177B)
PrinV0(", Dad.09",(PATTERN rshift 6) & 1)
PrinV0(", Dad[10:12]c",(PATTERN rshift 3) & 7B)
PrinV0(", Dad[10:12]b",PATTERN & 7B)
PrinV1("(Col",PATTERN rshift 14)
PrinV1(", row",(PATTERN rshift 6) & 377B)
PATTERN = (PATTERN & 7B) lshift 1
WssCS1(", word "); WnsCS1(PATTERN); WssCS1(" or ")
WnsCS1(PATTERN+1); PutsCS1($)); return
case dFD:
NWss("F←D ",#100000)
NWss("D←Dbuf ")
NWss("Sout←D ")
NWss("Fout←D ")
NWss("D←CD ")
NWss("Md←D ")
NWss("MakeMDM←D ")
NWss1("bFastD←Dbuf ")
NWss1("Dbuf← ")
NWss1("DadH← ")
NWss1("DontLoad1 ")
NWss1("GenPh1 ")
NWss1("DontWriteMDM "); return
case dEC:
NWss("StartEcChk ",#4000)
NWss("StartEcGen ")
PrinV0("EcInD[0:1]",(PATTERN rshift 7) & 3B)
NWss(" WordInError",#100)
NWss1("DisableEc ")
NWss1("ChkPh1 ")
NWss1("ChkPH4 ")
NWss1("ChkLastPh6 ")
NWss1("DoubleError ")
NWss1("ChkErrEn "); return
case dTSYN:
PrinV0("tSyn[0:6]",PATTERN rshift 9)
PrinV0(" tSyn7x",(PATTERN rshift 8) & 1); return
case dMDMAD:
PrinV0("MDMad[0:3]",PATTERN xor 17B); return
case dDADE:
NWss("D0ACE'c ",#100000)
NWss("D0BCE'c ")
NWss("D1ACE'c ")
NWss("D1BCE'c ")
NWss("WriteD0'e ")
NWss("WriteD1'd "); return
case dMCR:
NWss("dVA←Vic ",#100000)
NWss("ForceDirtyMiss ")
NWss("UseMcrV ")
PrinV0("Victim[0:1]",(PATTERN rshift 11) & 3)
PrinV0(" NextV[0:1]",(PATTERN rshift 9) & 3)
NWss1("DisBR ",#400)
NWss1("DisCflags ")
NWss1("DisHold ")
NWss1("NoRef ")
NWss1("WakeOnCL ",#4)
NWss1("ReportSE ")
NWss1("NoWakeups "); return
case dMAPBUF:
PrinV0("Mapbuf[0:15]",PATTERN); return
case dP34INEC:
PrinV0("Mapbuf[16:17]",PATTERN rshift 14)
NWss(" ProcTagInA",#20000)
NWss(" PrivRefInPair")
PrinV0(" Pipe34Ad[0:3]",PATTERN<<nib1)
NWss(" WPinEc1",#200)
NWss1("MapTroubleInEc1 ")
NWss1("TagInEc2 ")
NWss1("CacheRefInEc2 ")
NWss1("Store←InEc2 ")
NWss1("IFURefInEc2 ")
NWss1("MapPEInEc2 ")
NWss1("MapTroubleInEc2 "); return
case dMCDTSK:
PrinV0("MDMtagAd[0:3]",PATTERN<<nib0)
PrinV0(" CurTask[0:3]",PATTERN<<nib1)
PrinV1("ProcTag",(PATTERN rshift 7) & 1)
PrinV1(" MDMtag",(PATTERN rshift 6) & 1)
NWss(" At=Curt",#40)
NWss(" Dt=Curt")
PrinV1(" Dtask[0:3]",PATTERN<<nib3); return
case dSTA:
NWss("VictimInST ",#100000)
NWss("STIdle ")
NWss("StartST ")
NWss("STWait-Mem ")
PrinV0("STState[0:3]",PATTERN<<nib1)
NWss(" STfree",#200)
NWss1("VictimInA ")
NWss1("MapRfshDly ")
NWss1("RefUsesDInEc1 ")
NWss1("AWordRefToD ")
NWss1("MapWantsPipe ")
NWss1("MapFree ")
NWss1("UseAsrn "); return
case dAPESRN:
PrinV0("ASrn[0:3]",PATTERN<<nib0)
PrinV0(" ProcSrn[0:3]",PATTERN<<nib1)
NWss1("MapIs16K ",#200)
NWss1("MapIs64K ")
NWss1("MapIs256K ")
NWss1("RfshAd.0 ")
PrinV0(" Ec2Srn[0:3]",PATTERN<<nib3); return
case dSTOUT:
NWss("LoadEn ",#100000)
NWss("EcLoadEn ")
NWss("ShiftEn ")
NWss("EnEcGen ")
NWss("MapWait-ST ")
NWss("STPerrNow ")
NWss("EnableAllMods ")
NWss1("StartEc1 ")
NWss1("PairFull ")
NWss1("Transporta ")
NWss1("EcFault ")
NWss1("MemError ")
NWss1("ChipsAre256/16K ",4)
NWss1("ChipsAre64K ")
NWss1("VicSTPerr "); return
case dTAGAT:
NWss("MemColSela ",#100000)
NWss("EcHasA ")
PrinV0("Ptag",(PATTERN rshift 13) & 1)
NWss(" MapWait-Ec2",#10000)
PrinV0(" Dtag",(PATTERN rshift 11) & 1)
NWss(" sHold",#2000)
NWss(" MapWait-MemState")
NWss1("MapRfsh ")
NWss1("AcanHaveD ")
NWss1("CacheRefInPair ")
NWss1("EcWordRefToD ")
NWss1("ChkLastPh6 ")
PrinV1("Atask[0:3]",PATTERN<<nib3); return
case dMEMST:
NWss("MapWait-MemD ",#100000)
NWss("MapWait-MemIO ")
NWss("MemIdle ")
NWss("MemFree ")
PrinV0("MemState[0:3]",PATTERN<<nib1)
NWss1("FinNext ",#200)
NWss1("MemRfsh ")
NWss1("StopFinTaskLoad ")
NWss1("DdataGood ")
NWss1("MakeSout←D ")
PrinV1("MakeTransport[0:2]",PATTERN & 7B); return
default:
endcase
]
PrintWrdByt(nil,lv PATTERN,nil,8); return
]