//D1i0.bcpl First init for D1--Load RAM and start special microcode // Initialization done here is always executed. Storage allocated // is not saved in Midas.State. // 12 October 1984 get "d1.d" manifest [ get "d1dmux.d" ] manifest [ get "d1regmem.d" ] external [ // OS SetBlock // MINIT1 GetZStorage // MIDAS MidasSwat // MASM @MBlock; GetStorage // LOADRAM LoadRam; //SetBLV // BCPLRUNTIME InitBcplRuntime // DORADOMC RamImage // D1ASM GFrameX //Defined here InitHardware1; MachVersion; OldGFrame; HWStatus; DefRadix @DMuxTab; @OldDMuxTab; DWrong; DChecked; DMuxSelect; @DHistTab @SaveMIR; BreakMIR; SaveBR36 ] static [ MachVersion; OldGFrame; HWStatus; DefRadix = 8 @DMuxTab; @OldDMuxTab; DWrong; DChecked; DMuxSelect; @DHistTab @SaveMIR; BreakMIR; SaveBR36 ] let InitHardware1() be [ MachVersion = ", D1Midas 10/12/84" //Initialize special Alto microcode. //Note: other implementations of Midas can use the Alto microcode //for Dorado, if they do not have their own. Bcpl runtime microcode //may be assembled with other special microcode and improves performance //about 6%. RamImage!0 = #177777 //Zeroes enable tasks in Ram if silent boot let res = LoadRam(RamImage,false) //load, don't boot if res < 0 then MidasSwat(BadLoadRam) if res > 0 then MidasSwat(BadConstants) //SetBLV(#177776) //Setup for silent boot at finish time //Initialize for new microinstructions InitBcplRuntime() (table [ InitMC; #1401 ] )() //Replace GetFrame procedure by special microinstruction OldGFrame = rv #370; rv #370 = GFrameX DMuxTab = GetStorage(DMUXlen) SaveMIR = DMuxTab+dSaveMIR DMuxSelect = DMuxTab BreakMIR = GetStorage(4) DWrong = GetZStorage(DMUXlen) OldDMuxTab = GetStorage(DMUXlen) DChecked = GetStorage(DMUXlen) DHistTab = GetZStorage(DHISTlen*3) SaveBR36 = GetStorage(2) HWStatus = GetZStorage(size HWStatus/16) HWStatus>>HWStatus.ConnectedMachine = -1 ]