diff --git a/bad-apple/README.md b/bad-apple/README.md index 6d1d119..dcdc136 100644 --- a/bad-apple/README.md +++ b/bad-apple/README.md @@ -91,6 +91,14 @@ The 1987 TI TMS34010 SDK runs under DOSBox. The C sources are K&R C: the 1987 compiler rejects ANSI prototypes and `const`. `.text` is linked at bit `0x018C0000`, `.bss` at `0x01C00000`. +The 1990 **r5.01 OS/2** toolchain under `2ine-tms34010` also builds it (see +`tools/tms34010-sdk/2INE-501.md` for setup). Build `MAIN.C` without +`gspopt -O2`: the optimizer hoists the `CTRL_READY` polling load and the +payload waits forever at takeover. `MOVIE.C` is fine at `-O2`. The verified +r5.01 build is `.text` 3,168 bytes, entry `0x018C5C70`, and is MAME-exact at +frames 0 and 180. `gspac`/`gspcg` exit 139 at teardown but still write valid +files. + ## Run in MAME (debugger path) For a window, use `tools/run_mame_gui.sh` (above). For scripted/headless diff --git a/bad-apple/REPORT.md b/bad-apple/REPORT.md index 5fa08d5..026453d 100644 --- a/bad-apple/REPORT.md +++ b/bad-apple/REPORT.md @@ -89,6 +89,32 @@ bind: the marker shows `status=0x20` and no socket is open. The suspect is size. The debugger path is the working demo. A fixed low-RAM staging receive or raw-LANCE loader is the next step. This is the one delivery-path gap. +## r5.01 OS/2 compiler check (2026-11-01) + +The 1990 TMS340 r5.01 ANSI C toolchain, run under the patched +`2ine-tms34010` fork, builds this demo. The pipeline was: + +``` +gspac -k MAIN.C MAIN.IF +gspcg -m MAIN.IF MAIN.ASM MAIN.TMP # no gspopt for MAIN.C +gspa MAIN.ASM +gspac/gspopt -O2/gspcg/gspa for MOVIE.C +gspa FILL.ASM +gspa ENTRY.ASM +gsplnk PLAYER.CMD # .text 018C0000h, .bss 01C00000h +``` + +Result: `.text` `0x6300` bits = **3,168 bytes**, entry **`0x018C5C70`**. +MAME frame 0 and frame 180 are **EXACT** with +`BA_PAYLOAD=PLAYER.bin BA_ENTRY=0x018C5C70`. + +Caveat: `gspopt -O2` on `MAIN.C` hoists the `CTRL_READY` polling load and +the payload waits forever at takeover. `MOVIE.C` is fine at `-O2`; build +`MAIN.C` without `gspopt`, or add `volatile` to the polling reads. `gspac` +and `gspcg` exit 139 at teardown but still write valid output files. +`gspa` 5.01 accepted `entry.asm`/`fill.asm` (including `sp`); the `b15` +round-trip difference does not affect this demo. + ## Regression The no-env MAME baseline at 200 frames is unchanged: