--- nono/vm/ram.h 2026/04/29 17:04:36 1.1.1.3 +++ nono/vm/ram.h 2026/04/29 17:04:53 1.1.1.7 @@ -14,9 +14,11 @@ class RAMDevice using inherited = IODevice; public: RAMDevice(); - ~RAMDevice() override; + virtual ~RAMDevice() override; bool Init() override; + bool PowerOn() override; + void ResetHard() override; uint64 Read8(uint32 addr) override; uint64 Read16(uint32 addr) override; @@ -26,20 +28,29 @@ class RAMDevice uint64 Write32(uint32 addr, uint32 data) override; uint64 Peek8(uint32 addr) override; + // RAM 容量(バイト単位)を取得 + int GetSize() const { return ram_size; } + // RAM 容量(MB単位)を取得 + int GetSizeMB() const { return (uint)ram_size / 1024 / 1024; } + + // アクセスウェイトを設定 + void SetWait(uint32 wait); + // ホストの filepath をロードする - uint32 LoadFile(const char *filepath, uint32 mid); + uint32 LoadFile(const char *filepath); // file, filesize で示されるバッファをロードする - uint32 LoadFile(const char *name, const uint8 *file, size_t filesize, - uint32 mid); + uint32 LoadFile(const char *name, const uint8 *file, size_t filesize); private: - uint32 LoadGzFile(const char *filepath, const uint8 *file, size_t filesize, - uint32 mid); - uint32 Load_aout(const char *name, const uint8 *file, size_t filesize, - uint32 mid); - uint32 Load_elf32(const char *name, const uint8 *file, size_t filesize, - uint32 mid); + uint32 LoadGzFile(const char *filepath, const uint8 *file, size_t filesize); + uint32 Load_aout(const char *name, const uint8 *file, size_t filesize); + uint32 Load_elf32(const char *name, const uint8 *file, size_t filesize); + + // RAM 容量(バイト単位)。ram[] の確保したバイト数 + int ram_size {}; + + uint32 read_wait {}; + uint32 write_wait {}; }; -extern std::unique_ptr ram; -extern int ram_size; +extern std::unique_ptr mainram; extern std::unique_ptr gRAM;