So this is another electronics blog — I’m writing this to record my progress as I develop a series of experiments to build a 6502 computer. My goal is not to build the most efficient design, or the smallest, or to reproduce a vintage design. Instead, I’m want to build a computer that’s easy to understand, and that allows one to learn some digital logic and computer concepts along the way.
Why the 6502? Well because it’s one of the microprocessors I learned on, back in the day. I actually started with the RCA 1802, but they’re now relatively difficult to find, and anyway, I’d be hard-pressed to improve on Lee Hart’s 1802 Membership Card. Still, I learned the 6502 inside and out, first on my father’s SYM-1, then on the Apple ][. Like the 1802, it has a reasonably small instruction set, an easy to understand programming model, and undemanding electrical needs. Unlike the 1802, it’s still in production as a PDIP and also as a FPGA core, so it’s easy to get.
Getting a little deeper into the why, I’ve found when teaching Arduino seminars that even relatively experienced makers tend to treat the microcontroller as a black box, or in some cases a magic box. They often don’t have a good understanding of what the microcontroller is doing, or how they can get the board to do their bidding. In some cases, folks will buy incredibly overkill solutions, because it’s a solution they understand, when with just a little knowledge, they could build something much cheaper that would work much better. So the idea here is to disaggregate the microcontroller, and look a little deeper into what it is made of, and how it works. Armed with this knowledge, it should be easier to make magic, instead of appeasing it.
With the foregoing in mind, I have some requirements for my 6502 computer:
- It must use a current production microprocessor (Western Design Center W65C02S–14).
- It should use easy to get parts. (DigiKey, Mouser, Jameco — otherwise it’s hard to replicate.)
- It must be bootstrappable. (It shouldn’t require an EPROM programmer.)
- The RAM should be preserved with a supercap. (Cribbing from Lee Hart on this one!)
- It should use 7-segment displays and a hex keypad for initial I/O, (LEDs and switches are too painful.)
- It must be built up as a series of small projects. (for positive reinforcement and to explore concepts.)
Since the goal is to explore concepts, high performance and small size are not requirements. My computer will probably use more chips than an optimized design might, but it should be easy to understand, and the subassemblies will often be able to do things before they are integrated into the computer. This is going to be a development blog, so things may end up out of order, or a problem may get solved more than once as my ideas (and knowledge) develop.
I’m sure more requirements and design assumptions will emerge as I go through this, but that’s enough to get started. It seems to me that the most unique part of this design is how to bootstrap a 6502, so we’ll start with the display and hex keypad…