MOS 6502 emulator written in C
Go to file
Matthilde 3cbc0208b2 i am kinda dumb ngl 2022-12-11 22:44:03 +01:00
fake6502 first commit 2022-12-11 20:02:04 +01:00
.gitignore first commit 2022-12-11 20:02:04 +01:00
Makefile first commit 2022-12-11 20:02:04 +01:00
README.txt added testing suite 2022-12-11 20:04:28 +01:00
apple1.c first commit 2022-12-11 20:02:04 +01:00
emu6502.h first commit 2022-12-11 20:02:04 +01:00
opcodes.c i am kinda dumb ngl 2022-12-11 22:44:03 +01:00 first commit 2022-12-11 20:02:04 +01:00


    d88888b .88b  d88. db    db    dD     ooooo  .d88b.  .d888b. 
    88'     88'YbdP`88 88    88   d8'    8P~~~~ .8P  88. VP  `8D 
    88ooooo 88  88  88 88    88  d8'    dP      88  d'88    odD'
    88~~~~~ 88  88  88 88    88 d8888b. V8888b. 88 d' 88  .88'   
    88.     88  88  88 88b  d88 88' `8D     `8D `88  d8' j88.    
    Y88888P YP  YP  YP ~Y8888P' `8888P  88oobY'  `Y88P'  888888D
           MOS 6502 Emulator written in C by matthilde.

emu6502 is a MOS 6502 emulator that I wrote to learn how the 6502
works and learn 6502 assembly (and it worked very efficiently).

It does not support BCD and accurate cycle emulation because I am damn
lazy. The emulator passes Klaus' 6502 testing suite.


apple1.c      - Apple I emulator source code
emu6502.h     - The header file containing useful definitions
Makefile      - well... the makefile duh
opcodes.c     - emu6502 source code, don't ask me why i haven't
                renamed it to emu6502.c. Also contains the test
                program - Python script used to compare the reference dump with
                the test dump.
fake6502/     - fake6502 source with a main program to generate a
                reference dump.


Testing requires you to use a testing ROM, run it with the fake6502
reference then run it with emu6502. You can then use to
compare the results. It shouldn't yield any error.

WARNING: It will generate HUGE dumps (~1 GB)


To build the test binary, do
 $ make
and to build the Apple I emulator, do
 $ make apple1


As a bonus, there is also an Apple I emulator with WozMon hard-coded.
The emulator has 32KiB of RAM at 0000-7FFF and 4KiB at E000-EFFF.

This emulator also serves as an example application. Just read the
code and you'll figure out how the emulator works.

Usage: ./a1emu [BINARY]

The binary file is optional and will be loaded starting from 0xe000.
However, the binary should not be bigger than 4096 bytes due to RAM
limitation at this address space.

Whether you have specified a binary or not, the emulator will boot
into WozMon. If you have a binary in, type
    E000 R
to start your program.


I release this to the public domain, would be cool however if you still
credited me on your project.