--- nono/vm/romemu_virt68k.cpp 2026/04/29 17:05:32 1.1.1.3 +++ nono/vm/romemu_virt68k.cpp 2026/04/29 17:05:41 1.1.1.5 @@ -47,13 +47,6 @@ Virt68kROMEmuDevice::Virt68kROMEmuDevice() : inherited(OBJ_PROM) { - // 適当 - uint devlen = 4096; - imagebuf.reset(new uint8 [devlen]); - memset(&imagebuf[0], 0, devlen); - - mem = &imagebuf[0]; - mask = devlen - 1; } // デストラクタ @@ -65,7 +58,8 @@ Virt68kROMEmuDevice::~Virt68kROMEmuDevic bool Virt68kROMEmuDevice::Init() { - if (inherited::Init() == false) { + // ROM 領域を用意。サイズは適当。 + if (AllocROM(2048, 0) == false) { return false; } @@ -131,7 +125,7 @@ Virt68kROMEmuDevice::ROM_Init() // カーネル側もそのように想定しているようだ。 info.loadsym = false; - if (mainram->LoadExec(&info) == false) { + if (BootLoader::LoadExec(mainram, &info) == false) { warnx("** Couldn't load specified host program."); return -1; } @@ -317,7 +311,7 @@ Virt68kROMEmuDevice::MakeBootInfo(LoadIn WriteBootInfo(ds, bi); } - uint32 ramsize = mainram->GetSize(); + uint32 ramsize = (uint32)mainram->GetSize(); // RAMDISK は (あれば) initrd イメージ置き場で、 // メモリセグメントとは別セグメントにする必要がある。 @@ -358,7 +352,7 @@ Virt68kROMEmuDevice::MakeBootInfo(LoadIn // ロード。 LoadInfo rdinfo(cpath, mdata, rdsize); rdinfo.start = (ramsize - rdsize) & ~0xfff; - bool rv = mainram->LoadData(&rdinfo); + bool rv = BootLoader::LoadData(mainram, &rdinfo); munmap(mdata, rdsize); if (rv == false) { warnx("** Couldn't load specified initrd."); @@ -563,7 +557,7 @@ Virt68kROMEmuDevice::WriteBootInfo(IODev break; } putmsg(1, "BootInfo $%08x: %-14s: %s", - stream.GetOffset(), tagname.c_str(), buf.c_str()); + stream.GetAddr(), tagname.c_str(), buf.c_str()); } // 出力。