Commit Graph
11 Commits
Author SHA1 Message Date
Stefan ArentzandClaude Fable 5 4beea0d17a Split crates by meaning: ewm-core is the 6502 kernel, ewm is the machines
ewm-core used to mean "everything headless", which put the Apple wiring
(pia, dsk, alc, chr, one, two) next to the generic CPU. The crates now
split kernel-vs-machine:

- ewm-core keeps only what is common to machines: cpu, mem, ins, fmt,
  plus the CPU-level tests (Dormann, golden trace) and the benches.
- ewm gains a library target beside its binary and owns everything
  Apple-specific: the devices (pia, dsk, alc, chr) and the machines.
  one.rs and two.rs now each hold the machine *and* its SDL loop,
  restoring the original one.c/two.c file layout. main.rs is the thin
  ewm.c-style dispatcher over the library.
- The machine tests (boots, DOS 3.3 + CATALOG, language card) and the
  headless example consoles move to ewm with the machines; the consoles
  run as 'cargo run -p ewm --example ...' (README updated). scr stays
  in the frontend, unchanged.

Pure code motion, no behavior change: all 39 tests pass unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 20:40:34 -04:00
Stefan ArentzandClaude Fable 5 121f03a079 Add the new screenshots to the README (#200)
* Add the new screenshots to the README

The bootloader menu as the hero image, plus a gallery of the Replica 1,
a DOS 3.3 boot, Frogger and Bandits. The old 2016 screenshot the README
pointed at was deleted, so the previous image link was broken.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Escape the ][ in the Apple ][+ image alt text

The unescaped ] closed the image bracket early and broke the
markdown rendering of the gallery table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:46:23 -04:00
Stefan ArentzandClaude Fable 5 774d98a4e7 Rewrite README for the Rust-era project
Fresh structure: what's emulated, requirements, build/run/test
instructions, key bindings, the headless consoles, and an explicit
under-development note. The old C-era goals checklist and the
first-person intro from 2016 are replaced; history points at
REWRITE.md and the git history for the original C.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:27:44 -04:00
Stefan ArentzandClaude Fable 5 d05006ec3a Phase 9: remove the C, promote Rust to the root (#199)
* Phase 9: remove the C tree, promote the Rust workspace to the root

Pure git mv / git rm plus the mechanical path fixes:

- Delete src/*.c, src/*.h, src/Makefile, src/CMakeLists.txt, the Lua
  scripts, .travis.yml, and scripts/gen-golden-trace.* (the golden
  trace regeneration needed the C tree; the checked-in golden file is
  now frozen — regenerating requires the C from git history).
- git mv src/rom -> rom and rust/* -> the repo root.
- Fix include_bytes! and test paths for the new layout (src/rom ->
  rom, one directory level less). No other code changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Phase 9: CI drops the C job; ignore /target

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Phase 9: rewrite README for the Rust build; REWRITE.md complete

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Phase 9: rustfmt after the path shortening

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:23:52 -04:00
Stefan ArentzandClaude Fable 5 12acc8c307 Phase 8: parity sweep, benches, docs (#198)
- Benches: cpu_bench.c and mem_bench.c ported as plain std::time
  cargo benches (harness = false, no criterion), same output formats
  so C and Rust numbers compare directly. The mem addressing helpers
  in ins.rs become pub, mirroring mem.h. Numbers recorded in
  REWRITE.md: parity or better on most paths (Rust ADC 2x faster,
  JSR 1.7x faster; ind* modes ~2.5x slower from dyn Bus dispatch —
  all orders of magnitude beyond the 1.023 MHz requirement).
- --trace wired end to end: Cpu grows a trace sink written before
  each step via the fmt.rs formatters ('PC: disassembly  state');
  both frontends open it from --trace[=file]. In C the write path
  was dead code — recorded as a documented divergence. Unit-tested
  against exact expected lines, and smoke-tested (767k lines from a
  3s replica1 run, matching the Woz monitor reset sequence).
- --strict audited: accepted but inert at runtime in both C and Rust
  (the only runtime caller of irq/nmi discards the error) — recorded
  as quirk #7.
- REWRITE.md: flag-by-flag and feature-by-feature parity checklist,
  a new 'Documented divergences' section (exact --flag parsing, no
  PC in unexpected-I/O messages, frame-sampled joystick, working
  --trace, Rust-only --screenshot, the skipped dsk.c OOB write,
  no Lua), bench numbers, Phase 8 -> Done.
- README: 'Building the Rust version' section.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:09:17 -04:00
Stefan ArentzandClaude Fable 5 fbad7d01de Phase 0: Rust workspace scaffolding + CI (#190)
* Phase 0: Rust workspace scaffolding + CI

Adds the parallel Rust workspace under rust/ per REWRITE.md:
- ewm-core (headless lib, zero dependencies) and ewm (binary,
  declares sdl2 now so CI installs SDL2 headers from day one;
  prints the same usage line as the C binary)
- rust-toolchain.toml pinning 1.91.1 with rustfmt + clippy
- GitHub Actions CI: C build job (ubuntu + libsdl2-dev) and Rust
  job (fmt --check, clippy -D warnings, test)
- Anchor the 'ewm' gitignore pattern to src/ so rust/ewm is tracked;
  ignore rust/target/
- README note pointing at REWRITE.md

The C tree in src/ is untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* CI: build the C tree on macOS

gcc on ubuntu fails -Werror with -Wimplicit-fallthrough in two.c;
src/ is frozen until Phase 9, so build C where it has always built
(macOS, as Travis did).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* CI: point clang at the Homebrew prefix via CPATH/LIBRARY_PATH

The committed Makefile does not search /opt/homebrew, so SDL2
headers are not found on the arm64 macOS runner. src/ is frozen,
so pass the paths through the environment instead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 08:42:08 -04:00
Joe Hildebrand f797e02836 Add small doc improvements for first time users (#182) 2018-01-25 16:38:53 -05:00
Stefan Arentz 83157ffe2a Removed the Apple IIe from the README 2017-01-14 20:33:45 -05:00
Stefan Arentz 1daa5c86da Update README.md 2016-12-20 09:24:41 -05:00
Stefan Arentz 3eec050286 Update README.md 2016-11-26 08:50:38 -05:00
Stefan Arentz 0bee4f7b93 Added a minimal README 2016-11-16 22:56:20 -05:00