Files
Stefan ArentzandClaude Fable 5 e331ebeadc Phase 7: Apple ][+ SDL frontend and boo menu
ewm two and ewm boo run windowed; the frontend is feature-complete
against the C binary (minus Lua, by decision):

- ewm/src/scr.rs: scr.c — TEXT with interleaved rows and flashing,
  LGR 16-color blocks, HGR in green monochrome or color (including
  the fringing fix from #187: adjacent-pixel white detection and
  column-parity coloring), mixed mode, page 2. Rendering is pure
  pixels (no SDL) so the golden screenshot gate runs headless in CI;
  the loop uploads the buffer as a streaming texture. Includes a
  dependency-free BMP encoder for --screenshot and the golden test.
- ewm/src/snd.rs: snd.c (#188) — the core's cycle-stamped $C030
  toggles replay into a square-wave sample buffer queued to SDL,
  with the same 100ms backpressure check.
- ewm/src/two.rs: the SDL loop of two.c — fixed 40 fps step with
  1023000/fps cycle bursts, --drive1/--drive2/--color/--fps/--memory/
  --trace/--strict/--debug, controller buttons and joystick paddles,
  the key mapping (with two.c's TAB fallthrough and alt-keyup-only
  button clearing), Cmd-Esc reset, Cmd-Return fullscreen, Cmd-P pause
  with the tty overlay, Cmd-I status bar with the fake ~1.023 MHz
  display (quirk #3) and drive lights, and the hidden
  --screenshot=<path> debug flag (BMP after 120 frames, then exit).
- ewm/src/boo.rs: boo.c — the bootloader menu; main.rs dispatches
  one/two/boo with no args running boo, as ewm.c does.
- Golden gate: rust/ewm/golden/two-boot.bmp is the System Master
  boot screen rendered after a fixed 100M cycles; the test
  boot_screen_matches_golden_bmp re-renders and compares byte for
  byte (regenerate with EWM_WRITE_GOLDEN=1).
- Core: Two::ram() read access for the renderers, extra --memory
  regions (dispatched after base RAM like the C fast path), and
  Dsk::active_drive() for the drive lights.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 10:46:12 -04:00
..