mirror of
https://github.com/st3fan/ewm.git
synced 2026-10-24 10:02:41 +00:00
`model: apple2e` is now a real machine: a 6502 //e with the unenhanced 342-0134/0135 system ROMs and the 342-0133 video ROM, alongside the Enhanced //e (65C02, 342-0303/0304, MouseText). Kickoff naming (owner): `Model::TwoE` / `TwoType::Apple2E` = the original (the plain name), the Enhanced kept the `*Enhanced` names from the prep commit. - config: `Model::TwoE` (token `apple2e`) joins the enum; family / token / two_type / the aux + slot-0 //e validation all cover both //e models. - two.rs: `TwoType::Apple2E` + `TwoType::is_iie()`; `new_2e` takes the variant and selects (6502, unenhanced ROMs) or (65C02, Enhanced ROMs); `IouE::new` takes the CD/EF halves. The `Persist` INFO string and `--print-config` mapping gain the `apple2e` arm. Schemas regenerated. - rendering: `Scr` holds both //e glyph sets and picks by variant; the five `== Apple2E` //e-detection sites become `is_iie()` (the original and Enhanced //e render identically apart from the character ROM). The one real subtlety — the original //e is NOT a plain ROM swap. Its video ROM stores plain upper case at `$40-$5F`, but the original //e *displays* inverse upper case there (the glyphs Apple later replaced with MouseText). So `alternate_index` gains a `mousetext` flag: the Enhanced set reads MouseText straight from ROM, the original inverts the upper-case glyph — the same steady inverse glyph the primary set flashes. (`render_txt_row_80` also dropped its redundant `line_offset` arg, derived from `row`, to stay under clippy's argument limit.) Gates (all green): the Enhanced //e is byte-identical — the golden-BMP screenshots don't move; a golden pins the composed original-//e $E000-$FFFF to the unenhanced EF half (and different from the Enhanced); the bare original //e cold-boots to `]` on the 6502; and a char test proves the alternate $40-$5F is inverse upper case, distinct from Enhanced MouseText. cargo fmt / clippy -D warnings / cargo test (364 pass). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>