Introduction: KIM Uno - a 6502 KIM-1 Computer on Arduino
The KIM Uno is an open source replica of the classic 1976 KIM-1 computer. Pocket-sized 6502 coding!
It doubles up as a 6502 programmable calculator, plays chess, and is a pretty good machine language learning tool. Costs: about $12 in commonly available parts.
This can either be a software-only project on any Arduino, or be made into a stand-alone device using the custom PCB. You could even convert a dead calculator by fitting an Arduino Pro Mini inside to take over its display/keyboard!
This is a very simple project to build. You need 11 resistors, 24 buttons, a LED display & Arduino Pro Mini. The custom PCB (download the Gerber files) can be sent to a PCB manufacturer. Or you can buy the whole thing as a kit (hobby, not for profit) from me here.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Software Only - Program Your Arduino
First, program your Arduino with the emulator firmware. This has been tested on the Arduino Uno, Nano, Pro Mini and Mega.
Obviously, without the KIM's keypad and LED display, you can only use the serial port. Back in 1976, that was the rich man's way to operate the KIM-1, as it had a serial terminal mode. But terminals were horribly expensive, so most people had to make do with the on-board keypad and LED display.
The KIM Uno adds a second serial mode, where you see what's normally displayed on the LED display, and you hit keystrokes like Ctrl-G to simulate pressing the Go (run) button on the KIM's keypad. You switch between normal serial mode and LED/Keypad simulation mode by hitting the TAB key.
To connect to the KIM Uno, you need a terminal emulation program like puTTY. 9600 baud, 8 bits, No parity, 1 stop bit and no hardware handshaking. The Arduino IDE's serial monitor won't work.
See the KIM Uno manual (here) to learn about the machine, how to operate it and how to use the built-in software (chess, disassembler, etc).
Step 2: Hardware: Make a Pocket-sized KIM-1
There are two options to turn the KIM Uno into a stand-alone device. Either use the PCB, or wire up the Arduino to take over a dead calculator's keypad and LED display. That second option can be explored through this link. This Instructable will focus on building up the custom PCB.
For that custom PCB, there are two options as well.
- You can download the Gerber files and send them off to a PCB manufacturer like Seeedstudio or Elecrow, and obtain the few parts as described below. Cost as of September 2015 was about $26 for 5 boards.
- You can get the PCB with or without the other parts from me, as long as I have them. See this page for details. BTW - that's a non-profit hobby thing.
Step 3: Solder the 24 Tact Switches
Start with the keyboard - 24 tact switches of the standard 6mm type.
Spread the pins out 0.5mm, then push them in. To get them nicely aligned on the PCB: push in top first, then bottom, then top again. Make sure they sit snugly on the board. Solder.
Step 4: Solder the 11 Resistors
There are eight 1K resistors (brown in picture) and three 4.7K resistors (blue in picture).
Solder these on the back of the board! And don’t forget the 3rd 4.7K resistor sitting on its own above the keypad...
Step 5: Solder the Header for the Arduino Pro Mini
It's now time to solder the Arduino's header. Note that the Arduino on the back of the board overlaps with the LED display on the front. So for now, use the Arduino to hold the 3 header strips, whilst you solder the headers to the circuit board. BUT DO NOT SOLDER THE ARDUINO ITSELF YET!
- Solder the long-pinned side of the header strips to the BOARD, not the short pins.
- REMOVE the Arduino again. It was just for fitting.
- Clip off the long pins on the front side of the board, close to the board. They get in the way otherwise.
Note that there are three header strips to solder, one being just two pins long. There's space for a fourth two-pin header on the circuit board, but it is not used on the KIM Uno so you can safely ignore that one.
Step 6: Solder the LED Display
The display consists of two 4-digit blocks side-by-side. They are 3461BS 7-Segment-LED blocks.
Long description: "0.36 inch" "Common Anode" "4-digit" "7-segment LED Digits" "with decimal point".
- Make sure you mount them with the decimal points at the bottom…
- Stick the 2 blocks together with the protective tape on one of them, so they sit together without a gap on the PCB. The photo actually shows shows the gap that you'd have otherwise, not pretty.
- Make sure LED blocks do not wobble on clipped-off header pins.
- Solder 2 pins of each LED block. The top left, bottom right ones.
- Make sure LED blocks sit flush on the PCB and neatly against each other. If not, reheat pins to adjust their position on the board.
- Clip off their pins. They get in the way later on.
Step 7: Solder the Arduino Pro Mini
- Make sure it sits neatly onto the headers.
- The two ‘inside pins’ are tricky to solder. Keep soldering iron on the opposite side of the IC.
Step 8: Wrapping Up
You have three power options with the KIM Uno:
- run off the USB-Serial cable. No battery needed
- run off any 4-5V power source (3 AA batteries work great), add the little slider switch on the top left.
- run off a 9V battery (lasts forever): add the little slider switch on the top right.
Warning: do not run on multiple power sources at the same time! Switch off the battery if you use a serial cable.
Warning: do not get the + and - wires from the 5V or 9V connector wrong. But whatever you do, do NOT put the 9V battery on the 5V connector!
That's it... A case for the KIM Uno can be 3D printed from here, or you can get a case from me as part of the kit. Enjoy the power of 6502 computing!