--- nono/vm/mpu.h 2026/04/29 17:05:28 1.1.1.15 +++ nono/vm/mpu.h 2026/04/29 17:05:41 1.1.1.16 @@ -44,6 +44,12 @@ class MPUDevice : public Device class MainMPUDevice : public MPUDevice { using inherited = MPUDevice; + protected: + // CPU の実行状態 + static const uint32 CPU_STATE_NORMAL = 0; + static const uint32 CPU_STATE_STOP = 1; + static const uint32 CPU_STATE_HALT = 2; + public: MainMPUDevice(); ~MainMPUDevice() override; @@ -59,6 +65,9 @@ class MainMPUDevice : public MPUDevice virtual uint32 GetLaddr() const = 0; virtual uint32 GetPaddr() const = 0; + // CPU の実行状態 (uint32) を返す。 + uint32 GetState() const noexcept { return cpu_state; } + // MPU 名を取得する。("MC68030" みたいなやつ、ログ名とは別) virtual const char *GetMPUName() const = 0; @@ -79,7 +88,13 @@ class MainMPUDevice : public MPUDevice protected: void TraceMessage(MessageID, uint32); - virtual void SetTrace(bool trace_on) = 0; + virtual void SetTrace(bool enable) = 0; + + // CPU の状態 + void ChangeState(uint32 new_state); + + // CPU の実行状態 + uint32 cpu_state {}; uint clock_khz {}; // MPU クロック [kHz] uint64 clock_nsec {}; // MPU クロック [nsec]