//D1Prin3v.bcpl More of procedure to prettyprint DMux //DMux addresses ge 110B printed here. // Last edited: 2 June 1981 get "d1.d" manifest [ get "d1pe.d" ] manifest [ get "d1dmux.d" ] external [ // MASM @WssCSS; PutsCSS; WssCS1; PutsCS1 // MCMD WnsCS1; WnsCS1D // MPRINS PrinV0; NWss; PrinV1; NWss1 // MPATTERN @PATTERN // D1GO PrintErrors // D1PRIN2 PrintWrdByt // D1PRIN3W PrintDMXw // Defined here PrintDMXv ] let PrintDMXv(Addr) be [ let T = nil switchon Addr into [ case dCLKRUN: T = PATTERN<<lh; WssCS1("ClkRate = "); WnsCS1(T) WssCS1(" (= "); T = 20000/T; WnsCS1D(T/10) PutsCS1($.); WnsCS1D(T rem 10); WssCS1(" ns)") NWss("ECLup ",#200) NWss("EnRefreshPeriod ") NWss("IOReset ") NWss("RunRefresh ") return case dMEMRQ: PrinV0("PcF[8:15]",PATTERN<<lh) NWss(" NewF",#200) NWss(" KillResponse") NWss(" Pause") NWss(" RefOutstanding") NWss1("IncPcF ") NWss1("IncPcFG ") NWss1("WantIfuRef ") NWss1("ThreeOutOfFive "); return case dLOADS: NWss("ValidRam ",#100000) NWss("J←OddF ") NWss("RealPcFG.15 ") NWss("FDv ") NWss("GDv ") NWss("HDv ") NWss("JDv ") NWss("MDv") NWss1("EnableFG ") NWss1("XLd ") NWss1("AlphaXLd ") NWss1("BrkLd ") NWss1("MLd ") NWss1("InstrAddrLd ") NWss1("JLda ") NWss1("GLd"); return case dHJ: PrinV0("H",PATTERN<<lh) PrinV0(" J",PATTERN<<rh); return case dMX: NWss("TwoAlphaX ",#100000) NWss("JFault ") NWss("HFault ") NWss("NM=17 ") NWss("TwoAlphaM ") NWss("TypeJumpM ") PrinV1("LengthM",(PATTERN rshift 8) & 3B) PrinV1(" DSel",(PATTERN rshift 6) & 3B) PrinV1(" LengthX",(PATTERN rshift 4) & 3B) PrinV1(" NX",PATTERN & 17B); return case dJMPEXC: NWss("Exception ",#100000) NWss("SayNotReady ") NWss("WantResched ") NWss("SawRamParityErr ") NWss("SawFGParityErr ") NWss("ReschedPending ") NWss("KReady ") NWss1("ZapFGH ",#200) NWss1("ZapJ ") NWss1("NewJ ") NWss1("DoJump ") NWss1("TurnOffAlu ") NWss1("NewGo ") NWss1("BMuxEnable ") NWss1("FGFault "); return case dPCJ: PrinV0("PcJ[8:15]",PATTERN<<lh) NWss(" MLdDly",#200) NWss(" BetaInM") NWss(" FGErrDly") NWss(" RAMErrDly") PrinV1("InstrSet[0:1]",(PATTERN rshift 2) & 3) NWss1(" OneByteJumpInJ",2) NWss1(" OneByteJumpInJd"); return case dFFK: NWss("Test← ",#100000) NWss("GenOut← ") NWss("NewPC← ") NWss("IfuReset ") NWss("BrkIns← ") NWss("Testing ") NWss1("SignX ") NWss1("BrkPending ") NWss1("TypeJumpK ",#20) NWss1("TypePauseK ") PrinV1("LengthK",(PATTERN rshift 1) & 3B) NWss1(" SignK",#1); return case dIDLY: NWss("GDvDly ",#100000) NWss("HDvDly ") NWss("FDvDly ") NWss("KReadyDly ") NWss("GLdDly ") NWss("IncPcFGDly ") NWss1("GFaultDly ") NWss1("ExceptionDly ") NWss1("TestMakeF←D ",#40) PrinV1("NK[0:3]",(PATTERN rshift 1) & #17) NWss1(" TwoAlphaK",#1); return case dAPTRS: NWss("ACurrentWCBFlag ",#100000) PrinV0("AReaderPtr[1:7]",(PATTERN rshift 8) & 177B) NWss1("ANextWCBFlag ",#200) PrinV1("AWriterPtr[1:7]",PATTERN & 177B); return case dBPTRS: NWss1("BCurrentWCBFlag ",#100000) PrinV1("BReaderPtr[1:7]",(PATTERN rshift 8) & 177B) NWss1(" BNextWCBFlag",#200) PrinV1(" BWriterPtr[1:7]",PATTERN & 177B); return case dITEMS: PrinV0("AItem",PATTERN<<lh) PrinV1("BItem",PATTERN<<rh); return case dSPSIZE: PrinV0("AServicePtr[1:4]",PATTERN<<nib0) PrinV1("BServicePtr[1:4]",PATTERN<<nib1) NWss(" AFifoFull",#200) NWss1(" BFifoFull") NWss(" ASize8") NWss(" ASize8-4") NWss(" ASize8-4-2") NWss1(" BSize8") NWss1(" BSize8-4") NWss1(" BSize8-4-2"); return case dRESON: NWss("AOn ",#100000) NWss1("BOn ") PrinV0("ARes[0:1]",(PATTERN rshift 12) & 3) PrinV1("BRes[0:1]",(PATTERN rshift 10) & 3) NWss(" OISRcvdData",#400); return case dTEMP: NWss(" CBTemp",#100000) NWss(" BaseBTemp") NWss(" ProcHTemp") NWss(" ProcLTemp") NWss(" IFUTemp"); return case dAAD: PrinV0("Aad",PATTERN); return case dMEMB: PrinV0("MemB[0:4]",PATTERN); return case dBMUX: WssCSS("BMux = "); endcase case dESTAT: if (PATTERN & (RAMPEena+MemoryPEena+MdPEena+IMrhPEena+IMlhPEena+ IOBPEena+MIRDebugena)) ne 0 do [ WssCSS("Enabled: ") NWss("RAMPE ",RAMPEena) NWss("MemoryPE ",MemoryPEena) NWss("MdPE ",MdPEena) NWss("IMrh ") NWss("IMlh ") NWss("IOBPE ") NWss("MIRDebug ") ] T = PATTERN PrintErrors(PATTERN) //Smashes PATTERN PATTERN = T test (PATTERN & (CIMlhPE+CIMrhPE)) eq CIMlhPE+CIMrhPE ifso WssCS1(", MIR-brkp") ifnot [ NWss1(", PE in MIR[0:20]",CIMlhPE) NWss1(", PE in MIR[21:41]",CIMrhPE) ] return case dOLDCIA: PrintDMXw(Addr); return default: endcase ] PrintWrdByt(nil,lv PATTERN,nil,8) return ]