--- nono/vm/prom.h 2026/04/29 17:05:10 1.1.1.7 +++ nono/vm/prom.h 2026/04/29 17:05:17 1.1.1.9 @@ -5,15 +5,13 @@ // // -// PROM (LUNA-I, LUNA88K 共通) +// PROM (LUNA-I, LUNA-88K 共通) // #pragma once #include "rom.h" -class PROMDevice; - class PROM0Device : public IODevice { using inherited = IODevice; @@ -51,10 +49,23 @@ class PROMDevice : public ROMDevice bool Init() override; + int GetROMVer() const { return romver; } + private: bool InitLuna1(); bool InitLuna88k(); + + // PROM バージョン。 + // 100倍した整数形式で持つ。0 ならバージョン不明。 + int romver {}; }; -extern PROM0Device *gPROM0; -extern IODevice *gPROM; +static inline PROM0Device *GetPROM0Device() { + return Object::GetObject(OBJ_PROM_BOOT); +} + +// PROM(現物)と ROMEMU の共通層である ROMDevice を返す。 +// 区別が必要なら呼び出し側でもう一度 dynamic_cast<> すること。 +static inline ROMDevice *GetPROMDevice() { + return Object::GetObject(OBJ_PROM); +}