--- nono/vm/romimg_x68k.cpp 2026/04/29 17:05:14 1.1.1.9 +++ nono/vm/romimg_x68k.cpp 2026/04/29 17:05:18 1.1.1.10 @@ -28,8 +28,8 @@ // | | // | +-- LunaPROMEmuDevice (LUNA PROM エミュレーションの共通部分) // | | -// | +-- Luna1PROMEmuDevice (LUNA1 の PROM エミュレーション) -// | +-- Luna88kPROMEmuDevice (LUNA88K の PROM エミュレーション) +// | +-- Luna1PROMEmuDevice (LUNA-I の PROM エミュレーション) +// | +-- Luna88kPROMEmuDevice (LUNA-88K の PROM エミュレーション) // | // +-- PROM0Device (LUNA* のブートページ切り替え用プロキシ) // | @@ -43,12 +43,6 @@ #include "mainapp.h" #include "vm.h" -// グローバル参照用 -CGROMDevice *gCGROM; -IPLROM0Device *gIPLROM0; -IPLROM1Device *gIPLROM1; -IPLROM2Device *gIPLROM2; - // // IPLROM0 // @@ -62,22 +56,27 @@ IPLROM2Device *gIPLROM2; // コンストラクタ IPLROM0Device::IPLROM0Device() - : inherited("IPLROM(BOOT)") + : inherited(OBJ_IPLROM_BOOT) { + // 通常ここからログを出すことはない ClearAlias(); - AddAlias("IPLROMBOOT"); } // デストラクタ IPLROM0Device::~IPLROM0Device() { - gIPLROM0 = NULL; } +// 初期化 bool IPLROM0Device::Init() { - iplrom1 = gIPLROM1; + if (inherited::Init() == false) { + return false; + } + + iplrom1 = GetIPLROM1Device(); + return true; } @@ -139,12 +138,8 @@ IPLROM0Device::Peek8(uint32 addr) // コンストラクタ IPLROM1Device::IPLROM1Device() - : inherited("IPLROM1") + : inherited(OBJ_IPLROM1) { - devaddr = 0xfe0000; - devlen = 0x020000; - mask = devlen - 1; - // X680x0 では ROM への書き込みはバスエラー write_op = -1; } @@ -152,13 +147,19 @@ IPLROM1Device::IPLROM1Device() // デストラクタ IPLROM1Device::~IPLROM1Device() { - gIPLROM1 = NULL; } +// 初期化 bool IPLROM1Device::Init() { + if (inherited::Init() == false) { + return false; + } + std::string name; + uint devlen = 0x020000; + mask = devlen - 1; // ベンチマークモードは先に処理。この辺どうするか。 if (gMainApp.benchmark_mode != 0) { @@ -185,12 +186,8 @@ IPLROM1Device::Init() // コンストラクタ IPLROM2Device::IPLROM2Device() - : inherited("IPLROM2") + : inherited(OBJ_IPLROM2) { - devaddr = 0xfc0000; - devlen = 0x020000; - mask = devlen - 1; - // X680x0 では ROM への書き込みはバスエラー write_op = -1; } @@ -198,12 +195,19 @@ IPLROM2Device::IPLROM2Device() // デストラクタ IPLROM2Device::~IPLROM2Device() { - gIPLROM2 = NULL; } +// 初期化 bool IPLROM2Device::Init() { + if (inherited::Init() == false) { + return false; + } + + uint devlen = 0x020000; + mask = devlen - 1; + if (gMainApp.benchmark_mode != 0) { return true; } @@ -226,12 +230,8 @@ IPLROM2Device::Init() // コンストラクタ CGROMDevice::CGROMDevice() - : inherited("CGROM") + : inherited(OBJ_CGROM) { - devaddr = 0xf00000; - devlen = 768 * 1024; - mask = 1024 * 1024 - 1; - // X680x0 では ROM への書き込みはバスエラー write_op = -1; } @@ -239,12 +239,19 @@ CGROMDevice::CGROMDevice() // デストラクタ CGROMDevice::~CGROMDevice() { - gCGROM = NULL; } +// 初期化 bool CGROMDevice::Init() { + if (inherited::Init() == false) { + return false; + } + + uint devlen = 768 * 1024; + mask = 1024 * 1024 - 1; + const ConfigItem& item = gConfig->Find("cgrom-image"); std::string name = item.AsString(); if (name.empty()) {