--- nono/vm/romimg_x68k.h 2026/04/29 17:04:55 1.1.1.6 +++ nono/vm/romimg_x68k.h 2026/04/29 17:05:25 1.1.1.10 @@ -4,28 +4,34 @@ // Licensed under nono-license.txt // +// +// X680x0 の各種 ROM +// + #pragma once #include "rom.h" class IPLROM1Device; -class IPLROM0Device : public ROMDevice +class IPLROM0Device : public IODevice { - using inherited = ROMDevice; + using inherited = IODevice; public: IPLROM0Device(); - virtual ~IPLROM0Device() override; + ~IPLROM0Device() override; bool Init() override; - void ResetHard() override; + void ResetHard(bool poweron) override; - uint64 Read8(uint32 addr) override; - uint64 Read16(uint32 addr) override; - uint64 Read32(uint32 addr) override; - uint64 Peek8(uint32 addr) override; + busdata Read8(uint32 addr) override; + busdata Read16(uint32 addr) override; + busdata Read32(uint32 addr) override; + busdata Peek8(uint32 addr) override; private: + uint32 ReadDecoder(uint32 addr); + IPLROM1Device *iplrom1 {}; }; @@ -34,7 +40,7 @@ class IPLROM1Device : public ROMDevice using inherited = ROMDevice; public: IPLROM1Device(); - virtual ~IPLROM1Device() override; + ~IPLROM1Device() override; bool Init() override; }; @@ -44,7 +50,7 @@ class IPLROM2Device : public ROMDevice using inherited = ROMDevice; public: IPLROM2Device(); - virtual ~IPLROM2Device() override; + ~IPLROM2Device() override; bool Init() override; }; @@ -54,12 +60,20 @@ class CGROMDevice : public ROMDevice using inherited = ROMDevice; public: CGROMDevice(); - virtual ~CGROMDevice() override; + ~CGROMDevice() override; bool Init() override; }; -extern std::unique_ptr gCGROM; -extern std::unique_ptr gIPLROM0; -extern std::unique_ptr gIPLROM1; -extern std::unique_ptr gIPLROM2; +static inline CGROMDevice *GetCGROMDevice() { + return Object::GetObject(OBJ_CGROM); +} +static inline IPLROM0Device *GetIPLROM0Device() { + return Object::GetObject(OBJ_IPLROM_BOOT); +} +static inline IPLROM1Device *GetIPLROM1Device() { + return Object::GetObject(OBJ_IPLROM1); +} +static inline ROMDevice *GetIPLROM2Device() { + return Object::GetObject(OBJ_IPLROM2); +}