MOS6502-delphi – a MOS 6502 CPU emulator for Delphi
This is the Delphi / Pascal port of the C++ implementation for the MOS Technology 6502 CPU by Gianluca Ghettini. The code is written to be more readable than fast, however some minor tricks have been introduced to greatly reduce the overall execution time.
Main features:- 100% coverage of legal opcodes
- decimal mode implemented
- read/write bus callback
- jump table opcode selection
The port was written with minor changes to the original file: the run(N) function was replaced by a single Step() function – if you need to run more than one cycle, just put that function inside a loop.
The 6502 functional test (version 16-aug-2013) by Klaus Dormann is included.
A very basic C64 emulator is included. You need to download the BASIC ROM basic.901226-01.bin and the Kernal ROM kernal.901227-03.bin and put both files inside the ROMs folder. Install the commodore CBM.ttf font found in the VICE package.
The C64 Emulator uses a symbolic keyboard translation thus any keyboard layout should work.
This C64 emulator is just a very basic 6502/6510 emulation example and is not feature complete. Please take a look at VICE – Versatile Commodore Emulator instead.
Copyright (c) 2017 Gianluca Ghettini (C++ implementation)
Copyright (c) 2017 Dennis D. Spreen <dennis@spreendigital.de> (Delphi implementation)
Code released under the MIT license.
4 Comments to MOS6502-delphi – a MOS 6502 CPU emulator for Delphi
I really, really enjoyed coding on the Apple 2e back in the day. The 6502 was such a sweet design. Brings back memories of BASIC and Assembly language. Nice.
March 15, 2017
Hi Dennis – great work – I did a small post referring to this post – hope that was okay 🙂
March 15, 2017
Great! Sure, feel free to add the vic-20 example to the github repo!
November 1, 2018
Dennis, thank you for posting this! I’ve extended your code to support TargetFrequency (with start/stop methods for TMOS6502), using cycle counts from the data sheet. I’m also developing an Apple II emulator but the “hi-res” graphics mode is painful.
Leave a comment
About Dennis D. Spreen
Search
Recent Posts
- How to compile Lua 5.4.0 for Android as a dynamic library using Android Studio 4
- Please make inline vars usable for production – fix RSP-28892
- How to compile Lua 5.4.0 as a Mac OS X dynamic library
- How to compile Lua 5.4.0 for Linux as a shared library
- How to compile Lua 5.4.0 for Windows
- Daily Wage – a Spigot/Bukkit plugin that pays out a daily wage
- How to compile Lua 5.3.5 for Windows
- Better Collada exporter for Blender with custom properties
- MOS6502-delphi – a MOS 6502 CPU emulator for Delphi
- Pass a multidimensional array as a parameter (with a hidden caveat)
Categories
Tags
Archives
- May 2020
- March 2020
- June 2019
- March 2017
- August 2016
- July 2016
- June 2016
- January 2016
- September 2015
- February 2015
- January 2015
- October 2014
- September 2014
- August 2014
- May 2014
- March 2014
- February 2014
- November 2011
- June 2011
- February 2011
- March 2010
- September 2009
- August 2009
- July 2009
- May 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- February 2008
- June 2007
Delphi Feeds
- Select and edit directory paths in Delphi desktop applications with TTMSFNCDirectoryEdit November 20, 2024
- How To Use WebStencils To EASILY Create Modern, Professional, Superfast Websites November 19, 2024
- Creating Heatmaps in TMS FNC Maps for Delphi November 19, 2024
- Discover C++Builder 12.2 – Asia Pacific Webinar November 19, 2024
- The Horror of finding the right database! Part 2 November 18, 2024
- Using ARM runner to automatically build releases for Raspberry Pi using GitHub Actions November 16, 2024
- Signing and Validating JWTs with Private/Public Keys in Delphi with XData November 16, 2024
- QuickReport Is Back! November 15, 2024
- TMS Cryptography Pack Beta available November 14, 2024
- New Features in TMS FNC Chart: Enhanced Data Integration, Flexibility and Styling November 14, 2024
March 10, 2017