2015-12-06 12:53:46 -05:00

1.3 KiB


This is the start of an Apple I emulator. Nothing really works yet beyond the CPU.

Things that work:

  • MOS 6502 core
  • Dumb terminal-style display output

Things that don't work:

  • The debugger
  • Cassette interface
  • Most of the UI

Known issues:

  • The blinking cursor will hang around if you hit carriage return while it's being displayed
  • Clicking Break and then Run will crash the emulator because I don't know how C# threading works
  • The display will sometimes lose input focus, click away from the window and back in to fix that
  • Many more

The ROM paths are hardcoded for the moment so the emulator expects these files to exist:

C:\apple\apple1.rom - Monitor ROM, 256B C:\apple\apple1.vid - Character ROM, 512B C:\apple\apple1basic.bin - Integer BASIC, available from

To load Integer BASIC from the monitor, type E000R . The prompt will switch from \ to >, indicating that you are now in BASIC mode.

Most Apple I software on the internet is available in audiocassette format and I haven't written a cassette reader yet. If you have a debug copy of MESS, you can load a file into MESS' Apple I emulator, dump the program memory, and add it to the btnLoadBinary click event with Interop.loadBinary(path, address).


M6502EmulatorDLL compiles to a DLL. Add a reference to this DLL in 6502EmulatorFrontend to compile.