//D1Prin3w.bcpl Procedures to prettyprint DMux addresses < 20B // Called from D1Prin3.bcpl // Last edited: 4 May 1980 get "d1.d" manifest [ get "d1dmux.d" ] manifest [ get "d1regmem.d" ] external [ // MIDAS MidasSwat // MASM @WssCSS; WssCS1; PutsCS1; PutsCSS // MSYM SearchBlocks // MIOC DWns // MCMD WnsCSS; WnsCSSD; WnsCS1D; CmdCommentStream // MPRINS PrinV0; NWss; PrinV1; NWss1 // MPATTERN @PATTERN // D1VM LookUpAA; @VirtualP // D1GO PrCCV // Defined here PrintDMXw; PrintTIOA; PrintMEMBASE; PrintTASK ] let PrintIandS(MemX,Value) be [ let AVec1 = vec 1; AVec1!0 = 0 AVec1!1 = Value if SearchBlocks(CmdCommentStream,MemX,AVec1,-1,false) do [ WssCSS(" = "); DWns(CmdCommentStream,AVec1) ] ] and PrintTIOA(X,DVec,AVec,ExtRadix) be PrintIandS(DEVICEx,DVec>>lh) and PrintMEMBASE(X,DVec,AVec,ExtRadix) be PrintIandS(BRx,DVec!0 rshift 11) and PrintTASK(X,DVec,AVec,ExtRadix) be PrintIandS(TASKNx,DVec!0 rshift 12) and PrintDMXw(Addr) be [ let T,DVec = nil,vec 1 DVec!0 = 0; DVec!1 = PATTERN switchon Addr into [ case dCJNK0: //Random control status bits NWss("Stop ",#100000) NWss("preStartCyclea ") NWss("dStartCycle ") NWss("Phase0 ") NWss("Phase4 ") NWss("RWTPCorRWIM ") NWss1("BigBDispatch ") NWss1("Dispatch ") NWss1("WIM ") NWss1("RIM ") NWss1("WTPC ") NWss1("RTPC "); return case dCIA: //Registers containing IM addresses case dCIAINC: case dTNIA: case dBNPC: case dOLDCIA: //This one for call from D1Prin3V.Bcpl PrCCV(DVec,(VirtualP ? IMx,IMXx)) if VirtualP & (DVec!0 ge 0) do [ WssCSS(" = abs. ") WnsCSS(LookUpAA(DVec!0)) ] return case dBNT: case dPENC: case dNEXT: case dCTD: case dCTASK: PrintIandS(TASKNx,PATTERN); return case dRA: NWss("CS0BDb ",#100000) NWss("CS1BDb ") NWss("CS2BDb ") NWss("CS3BDb ") PrinV0("RAQuad[0:1]",(PATTERN rshift 10) & 3) PrinV0(" RA[1:10]b",PATTERN & 1777B); return case dTOPE: Prin16("ToPE."); return case dCJNK1: NWss("Call ",#100000) NWss("bSWd ") NWss("GND ") NWss("LocalBra ") NWss("IFUNexta ") NWss("LongJumpa ") NWss("Returna ") NWss("CondBra ") NWss1("bFFokc ") NWss1("FA=0 ") NWss1("FA=1 ") NWss1("bDoCBr ") NWss1("Link←BMuxa ") NWss1("B←Link ") NWss1("RIMorRTPCdly ") NWss1("MulStep "); return case dFFEQ: NWss("FF=TaskingOn ",#100000) NWss("FF=TaskingOff ") NWss("FF=MidasOn ") NWss("FF=WriteLink ",#4000) NWss("FF=Link←CPReg ") NWss("FF=ReadLink ") NWss1("FF=UseDMD ",#40) NWss1("FF=TOffIsOk ") NWss1("FF=Notify ") NWss1("FF=MulStep ") NWss1("FF=BDispatch ") NWss1("FF=BigBDispatch "); return case dCJNK3: NWss("Next=0 ",#4000) NWss("CTask=0 ") NWss("PEncGtTrueNext ") NWss("PEncLtTrueNext ") NWss("StopTasks ") NWss("PEnc=CT ") NWss1("TPCBypass ") NWss1("PreEmpting ") NWss1("bHoldA ") NWss1("RepeatCurz ") NWss1("bSwitcha ") NWss1("bSwitchUp "); return case dREADY: PATTERN = PATTERN & 77777B Prin16("Ready."); return default: MidasSwat(PrintDMXwbug) ] ] and Prin16(str) be [ let T = 100000B for I = 0 to 7 do [ if (T & PATTERN) ne 0 do [ WssCSS(str); WnsCSSD(I); PutsCSS($ ) ] T = T rshift 1 ] for I = 8 to 15 do [ if (T & PATTERN) ne 0 do [ WssCS1(str); WnsCS1D(I); PutsCS1($ ) ] T = T rshift 1 ] ]