--- nono/vm/mainbus.cpp 2026/04/29 17:05:28 1.1.1.4 +++ nono/vm/mainbus.cpp 2026/04/29 17:05:37 1.1.1.6 @@ -17,7 +17,7 @@ // ResetByMPU o o o *1 x (*1:どっちでもいい) // // Access Map o o o x x -// HV access o o o o ? +// HV access o o o x ? // Peek4 o o o x x // Singleton o o o x x // @@ -56,6 +56,7 @@ // +-- XPbusDevice (これはただの IODevice) #include "mainbus.h" +#include "monitor.h" #include "syncer.h" // @@ -125,10 +126,10 @@ MainbusBaseDevice::FormatDevName(const D MainbusDevice::MainbusDevice(uint objid_) : inherited(objid_) { - monitor_accstat.func = + accstat_monitor = gMonitorManager->Regist(ID_MONITOR_ACCSTAT, this); + accstat_monitor->func = ToMonitorCallback(&MainbusDevice::MonitorUpdateAccStat); // 表示行数が機種ごとに異なるので継承側でセットしている。 - monitor_accstat.Regist(ID_MONITOR_ACCSTAT); // 通常は 32bit 空間全体 (そうでない機種はコンストラクタで上書きする) accstat_baseaddr = 0; @@ -144,10 +145,6 @@ MainbusDevice::~MainbusDevice() bool MainbusDevice::Init() { - if (inherited::Init() == false) { - return false; - } - // アクセス状況の表示用配列。 accstat_rw.resize(AccStat::MAINLEN >> (32 - accstat_bitlen)); @@ -356,9 +353,9 @@ MainbusDevice::MonitorUpdateAccStat(Moni Mainbus24Device::Mainbus24Device() : MainbusDevice(OBJ_MAINBUS) { - monitor.func = ToMonitorCallback(&Mainbus24Device::MonitorUpdate); - monitor.SetSize(75, 33); - monitor.Regist(ID_MONITOR_MAINBUS); + monitor = gMonitorManager->Regist(ID_MONITOR_MAINBUS, this); + monitor->func = ToMonitorCallback(&Mainbus24Device::MonitorUpdate); + monitor->SetSize(75, 33); } Mainbus24Device::~Mainbus24Device()