--- nono/vm/romemu_luna.cpp 2026/04/29 17:04:45 1.1.1.5 +++ nono/vm/romemu_luna.cpp 2026/04/29 17:04:47 1.1.1.6 @@ -43,6 +43,9 @@ enum { // コンストラクタ LunaPROMEmuDevice::LunaPROMEmuDevice() { + logname = "prom"; + devname = "PROM"; + // LUNA-I の ROM の特定アドレスを読み出す人がいるので、 // サイズは実 ROM と同じにしておく必要がある。 devlen = 128 * 1024; @@ -73,8 +76,8 @@ LunaPROMEmuDevice::Init() ms.Write16(0x660c); // bne _go ; 起動先あればGO //_prompt: ms.Write32(0x4e722500); // stop #0x2500 ; キー入力を待つ - ms.Write16(0x2039); // move.l (ROMIO_KEYIN),d0 - ms.Write32(ROMIO_KEYIN); // ; キー入力処理 + ms.Write16(0x2039); // move.l (ROMIO_ENTRY),d0 + ms.Write32(ROMIO_ENTRY); // ; キー入力処理 ms.Write16(0x67f4); // beq _prompt ; 起動先なければループ //_go: ms.Write16(0x2040); // move.l d0,a0 ; ジャンプ先を a0 にセット @@ -83,8 +86,10 @@ LunaPROMEmuDevice::Init() ms.Write16(0x4ed0); // jmp (a0) ; ジャンプ // Lv6 (SIO) 割り込みハンドラ - // キーボード割り込みが上がったら STOP 命令から戻ってくるだけでいい + // キーボード割り込みが上がったら KEYIN をコールする ms.SetPtr(&romdata[0x600]); + ms.Write16(0x4ab9); // tst.l (ROMIO_KEYIN) + ms.Write32(ROMIO_KEYIN); // ; キー入力処理 ms.Write16(0x4e73); // rte // MAC アドレス @@ -148,6 +153,9 @@ LunaPROMEmuDevice::Read32(uint32 addr) case ROMIO_CLOSE - baseaddr: return ROM_Close(); + case ROMIO_ENTRY - baseaddr: + return entrypoint; + default: break; }