A functional (albeit not feature complete) Commodore64 emulator, running in your terminal. This software comes as-is, and it's not meant to be production-ready. Use it at your own risk!
For the emulator, all you need is a properly set up Go installation. To run the debug client, you'll have to install Angular6+, then install the dependencies via npm.
Run make build in the root directory.
Run make run to fire up the emulator with the official C64 BASIC rom, with logs disabled.
By default, the emulator will load the official C64 BASIC ROM. If you'd like to specify a custom binary, you can use the --prg-path flag (see makefile for examples).
Run make test in the root directory
The emulator is running the built-it go profiler by default.
- You can access it by opening a browser and navigating to
http://<hostname>:8888/debug/pprof. - It's also possible to generate a flame diagram with the hotspots by running
docker run uber/go-torch -u http://<host_ip>:8888/debug/pprof -p -t=30 > torch.svg
- Start the emulator with the
-debug=trueflag, or runmake debug - Start the Angular application by running
make debug-client
For debugging, you can load and run a complete 6502 instruction set test suite by running make debug-test-suite.
Or alternatively, try one of the compiled PRGs from the _resources/prg folder (see Makefile for details).
I'd like to list a few references that I used to learn more about C64, Assembly, etc. They're all invaluable, and were massive help during development.
- 6502 instruction set test suite by Klaus Dormann
- C64 Wiki
- C64 ROM Disassembly
- Mapping the C64
- C64 Assembly programming tutorial
- C64 Devkit
- Emudore
- VirtualC64
Special thanks to Balazs Molnar for providing the initial test assembly apps & references!