--- nono/vm/sio.cpp 2026/04/29 17:04:56 1.1.1.7 +++ nono/vm/sio.cpp 2026/04/29 17:05:06 1.1.1.8 @@ -6,6 +6,7 @@ #include "sio.h" #include "interrupt.h" +#include "keyboard.h" // IODevice // | @@ -27,7 +28,14 @@ SIODevice::SIODevice() cr.chan[0].desc = "Serial Console"; cr.chan[1].desc = "Keyboard"; + // 153.6kHz = 6.510416...usec / bit; + // 12bit = 78.125usec + txc12_ns = 78.125_usec; + // LUNA では SIO と呼ぶほうが通りがいい。 + for (int ch = 0; ch < txevent.size(); ch++) { + txevent[ch].SetName(string_format("SIO Ch%s TX", cr.chan[ch].name)); + } monitor.Regist(ID_MONITOR_SIO); } @@ -108,3 +116,18 @@ SIODevice::Interrupt() putlog(2, "Interrupt"); gInterrupt->AssertINT(this); } + +void +SIODevice::Tx(int ch, uint32 data) +{ + switch (ch) { + case 0: + // TODO: シリアル送信処理 + break; + case 1: + gKeyboard->Command(data); + break; + default: + __unreachable(); + } +}