--- nono/vm/mpu64180.h 2026/04/29 17:05:33 1.1.1.4 +++ nono/vm/mpu64180.h 2026/04/29 17:05:51 1.1.1.6 @@ -12,11 +12,11 @@ #include "mpu.h" #include "branchhistory.h" -#include "event.h" #include "hd64180.h" #include "message.h" #include +class HD647180ASCIDevice; class PIO0Device; class SSGDevice; class XPbusDevice; @@ -48,6 +48,7 @@ class MPU64180Device : public MPUDevice, ~MPU64180Device() override; void putlogn(const char *fmt, ...) const override; + bool Create() override; bool Init() override; void ResetHard(bool poweron) override; @@ -69,6 +70,9 @@ class MPU64180Device : public MPUDevice, // (ネゲートはローカルで行う) void AssertINT0(); + // ASCI0/1 の割り込みをアサート/ネゲートする (ASCI から呼ばれる)。 + void ChangeASCIInt(uint n, bool req); + // ブランチ履歴 (例外履歴を含む) BranchHistory_hd64180 brhist { OBJ_XP_BRHIST }; // 例外履歴のみ @@ -96,10 +100,10 @@ class MPU64180Device : public MPUDevice, void EnterNormal(); void EnterSleep(); void EnterWakeup(); - void ExecTrace(Event& ev); - void ExecNormal(Event& ev); - void ExecSleep(Event& ev); - void ExecWakeup(Event& ev); + void ExecTrace(Event *); + void ExecNormal(Event *); + void ExecSleep(Event *); + void ExecWakeup(Event *); void SetExec(EventCallback_t); // トレース設定。デバッガから呼び出される。 @@ -203,7 +207,7 @@ class MPU64180Device : public MPUDevice, // タイマー void EnableTimer(); void ChangeTimerInterrupt(); - void TimerCallback(Event& ev); + void TimerCallback(Event *); void MakeActiveTimer(); uint16 ppc {}; @@ -293,6 +297,8 @@ class MPU64180Device : public MPUDevice, void (*syscall_callback)(void *) = NULL; void *syscall_arg {}; + std::unique_ptr asci /*{}*/; + PIO0Device *pio0 {}; SSGDevice *ssg {}; XPbusDevice *xpbus {}; @@ -309,7 +315,7 @@ class MPU64180Device : public MPUDevice, EventCallback_t exec_func {}; // イベント - Event timer_event { this }; + Event *timer_event {}; // 名前 static const char * const opmode_names[];