--- nono/vm/romemu_luna1.cpp 2026/04/29 17:04:59 1.1.1.4 +++ nono/vm/romemu_luna1.cpp 2026/04/29 17:05:06 1.1.1.5 @@ -157,15 +157,22 @@ Luna1PROMEmuDevice::ROM_Init() goto done; } - // DIPSW#1-1 が UP なら自動起動、DOWN なら ROM モニタ起動なので、 - // これを真似する。 - if ((gPIO0->GetDIPSW1() & 1)) { - if (gMainApp.exec_file) { - // ホストのファイルを読み込んでエントリポイントアドレスを - // この Read アクセスの読み出し値として返す。 - // エラーがあればエラーメッセージは呼び出し先側で表示してある。 - entry = LoadHostFile(); - } else { + // -X file + // DIPSW の状態に関わらず、ファイルをロードし実行する。 + // --load-only file + // DIPSW の状態に関わらず、ファイルをロードし、プロンプトで止まる。 + if (gMainApp.exec_file) { + // ホストのファイルを読み込んでエントリポイントアドレスを + // この Read アクセスの読み出し値として返す。 + // エラーがあればエラーメッセージは呼び出し先側で表示してある。 + x_entrypoint = LoadHostFile(); + if (gMainApp.load_and_exec) { + entry = x_entrypoint; + } + } else { + // DIPSW#1-1 が UP なら自動起動、DOWN なら ROM モニタ起動なので、 + // これを真似する。 + if ((gPIO0->GetDIPSW1() & 1)) { // NVRAM の設定に従ってブート先を探す。 errmsg.clear(); @@ -271,7 +278,7 @@ Luna1PROMEmuDevice::Command() text.Print("Commands\n"); text.Print( " g [] : load program\n" -" gh : load host program (specified by -A option)\n" +" gh : load host program (specified by --load-only option)\n" " h : show this message\n" " k : show/set boot constants\n" " x : execute loaded program\n"