--- nono/vm/romemu_luna88k.cpp 2026/04/29 17:04:36 1.1.1.2 +++ nono/vm/romemu_luna88k.cpp 2026/04/29 17:04:47 1.1.1.4 @@ -26,6 +26,9 @@ // コンストラクタ Luna88kPROMEmuDevice::Luna88kPROMEmuDevice() { + logname = "prom"; + devname = "PROM"; + devaddr = baseaddr; devlen = 256 * 1024; @@ -183,14 +186,17 @@ Luna88kPROMEmuDevice::IPL() gRAM->Write32(0x00001400, 0xfc001000); // internal inst putc gRAM->Write32(0x00001404, 0xf400c001); // jmp r1 + // XXX このへん romemu_luna と同じところは共通化したほうがいい + // 初期パレット - // 偶数が 0xf, 奇数が 0 + // 偶数番は白(R/G/B=15/15/15)、奇数番は黒(0/0/0)。 + uint8 val = 0xf0; + gBT454->Write8(0, 0); // select palette for (int i = 0; i < 16; i++) { - gBT454->Write8(0, i << 4); // select palette - uint32 c = ((i & 1) ? 0 : 0xf) << 4; - gBT454->Write8(1, c); // R - gBT454->Write8(1, c); // G - gBT454->Write8(1, c); // B + gBT454->Write8(1, val); // R + gBT454->Write8(1, val); // G + gBT454->Write8(1, val); // B + val ^= 0xf0; } // SCSI @@ -201,6 +207,10 @@ Luna88kPROMEmuDevice::IPL() // ホストのファイルを読み込んでエントリポイントアドレスを // この Read アクセスの読み出し値として返す。 entry = gRAM->LoadFile(gMainApp.host_file, AOUT_MID_M88K); + if (entry == 0) { + // XXX まだコンソールがなくて停止できないのでとりあえず終了 + exit(1); + } } return entry;