--- nono/vm/sram.h 2026/04/29 17:05:24 1.1.1.11 +++ nono/vm/sram.h 2026/04/29 17:05:28 1.1.1.12 @@ -20,6 +20,9 @@ class SRAMDevice : public IODevice static const uint32 baseaddr = 0xed0000; + // サイズは (今のところ?) 16KB 固定。 + static const uint sramsize = 16 * 1024; + // Pluto-X によるホストファイル起動アドレス static const uint32 plutoaddr = 0xeac000; @@ -30,21 +33,14 @@ class SRAMDevice : public IODevice bool Init() override; void ResetHard(bool poweron) override; - busdata Read8(uint32 addr) override; - busdata Read16(uint32 addr) override; - busdata Write8(uint32 addr, uint32 data) override; - busdata Write16(uint32 addr, uint32 data) override; - busdata Peek8(uint32 addr) override; - bool Poke8(uint32 addr, uint32 data) override; + busdata Read(busaddr addr) override; + busdata Write(busaddr addr, uint32 data) override; + busdata Peek1(uint32 addr) override; + bool Poke1(uint32 addr, uint32 data) override; void WriteEnable(bool value); bool IsWriteable() const { return writeable; } - // SRAM の指定の位置の値を副作用なく読み出す - uint32 Get8(uint32 offset) const; - uint32 Get16(uint32 offset) const; - uint32 Get32(uint32 offset) const; - // SRAM $ed0008.L RAM 容量を返す (ホストファイル起動用) uint32 GetRAMSize() const { return Get32(0x0008); } @@ -55,6 +51,10 @@ class SRAMDevice : public IODevice static std::array InitialData; private: + // SRAM の指定の位置の値を副作用なく読み出す + uint32 Get16(uint32 offset) const; + uint32 Get32(uint32 offset) const; + // RAM 容量欄を設定値に同期させる。 void SyncRAMSize(); @@ -63,7 +63,7 @@ class SRAMDevice : public IODevice // ファイル std::string filename {}; - MappedFile file {}; + std::unique_ptr file {}; uint8 *mem {}; bool writeable {};