Skip to content
github-actions[bot] edited this page Apr 9, 2026 · 11 revisions

65c02-SIM Wiki

Welcome to the wiki for the 65c02 emulator for Ben Eater's memory layout.

What is this project?

This project is a full emulator of the WDC 65C02 microprocessor (the CMOS variant of the classic MOS Technology 6502), designed around the memory layout used in Ben Eater's 65c02 projects. It includes a modern ImGui-based graphical interface and a complete SDK toolchain for developing software that runs on the emulator.

Emulated components

Component Description
CPU Full WDC 65C02 processor
RAM 32 KB of random-access memory (0x00000x7FFF)
ROM 32 KB of read-only memory (0x80000xFFFF)
VIA MOS 6522 Versatile Interface Adapter (timers, I/O)
ACIA MOS 6551 Asynchronous Communications Interface (serial)
GPU Custom graphics controller with 7.5 KB of VRAM
SID Sound synthesis chip (3 oscillators + ADSR)
LCD 2×16 character LCD display
SD SD Card interface via Dedicated MMIO SPI Controller

General architecture

┌──────────────────────────────────────────────────────┐
│              SIM_65C02 (Main Executable)             │
├──────────────────────────────────────────────────────┤
│                  Frontend / GUI                      │
│     ImGui · SDL3 · OpenGL 3.3 · ImGuiFileDialog      │
├──────────────────────────────────────────────────────┤
│                   Control Layer                      │
│           AppState · Console · UpdateChecker         │
├──────────────────────────────────────────────────────┤
│           65c02_core Static Library                  │
│  ┌───────────┬────────────┬──────────────────────┐   │
│  │  CPU      │  Memory    │  Peripherals         │   │
│  │ (65c02)   │ (RAM+ROM)  │  VIA · ACIA · LCD    │   │
│  ├───────────┼────────────┼──────────────────────┤   │
│  │     GPU (VRAM 7.5 KB)  │  SID (synthesis)     │   │
│  └───────────┴────────────┴──────────────────────┘   │
├──────────────────────────────────────────────────────┤
│               SDK / Tools                            │
│  scripts/compile-bin.sh · image-to-bin.sh · midi-to-bin.sh  │
│     sdk/linker/ · sdk/msbasic/ · BIOS · Microsoft BASIC     │
├──────────────────────────────────────────────────────┤
│            Example Programs & Tests                  │
│    sdk/src/ (C + ASM)  ·  src/UnitTests/ (Google Test)  │
└──────────────────────────────────────────────────────┘

Wiki page map

  • Hardware & emulation
  • User interface
    • Frontend — ImGui windows and controls
    • Debugger — Integrated debugger and memory profiler
    • Breakpoints — Conditional breakpoints and watchpoints
    • Scripting — Python scripting engine, headless mode and API reference
  • Development & SDK
  • Building & testing

Quick start

Run the simulator (pre-compiled binaries)

  1. Download the latest release from the releases page.
  2. Also download SDK.zip if you want to develop programs/cartridges or run pre-compiled binaries.
  3. Open the simulator and select the .bin or .65c (cartridge) file you want to run.

Compile a program from the SDK

# Compile a C or assembly program
./scripts/compile-bin.sh <program_name>

# Convert an image to VRAM format
./scripts/image-to-bin.sh <image>

# Convert a MIDI file to SID assembly code
./scripts/midi-to-bin.sh <midi_file>

See the SDK page for more details.

License

The emulator C++ source code is licensed under the MIT License.
The project includes Microsoft BASIC (© 1977 Microsoft) and WozMon (© 1976 Apple Computer, Inc.) for educational purposes.

Clone this wiki locally