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
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. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
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. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
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
- Update 'cpu6809_html_debug.py'
- Use bottle for http control server part
- unimplemented OPs:
- RESET
- SWI / SWI2 / SWI3
- SYNC
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
(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