The MCL6809 is a Motorola MC6809E cycle-exact, drop-in emulator which uses a Teensy 4.1 and a small PCB. The simple C code runs both the 6809 emulation and controls the local bus interface to the motherboard. The small PCB translates between the Teensy and MC6809E pinouts and provides a few voltage level shifters due to the fact that the Teensy IO's are 3.3V and the motherboard IO's are 5V.
The 6809 emulator timing follows the Motorola datasheet, so the core should be cycle-exact. It also supports all of the undocumented opcodes including HCF - Halt and Catch Fire.
On a Tandy Color Computer 2 it can boot Extended BASIC and run a number of programs that I typed in. It can also run cartridges with the binaries being emulated inside of the Teensy. At some point I will try some disk images once I acquire a drive or an emulator.
Once these applications were tested at the normal clock speed it was time to try some acceleration modes! The first, and easiest, step was to eliminate the original MC6809's VMA/Dummy bus cycles between most opcodes. The performance increase appeared to be close to 100% faster which was quite usable and enjoyable for most applications. The native CPU runsquite slow at under 1 Mhz, so doubling its speed made the machine more pleasant to use.
The next step was to mirror a portion of the motherboard RAM/ROM inside of the Teensy and run it at its native clock speed of 800 Mhz. This resulted in a very amusing but practically unusable amount of acceleration of over 800% faster - definitely yielding the world's fastest CoCo!
While I was developing the core I needed a test suite to exercose each of the 6809 opcodes, flags, and addressing modes of my core. As far I could tell none were available, so I ended up writing my own. Fortunately it seems to have been good enough to improve my core to its current state. Hopefully it can help other6809 core developers as well.
The MCL6809 core, the test code, and all PCB design files have been uploaded to GitHub. Please see my WordPress blog for updates.
YouTube video demo is here: