--- nono/vm/kbc.cpp 2026/04/29 17:05:18 1.1 +++ nono/vm/kbc.cpp 2026/04/29 17:05:29 1.1.1.3 @@ -24,50 +24,69 @@ KBCDevice::~KBCDevice() { } -uint64 -KBCDevice::Read8(uint32 addr) +busdata +KBCDevice::ReadPort(uint32 offset) { - // XXX 折り返しは不明 - switch (addr & 7) { + busdata data; + + switch (offset) { case KEYDATA: - return 0; + data = 0; + break; case KEYSTAT: - return 0xc0; // KBRDY, MSRDY + data = 0xc0; // KBRDY, MSRDY + break; case KEYINTE: - return 0; // ? + data = 0; // ? + break; case KEYRESET: - return 0xff; // ? + data = 0xff; // ? + break; case KEYBUZZ: - return 0xff; // ? + data = 0xff; // ? + break; case MSDATA: - return 0; + data = 0; + break; case MSINTE: // ? - return 0; + data = 0; + break; case MSRESET: // ? - return 0xff; + data = 0xff; + break; default: - return 0xff; + data = 0xff; + break; } + + data |= BusData::Size1; + return data; } -uint64 -KBCDevice::Write8(uint32 addr, uint32 data) +busdata +KBCDevice::WritePort(uint32 offset, uint32 data) { // とりあえず全無視 - return 0; + return BusData::Size1; } -uint64 -KBCDevice::Peek8(uint32 addr) +busdata +KBCDevice::PeekPort(uint32 offset) { // XXX 未実装 return 0xff; } + +bool +KBCDevice::PokePort(uint32 offset, uint32 data) +{ + return false; +}