The MCL68+ is a Motorola 68000 drop-in replacement emulator. It uses the Teensy 4.1 to emulate both the microprocessor and the local bus interface at full speed. It is the most ambitious drop-in emulator I have designed to date, and I am pleased with the progress I was able to achieve.
Enclosed is a picture of the MCL68+ inside of a Macintosh 512K - the "Fat Mac" It is able to emulate a cycle-accurate 68000 and successfully run the local bus interface at the full 7.8 Mhz bus speed. This is the fastest bit-banged local bus speed that I have ever achieved using a Teensy 4.1! It required a number of tricks such as pre-calculating addresses and using arrays to map GPIO values to the Teensy's output registers. The Motorola 68000 also required more pins than were available on the Teensy 4.1, so I used a series of byte-wide latches to shift out the address and data busses.
Here is a short video which demonstrates the MCL68+ booting System 2 on the Macintosh 512K.
The progress always stops here, but I am able to move the cursor around with the mouse and reboot the machine, so the system is not locked up. I traced the error to an attempted subroutine jump to a misaligned address, but I have not had the time to trace the code backwards to find where this address comes from. Still, the fact that it performs the system configuration and checks and then boots from the disk drive indicates that most of the MCL68+ emulation is correct. Im not sure at this point is there is a problem with my emulation of some opcode, or some quirk with the Macintosh hardware which I am not accommodating...
The project source code is published on GitHub: https://github.com/MicroCoreLabs/Projects
The Teensy did not have enough GPIOs to implement each of the 68000's actual pins, so to get all 24 bits of the address bus and 16 bits of the data bus I use a byte-wide shift register using a series of five 74HCT574's I also needed to multiplex a few other signals to squeeze it all onto the Teensy's pins.