--- nono/vm/romemu_luna.h 2026/04/29 17:05:10 1.1.1.12 +++ nono/vm/romemu_luna.h 2026/04/29 17:05:18 1.1.1.13 @@ -12,6 +12,13 @@ #include "rom.h" +class BT45xDevice; +class LunafbDevice; +class MainRAMDevice; +class MK48T02Device; +class SIODevice; +class SPCDevice; + class LunaPROMEmuDevice : public ROMDevice { using inherited = ROMDevice; @@ -55,13 +62,14 @@ class LunaPROMEmuDevice : public ROMDevi virtual uint32 ROM_Init() = 0; virtual uint32 ROM_Entry() = 0; virtual void ROM_Close(); - virtual void GetChar(char); + virtual void ProcessChar(char); virtual void Command() = 0; void InitDevice(); void InitScreen(); void PrintTitle(const char *machine_name); void ClearPrompt(); + int Getc(); void Putc(uint ch); void Print(const std::string& s); void Print(const char *fmt, ...) __printflike(2, 3); @@ -102,11 +110,12 @@ class LunaPROMEmuDevice : public ROMDevi int origin_px {}; // テキスト画面の左上 X 座標(ピクセル) int origin_py {}; // テキスト画面の左上 Y 座標(ピクセル) - // NVRAM - // 本来他デバイスはすべてグローバル参照できるのだが、LUNA の NVRAM は - // RTC と兼用になっていて、RTCDevice *gRTC として見えるので - // MK48T02Device にするには dynamic_cast する必要がある。 + BT45xDevice *bt45x {}; + LunafbDevice *lunafb {}; + MainRAMDevice *mainram {}; MK48T02Device *nvram {}; + SIODevice *sio {}; + SPCDevice *spc {}; private: // キー入力