2019-09-13 01:32:26 +02:00
|
|
|
[](https://saythanks.io/to/irmen)
|
|
|
|
[](https://travis-ci.org/irmen/ksim65)
|
|
|
|
|
2019-09-14 17:25:41 +02:00
|
|
|
# KSim65 - Kotlin/JVM 6502/65C02 microprocessor simulator
|
2019-09-13 01:32:26 +02:00
|
|
|
|
|
|
|
*Written by Irmen de Jong (irmen@razorvine.net)*
|
|
|
|
|
|
|
|
*Software license: MIT, see file LICENSE*
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
2019-09-14 17:25:41 +02:00
|
|
|
This is a Kotlin/JVM library that simulates the 8-bit 6502 and 65C02 microprocessors,
|
|
|
|
which became very popular in the the early 1980's.
|
2019-09-13 01:32:26 +02:00
|
|
|
|
2019-09-14 17:25:41 +02:00
|
|
|
Properties of this simulator:
|
|
|
|
|
|
|
|
- Written in Kotlin. It is low-level code, but hopefully still readable :-)
|
|
|
|
- Designed to simulate hardware components (bus, cpu, memory, i/o controllers)
|
|
|
|
- IRQ and NMI simulation
|
|
|
|
- Aims to be clock cycle-precise (not yet 100% correct right now)
|
|
|
|
- Aims to implements all 6502 and 65c02 instructions, including the 'illegal' 6502 instructions (not yet done)
|
|
|
|
- correct BCD mode for adc/sbc instructions on both cpu types
|
|
|
|
- passes several extensive unit test suites that verify instruction and cpu flags behavior
|
|
|
|
- maximum simulated performance is a 6502 running at ~100 Mhz (on my machine)
|
|
|
|
|
2019-09-19 21:29:33 +02:00
|
|
|
## Documentation
|
|
|
|
|
|
|
|
Still to be written. For now, use the source ;-)
|
|
|
|
|
|
|
|
|
2019-09-19 01:22:11 +02:00
|
|
|
## Virtual machine examples
|
|
|
|
|
2019-09-19 21:29:33 +02:00
|
|
|
Three virtual example machines are included.
|
2019-09-19 01:22:11 +02:00
|
|
|
The default one starts with ``gradle run`` or run the ``ksim64vm`` command.
|
2019-09-19 21:29:33 +02:00
|
|
|
There's another one ``ehBasicMain`` that is configured to run the "enhanced 6502 basic" ROM:
|
2019-09-19 01:22:11 +02:00
|
|
|
|
2019-09-19 21:29:33 +02:00
|
|
|

|
2019-09-14 17:25:41 +02:00
|
|
|
|
2019-09-19 21:29:33 +02:00
|
|
|
Finally there is a fairly functional C64 emulator running the actual roms (not included,
|
|
|
|
but can be easily found elsewhere for example with the Vice emulator):
|
|
|
|
|
|
|
|

|