--- nono/vm/mainbus_x68k.cpp 2026/04/29 17:05:28 1.1.1.2 +++ nono/vm/mainbus_x68k.cpp 2026/04/29 17:05:59 1.1.1.5 @@ -31,6 +31,7 @@ #include "extram.h" #include "interrupt.h" #include "mainapp.h" +#include "monitor.h" #include "x68kio.h" // コンストラクタ @@ -44,13 +45,12 @@ X68kMainbus::X68kMainbus() // デバイスの割り当ては Init() で行っている。 - monitor.func = ToMonitorCallback(&X68kMainbus::MonitorUpdate); - monitor.SetSize(75, 33); - monitor.Regist(ID_MONITOR_MAINBUS); - - monitor_accstat.func = - ToMonitorCallback(&X68kMainbus::MonitorUpdateAccStat); - monitor_accstat.SetSize(80, 2 + 32 + 3); + monitor = gMonitorManager->Regist(ID_MONITOR_MAINBUS, this); + monitor->SetCallback(&X68kMainbus::MonitorScreen); + monitor->SetSize(75, 33); + + accstat_monitor->SetCallback(&X68kMainbus::MonitorScreenAccStat); + accstat_monitor->SetSize(80, 2 + 32 + 3); } // デストラクタ @@ -112,16 +112,6 @@ X68kMainbus::InitMainbus() return true; } -// リセット -void -X68kMainbus::ResetHard(bool poweron) -{ - inherited::ResetHard(poweron); - - std::fill(accstat_read.begin(), accstat_read.end(), 0); - std::fill(accstat_write.begin(), accstat_write.end(), 0); -} - // リセットについて。 // // PWRRESET @@ -183,7 +173,7 @@ X68kMainbus::ResetByMPU() OBJ_PLUTO, OBJ_PPI, OBJ_MPSCC, - OBJ_SPC, + OBJ_SPC0, OBJ_WINDRV, }; for (auto id : ids) { @@ -208,6 +198,7 @@ busdata X68kMainbus::Read(busaddr addr) { uint32 pa = addr.Addr(); + lastaddr = pa; if (IsIntio(pa)) { // 内蔵 16MB を 2MB 単位で accstat_read[ACCSTAT_INTIO(pa)] = AccStat::READ; @@ -223,6 +214,7 @@ busdata X68kMainbus::Write(busaddr addr, uint32 data) { uint32 pa = addr.Addr(); + lastaddr = pa; if (IsIntio(pa)) { // 内蔵 16MB を 2MB 単位で accstat_write[ACCSTAT_INTIO(pa)] = AccStat::WRITE; @@ -255,7 +247,7 @@ X68kMainbus::Poke1(uint32 addr, uint32 d } void -X68kMainbus::MonitorUpdate(Monitor *, TextScreen& screen) +X68kMainbus::MonitorScreen(Monitor *, TextScreen& screen) { screen.Clear(); @@ -281,10 +273,10 @@ X68kMainbus::MonitorUpdate(Monitor *, Te } void -X68kMainbus::MonitorUpdateAccStat(Monitor *monitor_, TextScreen& screen) +X68kMainbus::MonitorScreenAccStat(Monitor *monitor_, TextScreen& screen) { // メインバス空間は親クラス側の処理そのまま。 - inherited::MonitorUpdateAccStat(monitor_, screen); + inherited::MonitorScreenAccStat(monitor_, screen); // バンクメモリ側の情報取得。 for (int n = 0; n < bankram.size(); n++) {