Retrochallenge 2011 project

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
  • 8-bit index register plus 8-bit or 16-bit field in instruction
  • indexed using X, then indirect
  • indirect, then indexed using Y

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.

 

This entry was posted in RetroChallenge. Bookmark the permalink.

Leave a Reply