--- nono/host/hostcom.cpp 2026/04/29 17:05:21 1.1.1.3 +++ nono/host/hostcom.cpp 2026/04/29 17:05:34 1.1.1.5 @@ -63,11 +63,13 @@ #include "hostcom.h" +#include "comdriver_cons.h" #include "comdriver_none.h" #include "comdriver_stdio.h" #include "comdriver_tcp.h" #include "config.h" #include "mainapp.h" +#include "monitor.h" // コンストラクタ // @@ -89,9 +91,9 @@ HostCOMDevice::HostCOMDevice(Device *par // のログレベルは独立。 // モニタは hostcom* のみ必要。 - monitor.func = ToMonitorCallback(&HostCOMDevice::MonitorUpdate); - monitor.SetSize(30, 17); - monitor.Regist(ID_MONITOR_HOSTCOM); + monitor = gMonitorManager->Regist(ID_MONITOR_HOSTCOM, this); + monitor->func = ToMonitorCallback(&HostCOMDevice::MonitorUpdate); + monitor->SetSize(30, 17); } } @@ -168,6 +170,19 @@ HostCOMDevice::SelectDriver() driver.reset(); } + } else if (type == "cons") { + // console デバイスのいない機種では指定出来ない。 + if (gMainApp.FindObject(OBJ_CONSOLE) == NULL) { + item.Err("cannot be specified on vmtype=%s", + gMainApp.GetVMTypeStr().c_str()); + return false; + } + + driver.reset(new COMDriverCons(this)); + if ((bool)driver && driver->InitDriver() == false) { + driver.reset(); + } + } else { // 知らないドライバ種別 item.Err(); @@ -263,7 +278,7 @@ HostCOMDevice::Tx(uint32 data) stat.tx_bytes++; // ざっくりピーク値 - stat.txq_peak = std::max((int)txq.Length(), stat.txq_peak); + stat.txq_peak = std::max((uint)txq.Length(), stat.txq_peak); // パイプに通知 (値はダミー) return WritePipe(0); @@ -313,7 +328,7 @@ HostCOMDevice::Read() } // ざっくりピーク値 - stat.rxq_peak = std::max((int)rxq.Length(), stat.rxq_peak); + stat.rxq_peak = std::max((uint)rxq.Length(), stat.rxq_peak); return 1; } @@ -364,8 +379,8 @@ HostCOMDevice::MonitorUpdate(Monitor *, y++; screen.Print(5, y++, "Capacity Peak"); - screen.Print(0, y++, "TxQ %4d/%4d %4d", - (int)txq.Length(), (int)txq.Capacity(), stat.txq_peak); - screen.Print(0, y++, "RxQ %4d/%4d %4d", - (int)rxq.Length(), (int)rxq.Capacity(), stat.rxq_peak); + screen.Print(0, y++, "TxQ %4u/%4u %4u", + (uint)txq.Length(), (uint)txq.Capacity(), stat.txq_peak); + screen.Print(0, y++, "RxQ %4u/%4u %4u", + (uint)rxq.Length(), (uint)rxq.Capacity(), stat.rxq_peak); }