//MXI.BCPL initialization overlay get "mx.d" external [ // MASM GetStorage // MIDAS GetEvenStorage // MINIT2 NewMPDispBlock; DefineRegister; DefineMemory DefIAction; DefHWAction // MIOC RDatatoStream; MDatatoStream // MCMD IMAddrXct; CmdGoOverlay; CmdStartM; CmdDebug; CallAltIO // STATE SaveStatics // MXALTR InitAltIOFP // MXPRIN PrintIM; PrintARM // Defined here InitMPInterface; NHWActions ScreenHeight; ScreenWidth ] static [ NHWActions = 14 //Size of machine dependent command menu //action table filled in by DefHWAction ScreenHeight = 28 //Number of screen lines ScreenWidth = 76 //Number of chars/line AltMForms; AltRForms ] //"InitMPInterface" allocates storage for vectors and the LDR memory and //initializes screen areas. Args to NewMPDispBlock //are line number, left character (0 to 75), identifying character for //use in command files, width in characters, and true for unnamed //areas (STK only), or false for named areas let InitMPInterface() be [ MEMNAM = lv MName; REGNAM = lv RName MEMFORMS = lv MForm; REGFORMS = lv RForm NewMPDispBlock(0,0,$A,11,false) //IMA NewMPDispBlock(0,13,$B,10,false) //NPC for I = 1 to 4 do //STK [ NewMPDispBlock(I,0,$A,11,false) NewMPDispBlock(I,13,$B,4,true) NewMPDispBlock(I,19,$C,4,true) ] for I = 5 to 6 do //X, Y, AC, KUNIT [ NewMPDispBlock(I,0,$A,11,false) NewMPDispBlock(I,13,$B,10,false) ] for I = 7 to 16 do NewMPDispBlock(I,0,$A,23,false) //big regs for I = 0 to 13 do //MAR-MDR, KMAR-KMDR, 36-bit regs [ NewMPDispBlock(I,26,$D,23,false) NewMPDispBlock(I,52,$E,23,false) ] for I = 14 to 16 do NewMPDispBlock(I,26,$D,49,false) //random stuff LDRMEM = GetStorage(LDRSIZ*5) ITRCNT = LDRMEM+COUNT; INSTST = LDRMEM+TSTINS MEMCFG = LDRMEM+CONFIG; ADRANG = LDRMEM+ARANGE Q = GetStorage(3); F = GetStorage(3) EREG = GetStorage(3); SMFORF = GetStorage(3); STK = GetStorage(12) //TMP and TMP1 must point at even words because they are used //to hold addresses and data for the memory interface which //requires even word boundaries. They are also used in MXPOW //as four-word vectors. TMP = GetEvenStorage(4) TMP1 = GetEvenStorage(4) TMP2 = GetEvenStorage(4) TAVEC = GetStorage(2) GOODD = GetStorage(5); ACTD = GetStorage(5); DMASK = GetStorage(5) //REGACT, MEMACT, and PATACT must be contiguous and in order REGACT = GetStorage(NREALREGS) MEMACT = GetStorage(NREALMEMS-2) //Omits MAIN PATACT = GetStorage(NPATS) AltRForms = GetStorage(NREGS) SetBlock(AltRForms,lv RDatatoStream,NREGS) AltRForms!6 = lv PrintIMA //NPC AltRForms!11 = lv PrintARM //ARM AltRForms!12 = lv PrintIMA //IMA AltMForms = GetStorage(NMEMS) SetBlock(AltMForms,lv MDatatoStream,NMEMS) AltMForms!9 = lv PrintIMA //STK AltMForms!4 = lv PrintDM //DM AltMForms!10 = lv PrintDM //DM1 AltMForms!11 = lv PrintDM //DM2 AltMForms!2 = lv PrintIM //IM for RegX = 0 to NREGS-1 do DefineRegister(REGNAM!RegX,RegX,REGWID!RegX) //Subsidiary memories IM[0,35] and IM[36,71] aren't defined for MemX = 2 to 5 do DefineMemory(MEMNAM!MemX,MemX,MEMWID!MemX,0,MEMLEN!MemX) DefineMemory(MEMNAM!6,6,40,10B,0) //MAIN for MemX = 7 to NMEMS-1 do DefineMemory(MEMNAM!MemX,MemX,MEMWID!MemX,0,MEMLEN!MemX) DefHWAction(0,"AltIO",lv CallAltIO,0,0,$A) DefHWAction(1,"Break",lv IMAddrXct,lv InsertBreak,0,$B) DefHWAction(2,"Kill-Break",lv IMAddrXct,lv RemoveBreak,0,$K) DefHWAction(3,"Go",lv CmdStartM,lv StartM,0,$G) DefHWAction(4,"Step",lv IMAddrXct,lv SingleStepM,0,$:) DefHWAction(5,"Power-On",lv CmdGoOverlay,lv MicGo) DefHWAction(6,"Power-Off",lv CmdGoOverlay,lv MicStop) DefHWAction(7,"Repeat-Go",lv CmdStartM,lv RepeatGo,0,$R) DefHWAction(8,"Repeat-Step",lv CmdStartM,lv RepeatSS,0,$S) DefHWAction(9,"Test",lv CmdGoOverlay,lv DataTest) DefHWAction(10,"Test-All",lv CmdGoOverlay,lv TestAll) DefHWAction(11,"Constructed-Test",lv CmdDebug,lv MicTest) DefHWAction(12,"Signal-Decode",lv CmdGoOverlay,lv FieldTest) DefHWAction(13,"LMPEscan",lv ScanForLMPE,0) DefIAction("Go",lv CmdStartM,lv StartM,$P) //Synonym InitAltIOFP() SaveStatics(lv MEMNAM,lv REGNAM,lv MEMFORMS,lv REGFORMS, lv LDRMEM,lv ITRCNT,lv INSTST,lv MEMCFG,lv ADRANG, lv Q,lv F,lv EREG,lv SMFORF,lv STK,lv TMP, lv TMP1,lv TMP2) SaveStatics(lv TAVEC,lv GOODD,lv ACTD,lv DMASK,lv REGACT, lv MEMACT,lv PATACT) ]