dev: restore core=dynamic; the trap failures were the PATH bug

The previous commit blamed core=dynamic for the M3 bounds cases exiting 0
instead of trapping. That was wrong. Both suspects were live at the time --
the recompiler and a cache hit that skipped BUILD.BAT's `set PATH` -- and the
core was ruled out before the PATH line was restored, so the test proved
nothing.

Retested with the PATH fix in place: core=dynamic gives 50 passed on m3, the
traps included. abort() reports its exit status fine under the recompiler.

Per milestone, warm cache, all green:

    m1  2s   m2  3s   m3  7s   m4  3s
    m5  3s   m6  6s   m7  5s        29s total

against 65s on the interpreter.
This commit is contained in:
2026-08-17 01:36:48 +09:00
parent 0132ad4135
commit d5e7a8d8d6
+7 -6
View File
@@ -287,13 +287,14 @@ def run_suite(cases: list[Case], *, keep: bool = False, show_dos: bool = False,
console = run_root / "CONSOLE.LOG" console = run_root / "CONSOLE.LOG"
config = run_root / "DOSBOX.CON" config = run_root / "DOSBOX.CON"
config.write_text( config.write_text(
# Do not tune [cpu] here. core=dynamic is roughly 5x faster but the # core=auto leaves real mode on the interpreter, which is where the
# recompiler loses abort()'s exit status -- a program that traps # 16-bit compiler build spends its time. Nothing here is timing
# exits 0 instead, so the M3 bounds cases stop reporting the trap # sensitive -- a compiler and a batch file -- so ask for the
# they exist to prove. Verified against a compiler built under # recompiler explicitly. The M3 bounds cases confirm abort() still
# core=normal, so it is the runtime and not the build. # reports its exit status under it.
f"[log]\nlogfile={console}\n" f"[log]\nlogfile={console}\n"
f"[dosbox]\nlog console=quiet\n", f"[dosbox]\nlog console=quiet\n"
f"[cpu]\ncore=dynamic\ncycles=max\n",
encoding="ascii", encoding="ascii",
) )
if cached.is_file(): if cached.is_file():