MC6809 CPU emulator written in Python
Project description
MC6809 CPU emulator written in Python
MC6809 is a Open source (GPL v3 or later) emulator for the legendary 6809 CPU, used old homecomputer Dragon 32/64 and Tandy TRS-80 Color Computer (CoCo) built in the 1980s...
Tested with Python 3.8, 3.9, 3.10 and PyPy3
A example usage can be find in: MC6809/example6809.py
Getting started:
~$ git clone https://github.com/6809/MC6809.git
~$ cd MC6809
~/MC6809 $ ./cli.py --help
You can use the devshell as a CLI, too, e.g.: There is a simple benchmark. Run e.g.:
~/MC6809$ ./devshell.py benchmark --help
+ /home/jens/repos/MC6809/.venv/bin/python /home/jens/repos/MC6809/.venv/bin/devshell benchmark --help
Usage: profile [-h] [--loops LOOPS] [--multiply MULTIPLY]
Run a MC6809 emulation benchmark
optional arguments:
-h, --help show this help message and exit
--loops LOOPS How many benchmark loops should be run? (default: 6)
--multiply MULTIPLY Test data multiplier (default: 15)
tests
~/MC6809$ ./devshell.py pytest
profile
You can run the Python profiler against the benchmark, e.g.:
~/MC6809$ ./devshell.py profile --help
+ /home/jens/repos/MC6809/.venv/bin/python /home/jens/repos/MC6809/.venv/bin/devshell profile --help
Usage: profile [-h] [--loops LOOPS] [--multiply MULTIPLY]
Run a MC6809 emulation benchmark
optional arguments:
-h, --help show this help message and exit
--loops LOOPS How many benchmark loops should be run? (default: 6)
--multiply MULTIPLY Test data multiplier (default: 15)
TODO
- Update 'cpu6809_html_debug.py'
- Use bottle for http control server part
- unimplemented OPs:
- RESET
- SWI / SWI2 / SWI3
- SYNC
History
(Some of the points are related to DragonPy Emulator)
- dev
- Replace the
Makefile
with a dev-shell - Rename git
master
tomain
branch - Run CI tests against Python 3.8, 3.9 and 3.10
- Replace Creole README with markdown
- Replace the
- 10.02.2020 - v0.6.0
- modernize project and sources
- skip support for Python 2
- minimal Python v3.6
- 19.10.2015 - v0.5.0
- Split CPU with mixin inheritance
- Optimizing:
- remove
.get()
function calls from registers - move Condition Code Register (CC) into CPU via mixin class
- remove
- Bugfix TFR and EXG by convert_differend_width()
- Run DragonPy unittests on travis CI, too.
- 24.08.2015 - v0.4.6
- Add a "max_delay", to fix the "freeze" after a speed limit change
- rename some of the "speed limit" variables
- 21.08.2015 - v0.4.5
- deactivate 'cpu6809_html_debug.py' - TODO: update it!
- update cli unittests
- update README and code cleanup
- 10.08.2015 - v0.4.4 - bugfix and cleanup the tests
- 10.08.2015 - v0.4.3 - run unittests with nose
- 27.05.2015 - v0.4.2 - Add MC6809/example6809.py
- 26.05.2015 - v0.4.0, 0.4.1 - Split MC6809 from DragonPy
- 22.09.2014 - Remove hacked CPU skeleton generator scripts with commit ac903a8f
- 14.09.2014 - Release v0.2.0 - Add a speedlimit, config dialog and IRQ: Forum post 11780
- 05.09.2014 - Release v0.1.0 - Implement pause/resume, hard-/soft-reset 6809 in GUI and improve a little the GUI/Editor stuff: v0.1.0 see also: Forum post 11719.
- 27.08.2014 - Run CoCo with Extended Color Basic v1.1, bugfix transfer BASIC Listing with 8fe24e5...697d39e see: Forum post 11696.
- 20.08.2014 - rudimenary BASIC IDE works with 7e0f16630...ce12148, see also: Forum post 11645.
- 05.08.2014 - Start to support CoCo, too with 0df724b, see also: Forum post 11573.
- 04.08.2014 - Use the origin Pixel-Font with Tkinter GUI, see: Forum post 4909 and Forum post 11570.
- 27.07.2014 - Copyrigth info from Dragon 64 ROM is alive with 543275b, see: Forum post 11524.
- 29.06.2014 - First "HELLO WORLD" works, see: Forum post 11283.
- 27.10.2013 - "sbc09" ROM works wuite well almist, see: Forum post 9752.
- 16.10.2013 - See copyright info from "Simple6809" ROM with 25a97b6 see also: Forum post 9654.
- 10.09.2013 - Start to implement the 6809 CPU with 591d2ed
- 28.08.2013 - Fork "Apple ][ Emulator" written in Python: https://github.com/jtauber/applepy to https://github.com/jedie/DragonPy
donation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
MC6809-0.7.0rc0.tar.gz
(97.5 kB
view details)
Built Distribution
MC6809-0.7.0rc0-py3-none-any.whl
(120.7 kB
view details)
File details
Details for the file MC6809-0.7.0rc0.tar.gz
.
File metadata
- Download URL: MC6809-0.7.0rc0.tar.gz
- Upload date:
- Size: 97.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f19f5c3ddd83f5b01a857147e821b59da88d70befe8739bb94f81fe356939a7d |
|
MD5 | 32a9d6703e398b37053c3001db1e3c98 |
|
BLAKE2b-256 | 7dcb946fe723e82e032a66043007c0ccdf95cd2359c09fe6c4af84530cf5e589 |
File details
Details for the file MC6809-0.7.0rc0-py3-none-any.whl
.
File metadata
- Download URL: MC6809-0.7.0rc0-py3-none-any.whl
- Upload date:
- Size: 120.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b93189de5b57aaaa48f85ce225573b43826a894a4152d9863474510724ac45b |
|
MD5 | 9e8b6fdbe2c2dfef5a61b448424746a5 |
|
BLAKE2b-256 | c0815b7268b510078c1e5a4ac4c83a4e109eea0afc0e097d354c155a9c1e07d9 |