--- nono/m88xx0/m88200.h 2026/04/29 17:04:41 1.1.1.3 +++ nono/m88xx0/m88200.h 2026/04/29 17:04:54 1.1.1.6 @@ -9,6 +9,7 @@ #pragma once #include "bus.h" +#include "monitor.h" #include class m88kcpu; @@ -128,6 +129,7 @@ class m88200CacheSet class m88200 : public Object { + using inherited = Object; public: m88200(); ~m88200() override; @@ -138,9 +140,16 @@ class m88200 : public Object // リセット void Reset(); - void MonitorUpdate(TextScreen&) override; + // モニター + Monitor reg_monitor { this }; + Monitor atc_monitor { this }; + Monitor cache_monitor { this }; private: + DECLARE_MONITOR_CALLBACK(MonitorUpdateReg); + DECLARE_MONITOR_CALLBACK(MonitorUpdateATC); + DECLARE_MONITOR_CALLBACK(MonitorUpdateCache); + m88kcpu *parent {}; public: @@ -424,12 +433,16 @@ class m88200 : public Object static const uint32 DESC_WP = 0x00000004; // Write Protect static const uint32 DESC_V = 0x00000001; // Valid + uint32 GetLaddr() const { return acc_laddr; } + uint32 GetPaddr() const { return acc_paddrH | acc_paddrL; } + private: uint32 acc_laddr {}; // Logical Address uint32 acc_paddrH {}; // Physical Address 上位30ビット。 // 下位2ビットは 0 固定。 uint32 acc_paddrL {}; // paddr の下位2ビット // 上位30ビットは 0 固定。 + public: // acc_stat は 4 ビットのみ使用。 // それ以外のビットは代入時にマスクすること。 static const uint32 ACC_STAT_MASK = DESC_WT | DESC_G | DESC_CI | DESC_WP; @@ -513,7 +526,7 @@ class m88200 : public Object static m88200 *GetBusMaster() { return mbus_master; } // この CMMU からのアクセスにウェイトを加算する (VM から使う) - void AddCycle(uint64 cycle); + void AddCycle(int32 cycle); private: void MBusAcquire();