--- nono/vm/interrupt.cpp 2026/04/29 17:05:28 1.1.1.10 +++ nono/vm/interrupt.cpp 2026/04/29 17:05:33 1.1.1.11 @@ -42,8 +42,9 @@ #include "goldfish_pic.h" #include "lance.h" #include "pedec.h" -#include "m68030.h" +#include "m680x0.h" #include "mfp.h" +#include "monitor.h" #include "mpu680x0.h" #include "newsctlr.h" #include "nmi.h" @@ -232,8 +233,8 @@ M680x0Interrupt::ChangeInterrupt() // コンストラクタ X68030Interrupt::X68030Interrupt() { - monitor.func = ToMonitorCallback(&X68030Interrupt::MonitorUpdate); - monitor.Regist(ID_MONITOR_INTERRUPT); + monitor = gMonitorManager->Regist(ID_MONITOR_INTERRUPT, this); + monitor->func = ToMonitorCallback(&X68030Interrupt::MonitorUpdate); } // デストラクタ @@ -287,7 +288,7 @@ X68030Interrupt::Init() disp_list.push_back((uint32)IntmapPEDEC); // 行数が確定したのでサイズ設定 - monitor.SetSize(41, 1 + disp_list.size() + 5/*PEDEC*/); + monitor->SetSize(41, 1 + disp_list.size() + 5/*PEDEC*/); return true; } @@ -372,8 +373,8 @@ X68030Interrupt::MonitorUpdate(Monitor * // コンストラクタ LunaInterrupt::LunaInterrupt() { - monitor.func = ToMonitorCallback(&LunaInterrupt::MonitorUpdate); - monitor.Regist(ID_MONITOR_INTERRUPT); + monitor = gMonitorManager->Regist(ID_MONITOR_INTERRUPT, this); + monitor->func = ToMonitorCallback(&LunaInterrupt::MonitorUpdate); } // デストラクタ @@ -410,7 +411,7 @@ LunaInterrupt::Init() }; // 行数が確定したのでサイズ設定 - monitor.SetSize(40, 1 + disp_list.size()); + monitor->SetSize(40, 1 + disp_list.size()); return true; } @@ -463,8 +464,8 @@ LunaInterrupt::MonitorUpdate(Monitor *, // コンストラクタ NewsInterrupt::NewsInterrupt() { - monitor.func = ToMonitorCallback(&NewsInterrupt::MonitorUpdate); - monitor.Regist(ID_MONITOR_INTERRUPT); + monitor = gMonitorManager->Regist(ID_MONITOR_INTERRUPT, this); + monitor->func = ToMonitorCallback(&NewsInterrupt::MonitorUpdate); } // デストラクタ @@ -496,7 +497,7 @@ NewsInterrupt::Init() }; // 行数が確定したのでサイズ設定 - monitor.SetSize(40, 1 + disp_list.size()); + monitor->SetSize(40, 1 + disp_list.size()); return true; } @@ -571,8 +572,8 @@ NewsInterrupt::MonitorUpdate(Monitor *, // コンストラクタ Virt68kInterrupt::Virt68kInterrupt() { - monitor.func = ToMonitorCallback(&Virt68kInterrupt::MonitorUpdate); - monitor.Regist(ID_MONITOR_INTERRUPT); + monitor = gMonitorManager->Regist(ID_MONITOR_INTERRUPT, this); + monitor->func = ToMonitorCallback(&Virt68kInterrupt::MonitorUpdate); } // デストラクタ @@ -617,7 +618,7 @@ Virt68kInterrupt::Init() // ここまでの行数でサイズ設定。 // この後各割り込みソースの Init() から GFPIC への RegistIRQ() する // たびに増やされていく。 - monitor.SetSize(77, 2 + disp_list.size() + 1); + monitor->SetSize(77, 2 + disp_list.size() + 1); return true; } @@ -625,8 +626,8 @@ Virt68kInterrupt::Init() void Virt68kInterrupt::IncMonitorHeight() { - auto size = monitor.GetSize(); - monitor.SetSize(size.width, size.height + 1); + auto size = monitor->GetSize(); + monitor->SetSize(size.width, size.height + 1); } // 割り込みアクノリッジに応答する