//D1PrinMic.bcpl Prettyprint code for microcomputer. // Last edited: 25 October 1979 get "d1mic.d" get "d1.d" external [ // OS Puts // MIDAS MidasSwat // MASM Wss; @WssCSS; WssCS1; PutsCS1 // MIOC Wns // MCMD CmdCS1; WnsCS1; WnsCS1D // MPRINS NWss; NWss1 // MPATTERN @PATTERN // D1MICRES PrinVoltage; PrinCurrent; PrinTemperature; MPrintMSTAT // Defined here PrintMSTAT; PrintABSOL ] let PrintABSOL(X,DVec,AVec,Radix) be [ PATTERN = DVec>>lh switchon AVec!1 into [ case #0: WssCS1("Microcomputer code version = ") WnsCS1D(PATTERN); return case #1: //OUTOFSPEC case #147: //BADSUPPLYSPEC test (PATTERN & 360B) eq 0 ifso WssCSS("No voltages out of spec") ifnot [ WssCSS("Voltages out of spec: ") NWss("+12 ",#200) NWss("+5 ") NWss("-2 ") NWss("-5 ") ] test (PATTERN & 17B) eq 0 ifso WssCS1("No currents out of spec") ifnot [ WssCS1("Currents out of spec: ") NWss1("+12 ",#10) NWss1("+5 ") NWss1("-2 ") NWss1("-5") ] return case #150: //PROBLEMS NWss("Normal-wait ",#200) NWss("Couldn't-boot ") NWss("Transient-power-problem ") NWss("Power-problem-now ") NWss1("Normal-shut-down ") NWss1("Over-temperature-shut-down ") NWss1("Midas-hogging-CPbus ") return default: PutsCS1($%); Wns(CmdCS1,PATTERN,0,16); WssCS1(" = !"); WnsCS1D(PATTERN) WssCS1(" = #"); WnsCS1(PATTERN); return ] ] and PrintMSTAT(X,DVec,AVec,Radix) be [ let t0,t1,t2,t3 = DVec>>lh,DVec>>rh,(DVec+1)>>lh,(DVec+1)>>rh WssCSS(selecton AVec!1 into [ case mVOLTS: case mAMPS: case mTEMP0: case mTEMP1: case mTEMP2: "Immediate " case mFVOLTS: case mFAMPS: case mFTEMP0: case mFTEMP1: case mFTEMP2: "Boot-time " case mMINVOLTS: case mMINAMPS: case mMINTEMP0: case mMINTEMP1: case mMINTEMP2: "Minimum " case mMAXVOLTS: case mMAXAMPS: case mMAXTEMP0: case mMAXTEMP1: case mMAXTEMP2: "Maximum " default: 0 ] ) let TempS = "temperatures (degrees C):" switchon AVec!1 into [ case mVOLTS: case mFVOLTS: case mMINVOLTS: case mMAXVOLTS: WssCSS("voltages: ") MPrintMSTAT(CmdCS1,X,DVec,AVec); return case mAMPS: case mFAMPS: case mMINAMPS: case mMAXAMPS: WssCSS("currents (amps): ") MPrintMSTAT(CmdCS1,X,DVec,AVec); return case mTEMP0: case mFTEMP0: case mMINTEMP0: case mMAXTEMP0: WssCSS(TempS) WssCS1("Base ="); PrinTemperature(CmdCS1,t0) WssCS1(", ContB ="); PrinTemperature(CmdCS1,t1) WssCS1(", ContA ="); PrinTemperature(CmdCS1,t2) WssCS1(", ProcL ="); PrinTemperature(CmdCS1,t3); return case mTEMP1: case mFTEMP1: case mMINTEMP1: case mMAXTEMP1: WssCSS(TempS) WssCS1("ProcH ="); PrinTemperature(CmdCS1,t0) WssCS1(", IFU ="); PrinTemperature(CmdCS1,t1) WssCS1(", MemC ="); PrinTemperature(CmdCS1,t2) WssCS1(", MemX ="); PrinTemperature(CmdCS1,t3); return case mTEMP2: case mFTEMP2: case mMINTEMP2: case mMAXTEMP2: WssCSS(TempS) WssCS1("MemD ="); PrinTemperature(CmdCS1,t0) WssCS1(", DskEth ="); PrinTemperature(CmdCS1,t1) WssCS1(", Display ="); PrinTemperature(CmdCS1,t2) //WssCS1(", ?? ="); PrinTemperature(CmdCS1,t3) return default: MidasSwat(MSTATbug) ] ]