$ PHP-6502 Emulator

View on GitHub →

A fully functional 6502 microprocessor emulator written in PHP and distributed as a Composer library. Build custom 6502-based systems with two distinct CPU core implementations - the original MOS 6502 and the enhanced WDC 65C02.

install

composer require andrewthecoder/6502-emulator

### features

  • - Dual CPU Variants - MOS 6502 (56 instructions) and WDC 65C02 (70 instructions)
  • - Hybrid Execution - JSON-driven instruction definitions with custom PHP handlers
  • - Interrupt Support - NMI, IRQ, and RESET with proper edge/level triggering
  • - CPU Monitoring - Built-in debugging tools with instruction tracing and cycle counting
  • - Full Documentation - Comprehensive PHPDoc annotations for IDE support

### usage

The emulator is designed to be embedded in your own projects. To build a custom 6502-based system:

  1. Create a custom bus class implementing BusInterface
  2. Instantiate your preferred CPU variant (MOS6502 or WDC65C02)
  3. Load machine code and call executeInstruction() in a loop

### project structure

src/Core/ - Shared interfaces (BusInterface, RAMInterface, etc.)
src/MOS6502/ - Original 6502 CPU implementation
src/WDC65C02/ - Enhanced 65C02 CPU variant
tests/ - Unit test suite

### development

./vendor/bin/phpunit - Run tests
./vendor/bin/phpstan analyse src - Static analysis

### learn more

Full documentation, examples, and detailed instructions are available in the README.