1
0
mirror of https://github.com/irmen/ksim65.git synced 2024-05-29 03:41:30 +00:00
ksim65/README.md

68 lines
2.8 KiB
Markdown
Raw Normal View History

2019-09-12 23:32:26 +00:00
[![saythanks](https://img.shields.io/badge/say-thanks-ff69b4.svg)](https://saythanks.io/to/irmen)
[![Build Status](https://travis-ci.org/irmen/ksim65.svg?branch=master)](https://travis-ci.org/irmen/ksim65)
2020-02-16 23:06:14 +00:00
JCenter: [![Download from Jcenter](https://api.bintray.com/packages/irmen/maven/ksim65/images/download.svg)](https://bintray.com/irmen/maven/ksim65/_latestVersion)
2019-09-12 23:32:26 +00:00
2019-09-14 15:25:41 +00:00
# KSim65 - Kotlin/JVM 6502/65C02 microprocessor simulator
2019-09-12 23:32:26 +00:00
*Written by Irmen de Jong (irmen@razorvine.net)*
*Software license: MIT, see file LICENSE*
![6502](https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/KL_MOS_6502.jpg/320px-KL_MOS_6502.jpg)
2019-09-14 15:25:41 +00:00
This is a Kotlin/JVM library that simulates the 8-bit 6502 and 65C02 microprocessors,
2020-02-16 22:02:56 +00:00
which became very popular in the the early 1980's.
2019-09-12 23:32:26 +00:00
2019-09-14 15:25:41 +00:00
Properties of this simulator:
2020-02-21 00:57:00 +00:00
- written in Kotlin. It is low-level code, but hopefully still readable :-)
- simulates various hardware components (bus, cpu, memory, i/o controllers)
- IRQ and NMI
- instruction cycle times are simulated (however the *internal* cpu behavior is not cycle-exact for simplicity reasons)
- has all 6502 and 65c02 instructions, including many of the 'illegal' 6502 instructions (goal is 100% eventually)
2020-02-16 22:02:56 +00:00
- correct BCD mode for adc/sbc instructions on both cpu types
2019-09-14 15:25:41 +00:00
- passes several extensive unit test suites that verify instruction and cpu flags behavior
2020-02-16 22:02:56 +00:00
- simple debugging machine monitor, which basic disassembler and assembler functions
2020-02-21 00:57:00 +00:00
- provide a few virtual example machines, one of which is a fairly capable Commodore-64
2019-09-14 15:25:41 +00:00
2019-09-19 19:29:33 +00:00
## Documentation
Still to be written. For now, use the source ;-)
2020-02-16 22:54:52 +00:00
## Using it as a library in your own project
2020-02-16 23:06:14 +00:00
Ksim65 is available on the [JCenter maven repository](https://bintray.com/irmen/maven/ksim65/_latestVersion).
2020-02-16 22:54:52 +00:00
You can simply add it as a dependency to your project.
For Maven:
<dependency>
<groupId>net.razorvine</groupId>
<artifactId>ksim65</artifactId>
<version>1.7</version>
<type>pom</type>
</dependency>
For Gradle:
implementation 'net.razorvine:ksim65:1.7'
2019-09-19 19:29:33 +00:00
## Virtual machine examples
2019-09-19 19:29:33 +00:00
Three virtual example machines are included.
The default one starts with ``gradle run`` or run the ``ksim64vm`` command.
2019-09-19 19:29:33 +00:00
There's another one ``ehBasicMain`` that is configured to run the "enhanced 6502 basic" ROM:
2019-09-19 19:29:33 +00:00
![ehBasic](ehbasic.png)
2019-09-14 15:25:41 +00:00
2019-09-19 19:29:33 +00:00
Finally there is a fairly functional C64 emulator running the actual roms (not included,
2019-10-12 10:35:18 +00:00
but can be easily found elsewhere for example with the [Vice emulator](http://vice-emu.sourceforge.net/).
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.
2019-09-19 19:29:33 +00:00
![C64 emulation](c64.png)