Skip to content

6809/MC6809

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Test Coverage Status on codecov.io MC6809 @ PyPi Python Versions License GPL

A example usage can be find in: MC6809/example6809.py

Getting started:

~$ git clone https://github.com/6809/MC6809.git
~$ cd MC6809
~/MC6809 $ ./devshell.py

+ /home/jens/repos/MC6809/.venv/bin/python /home/jens/repos/MC6809/.venv/bin/devshell

Developer shell - MC6809 - v0.6.0


Documented commands (use 'help -v' for verbose/'help <topic>' for details):

dev-shell commands
==================
fix_code_style      poetry   pytest     tox
list_venv_packages  publish  pyupgrade  update

MC6809 commands
===============
benchmark  profile

Uncategorized
=============
alias  help  history  macro  quit  set  shortcuts


(MC6809) benchmark

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 to main branch
    • Run CI tests against Python 3.8, 3.9 and 3.10
    • Replace Creole README with markdown
  • 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
    • 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

About

Implementation of the MC6809 CPU in Python (Extracted from https://github.com/jedie/DragonPy project)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published