ewm one now runs windowed: - ewm-core/src/chr.rs: the bitmap half of chr.c — the 2716 character ROM (3410036.bin, embedded) decodes to 7x8 glyphs indexed by Apple ][ screen code, with the same table layout as ewm_chr_init (normal $A0-$DF, inverse $00-$3F, flashing-as-inverse $40-$7F). Unit tests pin the 'A' glyph, inverse glyphs, and unmapped slots. - ewm/src/tty.rs: tty.c — 24x40 screen buffer, scrolling, blinking cursor, rendered into a 280x192 pixel buffer. - ewm/src/sdl.rs: sdl.c — pixel-format pick and green phosphor color. - ewm/src/one.rs: the SDL loop of one.c — 40 fps cycle bursts (1023000/40), the same key mapping (including one.c's TAB fallthrough that also sends DEL, and ctrl-a mapping to 0x00), Cmd-Esc reset, Cmd-Return fullscreen, and --model/--memory/ --trace/--strict flags. Extra --memory regions are supported by new One::add_ram/add_rom (dispatched LIFO like the C mem list). - ewm/src/main.rs: subcommand dispatch; two/boo report not ported. The sdl2 crate now uses the use-pkgconfig feature: linking the real SDL symbols needs the Homebrew/pkg-config library path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Emulated Woz Machine
Introduction
Two years ago between christmas and new year I wrote a tiny and incomplete 6502 emulator and turned it into an original Apple 1 emulator. It was a fun and nostalgic project to work on. I grew up with the Apple II and never had a change to see an Apple 1 in action.
A few weeks ago I decided to pick this project up again. I am extremely motivated to turn this into a high quality emulator that supports the Apple 1, Replica 1, Apple ][+ and Apple IIe. Some of that work is really close to being finished, other work will take many months of spare time hacking.
Note: A Rust rewrite is in progress; see REWRITE.md. The C build below remains the primary build until the rewrite completes.
Goals & Status
Here are some of the things I want to accomplish for each emulated machine:
CPU Emulator
6502 support65C02 supportTracing facility- Debugger
- Speed throttling
Apple 1
8K / 6502 / Classic ROM
Terminal based emulationClassic display emulation (SDL based)- Cassette interface
Replica 1
32K / 65C02 / KRUSADER ROM
Terminal based emulationClassic display emulation (SDL based)- Cassette interface
- CFFA1 Support
Apple ][+
48K / 6502
Basic Apple ][+ architecture implementation - In progressDisk II emulation - In progressDisplay Emulation - 40 Column modeDisplay Emulation - Low resolution graphicsApple Language CardJoystick Support- Audio Support
- Display Emulation - High resolution graphics - Mostly works.
Building the emulator
cd src
make
Running the emulator
From the command line:
./src/ewm two --color --drive1 disks/DOS33-SamplePrograms.dsk
