--- nono/vm/partialram.cpp 2026/04/29 17:05:17 1.1 +++ nono/vm/partialram.cpp 2026/04/29 17:05:50 1.1.1.6 @@ -17,7 +17,7 @@ // 1ブロックを担当する人であればよくて、それを devtable[] のどこに割り当てる // かは VM::Init() 側が決めればよい。 // -// なおこのデバイス自身は RAM を持たず、バックエンドの gMainRAM +// なおこのデバイス自身は RAM を持たず、バックエンドの MainRAMDevice // (と NopIODevice) への切り替えスイッチなだけ (X68kIO のような立場)。 // また、X68030 の場合は X68kIO がすでに同様の処理を (8KB 単位で) 行って // いるのと、そもそも RAM がないところは NopIO ではなく BusError という違いも @@ -25,6 +25,7 @@ #include "partialram.h" #include "mainram.h" +#include "nop.h" // コンストラクタ PartialRAMDevice::PartialRAMDevice() @@ -43,10 +44,6 @@ PartialRAMDevice::~PartialRAMDevice() bool PartialRAMDevice::Init() { - if (inherited::Init() == false) { - return false; - } - ramdev = GetMainRAMDevice(); nopdev = GetNopIODevice(); @@ -54,7 +51,7 @@ PartialRAMDevice::Init() // ただしこのデバイスがどこに割り当てられるか (或いは割り当てられないか) // はこの後の VM_LUNA*::Init() で判断するため、ここではチェックなどは // 行わない。 - ram_size = ramdev->GetSize(); + ram_size = (uint32)ramdev->GetSize(); return true; } @@ -70,58 +67,30 @@ PartialRAMDevice::SearchDevice(uint32 ad } } -uint64 -PartialRAMDevice::Read8(uint32 addr) -{ - IODevice *d = SearchDevice(addr); - return d->Read8(addr); -} - -uint64 -PartialRAMDevice::Read16(uint32 addr) -{ - IODevice *d = SearchDevice(addr); - return d->Read16(addr); -} - -uint64 -PartialRAMDevice::Read32(uint32 addr) +busdata +PartialRAMDevice::Read(busaddr addr) { - IODevice *d = SearchDevice(addr); - return d->Read32(addr); -} - -uint64 -PartialRAMDevice::Write8(uint32 addr, uint32 data) -{ - IODevice *d = SearchDevice(addr); - return d->Write8(addr, data); + IODevice *d = SearchDevice(addr.Addr()); + return d->Read(addr); } -uint64 -PartialRAMDevice::Write16(uint32 addr, uint32 data) +busdata +PartialRAMDevice::Write(busaddr addr, uint32 data) { - IODevice *d = SearchDevice(addr); - return d->Write16(addr, data); + IODevice *d = SearchDevice(addr.Addr()); + return d->Write(addr, data); } -uint64 -PartialRAMDevice::Write32(uint32 addr, uint32 data) +busdata +PartialRAMDevice::Peek1(uint32 addr) { IODevice *d = SearchDevice(addr); - return d->Write32(addr, data); + return d->Peek1(addr); } -uint64 -PartialRAMDevice::Peek8(uint32 addr) +bool +PartialRAMDevice::Poke1(uint32 addr, uint32 data) { IODevice *d = SearchDevice(addr); - return d->Peek8(addr); -} - -// このアドレスを担当する次段の IODevice を返す (IOContainerDevice 用) -IODevice * -PartialRAMDevice::GetDevice(uint32 addr) const -{ - return SearchDevice(addr); + return d->Poke1(addr, data); }