--- nono/vm/mpscc.h 2026/04/29 17:05:45 1.1.1.7 +++ nono/vm/mpscc.h 2026/04/29 17:05:59 1.1.1.9 @@ -11,7 +11,6 @@ #pragma once #include "device.h" -#include "event.h" #include "message.h" #include @@ -31,11 +30,11 @@ class HostCOMDevice; class InterruptDevice; // 1チャンネル分の共通部分 -class MPSCCChan +class MPSCCChan final { public: MPSCCChan(); - virtual ~MPSCCChan(); + ~MPSCCChan(); void Init(int id_); @@ -179,11 +178,11 @@ class MPSCCChan // LUNA の場合は TxC, RxC ピンに供給されているクロック。 // X68030 の場合は Z8530 内部で生成されている基準クロック。 - // 誤差を減らすため 12 ビット分の時間 [nsec] としている。 - uint64 xc12_ns {}; + // 誤差を減らすため 12 ビット分の時間 [tsec] としている。 + uint64 xc12_tsec {}; - // 実際の 12 ビットの通信にかかる時間。xc12_ns に倍率をかけたもの。 - uint64 bit12_ns {}; + // 実際の 12 ビットの通信にかかる時間。xc12_tsec に倍率をかけたもの。 + uint64 bit12_tsec {}; }; class MPSCC @@ -571,13 +570,13 @@ class MPSCCDevice : public IODevice // シリアルから1バイト受信のメッセージとイベントコールバック void HostRxCallback(uint32); void RxMessage(MessageID, uint32); - void RxCallback(Event&); + void RxCallback(Event *); // 送受信関連 void TrySend(MPSCCChan&); void SetTxPeriod(MPSCCChan&); void SetRxPeriod(MPSCCChan&); - void TxCallback(Event&); + void TxCallback(Event *); // 割り込み void ChangeInterrupt(); @@ -593,16 +592,16 @@ class MPSCCDevice : public IODevice int GetStopBits(MPSCCChan&, bool enable); // モニタの下請け - int MonitorUpdateCR345(TextScreen&, int x, int y, uint8, uint8, uint8); - void MonitorUpdateSR1(TextScreen&, int x, int y, uint8 sr1); + int MonitorScreenCR345(TextScreen&, int x, int y, uint8, uint8, uint8); + void MonitorScreenSR1(TextScreen&, int x, int y, uint8 sr1); void MonitorReg(TextScreen&, int x, int y, uint32 reg, const char * const *names); MPSCC mpscc {}; // 送受信用イベント - std::array txevent {}; - std::array rxevent {}; + std::array txevent {}; + std::array rxevent {}; // シリアルポート。 // 本当は共通層でやることではないがどう考えても同じコードになるので。