My Retrochallenge 2011 project is to rewrite the Apple 1 monitor for use on the Motorola MC6800 microprocessor. Steve Wozniak primarily intended the Apple 1 to use the MOS Technology MCS6502 microprocessor, also used in the later Apple II and Apple III, but he designed the Apple 1 board to alternatively accommodate a Motorola MC6800 microprocessor, or the pin-compatible MCS6501. The MC6800 and MCS6501 have a similar bus structure to the MCS6502, but need external clock drivers. There is no evidence that anyone has ever actually used an MC6800 in either a real Apple 1 or a replica.
It is unlikely that anyone would want to modify an original Apple 1 to try using an MC6800 processor in place of the MCS6502, but modifying a clone is quite plausible. Apple 1 clones have been made by Obtronix and by Mike Willegal (“Mimeo 1“). In the process of designing the Mimeo 1, Mike discovered that that the MC6800-specific circuitry of an actual Apple 1 printed circuit board does not match the schematics in the Apple 1 manual, and has documented this and other discrepancies on his Apple 1 Hardware Notes page.
From a programmer’s perspective, the some of the key differences between the Motorola MC6800 and MOS Technology MCS6502 are:
| feature | Motorola MC6800 | MOS Technology MCS6502 | |
|---|---|---|---|
| ALU modes | binary only | binary, BCD | |
| accumulators | two 8-bit, A and B | one 8-bit, A | |
| index registers | one 16-bit, X | two 8-bit, X and Y | |
| stack pointer | 16-bit | 8-bit (high 8 bits of address forced to $01) | |
| indexed addressing modes | 16-bit index register plus 8-bit field in instruction |
|
The MCS6502′s “indirect indexed by Y ” addressing mode is especially useful as it allows for indexing from up to 128 pointers stored in zero page. I think in most cases having that address mode more than makes up for having only one accumulator.
I think it may be somewhat tricky to implement the Apple 1 monitor functionality in only 256 bytes of MC6800 code, but I can’t be sure until I actually try.
I plan to test the new firmware on a simulator prior to burning PROMs to install on real hardware, so part of the project will be to hack together a suitable simulator. I may use M.E.S.S. as the basis for the simulator, as it already has Apple 1 support and MC6800 support, so it should require only minor modifications.