Commit Graph

22 Commits

Author SHA1 Message Date
evan d81da42007 wasm-emu: keep only aliased qemu_ld fallback 2026-07-24 10:37:12 -04:00
evan 6a9ad9edb6 wasm-emu: replace blanket store-TCI with mixed-store fallback (E35-E38) 2026-07-23 11:53:58 -04:00
evan 28ea986875 wasm-emu: isolate compiled-store corruption to uzlib fault-path TB (E32-E34) 2026-07-23 10:37:23 -04:00
evan 1406ab6d26 wasm-emu: document state materialization probes (E20-E22) 2026-07-23 06:59:21 -04:00
evan 373d5c2352 wasm-emu: rule out IO-thread guest-RAM race during reader open (E19) 2026-07-22 23:11:02 -04:00
evan 3c6e85a7fe wasm-emu: rule out function-table reuse (E18); consolidate race diagnosis 2026-07-22 21:57:51 -04:00
evan c608b65ef5 wasm-emu: rule out store redispatch path; document data-race conclusion (E17)
?yieldtrace shows the crash occurs with zero compiled-TB DONE_FLAG resume
re-entries, so it is not the store block-replay path. Combined with
nondeterminism and identity-independence, the corruption is a guest-RAM data
race with concurrent device/timer callbacks. Blanket store-TCI stays default.
2026-07-22 21:43:12 -04:00
evan 9b8c6ba925 wasm-emu: document compiled-store corruption as a nondeterministic race
E15/E16: runtime store-gating bisection plus repeated-run testing show the
0x4201e210 reader-open corruption is a race (identity-independent, config
alternates crash/pass), not a miscompiled TB. Blanket store-TCI suppresses it
in practice. Wire ?sthash and ?stcw/stcmask/stcval opt-in debug controls.
2026-07-22 20:57:01 -04:00
evan 4b1a0d72a2 wasm-emu: document narrowed 32-bit store-TCI panic fix
Default browser path now keeps only 32-bit qemu store TBs on TCI. Normal raw-SD
reader-open passes, while ?nostoretci still reproduces the original
0x4201e210 load fault as a negative control.
2026-07-22 19:05:42 -04:00
evan 78df20560e wasm-emu: add file-open diff2 arming and document compiled-store repro
Add ?nostoretci and ?tcgdiff2=open browser-test plumbing. ?nostoretci confirms
the original compiled-store corruption still reproduces at normal speed; the
file-open-armed E11 run catches stale register state before the known
0x4201e210 load fault. Production path remains store-TCI and browser raw-SD
stays green.
2026-07-22 18:16:05 -04:00
evan a5de735742 wasm-emu: wire ?tcgdiff2; document E11 whole-execution differential outcome
E11 proved inline compiled stores are correct under live cross-TB accumulation
(153k comparisons, zero divergence) but is too slow to reach the reader
corruption in-browser (guest watchdog fires first). Suspects narrowed to the
store slow-path and store-width interaction; next instrument is a deterministic
slow-path store unit test. Option A (deterministic two-pass) retained as future.
2026-07-22 16:45:06 -04:00
evan 2807194dc3 wasm-emu: wire opt-in ?tcgdiff differential; document E10 store-codegen exoneration
E10 per-TB compiled-vs-TCI differential compared 160k+ store TBs during a
full reader-open with zero divergence, exonerating single-TB store codegen
and confirming the inflate corruption is emergent across TBs. Harness is
opt-in via ?tcgdiff (wasm_diff_enable from app.js preRun); production
store-TCI path is unchanged.
2026-07-22 16:05:47 -04:00
evan 080a264b5c perf(web): disable icount by default (4.7x faster book open)
icount throttled TCG and starved the guest watchdog. Measured book open dropped from 146s to 31s. Off by default; ?icount restores it, ?noicount removed in favor of the new default. Harness now reports open-file timing.
2026-07-21 20:19:46 -04:00
evan 78f181e924 feat(web): improve SD file browser
Add directory navigation, folder creation, inline deletion, clear controls, and a focused editor view. Include the opt-in FAT16 vvfat experiment and fail-fast browser diagnostics; raw FAT32 remains the default.
2026-07-21 15:37:00 -04:00
evan 13f29177c1 fix(web): automate cold-boot power hold 2026-07-21 12:08:43 -04:00
evan b22934fe0d Replace vvfat SD with browser-built raw FAT32 from OPFS
Browser SD files are persisted in OPFS (web/sdstore.js) and edited in the
Files tab. At boot the browser builds a deterministic 64 MiB FAT32 image
(web/fat32.js) with nested directories and VFAT long names, then mounts
it as a raw block device, bypassing QEMU's broken populated-vvfat WASM
coroutine path. Guest writes mutate only the ephemeral image.

Exposes a hidden #frame-generation indicator that increments on every
e-ink flush, so automation can wait on real display updates instead of
fixed sleeps. Adds tests/ with a Makefile runner: 'make test' for JS +
FAT32/mtools checks, 'make browser-test' for a headless-Firefox boot of
the official CrossPoint 1.4.1 firmware that navigates to
Test/example.txt. Bumps third_party/qemu to the SPI-SD/CMD13 fixes and
updates README/ROADMAP/ISSUES for the new architecture.
2026-07-21 07:43:07 -04:00
evan 42c96a31a2 more 2026-07-20 16:34:19 -04:00
evan a87c9576fc working wasm 2026-07-20 14:25:43 -04:00
evan 2c1b320b0a fix(web): stop QEMU serial stdin from triggering browser input prompts 2026-07-20 08:33:28 -04:00
evan 14e2f2ea9f feat(web): surface QEMU logs in-page and enable guest-error diagnostics
Add a log panel that captures QEMU stdout/stderr, route serial to stdio, and
pass -d guest_errors,unimp so device warnings (e.g. the m25p80 Read-ID gap that
stalls CrossPoint boot) are visible in the browser. Read the framebuffer via
HEAPU8 to match the validated node path.
2026-07-20 08:32:14 -04:00
evan 90981ad154 feat(web): auto-merge CrossPoint release app image into a 16 MB flash
Accept the ~5 MB release firmware.bin directly: place it at 0x10000 in a
0xFF-erased 16 MB image alongside the bundled ESP32-C3 bootloader (0x0) and
CrossPoint partition table (0x8000). m25p80 requires a full chip-size backing,
so the 16 MB image is still built, but the user no longer pre-merges. Full
16 MB images are still accepted as-is.
2026-07-20 08:21:38 -04:00
evan 0683c1b1c1 feat(web): add initial browser emulator interface 2026-07-20 07:00:28 -04:00