Skip to main content

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

tests codecov MC6809 @ PyPi Python Versions License GPL-3.0-or-later

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

The output of ./cli.py --help looks like:

Usage: ./cli.py [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help      Show this message and exit.                                                          │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ benchmark                 Run a MC6809 emulation benchmark                                       │
│ example                   Just run the MC6809/example6809.py example (CRC32 calculation)         │
│ profile                   Profile the MC6809 emulation benchmark                                 │
│ update-readme-history     Update project history base on git commits/tags in README.md           │
│ version                   Print version and exit                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

There is a simple benchmark. Run e.g.:

~/MC6809$ ./cli.py benchmark --help

The output of ./cli.py benchmark --help looks like:

Usage: ./cli.py benchmark [OPTIONS]

 Run a MC6809 emulation benchmark

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --loops       INTEGER  How many benchmark loops should be run? [default: 6]                      │
│ --multiply    INTEGER  est data multiplier [default: 15]                                         │
│ --help                 Show this message and exit.                                               │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

profile

You can run the Python profiler against the benchmark, e.g.:

~/MC6809$ ./cli.py profile --help

The output of ./cli.py profile --help looks like:

Usage: ./cli.py profile [OPTIONS]

 Profile the MC6809 emulation benchmark

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --loops       INTEGER  How many benchmark loops should be run? [default: 6]                      │
│ --multiply    INTEGER  est data multiplier [default: 15]                                         │
│ --help                 Show this message and exit.                                               │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

development

For development exists dev-cli, e.g.:

~/MC6809$ ./dev-cli.py --help

The output of ./dev-cli.py --help looks like:

Usage: ./dev-cli.py [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help      Show this message and exit.                                                          │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ check-code-style            Check code style by calling darker + flake8                          │
│ coverage                    Run tests and show coverage report.                                  │
│ fix-code-style              Fix code style of all cli_base source code files via darker          │
│ install                     Run pip-sync and install 'cli_base' via pip as editable.             │
│ mypy                        Run Mypy (configured in pyproject.toml)                              │
│ pip-audit                   Run pip-audit check against current requirements files               │
│ publish                     Build and upload this project to PyPi                                │
│ test                        Run unittests                                                        │
│ tox                         Run tox                                                              │
│ update                      Update "requirements*.txt" dependencies files                        │
│ update-test-snapshot-files  Update all test snapshot files (by remove and recreate all snapshot  │
│                             files)                                                               │
│ version                     Print version and exit                                               │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

Run tests, e.g.:

~/DragonPy$ ./dev-cli.py coverage
# or just:
~/DragonPy$ ./dev-cli.py test
# or with different Python versions:
~/DragonPy$ ./dev-cli.py tox

TODO

  • Update 'cpu6809_html_debug.py'
  • Use bottle for http control server part
  • unimplemented OPs:
    • RESET
    • SWI / SWI2 / SWI3
    • SYNC

Make new release

We use cli-base-utilities to generate the history in this README.

To make a new release, do this:

  • Increase your project version number
  • Run tests to update the README
  • commit the changes
  • Create release

History

(Some of the points are related to DragonPy Emulator)

  • v0.7.3
    • 2024-09-24 - Bugfix "publish" command
    • 2024-09-24 - Add "example" command to app CLI
    • 2024-09-24 - + pre-commit hook
    • 2024-09-24 - Split CLI by manageprojects updates
    • 2024-09-24 - Update requirements
    • 2023-11-29 - Update requirements + fix code style + manageprojects updates
  • v0.7.2
    • 2023-11-03 - Auto generate README history
    • 2023-11-03 - Fix code style
    • 2023-11-03 - Apply manageprojects updates + Update requirements
    • 2023-11-03 - Use verbose_check_call from cli_base
    • 2023-11-02 - Bump pip from 23.2.1 to 23.3
  • v0.7.1
    • 2023-08-05 - fix publish call
    • 2023-08-05 - Split CLI by apply manageprojects update
    • 2023-08-04 - Update requirements
  • v0.7.0
    • 2023-03-07 - Add "benchmark" and "profile" to CLI and remove dev-shell add DocTests
    • 2023-03-07 - Apply managedprojects update: Add DocTests via bx_py_utils helper
    • 2023-03-06 - Update README.md
    • 2023-03-06 - Migrate to https://github.com/jedie/cookiecutter_templates
    • 2022-09-04 - deactivate pypy3
    • 2022-09-04 - fix tests under windows
    • 2022-09-04 - fix code style
    • 2022-09-04 - replace Makefile with "dev-shell"
    • 2022-09-04 - update Makefile
    • 2022-09-04 - update README
    • 2022-09-04 - small code update
    • 2022-09-04 - remove travis config
    • 2022-09-04 - flynt updates
    • 2022-09-04 - fix flynt call
    • 2022-09-04 - replace Creole README with markdown
    • 2022-09-04 - fix pytest config
    • 2022-09-04 - update github CI
    • 2022-09-04 - add "make update"
    • 2022-09-04 - fix editorconfig
Expand older history entries ...
  • v0.6.0
    • 2020-02-10 - update CLI Tests
    • 2020-02-10 - git ignore: +/publish.log
    • 2020-02-10 - update CLI and README
    • 2020-02-10 - test release v0.6.0.dev0
    • 2020-02-10 - swap autopep8 and isort
    • 2020-02-10 - update Travis CI config
    • 2020-02-10 - fix code style
    • 2020-02-10 - update .join() statements
    • 2020-02-10 - setup poetry-publish
    • 2020-02-10 - apply pyupgrade
    • 2020-02-10 - apply code formatter
    • 2020-02-10 - f-strings convert
    • 2020-02-10 - WIP
  • v0.5.0
    • 2015-10-19 - update release info/Version
    • 2015-09-10 - try to install python on osx
    • 2015-09-03 - move Condition Code Register (CC) into CPU via mixin class
    • 2015-09-03 - rename mixin classes
    • 2015-09-03 - code cleanup
    • 2015-09-03 - rename base class
    • 2015-09-03 - Optimize: Don't return value. Because not needed in every case.
    • 2015-09-03 - do it directly
    • 2015-09-03 - remove .get() calls
    • 2015-09-03 - update README and version number
    • 2015-09-01 - OSX builds do not yet support Python :(
    • 2015-09-01 - refactor/move self._convert_differend_width()
    • 2015-09-01 - Bugfix _convert_differend_width()
    • 2015-08-31 - display report
    • 2015-08-31 - Append coverage data to .coverage
    • 2015-08-31 - WIP
    • 2015-08-31 - try to run DragonPy tests, too.
    • 2015-08-31 - obsolete since nose use
    • 2015-08-26 - WIP: speedlimit <-> normal
    • 2015-08-25 - Update README.creole
    • 2015-08-24 - WIP: Split CPU code
  • v0.4.6
    • 2015-08-24 - Update README. Release as v0.4.6
    • 2015-08-24 - change speed limit stuff.
  • v0.4.5
    • 2015-08-21 - release v0.4.5
    • 2015-08-21 - update history
    • 2015-08-21 - add cli information for run via subprocess in DragonPy
    • 2015-08-21 - use click CliRunner().invoke() for cli test
    • 2015-08-21 - add info text to cli
    • 2015-08-21 - deactivate 'cpu6809_html_debug.py' - TODO: update it!
    • 2015-08-21 - cleanup
    • 2015-08-21 - Update README.creole
    • 2015-08-20 - define the entrypoint name
    • 2015-08-10 - update PyPi/Hithub links
  • v0.4.4
    • 2015-08-10 - bugfix example to run with py2 and py3
    • 2015-08-10 - remove run tests from cli
    • 2015-08-10 - remove obsolete code (has run unittests two times)
    • 2015-08-10 - test the example, too
  • v0.4.3
    • 2015-08-10 - update from:
    • 2015-08-10 - just see that nose not fail: TODO update!
    • 2015-08-10 - bugfix ;)
    • 2015-08-10 - obsolete
    • 2015-08-10 - use click
    • 2015-08-10 - cleanup
    • 2015-08-10 - Exclude from nose
    • 2015-08-10 - start using nose
    • 2015-07-02 - add flattr link
  • v0.4.2
    • 2015-05-27 - relase as v0.4.2
    • 2015-05-27 - Add MC6809/example6809.py
    • 2015-05-27 - add CPU instance in CPU to memory
  • v0.4.1
    • 2015-05-26 - Tested with Python 2.7, 3.4 and PyPy
  • v0.4.0
    • 2015-05-26 - remove obsolete file
    • 2015-05-26 - cleanup
    • 2015-05-26 - +click +MC6809 cli entry point
    • 2015-05-26 - Add unittest for cli and add "--multiply" to benchmark
    • 2015-05-26 - fixup! add --source=MC6809
    • 2015-05-26 - add --source=MC6809
    • 2015-05-26 - remove dragonlib
    • 2015-05-26 - update coveralls token
    • 2015-05-26 - WIP: cleanup
    • 2015-05-26 - unittest run code
    • 2015-05-26 - add cli for benchmark
    • 2015-05-26 - add TODO
    • 2015-05-26 - bugfix imports
    • 2015-05-26 - remove obsolete files
    • 2015-05-26 - update setup.py
    • 2015-05-26 - fix links
    • 2015-05-26 - WIP: replace "DragonPy" -> "MC6809"
    • 2015-05-26 - rename
    • 2015-05-26 - cut README
    • 2015-05-20 - remove PyDev configs
    • 2015-05-20 - update README
    • 2015-05-20 - Update README.creole
    • 2015-05-20 - update travis-ci.org config
    • 2015-05-20 - move/rename cli code adn remove obsolete code
    • 2015-05-20 - Bugfix CLI and tests for it
    • 2015-01-28 - start to reimplement the CLI with "Click"
    • 2014-12-15 - use pygments syntax highlighter in BASIC editor
    • 2014-12-06 - Update .travis.yml
    • 2014-11-13 - 'dragonlib' as dependency
    • 2014-11-13 - outsource dragonlib:
    • 2014-11-13 - move LOG_LEVELS
    • 2014-10-08 - Bugfix for ReSt
    • 2014-10-08 - Add a setup.cfg
    • 2014-09-30 - add more info
    • 2014-09-30 - Bugfix
    • 2014-09-30 - WIP: BASIC editor: reformat code
    • 2014-09-30 - Bugfix renum tool + renum INVADER.bas
    • 2014-09-30 - PY3 bugfix
    • 2014-09-30 - Bugfix if line number > $ff
    • 2014-09-30 - Display also datum
    • 2014-09-29 - display more info on overflow error
    • 2014-09-29 - move BASIC programs
    • 2014-09-25 - Reimplement SBC09 ;)
    • 2014-09-25 - Split Op data - Squashed commit of the following:
    • 2014-09-24 - Disable some log output and update pypy win batches
    • 2014-09-24 - display_queue -> display_callback
    • 2014-09-22 - code cleanup and disable some log output
    • 2014-09-22 - move ROM load code
    • 2014-09-22 - code cleanup
    • 2014-09-22 - file rename and remove obsolete files
    • 2014-09-22 - move CPU utils
    • 2014-09-22 - move MC6809data
    • 2014-09-22 - ignore .idea/*
    • 2014-09-22 - update to new API
    • 2014-09-22 - Better default log formatter
    • 2014-09-18 - Bugfix unittest
    • 2014-09-18 - update test_run()
    • 2014-09-18 - display more info if e.g. the ROM loaded into a wrong area
    • 2014-09-18 - reimplement Multicomp 6809 !
    • 2014-09-18 - change logging setup
    • 2014-09-14 - Update README, see also:
    • 2014-09-14 - Release v0.2.0
    • 2014-09-14 - bugfix runtime
    • 2014-09-13 - display python version info in status line
    • 2014-09-13 - bugfix for Py2
    • 2014-09-13 - add python major version number to pickle files
    • 2014-09-13 - Update unittests in dragonlib, too.
    • 2014-09-13 - reimplement: Run CPU not faster than given speedlimit
    • 2014-09-13 - update unitests
    • 2014-09-13 - bugfix six.moves.xrange
    • 2014-09-13 - remove old multiprocessing files
    • 2014-09-13 - use xrange from six.py
    • 2014-09-12 - replace own lib2and3 with six
    • 2014-09-12 - WIP: refactor logging usage
    • 2014-09-12 - WIP: cpu run
    • 2014-09-11 - doesnt needed
    • 2014-09-11 - Start, refactoring memory:
    • 2014-09-09 - add more comments into PIA
    • 2014-09-08 - add "target CPU burst loops" to GUI config
    • 2014-09-07 - WIP: Implement IRQ
    • 2014-09-08 - merge code
    • 2014-09-08 - implement a callback mechanism which trigger the CPU cycles
    • 2014-09-11 - fix ReSt generation?
    • 2014-09-11 - use array.array("B", ...) for RAM/ROM memory
    • 2014-09-11 - Add callback/middleware tests to write byte, too.
    • 2014-09-11 - better tracebacks by using reraise
    • 2014-09-07 - A better speedlimit solution. TODO: Codecleanup
    • 2014-09-07 - WIP: Better speed limit
    • 2014-09-07 - add a not really good working speedlimit
    • 2014-09-05 - WIP: Release as v0.1.0
    • 2014-09-05 - include free v09.rom and vectrex ROM
    • 2014-09-05 - include scripts
    • 2014-09-05 - skip unittest if ROM files missing
    • 2014-09-05 - ignore /dist/
    • 2014-09-05 - include some more files
    • 2014-09-05 - Use python-creole to generate ReSt README on the fly, see:
    • 2014-09-05 - implemend "hard reset"
    • 2014-09-05 - Just add the alternative commented
    • 2014-09-05 - Simple loop optimizing
    • 2014-09-05 - little more information on error
    • 2014-09-04 - Work-a-round for https://bitbucket.org/pypy/pypy/issue/1858/pypy3-localeformat-d-val-1
    • 2014-09-04 - remove from future import unicode_literals
    • 2014-09-04 - Adjust CPU burst count dynamically.
    • 2014-09-04 - update unittests
    • 2014-09-04 - remove threading stuff and use only tkinter after
    • 2014-09-04 - change grammar version in PyDev
    • 2014-09-04 - bugfix string.letters vs. string.ascii_letters
    • 2014-09-03 - bugfix cli unittest
    • 2014-09-03 - change print to log output
    • 2014-09-03 - explizit close
    • 2014-09-03 - log.warn() -> log.warning()
    • 2014-09-03 - Add a simple benchmark
    • 2014-09-03 - use '{:n}'.format(val) for formating cycles/sec
    • 2014-09-03 - add .pyo
    • 2014-09-03 - bugfix if run with -OO
    • 2014-09-03 - print all catched Ops vial decorator
    • 2014-09-03 - bugfix running CoCo from CLI
    • 2014-09-03 - use: python -m unittest discover
    • 2014-09-03 - updates: supported Python versions
    • 2014-09-03 - chnages to support python 2 and 3 with the same code
    • 2014-09-03 - changes to run with python2 and future imports
    • 2014-09-03 - just run 2to3 script
    • 2014-08-31 - WIP: Just add dummy code for Vectrex
    • 2014-08-28 - Highlight line numbers and more the just one
    • 2014-08-28 - First, simple code highlighting
    • 2014-08-28 - Don't consume spaces between line number and code
    • 2014-08-28 - made BASIC Editor runable via CLI
    • 2014-08-27 - reimplement the CLI, today only for Dragon32/64 and CoCo
    • 2014-08-27 - WIP: move startup code
    • 2014-08-27 - move machine.py
    • 2014-08-27 - typo in README
    • 2014-08-27 - add history to README
    • 2014-08-27 - Bugfix: CoCo used the same default start address
    • 2014-08-26 - split ROM cfg, so that it can be loaded more than one ROM file:
    • 2014-08-26 - only code formatting
    • 2014-08-26 - raise error if perifery return None
    • 2014-08-20 - bugfix example prompt
    • 2014-08-20 - add CoCo info to README
    • 2014-08-20 - CoCo used a other default program start address than dragon
    • 2014-08-20 - WIP: Support CoCo in editor
    • 2014-08-20 - do the ' <-> :' and ELSE <-> :ELSE replacement internaly
    • 2014-08-20 - Use the new BASIC parser - TODO: Code cleanup!
    • 2014-08-20 - convert line number to int
    • 2014-08-20 - rename format functions
    • 2014-08-20 - add a BASIC parser with unittests
    • 2014-08-20 - code formating
    • 2014-08-18 - Add TODO unittests
    • 2014-08-18 - Better debug output
    • 2014-08-18 - better log output while load/inject BASIC program
    • 2014-08-18 - catch exception in unitest while running CPU
    • 2014-08-18 - Bugfix: support ON...GOTO and ON...GOSUB in renumbering
    • 2014-08-17 - add another renum unittest +code cleanup
    • 2014-08-17 - add "renumber listing" tool in editor
    • 2014-08-17 - TODO: Don't replace reversed words into tokens in comments and strings.
    • 2014-08-17 - bugfix: 'Cfg' object has no attribute 'memory_word_middlewares'
    • 2014-08-16 - Bugfix in inject BASIC program:
    • 2014-08-16 - WIP: move dump/load stuff into editor
    • 2014-08-15 - WIP: start splitting project: add "dragonlib"
    • 2014-08-14 - disable logging for run all unittests
    • 2014-08-14 - Add extract BASIC program unittest
    • 2014-08-14 - bugfix unittest init
    • 2014-08-14 - Bugfix: skip unittests if d32.rom not exists
    • 2014-08-14 - Start unittests with Dragon 32 ROM ;)
    • 2014-08-13 - transfert BASIC listing from editor into RAM worked!!!
    • 2014-08-13 - create a base test case only with some assertments
    • 2014-08-13 - move signed routines and...
    • 2014-08-12 - WIP: convert BASIC code to tokens
    • 2014-08-12 - bugfix display BASIC code:
    • 2014-08-11 - WIP: BASIC editor...
    • 2014-08-10 - WIP: GUI communication with CPU
    • 2014-08-08 - disable PUSH log in CPU
    • 2014-08-08 - add %(processName)s %(threadName)s to default log formatter
    • 2014-08-07 - calculate cycles/sec in GUI
    • 2014-08-07 - WIP: change queue stuff to work also with PyPy
    • 2014-08-07 - move some currently not useable files
    • 2014-08-07 - Bugfix: accessing cpu.cycles in CPUStatusThread
    • 2014-08-07 - add DragonPy schematic in README
    • 2014-08-07 - better Queue communication:
    • 2014-08-07 - cleanup machine start stuff
    • 2014-08-07 - move CPU into seperate thread
    • 2014-08-06 - Support CoCo keyboard input!
    • 2014-08-06 - bugfix in memory middleware
    • 2014-08-06 - read first the high-byte
    • 2014-08-06 - Update code around "reset vector":
    • 2014-08-06 - use memory.add_write_byte_middleware() and not a "own display RAM"
    • 2014-08-06 - move periphery memory hocks directly into memory
    • 2014-08-06 - rename memory callbacks to middlewares and now they can manipulate the byte
    • 2014-08-05 - WIP: Add CoCo
    • 2014-08-05 - Add info about broken CLI
    • 2014-08-04 - ./Dragon64_test.py worked!
    • 2014-08-04 - ignore *.rom files
    • 2014-08-03 - move display_cycle_interval() into CPU
    • 2014-08-03 - WIP: Split byte/word in periphery
    • 2014-08-02 - add info to Dragon Keyboard
    • 2014-08-01 - WIP: Keyboard input seems to work basicly!!!
    • 2014-07-31 - add /InputOutput/keyboard.bas
    • 2014-07-30 - WIP: Keyboard input to PIA
    • 2014-07-29 - use bit utils in CPU, too.
    • 2014-07-29 - add utilities around bit manipulations
    • 2014-07-28 - use central logger
    • 2014-07-27 - Quick work-a-round for travis
    • 2014-07-27 - WIP: Dragon Text mode with D64
    • 2014-07-25 - Add a Dragon32_test.py
    • 2014-07-24 - multiprocessing.JoinableQueue() -> multiprocessing.Queue()
    • 2014-07-24 - update console test
    • 2014-07-24 - reimplement "--display-cycle"
    • 2014-07-24 - work-a-round for double log output
    • 2014-07-24 - Change queue.get() stuff
    • 2014-07-24 - remove concept files
    • 2014-07-23 - remove obsolete text
    • 2014-07-23 - use global log
    • 2014-07-23 - use multiprocessing.JoinableQueue
    • 2014-07-23 - add names
    • 2014-07-23 - call cpu.quit()
    • 2014-07-23 - WIP: Merge Bus read & write Threads. Use thread.interrupt_main()
    • 2014-07-22 - WIP: KeyboardInterrupt
    • 2014-07-20 - WIP: sbc09 console
    • 2014-07-20 - Bugfix exit all threads/processes
    • 2014-07-20 - don't add more then one log handler
    • 2014-07-18 - unify "running" stuff
    • 2014-07-18 - rename multiprocess files
    • 2014-07-18 - code cleanup, use Simple6809Cfg as default, add '--dont_open_webbrowser'
    • 2014-07-18 - WIP: Simple6809 is running
    • 2014-07-17 - move CPU into components
    • 2014-07-17 - WIP: split concept code
    • 2014-07-17 - WIP: multiprocessing concept 2
    • 2014-07-17 - WIP: new multiprocessing concept
    • 2014-07-17 - just rename
    • 2014-07-17 - use multiprocessing under linux and subprocess unter windows
    • 2014-07-17 - WIP: Use multiprocessing to start CPU
    • 2014-07-17 - move CPU http server into a seperate thread.
    • 2014-07-17 - Bugfix CPU status
    • 2014-07-16 - remove loop stuff and use more threading
    • 2014-07-16 - Recalculate the op call burst_count
    • 2014-07-16 - That's fixed with pager ;)
    • 2014-07-16 - Use pager to get the user input.
    • 2014-07-16 - remove unused code
    • 2014-07-15 - add a console version of Simple6809 ROM without bus communication
    • 2014-07-15 - remove unused code & update README
    • 2014-07-15 - add complete DAA unittest
    • 2014-07-15 - display output is a good idea ;)
    • 2014-07-15 - Add unittest for DAA
    • 2014-07-15 - refactor DAA
    • 2014-07-15 - Bugfix DAA - TODO: Add unittests for it!
    • 2014-07-15 - moved
    • 2014-07-14 - Bugfix sbc09 unittest and add more sbc09 tests
    • 2014-07-14 - WIP: unittests with sbc09
    • 2014-07-14 - WIP: New call instruction implementation
    • 2014-07-14 - Bugfix: is needes, e.g.: in sbc09
    • 2014-07-14 - remove some test assert statements
    • 2014-07-14 - rename some pointer
    • 2014-07-14 - travis should only test master and stable
    • 2014-07-13 - remove speedup Simple6809 RAM test
    • 2014-07-13 - disable many logging lines
    • 2014-07-13 - set cc flags more than Xroar on startup
    • 2014-07-13 - merge some code in humanize.py
    • 2014-07-13 - move trace code:
    • 2014-07-13 - remove unused stuff
    • 2014-07-13 - remove "--compare_trace" adn update README
    • 2014-07-13 - Fix Travis
    • 2014-07-13 - boring in unittests ;)
    • 2014-07-13 - remo area debug and code cleanup
    • 2014-07-13 - test with pypy, too and diable coveralls
    • 2014-07-13 - Add some Dragon32 mem info
    • 2014-07-13 - Bugfix ASR/LSR: Bit seven is held constant. Catched with BASIC INT()
    • 2014-07-13 - Update unittest for TFR/EXG
    • 2014-07-13 - Bugfix: TFR and EXG
    • 2014-07-13 - add sixxie and tormod
    • 2014-07-13 - Bugfix INC
    • 2014-07-12 - add log to file
    • 2014-07-12 - add comments +typo
    • 2014-07-12 - better info on out of range writes
    • 2014-07-12 - add doctest
    • 2014-07-12 - Bugfix ADC... the last Bug???
    • 2014-07-11 - Add a working test for "FPA0_to_D"
    • 2014-07-11 - better debugging, add addr info after debug line
    • 2014-07-11 - Add some thanks...
    • 2014-07-11 - Just for devloper to play a little bit with the BASIC Interpreter.
    • 2014-07-11 - cleanup BASIC09 tests
    • 2014-07-09 - Add CLI to xroar filter script and add README
    • 2014-07-08 - update dev. tool
    • 2014-07-08 - merged "Programm Flow Instructions"
    • 2014-07-08 - add call number and datetime in HTML debug
    • 2014-07-07 - WIP: Test around BASIC floating point routines
    • 2014-07-07 - remove debug stuff and add a "debug.html" tracing generator
    • 2014-07-07 - update html opcode genrator script and add html file.
    • 2014-07-06 - WIP: 6809 data to html export
    • 2014-07-06 - disable open webbrower
    • 2014-07-06 - Add a memory callback functionality
    • 2014-07-04 - update division code
    • 2014-07-04 - add test for ROL,ROR in memory
    • 2014-07-04 - Bugfix CLI
    • 2014-07-03 - Bugfix ASR and add unittests for it.
    • 2014-07-03 - just move to group
    • 2014-07-03 - .gitignore
    • 2014-07-03 - add missing unittests after coverage run
    • 2014-07-03 - Test BASIC Interpreter works!
    • 2014-07-03 - WIP: Run tests with a alive BASIC Interpreter
    • 2014-07-03 - update cfg files
    • 2014-07-03 - add "create coverage report" in README
    • 2014-07-03 - remove syntax error in obsolete file
    • 2014-07-03 - bugfix coverage packagename
    • 2014-07-03 - change all package path, after file move
    • 2014-07-03 - moved all files into dragonpy package dir
    • 2014-07-03 - add packagename
    • 2014-07-03 - add coveralls in travis cfg.
    • 2014-07-03 - change TODO info in unittets
    • 2014-07-03 - add coveralls.io status image in README
    • 2014-07-03 - add coveralls cfg
    • 2014-07-03 - add unittest info in README
    • 2014-07-03 - add setup.py and travis cfg.
    • 2014-07-03 - better "first tim called" debug info.
    • 2014-07-03 - add unittest for SUBA indexed
    • 2014-07-03 - Update division test code
    • 2014-07-02 - WIP: ea indexed address modes
    • 2014-07-02 - Display CWAI not implemented error
    • 2014-07-02 - better error message
    • 2014-07-02 - refactor TFR, EXG stuff and add unittests
    • 2014-07-02 - add more Indexed tests
    • 2014-07-02 - typo
    • 2014-07-02 - add second division test code
    • 2014-07-02 - add seperate test for address modes
    • 2014-07-02 - group ST/LD and add unittests
    • 2014-07-02 - remove comment: it's correct
    • 2014-07-02 - move all not implemented ops
    • 2014-07-01 - bugfix EOR - TODO: Add a test for it.
    • 2014-07-01 - test with more interesting areas
    • 2014-07-01 - add test for ABX
    • 2014-07-01 - refactor ANDCC and ORCC
    • 2014-07-01 - add test for ORCC and ANDCC
    • 2014-07-01 - update example output
    • 2014-07-01 - reorder crc32 tests
    • 2014-07-01 - Bugfix for failed test.
    • 2014-07-01 - Update crc32 test. Works now!
    • 2014-07-01 - disable prints
    • 2014-07-01 - moved/grouped some ops
    • 2014-07-01 - Bugfix ROR and add unittest for it.
    • 2014-07-01 - WIP: add crc32 code
    • 2014-06-30 - Add division code test
    • 2014-06-30 - WIP: 6809 32/16 divison test
    • 2014-06-30 - nicer debug output
    • 2014-06-30 - add unittests for PSHU and PULU
    • 2014-06-30 - Start to add 6809 unittests with small assembler programs: crc16
    • 2014-06-30 - bugfix Push/Pull unittests
    • 2014-06-30 - add unittest for BLT and LBLT
    • 2014-06-30 - add unittest for SBCA
    • 2014-06-30 - move DEC test
    • 2014-06-29 - split/merge arithmetic shift tests
    • 2014-06-29 - unify: r & 0xff
    • 2014-06-29 - split arithmetic op tests
    • 2014-06-29 - comment debug output
    • 2014-06-29 - add unittest for ADDD and DECA
    • 2014-06-28 - Add test for ROL
    • 2014-06-28 - cleanup ADD and add unittest
    • 2014-06-28 - disallow out of range write into memory
    • 2014-06-28 - implement BRN, BVC and BVS
    • 2014-06-28 - Bugfix INC and add unittests
    • 2014-06-28 - add LSLA unittest
    • 2014-06-28 - split branch unittests
    • 2014-06-28 - code cleanup and add unittests for CMP
    • 2014-06-27 - Use only 1KB RAM for Simple6809, too.
    • 2014-06-27 - add hacked script for copy&paste .lst content from e.g.: http://www.asm80.com/
    • 2014-06-27 - WIP CPU control server
    • 2014-06-27 - add unittest for NEG memory
    • 2014-06-27 - Update NEG memory, TODO: add tests for it, too.
    • 2014-06-27 - Add complete range unittests for update_HNZVC_8
    • 2014-06-27 - bugfix unittest file
    • 2014-06-27 - Bugfix NEGA and NEGB and update unitests for them
    • 2014-06-27 - update unittest code
    • 2014-06-27 - update accu unittests
    • 2014-06-26 - add unittest for ORA and ORCC
    • 2014-06-26 - Add unittests for BPL and LBPL
    • 2014-06-26 - bugfix for /debug/
    • 2014-06-26 - Add unittests for LEAU and LDU
    • 2014-06-26 - Bugfix TST extended
    • 2014-06-26 - Bugfix in TST and add unittest for it
    • 2014-06-26 - Bugfix BGE
    • 2014-06-25 - add another simple test code
    • 2014-06-25 - add come cary flag tests
    • 2014-06-25 - Add Zero-Flag tests
    • 2014-06-25 - add a test code, use test config
    • 2014-06-24 - WIP: turn on DEBUG via POST request
    • 2014-06-24 - move tests TODO: Update all
    • 2014-06-24 - Better "called the first time:" info line.
    • 2014-06-24 - add info about ROMs
    • 2014-06-24 - README Update
    • 2014-06-23 - change reset debug output
    • 2013-10-31 - somthing wrong in dragon cycle/update calls ?!?
    • 2013-10-31 - commit current state:
    • 2013-10-31 - insert TODOs update README
    • 2013-10-31 - refactor:
    • 2013-10-30 - merge periphery code
    • 2013-10-30 - exit if Pygame is not installed
    • 2013-10-30 - implement MUL
    • 2013-10-30 - truncate long lines in traceback
    • 2013-10-29 - add a simple console, so it's runable without TKinter
    • 2013-10-29 - add cfg.BURST_COUNT
    • 2013-10-29 - display error info on exit
    • 2013-10-29 - update with removed logging output
    • 2013-10-29 - disable many logging output
    • 2013-10-28 - add a note about current performace
    • 2013-10-28 - pygame, numpy is not needed in every config
    • 2013-10-27 - convert chars to display, why?
    • 2013-10-27 - deactivate "sys exit" on trace difference
    • 2013-10-27 - implement SEX
    • 2013-10-27 - add update_HNZVC_16()
    • 2013-10-27 - update half-carry, though H is normaly "undefined"
    • 2013-10-27 - add hacked scb09 trace compare
    • 2013-10-27 - Bugfix CMP: update half-carry flag, too.
    • 2013-10-27 - add Lennart Benschop 6809 stuff (released under the GPL)
    • 2013-10-26 - Implement DAA, EXG and bugfix LSR
    • 2013-10-26 - bugfix activate logging later
    • 2013-10-26 - Bugfix in data: EXG need postbyte
    • 2013-10-26 - add current example
    • 2013-10-26 - display key events
    • 2013-10-25 - less debug output
    • 2013-10-25 - add LSL unittest
    • 2013-10-25 - add ANDA unittest
    • 2013-10-25 - add a unittest with a routine from origin ROM
    • 2013-10-24 - Update some CC handling.
    • 2013-10-24 - add CC unittest with DEC and update other tests
    • 2013-10-24 - Add CC unittest with INC
    • 2013-10-24 - Bugfix SUB and add a working unittest for SUB and CC flags
    • 2013-10-24 - first real working CC test with ADDA
    • 2013-10-23 - display first call
    • 2013-10-23 - Bugfix: set CC flags only if not set before
    • 2013-10-23 - don't raise if error was before and better debug messages
    • 2013-10-22 - nicer TK window
    • 2013-10-22 - some updates in unittest
    • 2013-10-22 - better trace compare
    • 2013-10-22 - use XRoar CC code
    • 2013-10-22 - Update exported 6809 data:
    • 2013-10-22 - nicer output + add screenshot
    • 2013-10-21 - wrap around value
    • 2013-10-21 - add CC tests.
    • 2013-10-21 - change debug output
    • 2013-10-21 - update unittest
    • 2013-10-21 - add --area_debug_cycles
    • 2013-10-21 - merge SUB8 and SUB16
    • 2013-10-21 - Implement BGE and BLT
    • 2013-10-21 - bugfix address modes
    • 2013-10-21 - use delimiter=';'
    • 2013-10-21 - use csv modul for export
    • 2013-10-21 - update state in README
    • 2013-10-21 - implement ANDCC
    • 2013-10-21 - bugfix get ea+m DIRECT
    • 2013-10-21 - TST need mem
    • 2013-10-21 - add new csv
    • 2013-10-21 - Add undocumented RESET opcode 0x3e
    • 2013-10-21 - data updates:
    • 2013-10-21 - remove stuff for stack pointer checks
    • 2013-10-21 - more debug info from get_ea_indexed()
    • 2013-10-21 - remove internal push/pull check:
    • 2013-10-21 - updates for new 6809 data
    • 2013-10-21 - bugfix TFR, JSR data
    • 2013-10-21 - ea is needed if write to memory
    • 2013-10-21 - * "needs_ea" is not the same for all ops
    • 2013-10-21 - needs_ea for all branch instructions
    • 2013-10-21 - add "needs_ea"
    • 2013-10-21 - rename "operand" to "register"
    • 2013-10-21 - remove "addr mode" register and stack
    • 2013-10-21 - manual changes for "reads from memory" info
    • 2013-10-21 - move HNZVC info from instruction to op code
    • 2013-10-21 - add a note about read_from_memory
    • 2013-10-20 - start to use the new data. Not ready, yet.
    • 2013-10-20 - change "-" to None
    • 2013-10-20 - generate a new op code info file
    • 2013-10-20 - merge with existing information
    • 2013-10-19 - pretty print the result, too.
    • 2013-10-19 - try to collect all data in a new way.
    • 2013-10-19 - add missing instructions
    • 2013-10-18 - add op info
    • 2013-10-17 - TODO: change 6809 data py
    • 2013-10-17 - long branches allways MEM_ACCESS_WORD
    • 2013-10-17 - more info on push/pull
    • 2013-10-17 - implement BGT
    • 2013-10-17 - stop on endless loops and merge code
    • 2013-10-17 - bugfix in get_indexed_ea()
    • 2013-10-17 - bugfix in stack count check
    • 2013-10-17 - info if mem info is not active
    • 2013-10-17 - * implement ABX, ASR, BLE, EOR, LSR, NOP, ROR, SBC, SUB16
    • 2013-10-16 - add not working CC half carry test
    • 2013-10-16 - display char in memory write
    • 2013-10-16 - bugfix missing attribute
    • 2013-10-16 - add check
    • 2013-10-16 - bugfix ORCC and ROL
    • 2013-10-16 - implement OR
    • 2013-10-16 - bugfix for EOF if XRoar log file
    • 2013-10-16 - implement ADDD
    • 2013-10-16 - add a internal stack push/pull counter with check
    • 2013-10-16 - update CC
    • 2013-10-16 - bugfix TST
    • 2013-10-16 - Merge code for BSR and JSR
    • 2013-10-16 - rename half carry method
    • 2013-10-16 - less debug if value out of range
    • 2013-10-16 - remove raise in ORCC
    • 2013-10-16 - bugfix push/pull
    • 2013-10-16 - bugfix test_TFR03()
    • 2013-10-16 - stop on wrong NEG (e.g.: jump to empty RAM area)
    • 2013-10-16 - better traceback
    • 2013-10-16 - clear hacked exception
    • 2013-10-16 - for eclipse :(
    • 2013-10-15 - Update/bugfixes because of mem_read information
    • 2013-10-15 - display cycles/sec
    • 2013-10-15 - better error info
    • 2013-10-15 - more debug info in memory access
    • 2013-10-15 - add "mem_read" and "mem_write" into MC6809 data
    • 2013-10-15 - send op address over bus, too.
    • 2013-10-14 - bugfix BLO / BHS
    • 2013-10-14 - implement AND
    • 2013-10-14 - add content in "read byte" debug info
    • 2013-10-14 - implement INC memory
    • 2013-10-14 - Bugfix: wrong mem access PSH, PUL
    • 2013-10-13 - conmpare first the registers than CC
    • 2013-10-13 - debug output for CPU cycles
    • 2013-10-13 - Display CC debug like '.F.IN..C' and compare it seperate
    • 2013-10-13 - bugfix get_direct_byte()
    • 2013-10-13 - implement PULS
    • 2013-10-13 - nicer debugger output
    • 2013-10-13 - Bugfix BSR
    • 2013-10-13 - implement ORCC
    • 2013-10-12 - bugfix in IllegalInstruction
    • 2013-10-12 - add a simple debugger
    • 2013-10-12 - implement BHI
    • 2013-10-12 - reimplement illegal ops
    • 2013-10-12 - bugfix: Hacked bugtracking only with Dragon 32
    • 2013-10-12 - add addr in error message
    • 2013-10-12 - log mem access as info
    • 2013-10-12 - hacked speedup Simple6809 RAM test
    • 2013-10-12 - Hacked bugtracking only with Dragon 32
    • 2013-10-12 - insert CC in XRoar trace line, too
    • 2013-10-12 - use sam attr than XRoar in PAGE1/2 ops
    • 2013-10-12 - use debug.error for TODOs in PIA/SAM
    • 2013-10-12 - special RAM init for Dragon.
    • 2013-10-12 - Bugfix pull_word() (e.g. RTS)
    • 2013-10-12 - Bugfix BLS
    • 2013-10-12 - bugfix LEA
    • 2013-10-11 - add two more CC test files
    • 2013-10-11 - better opcode .csc export output
    • 2013-10-11 - fix unittest
    • 2013-10-11 - add screenshots
    • 2013-10-11 - Add BASIC programm: Test CC Registers
    • 2013-10-10 - add a hacked bug tracking: xroar trace compare
    • 2013-10-10 - bugfix BEQ
    • 2013-10-10 - bugfix in indexed addressing mode
    • 2013-10-10 - bugfix init value in PIA
    • 2013-10-10 - add reset call to debug output
    • 2013-10-10 - merge read pc byte/word methods
    • 2013-10-10 - Bugfix in log output: Display PC and not ea ;)
    • 2013-10-10 - Bugfix STA/STB and CC update
    • 2013-10-10 - debug also CC registers
    • 2013-10-10 - tweak --verbosity=20 output simmilar to XRoar -trace
    • 2013-10-10 - implement "--max" cli argument
    • 2013-10-09 - add "--area_debug_active" in CLI
    • 2013-10-09 - implement ADC and BSR
    • 2013-10-09 - return 0x0, while read/write outside memory
    • 2013-10-09 - split mem info:
    • 2013-10-09 - Add unittest
    • 2013-10-09 - commit idea for CC
    • 2013-10-09 - update CPU for new MC6809_data_raw:
    • 2013-10-09 - nicer output
    • 2013-10-09 - update 6809 data:
    • 2013-10-09 - CC register updates
    • 2013-10-08 - add tests für CC.H and CC.C, but's seems to be wrong?!?
    • 2013-10-08 - Update unittest, so they are runable
    • 2013-10-07 - Bugfix COM
    • 2013-10-07 - add CLI examples into README
    • 2013-10-07 - bugfix: it's the right position
    • 2013-10-07 - commit current state: * bus I/O: split byte/word calls * bus I/O: use struct for Sending responses from periphery back to memory * split memory from cpu module * start with Simple6809Periphery
    • 2013-10-07 - * Add support for more than Dragon setups. * Start adding Simple6809 support
    • 2013-10-06 - use bus for the rest
    • 2013-10-06 - use reset() to ser CC F&I and init PC
    • 2013-10-06 - implement support for PAGE1/2 opcodes
    • 2013-10-06 - remove old code
    • 2013-10-06 - implement CMP8 and CMP16
    • 2013-10-06 - set inital PC to RESET_VECTOR == 0xb3b4
    • 2013-10-06 - implement LEAS,LEAU and LEAX, LEAY
    • 2013-10-06 - Set start stack pointer to 0xffff
    • 2013-10-06 - *wrap around 8/16-bit register values
    • 2013-10-06 - revert S to object: So it's the same API than other register objects
    • 2013-10-06 - add everywhere "m" argument
    • 2013-10-06 - * Implement LSL / ROL
    • 2013-10-06 - implement BMI, BPL
    • 2013-10-06 - update unittests (work in progress)
    • 2013-10-06 - * Implement JSR
    • 2013-10-06 - implement BLO/BCS/LBLO/LBCS and BHS/BCC/LBHS/LBCC branch
    • 2013-10-06 - bugfix direct byte - TODO: direct word
    • 2013-10-06 - Implement ST16 + Bugfix ST8
    • 2013-10-06 - reformat DocString
    • 2013-10-05 - implement BRA/LBRA
    • 2013-10-04 - stop before loop
    • 2013-10-04 - bugfix BNE and JMP
    • 2013-10-04 - start a simple memory hex viewer
    • 2013-10-03 - Add unittest for LDA, LDB, STA, STB and LDD in one test
    • 2013-10-03 - Bugfix m <-> ea missmatch in address methods
    • 2013-10-03 - * Implement ADD8
    • 2013-10-03 - add a low-level-register test
    • 2013-10-03 - remove some init debug messages
    • 2013-10-02 - start implementing SUB8
    • 2013-10-02 - * bugfix: differ between ea and memory content * Implement NEG memory
    • 2013-10-01 - starts implementing NEG, but seems to be buggy :(
    • 2013-10-01 - remove many startup debug output
    • 2013-10-01 - add name to ConditionCodeRegister for uniform API
    • 2013-10-01 - bugfix missing API update
    • 2013-10-01 - reimplement TFR
    • 2013-10-01 - implement TST
    • 2013-10-01 - * Implement BEQ * use same debug output in BNE
    • 2013-10-01 - Implement BIT
    • 2013-10-01 - implement BNE
    • 2013-10-01 - implement "relative" addressing mode
    • 2013-09-30 - add a test
    • 2013-09-30 - check mem values and make 'end' optional
    • 2013-09-30 - implement INC
    • 2013-09-30 - don't set overflow flag back to 0
    • 2013-09-24 - reimplement LD8
    • 2013-09-24 - implement DEC
    • 2013-09-24 - use new skeleton
    • 2013-09-24 - * don't split instrutions
    • 2013-09-24 - * split COM * implement COM
    • 2013-09-24 - * merge accu/CC code * all registers are objects with get()/set() method * leave unimplemented methods in skeleton class * reimplement JMP, LD16, ST8
    • 2013-09-24 - mark 8bit CC update methods
    • 2013-09-24 - rename CC calls
    • 2013-09-23 - start LD16: TODO: operand should be a object with get/set methods!
    • 2013-09-23 - implement JMP
    • 2013-09-23 - insert genereted code
    • 2013-09-23 - bigfix ;)
    • 2013-09-23 - change CSV data
    • 2013-09-23 - Use variables in "addr_mode"
    • 2013-09-23 - rename dir
    • 2013-09-23 - * insert 'cc update' calls for the most cases * better DocString * change function signature if nessesary *
    • 2013-09-23 - * split LEA * move cc bits info to INSTRUCTION_INFO
    • 2013-09-23 - add a simple CSV export
    • 2013-09-23 - Use also first and last part to link
    • 2013-09-23 - reimplement skeleton maker script
    • 2013-09-23 - * change cycles/bytes to integers * Merge PAGE and SWI
    • 2013-09-20 - merge informations, current result is MC6809_data_raw.py
    • 2013-09-20 - add hacked 6809 data scraping scripts.
    • 2013-09-19 - don't use property witch access methods...
    • 2013-09-19 - * Bugfix NEG * stop in soft witch
    • 2013-09-19 - * support JMP, NEG in all addressing modes * inc cycles in Memory class
    • 2013-09-19 - * change memory access methods to properties, so it's unify with register access * merge COM ops
    • 2013-09-19 - COM
    • 2013-09-19 - add to TODO ;)
    • 2013-09-19 - uniform debug output
    • 2013-09-18 - * move accumulator to seperate object
    • 2013-09-18 - remove register from 6309 and add some more links.
    • 2013-09-17 - * Add LD 8-bit load register from memory * move the CC frags into seperate module
    • 2013-09-17 - add "LD 16-bit load register from memory" and merge code with ST16
    • 2013-09-17 - check if ops only defined one time
    • 2013-09-17 - accumulator D, W and Q as property
    • 2013-09-17 - add ST 16-bit store register into memory
    • 2013-09-17 - add some 8-bit arithmetic operations
    • 2013-09-17 - debug write to text screen addresses
    • 2013-09-17 - add LSR
    • 2013-09-17 - add ORA
    • 2013-09-17 - bugfix indexed addressing modes
    • 2013-09-16 - add BNE
    • 2013-09-16 - make current opcode class wide. Handle list of opcodes
    • 2013-09-16 - FIXME: word and signed8 ???
    • 2013-09-16 - add copyright notes
    • 2013-09-16 - form if...elif to a dict access
    • 2013-09-16 - add LEAX indexed
    • 2013-09-16 - add Indexed addressing modes, but needs tests
    • 2013-09-16 - short debug output
    • 2013-09-16 - stop on illegal ops
    • 2013-09-15 - little-endian or big-endian ?!?!
    • 2013-09-12 - better unittest output in verbosity mode
    • 2013-09-11 - Display more mem info
    • 2013-09-11 - add ADDA extended, CMPX extended and JSR extended
    • 2013-09-11 - bugfix ROM/RAM size
    • 2013-09-11 - Change sizes, but: http://archive.worldofdragon.org/phpBB3/viewtopic.php?f=5&t=4363
    • 2013-09-11 - Add print_debug_info() to config class
    • 2013-09-11 - add op 0x00 NEG direct
    • 2013-09-11 - set cycles in ops
    • 2013-09-11 - add JMP
    • 2013-09-11 - rename CC flags
    • 2013-09-11 - setup logging
    • 2013-09-11 - move STACK_PAGE and RESET_VECTOR into cfg
    • 2013-09-11 - remove read_word_bug()
    • 2013-09-10 - cleanup and start to implement the 6809 CPU
    • 2013-08-29 - Update configs.py
    • 2013-08-27 - add some links
    • 2013-08-27 - fork and rename some files, change some settings... But will every be a Dragon 32 emulator?
    • 2013-08-20 - move files
    • 2013-08-20 - Initial commit
    • 2013-08-19 - Use MAX_HZ_VARIATION to seperate bit 1 or bit 0 display some statistics of bit detection
    • 2013-08-18 - add status while reading WAV file.
    • 2013-08-15 - add a script to convert dragon 32 Cassetts WAV files into plain text.
    • 2013-03-08 - added note about exact pip and brew commands I used
    • 2013-03-08 - improved hires colour, fixed non-ASCII key crash, fixed to work with later pygame/numpy
    • 2012-07-23 - added explicit mention of License in README
    • 2012-07-23 - added mention of numpy requirement
    • 2012-07-23 - added MIT license
    • 2012-07-23 - treat README as Markdown
    • 2012-04-18 - made applepy.py executable
    • 2011-10-01 - add --pc switch for starting run at specific program counter
    • 2011-10-01 - initialise display state variables in constructor
    • 2011-08-21 - add console control utility
    • 2011-08-21 - implement post to /memory in control requests
    • 2011-08-20 - control channel is now HTTP/REST/JSON
    • 2011-08-20 - add fileno() method to ControlHandler for better compatiblity with select()
    • 2011-08-20 - disassemble show instruction bytes
    • 2011-08-20 - reincarnate disassembler on control channel
    • 2011-08-20 - add dump memory command
    • 2011-08-20 - refactor control command processing
    • 2011-08-19 - start of cpu core control channel
    • 2011-08-19 - graceful shutdown if cpu core exits
    • 2011-08-19 - abandon startup if cpu module does not start
    • 2011-08-19 - rename --ui switch to --bus
    • 2011-08-18 - open memory files in binary mode
    • 2011-08-18 - update curses UI for socket comms
    • 2011-08-18 - use sockets for comms instead of stdio
    • 2011-08-19 - Edited README via GitHub
    • 2011-08-19 - Mention the minimal applepy_curses.py in README
    • 2011-08-16 - attempt to skip to data part of tape
    • 2011-08-16 - finish cassette support
    • 2011-08-16 - initial cassette input
    • 2011-08-14 - Separate CPU core and UI processes
    • 2011-08-15 - removed unused import
    • 2011-08-15 - adjusted speaker sample length to allow for leading edge
    • 2011-08-15 - made options...um...optional param to Memory so tests pass
    • 2011-08-15 - command line options: --rom, --ram, --quiet
    • 2011-08-15 - map left/right arrow keys to ^H/^U
    • 2011-08-15 - add flash attribute to text mode
    • 2011-08-15 - moved speaker buffer playing into the Speaker class
    • 2011-08-15 - implemented speaker; not a bad hack :-)
    • 2011-08-15 - pass in None for cycles so tests run
    • 2011-08-15 - refactored memory access so cycle can be passed in
    • 2011-08-14 - implemented cycle calculation (except for page boundary crossing)
    • 2011-08-14 - added notes on implementation that seems to give the right result
    • 2011-08-14 - more groking of why memory-based ASL, DEC, INC, LSR, ROL and ROR take what they take
    • 2011-08-14 - worked out why STA seemed an exception
    • 2011-08-14 - updated notes, fixing what seems to a mistake on the webpage I referenced
    • 2011-08-14 - typo and formatting fixes in cycle notes
    • 2011-08-14 - notes on cycle times
    • 2011-08-14 - added test_run to run CPU over a fragment of memory with no UI event handling (for automated testings)
    • 2011-08-14 - improved coloured for better whites
    • 2011-08-13 - fixed missing self
    • 2011-08-13 - refactored memory so RAM just subclasses ROM, adding write_byte
    • 2011-08-13 - whitespace nits
    • 2011-08-13 - added load_file to RAM
    • 2011-08-13 - updated README credits and status
    • 2011-08-13 - implemented HIRES colour
    • 2011-08-13 - use pregenerated character bitmaps for text mode
    • 2011-08-13 - added HIRES graphics support based on code from ghewgill: https://github.com/ghewgill/applepy/commit/5aa8ca2caa82cacdae08d0ffdbab2083b0f4c7a1
    • 2011-08-13 - always draw the spaces between scanlines
    • 2011-08-13 - in mixed mode, assume monitor is colour
    • 2011-08-13 - refactored update_text and update_lores into a single method
    • 2011-08-13 - display full width of characters
    • 2011-08-13 - character heights are really 8 not 9
    • 2011-08-13 - implemented LORES graphics
    • 2011-08-13 - make display optional (for testing)
    • 2011-08-13 - got tests working again after memory refactor
    • 2011-08-13 - ported to pygame and added bit-accurate characters
    • 2011-08-07 - if writing to text screen row group 3 just skip instead of throwing exception
    • 2011-08-07 - updated README to reflect status and give credit
    • 2011-08-07 - don't treat indices as signed in indexed addressing modes (ht: ghewgill)
    • 2011-08-07 - consistent whitespace
    • 2011-08-07 - split memory handling into separate classes for RAM, ROM and Soft Switches
    • 2011-08-07 - add disassembler, enable for dump mode
    • 2011-08-07 - don't allow writes to ROM area (this caused the ][+ ROM to hang on boot)
    • 2011-08-07 - fix typos for zero_page_y_mode in instruction dispatch table
    • 2011-08-07 - fix dump() function so it works (when uncommented)
    • 2011-08-07 - fix typo in instruction table
    • 2011-08-07 - simplify calculating signed values in adc and sbc
    • 2011-08-07 - only need to allocate 64k of memory
    • 2011-08-07 - if curses can't write a character to the screen, just skip it; fixes #1
    • 2011-08-07 - improved implementation of indirect bug across page boundaries including indexed indirects as well
    • 2011-08-07 - added unit tests
    • 2011-08-07 - fixed error in BVS
    • 2011-08-07 - whitespace nit
    • 2011-08-07 - properly use 0 and 1 not False and True for flags
    • 2011-08-07 - implemented non-accumulator version of ROR
    • 2011-08-06 - fixed inverse use of carry in SBC
    • 2011-08-06 - turns out PLA DOES affect NZ after all
    • 2011-08-06 - renamed load to load_file, added a load to load memory from byte list and refactored loading code
    • 2011-08-06 - emulate indirect mode bug in 6502
    • 2011-08-06 - reimplemented CMP, CPX and CPY based on 2006/2007 code
    • 2011-08-06 - reimplemented ADC and SBC based on 2006/2007 code
    • 2011-08-06 - apparently PLA does not affect NZ flags
    • 2011-08-06 - little BIT of simplication
    • 2011-08-06 - cleaned up ASL implementation
    • 2011-08-06 - TSX updated NZ flags
    • 2011-08-06 - fixed stray comment
    • 2011-08-06 - factored out stack pull/push
    • 2011-08-06 - refactored flags to status byte and back
    • 2011-08-06 - slight refactor of update_nz and update_nzc
    • 2011-08-06 - implemented BRK and RTI
    • 2011-08-06 - make further use of addressing mode refactor
    • 2011-08-06 - added zero_page_y_mode
    • 2011-08-06 - added wrap-around for zero_page_x_mode
    • 2011-08-06 - refactored addressing mode code
    • 2011-08-06 - added if name == "main" test for mainline
    • 2011-08-06 - simplified screen address to col/row translation based on code from 2006
    • 2011-08-06 - initial update from 2001 code

donation

Project details


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.3.tar.gz (198.8 kB view hashes)

Uploaded Source

Built Distribution

MC6809-0.7.3-py3-none-any.whl (152.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page