--- nono/vm/romemu_luna1.cpp 2026/04/29 17:04:53 1.1.1.2 +++ nono/vm/romemu_luna1.cpp 2026/04/29 17:04:55 1.1.1.3 @@ -18,8 +18,8 @@ // (実ROM) (LUNA-I エミュレーション) (LUNA88K エミュレーション) #include "romemu_luna1.h" -#include "bitmap.h" #include "ethernet.h" +#include "lunafb.h" #include "mainapp.h" #include "memorystream.h" #include "mk48t02.h" @@ -121,7 +121,7 @@ Luna1PROMEmuDevice::ROM_Init() ms.Write32(gRAM->GetSize()); // プレーン数(1..4)をプレーンマスク(0x01..0x0f)に - int nplane = gBitmap->GetPlaneCount(); + int nplane = gLunafb->GetPlaneCount(); int planemask = (1 << nplane) - 1; // 実際は RAM 上を指しているのだが、とりあえずすぐ隣に置いておく。 ms.SetPtr(&romdata[0xb8]); @@ -173,6 +173,7 @@ Luna1PROMEmuDevice::ROM_Init() // ConsoleUpdate を呼ぶことでタイトルを含めて画面を表示する。 done: if (entry == 0) { + ClearPrompt(); ConsoleUpdate(); } @@ -530,49 +531,12 @@ Luna1PROMEmuDevice::CommandX() } } -// NVRAM のチェックサムを返す -uint8 -Luna1PROMEmuDevice::CalcNVRAMCsum() -{ - uint8 eor = 0; - for (uint32 addr = 0x20; addr < 0x560; addr++) { - eor ^= nvram->Peek(addr); - } - return eor; -} - -// NVRAM のチェックサムを計算して書き込む -void -Luna1PROMEmuDevice::WriteNVRAMCsum() -{ - uint8 eor = CalcNVRAMCsum(); - - nvram->Write(0x001c, eor); - nvram->Write(0x001d, eor); - nvram->Write(0x001e, eor); -} - -// NVRAM のマジックとチェックサムを照合する -bool -Luna1PROMEmuDevice::VerifyNVRAM() -{ - if (nvram->PeekString(0x0004) != "") { - return false; - } - - uint8 eor = CalcNVRAMCsum(); - for (uint32 addr = 0x1c; addr < 0x1f; addr++) { - if (nvram->Peek(addr) != eor) { - return false; - } - } - return true; -} - // NVRAM を初期化する bool Luna1PROMEmuDevice::InitNVRAM() { + nvram->ClearAll(); + // 初期値どうしたもんか nvram->WriteString(0x0004, ""); nvram->WriteString(0x0020, "BOOT");