//D1brkp.bcpl -- Error print routine called from PrintErrors in D1go. // Last edited: 20 November 1979 get "d1.d" manifest [ get "d1regmem.d" ] external [ // MIDAS MidasSwat // MASM @WssCSS // MCMD ErrorAbort // D1ASM stNotIMA; stNotInVM // D1MEM MPutMemData; MGetMemData // D1RES UnBreakDefault // D1GO PrCCV // Defined here BreakIML ] //AVec is 0 to default the break address (to BreakTPC). //BPflag is true to insert a break, false to remove one let BreakIML(AVec,MemX,BPflag,String) be [ let DVec,T = vec 2,vec 1 test AVec eq 0 ifso [ AVec,MemX = T,IMXx; AVec!1 = UnBreakDefault; AVec!0 = 0 ] ifnot if (MemX ne IMx) & (MemX ne IMXx) do [ ErrorAbort(stNotIMA); return ] //**Interim DVec!3 arrangement until MicroD fixed test MGetMemData(MemX,DVec,AVec) ifso [ if (MemX eq IMx) & ((DVec!3 & 20000B) ne 0) then ErrorAbort(stNotInVM) DVec!2 = (DVec!2 & 147777B)+(BPflag & 30000B) MPutMemData(MemX,DVec,AVec) WssCSS(String); WssCSS(" break at "); PrCCV(AVec,MemX) UnBreakDefault = AVec!1 ] ifnot MidasSwat(BadIMAVec) ]