Stefan ArentzandClaude Fable 5 fec25cfec8 Add 4 window pixels of padding around the screen contents (#210)
* Add 4 window pixels of padding around the screen contents

Move the canvases from emulated-pixel to window-pixel coordinates and
draw the screen texture at an explicit 3x rect inset by PAD, so the
contents no longer touch the window border. The dst rect stays an exact
integer 3x of the texture, keeping the nearest-neighbor crispness.

In the ][+ this also stops the status-bar mode from stretching the
screen over the bar strip before overdrawing it: the screen rect is now
mode-independent and the bar sits below it inside the side padding.

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

* Make the window padding configurable via EWM_WINDOW_PADDING

Defaults to 4; missing or unparsable values fall back to the default.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 21:04:38 -04:00
2016-11-29 21:52:29 -05:00
2026-07-05 11:38:04 -04:00
2016-12-26 11:10:26 -05:00

Emulated Woz Machine

EWM is an emulator for the machines Steve Wozniak built: the Apple 1, the Replica 1 and the Apple ][+. It started life many years ago as a tiny 6502 emulator written between christmas and new year, and has since grown into a full emulator with Disk II support, graphics, and sound.

Note: EWM is a hobby project and still under development. Things may be incomplete, quirky, or broken — bug reports and pull requests are welcome. See REWRITE.md for the project's verification gates and a list of known quirks and deliberate divergences.

The EWM bootloader menu

Replica 1 running KRUSADER Apple ][+ booting DOS 3.3
Replica 1 — KRUSADER 1.3 from the Woz Monitor Apple ][+ — booting the DOS 3.3 sample programs disk
Frogger Bandits
Frogger in color hi-res graphics Bandits by Sirius Software

What's emulated

  • Apple 1 — 6502, 8KB RAM, Woz Monitor
  • Replica 1 — 65C02, 32KB RAM, KRUSADER assembler ROM
  • Apple ][+ — 6502, 48KB RAM, Apple Language Card, Disk II with two drives, a slot 7 hard drive for 32MB ProDOS block images (boots Total Replay!), 40-column text, low-resolution and high-resolution graphics (color or green monochrome), speaker sound, joystick paddles and buttons

Requirements

  • A Rust toolchain (the pinned version is in rust-toolchain.toml; rustup picks it up automatically)
  • SDL2 — brew install sdl2 on macOS, apt install libsdl2-dev on Debian/Ubuntu

Building

cargo build --release

Running

Running EWM with no arguments opens the bootloader, a menu where keys 1/2/3 select the machine to start:

cargo run --release

Or start a machine directly:

# Apple ][+ with color graphics and the DOS 3.3 sample programs disk
cargo run --release -- two --color --drive1 disks/DOS33-SamplePrograms.dsk

# Apple ][+ booting Total Replay from a ProDOS hard drive image
cargo run --release -- two --color --hdd "disks/Total Replay v6.0.1.hdv"

# Replica 1 (Woz Monitor + KRUSADER)
cargo run --release -- one --model replica1

# Classic Apple 1
cargo run --release -- one --model apple1

Each subcommand accepts --help for all options. Useful keys while the emulator runs:

Key Action
Cmd-R Reset the machine
Cmd-Return Toggle fullscreen
Cmd-P Pause (Apple ][+)
Cmd-I Toggle the status bar with drive lights (Apple ][+)

There are also headless terminal consoles, handy for quick experiments without a window:

cargo run -p ewm --example one                                  # Woz Monitor
cargo run -p ewm --example two -- disks/DOS33-SystemMaster.dsk  # AppleSoft / DOS 3.3

Testing

cargo test

This runs the full verification suite: the Klaus Dormann 6502 and 65C02 functional tests, golden instruction traces, headless machine boot tests, a complete DOS 3.3 boot with CATALOG, and a golden screenshot comparison. The cc65 assembly sources under tests/ are manual test programs for the machines themselves and are not part of the automated suite.

History

EWM was originally written in C and was ported to Rust in 2026 — the full phase-by-phase plan, parity checklist, and benchmark numbers are preserved in REWRITE.md. The original C implementation lives in the git history.

License

MIT, as declared in Cargo.toml (the same license the original C carried in its source headers).

S
Description
Emulated Woz Machine - Apple ][+ Emulator
Readme
4.4 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 95%
Lua 1.8%
Makefile 1.5%
Assembly 1.4%
CMake 0.3%