Kotlin 6502/65C02 microprocessor simulator
Go to file
Irmen de Jong b3334a23b9 forgot to checkin the bus changes for memory mapping 2020-02-05 01:27:04 +01:00
.idea clean up 2020-02-02 19:33:57 +01:00
c64testprgs added c64 test programs 2020-02-01 17:19:11 +01:00
gradle/wrapper updated gradlewrapper 2020-02-02 13:41:24 +01:00
src forgot to checkin the bus changes for memory mapping 2020-02-05 01:27:04 +01:00
.gitignore virtual machine 2019-09-16 01:17:54 +02:00
.travis.yml trigger 2019-09-13 01:43:58 +02:00
LICENSE fix disassembler address display 2019-09-14 17:25:41 +02:00
README.md implemented sprites, code reformatting 2019-10-12 12:35:18 +02:00
build.gradle.kts v1.5 2020-02-01 17:48:42 +01:00
c64.png added Commodore-64 emulator 2019-09-19 21:29:33 +02:00
ehbasic.png added Commodore-64 emulator 2019-09-19 21:29:33 +02:00
gradle.properties clean up 2020-02-02 19:33:57 +01:00
gradlew updated gradle wrapper to 6.1.1 2020-01-26 18:28:04 +01:00
gradlew.bat initial 2019-09-11 02:17:59 +02:00
settings.gradle.kts initial 2019-09-11 02:17:59 +02:00

README.md

saythanks Build Status

KSim65 - Kotlin/JVM 6502/65C02 microprocessor simulator

Written by Irmen de Jong (irmen@razorvine.net)

Software license: MIT, see file LICENSE

6502

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.

Properties of this simulator:

  • Written in Kotlin. It is low-level code, but hopefully still readable :-)
  • Designed to simulate various hardware components (bus, cpu, memory, i/o controllers)
  • IRQ and NMI simulation
  • Aims to simulate correct instruction cycle timing, but is not 100% cycle exact for simplicity
  • 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
  • provide a few virtual example machines, one of which is a Commodore-64

Documentation

Still to be written. For now, use the source ;-)

Virtual machine examples

Three virtual example machines are included. The default one starts with gradle run or run the ksim64vm command. There's another one ehBasicMain that is configured to run the "enhanced 6502 basic" ROM:

ehBasic

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. The emulator supports character mode, bitmap mode (hires and multicolor), hardware sprites and various timers and IRQs. It's not cycle perfect, and the video display is drawn on a per-frame basis, so raster splits/rasterbars are impossible. But many other things work fine.

C64 emulation