-
Notifications
You must be signed in to change notification settings - Fork 0
Home
github-actions[bot] edited this page Feb 22, 2026
·
11 revisions
Welcome to the wiki for the 65c02 emulator for Ben Eater's memory layout.
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.
| Component | Description |
|---|---|
| CPU | Full WDC 65C02 processor |
| RAM | 32 KB of random-access memory (0x0000–0x7FFF) |
| ROM | 32 KB of read-only memory (0x8000–0xFFFF) |
| 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 |
┌──────────────────────────────────────────────────────┐
│ 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 │
│ compile-bin.sh · image-to-bin.sh · midi-to-bin.sh │
│ Linker configs · BIOS · Microsoft BASIC │
├──────────────────────────────────────────────────────┤
│ Example Programs & Tests │
│ Binaries/ (C + ASM) · UnitTests/ (Google Test) │
└──────────────────────────────────────────────────────┘
-
Hardware & emulation
- Hardware — Main emulator orchestrator and memory system
- CPU — 65c02 processor and registers
- CPU Instructions — Full instruction set reference
- GPU — Graphics processor and VRAM
- SID — Sound synthesis
- VIA and ACIA — I/O chips
- LCD — LCD display
- Save States — Serializing emulator state to binary files
-
User interface
- Frontend — ImGui windows and controls
-
Development & SDK
- Linker and Memory Layout — Linker configs, BIOS, memory map
- SDK — Compilation and conversion tools
- Binaries — Included example programs
-
Building & testing
- Building — Compile the project from source
- Unit Tests — Unit test infrastructure
- Download the latest release from the releases page.
- Also download
SDK.zipif you want to develop programs. - Open the simulator and select the
.binfile you want to run.
# Compile a C or assembly program
./compile-bin.sh <program_name>
# Convert an image to VRAM format
./image-to-bin.sh <image>
# Convert a MIDI file to SID assembly code
./midi-to-bin.sh <midi_file>See the SDK page for more details.
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.