Stefan ArentzandClaude Fable 5 db070e561c Phase 4: Apple 1 SDL frontend
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>
2026-07-05 09:41:48 -04:00
2016-11-29 21:52:29 -05:00
2026-07-05 09:41:48 -04:00
2016-11-26 08:50:38 -05:00
2016-12-26 11:10:26 -05:00
2017-09-18 21:21:57 -04:00
2026-07-05 09:41:48 -04:00

Emulated Woz Machine

Build Status

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 support
  • 65C02 support
  • Tracing facility
  • Debugger
  • Speed throttling

Apple 1

8K / 6502 / Classic ROM

  • Terminal based emulation
  • Classic display emulation (SDL based)
  • Cassette interface

Replica 1

32K / 65C02 / KRUSADER ROM

  • Terminal based emulation
  • Classic display emulation (SDL based)
  • Cassette interface
  • CFFA1 Support

Apple ][+

48K / 6502

  • Basic Apple ][+ architecture implementation - In progress
  • Disk II emulation - In progress
  • Display Emulation - 40 Column mode
  • Display Emulation - Low resolution graphics
  • Apple Language Card
  • Joystick 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
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%