--- nono/vm/vm_x68k.cpp 2026/04/29 17:04:50 1.1.1.5 +++ nono/vm/vm_x68k.cpp 2026/04/29 17:04:53 1.1.1.6 @@ -18,6 +18,7 @@ #include "pio.h" #include "renderer.h" #include "rp5c15.h" +#include "romimg_x68k.h" #include "scheduler.h" #include "spc.h" #include "x68kkbd.h" @@ -47,11 +48,12 @@ VM_X68030::VM_X68030() // デバイス (順序に注意) // BusErrDevice は親コンストラクタで作成済み。 - gMPU.reset(new MPU680x0Device(0xff0000)); // required by Scheduler + gMPU.reset(new MPU680x0Device()); // required by Scheduler gScheduler.reset(new Scheduler()); // required by * gInterrupt.reset(new X68030Interrupt()); gRAM.reset(new RAMDevice()); // required by XIOSpace gXIOSpace.reset(new XIOSpaceDevice()); + gIPLROM0.reset(new IPLROM0Device()); gKeyboard.reset(new X68030Keyboard()); gRenderer.reset(new X68030Renderer()); @@ -81,8 +83,19 @@ VM_X68030::PowerButton() // ボタンの状態を更新して.. power_button = !power_button; - // デバイスに指示 - DevicePowerOn(); + // スケジューラに指示 + gScheduler->RequestPowerOn(); +} + +// ブートページを切り替える。 +void +VM_X68030::SwitchBootPage(Device *parent, bool isrom) +{ + // 共通処理 + inherited::SwitchBootPage(parent, isrom); + + // X68030 では XIOSpace が担当している + gXIOSpace->SwitchBootPage(isrom); } // リセットについて @@ -158,7 +171,7 @@ VM_RXZ::VM_RXZ() // デバイス (順序に注意) // BusErrDevice は親コンストラクタで作成済み。 - gMPU.reset(new MPU680x0Device(0)); // required by Scheduler + gMPU.reset(new MPU680x0Device()); // required by Scheduler gScheduler.reset(new Scheduler()); // required by * gInterrupt.reset(new X68030Interrupt()); gRAM.reset(new RAMDevice()); // required by Human68k @@ -186,6 +199,13 @@ VM_RXZ::PowerButton() // ON PUSH (何も起きない) // OFF PUSH 電源オン - // デバイスに指示 - DevicePowerOn(); + // スケジューラに指示 + gScheduler->RequestPowerOn(); +} + +// ブートページを切り替える。 +void +VM_RXZ::SwitchBootPage(Device *parent, bool isrom) +{ + // 何もしない }