--- nono/vm/scheduler.cpp 2026/04/29 17:04:56 1.1.1.10 +++ nono/vm/scheduler.cpp 2026/04/29 17:05:06 1.1.1.13 @@ -12,6 +12,7 @@ #include "mpu88xx0.h" #include "mythread.h" #include "rtc.h" +#include "uimessage.h" #include "vm.h" // VM スケジューラは、仮想時間とイベントを管理する。 @@ -408,8 +409,8 @@ Scheduler::RunOn() if ((req & REQ_RESTART)) { // 電源オン中に RESTART が来たら電源オンを予約して電源オフ。 - // poweroff_callback は GUI にアプリケーションを終了させる - // コールバックなのでここでは呼ばない。 + // UIMessage::POWEROFF は GUI にアプリケーションを終了させる + // ためのものなのでここでは呼ばない。 atomic_reqflag |= REQ_POWER_ON; // 全デバイス電源オフ @@ -433,9 +434,7 @@ Scheduler::RunOn() } // GUI に通知 - if (poweroff_callback) { - poweroff_callback(); - } + UIMessage::Post(UIMessage::POWEROFF); return true; } @@ -688,13 +687,6 @@ Scheduler::RequestKeyPressed(bool presse atomic_reqflag |= REQ_KEY_MODE; } -// 電源オフ時のコールバックを設定する -void -Scheduler::SetPowerOffCallback(void (*callback)()) -{ - poweroff_callback = callback; -} - // REQ_* フラグのデバッグ表示 void Scheduler::PutlogReqFlag(uint32 req) const @@ -814,11 +806,11 @@ Scheduler::MonitorUpdate(Monitor *, Text if ((mode & SCHED_SYNC)) { screen.Puts(14, y, TA::On, "Sync"); } else { - screen.Puts(14, y, "Full"); + screen.Puts(14, y, TA::Off, "Full"); } switch (mode & SCHED_CPU_MASK) { case SCHED_CPU_NORMAL: - screen.Puts(19, y, "Run"); + screen.Puts(19, y, TA::Off, "Run"); break; case SCHED_CPU_STOP: screen.Puts(19, y, TA::On, "STOP"); @@ -829,7 +821,7 @@ Scheduler::MonitorUpdate(Monitor *, Text } screen.Puts(24, y, TA::OnOff((mode & SCHED_BOOT)), "Boot"); screen.Puts(29, y, TA::OnOff((mode & SCHED_KEY)), "Key"); - screen.Puts(33, y, ")"); + screen.Puts(32, y, ")"); y++; screen.Print(0, y++, "Req: %08x", (uint32)atomic_reqflag); screen.Print(0, y++, "MPU Speed: %d.%03dMHz",