Files
Stefan ArentzandClaude Fable 5 bc0b88cb2b The original Apple ][ machine: model apple2 + Two::new_apple2 (A2)
Phase A2 of plans/20260720-01-original-apple2.md. config::Model gains
Two (serde token "apple2"), apple2 family, two_type() ->
TwoType::Apple2; that arm of new_with_slots is now a real constructor
instead of "unsupported". Two::new_apple2 builds the 48K machine on the
same TwoIo motherboard as the ][+, mapping the Integer ROM set from A1:
Programmer's Aid at $D000-$D7FF, a hole at $D800-$DFFF (unmapped ->
$00), Integer BASIC at $E000-$F7FF, Original Monitor at $F800-$FFFF.

The Monitor is non-autostart, so no emulator code is needed for the
behavioral difference: reset lands at the `*` prompt and does NOT boot
the Disk ][ in slot 6 (a ][+ would). The A1 ROM statics lose their
#[allow(dead_code)]; options_to_config now maps Apple2 -> Model::Two
(so --print-config round-trips), and the state INFO tag is "apple2".

Slot 0 (the memory-expansion socket) is deferred: wiring a Language
Card / Saturn to bank the Integer ROM is future work, so apple2 is 48K
for now. An explicit slot-0 card fails validation with a clear message;
the default ][+ layout's Language Card (inherited by a bare
`--set machine:model=apple2`) is refused at build time, pointing at the
fix. builtin:apple2 (A3) is the clean no-slot-0 path.

Gate: apple2 resets to the Monitor `*` prompt (not an autostart disk
boot), Ctrl-B enters Integer BASIC and PRINT 2+2 answers 4; the slot-0
rejection is pinned at both the validation and build stages. Schemas
regenerated for the new Model token.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 20:08:50 -04:00
..