--- nono/vm/device.cpp 2026/04/29 17:05:25 1.1.1.10 +++ nono/vm/device.cpp 2026/04/29 17:05:29 1.1.1.11 @@ -17,7 +17,7 @@ // // コンストラクタ -Device::Device(int objid_) +Device::Device(uint objid_) : inherited(objid_) { } @@ -69,11 +69,11 @@ Device::putlogn(const char *fmt, ...) co int len; vt = scheduler->GetVirtTime(); - len = snprintf(buf, sizeof(buf), "%4d.%03d'%03d'%03d %08x %s ", - (int)(vt / 1000 / 1000 / 1000), - (int)((vt / 1000 / 1000) % 1000), - (int)((vt / 1000) % 1000), - (int)(vt % 1000), + len = snprintf(buf, sizeof(buf), "%4u.%03u'%03u'%03u %08x %s ", + (uint)(vt / 1000 / 1000 / 1000), + (uint)((vt / 1000 / 1000) % 1000), + (uint)((vt / 1000) % 1000), + (uint)(vt % 1000), mpu->GetPPC(), GetName().c_str()); @@ -90,7 +90,7 @@ Device::putlogn(const char *fmt, ...) co // // コンストラクタ -IODevice::IODevice(int objid_) +IODevice::IODevice(uint objid_) : inherited(objid_) { } @@ -112,71 +112,49 @@ IODevice::Init() } busdata -IODevice::Read8(uint32 addr) +IODevice::Read(busaddr addr) { - return 0xff; + return 0; } busdata -IODevice::Read16(uint32 addr) +IODevice::Write(busaddr addr, uint32 data) { - return (Read8(addr) << 8) | Read8(addr + 1); + return 0; } busdata -IODevice::Read32(uint32 addr) +IODevice::ReadBurst16(busaddr addr, uint32 *dst) { - return (Read16(addr) << 16) | Read16(addr + 2); + return BusData::BusErr; } busdata -IODevice::Write8(uint32 addr, uint32 data) +IODevice::WriteBurst16(busaddr addr, const uint32 *src) { - return 0; + return BusData::BusErr; } busdata -IODevice::Write16(uint32 addr, uint32 data) +IODevice::Read1(uint32 addr) { - int64 berr; - - berr = Write8(addr, data >> 8); - if (berr < 0) - return berr; - berr = Write8(addr + 1, data & 0xff); - if (berr < 0) - return berr; - return 0; + return 0xff; } busdata -IODevice::Write32(uint32 addr, uint32 data) +IODevice::Write1(uint32 addr, uint32 data) { - int64 berr; - - berr = Write16(addr, data >> 16); - if (berr < 0) - return berr; - berr = Write16(addr + 2, data & 0xffff); - if (berr < 0) - return berr; return 0; } busdata -IODevice::Peek8(uint32 addr) +IODevice::Peek1(uint32 addr) { return 0xff; } bool -IODevice::Poke8(uint32 addr, uint32 data) -{ - return false; -} - -bool -IODevice::Poke(uint32 addr, uint32 data) +IODevice::Poke1(uint32 addr, uint32 data) { return false; } @@ -200,51 +178,31 @@ BusErrDevice::~BusErrDevice() } busdata -BusErrDevice::Read8(uint32 addr) -{ - putlog(1, "$%08x.b", addr); - return busdata::BusErr; -} - -busdata -BusErrDevice::Read16(uint32 addr) -{ - putlog(1, "$%08x.w", addr); - return busdata::BusErr; -} - -busdata -BusErrDevice::Read32(uint32 addr) +BusErrDevice::Read(busaddr addr) { - putlog(1, "$%08x.l", addr); - return busdata::BusErr; -} + uint32 datasize = addr.GetSize(); -busdata -BusErrDevice::Write8(uint32 addr, uint32 data) -{ - putlog(1, "$%08x.b <- %02X", addr, data); - return busdata::BusErr; + putlog(1, "$%08x.%u", addr.Addr(), datasize); + busdata data = BusData::BusErr; + data |= busdata::Size(datasize); + return data; } busdata -BusErrDevice::Write16(uint32 addr, uint32 data) +BusErrDevice::Write(busaddr addr, uint32 data) { - putlog(1, "$%08x.w <- %04X", addr, data); - return busdata::BusErr; -} + uint32 datasize = addr.GetSize(); -busdata -BusErrDevice::Write32(uint32 addr, uint32 data) -{ - putlog(1, "$%08x.l <- %08X", addr, data); - return busdata::BusErr; + putlog(1, "$%08x.%u <- %0*X", addr.Addr(), datasize, datasize * 2, data); + busdata r = BusData::BusErr; + r |= busdata::Size(datasize); + return r; } busdata -BusErrDevice::Peek8(uint32 addr) +BusErrDevice::Peek1(uint32 addr) { - return busdata::BusErr; + return BusData::BusErr; } @@ -266,49 +224,43 @@ NopIODevice::~NopIODevice() } busdata -NopIODevice::Read8(uint32 addr) +NopIODevice::Read(busaddr addr) { - putlog(1, "$%08x.b", addr); - return 0xff; -} + uint32 datasize = addr.GetSize(); -busdata -NopIODevice::Read16(uint32 addr) -{ - putlog(1, "$%08x.w", addr); - return 0xffff; + putlog(1, "$%08x.%u", addr.Addr(), datasize); + busdata data = (1ULL << (datasize * 8)) - 1; + data |= busdata::Size(datasize); + return data; } busdata -NopIODevice::Read32(uint32 addr) +NopIODevice::Write(busaddr addr, uint32 data) { - putlog(1, "$%08x.l", addr); - return 0xffffffff; -} + uint32 datasize = addr.GetSize(); -busdata -NopIODevice::Write8(uint32 addr, uint32 data) -{ - putlog(1, "$%08x.b <- $%02x", addr, data); - return 0; + putlog(1, "$%08x.%u <- $%0*x", addr.Addr(), datasize, datasize * 2, data); + busdata r = busdata::Size(datasize); + return r; } busdata -NopIODevice::Write16(uint32 addr, uint32 data) +NopIODevice::Peek1(uint32 addr) { - putlog(1, "$%08x.w <- $%04x", addr, data); - return 0; + return 0xff; } busdata -NopIODevice::Write32(uint32 addr, uint32 data) +NopIODevice::Read1(uint32 addr) { - putlog(1, "$%08x.l <- $%08x", addr, data); - return 0; + putlog(1, "XP $%05x", addr); + busdata data = 0xff; + return data; } busdata -NopIODevice::Peek8(uint32 addr) +NopIODevice::Write1(uint32 addr, uint32 data) { - return 0xff; + putlog(1, "XP $%05x <- $%02x", addr, data); + return 0; }