Using KIM Clone I/O Pins

Using KIM Clone I/O Pins

Like the original KIM-1, there are 16 I/O lines on the KIM Clone that can be used for your own projects. They are brought to the connector labeled “SD SYSTEM” along the top edge of the board and were meant to plug into one of our SD Card Systems for program storage. However, they are general purpose I/O lines which can be freely used for other things if the SD system is not used.

This is a portion of the schematic showing which pins on the 6532 are connected to which pins on the connector:

Don’t worry about the signal names associated with the various lines, they are the names of those signals when an SD Card System is attached.

As you can see, there are 16 IO lines, 2 ground lines, and 2 lines with +7.5… if you want to draw power from this connector for TTL/CMOS circuits then you need to add your own +5 volt regulator! D2 prevents back-feeding power from the connector back into the KIM Clone.

On the circuit board, pins 1 and 2 are labeled but are covered by the connector, so here is a reference:


All of the odd numbered pins are on the “bottom” row while even numbered pins are on the top. Ie, the top row has pins 2, 4, 6, etc, while the bottom row has 1, 3, 5, etc. Displaying the circuit board traces on the bottom layer of the board you can clearly see the ground and power lines connected to the pins on the far right:

The datasheet for the 6532 RIOT chip is readily available on the internet, but here is an easy one:

http://archive.6502.org/datasheets/mos_6532_riot.pdf

To program the chip you basically need to set the direction of each pin of the I/O port of interest (Port A or Port B), then set the data or read the data. The base address of the chip is 1700 (hex). There are four registers:

Address Use
1700 Data register A
1701 Data direction register A. Setting a bit to 1 makes it an output bit, 0 makes it an input.
1702 Data register B
1703 Data direction register B. Setting a bit to 1 makes it an output bit, 0 makes it an input.

An Example

I needed to test experimental address decoder logic and found it was easier to just plug it into the I/O ports and write some code on the KIM Clone to simulate the addresses and display what the decoder logic did:

Port A simulates address lines A11-A16 and port B has the three decoder outputs (/RAM, /IO, /EEPROM). A small program simulates all possible values of the five address bits, displays the address, reads the decoder inputs and then displays which are active. In about an hour I was able to fix one minor bug in the decoder design and perform a full unit test on how it works. Certainly not a fancy example of using I/O ports, but sometimes it far faster to build a small circuit and use software to test it rather than building a lot of hardware and manually debugging it all.

Building a KIM Clone

After building a few dozen KIM Clone boards, I’ve gotten pretty good at optimizing my time at the bench so as to reduce the amount of debugging necessary if a board does not come up the first time.  If you want to use my hard-earned advice, feel free to follow my suggestions.

But first…

Do not install all the parts before testing!!!

It is worth repeating…

Do not install all the parts before testing!!!

And yet again in case you missed the previous two warnings…

Do not install all the parts before testing!!!

I am an engineer by profession, and we never, ever, just write thousands of lines of code or build an entire product without testing sub-assemblies, so please follow the advice from someone who has built a lot of KIM Clone boards.  One of my many jobs over the years was at a DoD project and they had a motto that is excellent: “Build a little, test a little, learn a lot.”

Parts

The thumb drive included with the bare board has a user manual with a BOM (bill of materials).  Some parts are very generic, like 1/4 watt resistors, while others are very specific, like the 7 segment LEDs.  Unless you are willing to try experiments, I suggest you get the exact components called out.  I have provided the manufacturer’s part number and usually a Digikey part number.  If you swap components it might work, but I can’t offer much help if it doesn’t.

Capacitors are all .1″ (2.54mm) lead spacing.

All resistors are 1/4 watt.

Power

The first steps are to bring up the power section.

  1. Install J1, S1, D1, VR1, C1, LED1, R1, C15, and D2.  VR1 really needs a heatsink, and it’s good to use some heat transfer paste.
  2. Once those components are installed, connect a 7.5-9 volt supply to J1 and turn on the power switch; you should see the power LED light up.  I’d suggest checking power at a few chip locations for +5.  You can do a simple check by measuring the voltage across pins 8 and 16 of IC7, and across pins 8 and 16 of IC10.  You should get +5 at both of these (ground is pin 8, +5 is at pin 16).
  3. Next, add the filter capacitors, as there are a lot of them.  C2, C7, and C5 are 1 uf, while the rest are .1 uf.  Note that these values are not critical, but should be close to what is called out.  If in doubt, going with slightly more capacitance is preferable to slightly less.

Reset/NMI Circuit

  1. Install the IC socket for IC14.
  2. Install 1K resistors at R30 and R31.
  3. Install 47K resistors at R32 and R33.
  4. Install .22 uf capacitors at C5 and C6.
  5. Install S23, the RS (reset) button.  Do not install any other buttons.

Various Analog Parts

  1. Install a .001 uf capacitor at C18.
  2. Install OSC1.  Note that one corner is square while the others are rounded.  The silkscreen indicates where the square corner goes.
  3. Install all the 3.3K resistors (12 of them, all on the left side of the board).
  4. Install the three DIP switches.  The ON position is down (towards the bottom of the board) for SW3.  The other two have ON in the up position.
  5. Install JP2, JP3, and JP4.

Chips

  1. Install all the sockets except for IC9.  We want to run some tests before doing that one.
  2. Install all the ICs.

First Run Test

  1. Now comes the fun part… let’s see if the KIM Clone is alive!
  2. Connect a USB cable between your home computer (PC, Mac, Linux, PDP-8, whatever).  You’ll need a terminal emulator program, then go into the serial port settings, select the new serial port (the KIM Clone), set the parameters to 2400 baud, 8 data bits, 2 stop bits.
  3. Set the three DIP switches as follows: SW1 to OFF (down position), SW3 to ON (up position), and SW3 to ON (down position).
  4. If you have a 6502 processor, install a jumper on JP4.  If you have a 65C02, do not install the jumper.
  5. Plug in the power supply again to the KIM Clone.
  6. Turn on power; the LED should light up.
  7. Press the RS (reset button).
  8. On your terminal emulator, press RETURN… you should get a response indicating the KIM monitor is running.

At this point, you should have a functioning KIM Clone!  I’d recommend starting a memory test and letting it run at least 30 minutes.  So let’s start the memory test by typing an X (all KIM Clone commands are capital letters), then an M, then “2000” and “CFFF”.  Sit back, make sure it completes one pass, then go relax.  It’s time for a beer.

LEDs

Now that the base system is running, it’s time to disconnect from power and the USB and start installing the LEDs.

  1. Install the 130 ohm resistors at R23 through R29.
  2. Install the 1K resistors at R8 to R13.  I’d suggest installing every other one, solder, clip the leads, then go back and install the rest.  This makes it easier to avoid solder bridges on the closely spaced leads.
  3. Install 220 ohm resistors at R14 to R19.
  4. Install Q1 to Q6.  The silkscreen shows the correct orientation for TO-92 packages.
  5. Install only LED2.  Solder one pin while pressing down to make sure the device is level before soldering more pins.  It’s hard to fix a crooked installation once all the pins have been soldered.
  6. Test the basic LED circuit by setting SW2 to the KDB (down/off) position.
  7. Reconnect power, turn on the KIM Clone.
  8. Press RS and LED2 should have some hexadecimal character.
  9. Now solder the other five LEDs following the same procedure, but you do not need to test each one.
  10. When done, turn on the KIM Clone, press RS and verify each of the LEDs has a valid hexadecimal digit.

Keyboard

  1. Install the remaining keyboard switches.  They take some pressure, but should pop in and sit flat on the PC board.  If one isn’t flat, gently pry it out and check for a bent pin.
  2. Solder all the pins.
  3. Turn on power again and press RS.
  4. By default the KIM monitor is in address mode, so type each key from 0 to F four times and verify the four left-most LEDs display the same values at the end.  This is also a good check for the LEDs to be sure all segments of all LEDs are working.

At this point you can actually play a game!  Press 1800 on the keypad, then GO.  Lunar Lander is running.

Expansion

  1. Install the socket for IC9.
  2. Install the SV1 connector.  The notch in the middle of the connector should be facing towards the bottom of the board.
  3. Install IC9 (6532).

USB LEDs

  1. Install 470 ohm resistors at R37 and R38.
  2. Install LED7 and LED8.  There is a plus sign to indicate where the longer lead goes.

Now What?

You are finished!  Go have some fun!

Fix for KIM Clone Single-Step Problem

Fix for KIM Clone Single-Step Problem

Rev 1B and rev 2 boards have a problem where single-step mode does not work. It works for old 6502s but not for newer ones nor 65C02. The solution was very simple: add a .001 uf capacitor across U16 pins 7 and 8. All assembled KIM Clones now have the modification and future revisions of the board will have the capacitor on the motherboard.

KIM Clone I/O Not Receiving Serial Data

KIM Clone I/O Not Receiving Serial Data
While testing the KIM Clone I/O Board I was using a real ASCII terminal and everything was working exactly as it should. After the board was in product a dedicated tool was written to run complete tests of the board and the serial port was no longer receiving data.

As it turns out, it is possible to set the various jumpers on the board so that the DCD line on the 6850 is floating, and it tends to float to a state where it ignores incoming data. My test jig simply loops back pins 2 and 3, leaving DCD unconnected.

The easiest solution is to pull the jumper off JP8, then place it between pins 6 and 7 on JP10. This forces the DCD to ground, which allows the receiver to work as expected.

Depending on your application, whatever is connected to the DB-9 might pull DCD to the active state which also allows the receiver to work properly.

Future revisions of the board will have a pull-down resistor on both DCD and CTS so unconnected inputs will default to the proper levels for normal operation of the ACIA.

post

KIM Clone Rev 5

After almost a year (2019)of on-again, off-again, development we finally have a new revision of the KIM Clone.

It has everything the previous versions have, but with a few improvements people have asked for (or I wanted):

Expansion bus connectors! This was widely requested. Includes most processor signals, address and data buses, along with bank decoding lines. This is intended to plug into either a prototype board (more on this later) or a motherboard (in the works).
More jumpers to enable/disable blocks of RAM from being decoded. K1-K4 each have jumpers, and 8K blocks for the entire memory map have another set of jumpers. This allows blocks to be disabled on-board, then mapped to a user-supplied circuit.
Power on reset. Not a major feature, but I didn’t like having to press RS every time I turned on my KIM-1.
Power connector and the power switch moved to the top edge of the board.

KIM-1 Clone Rev 5 User manual
KIM-1 Clone Rev 5 User manual, other version

KIM Clone Rev 4

The first version that support expansion connectors.

KIM-1 Clone Rev 4 User manual

post

KIM Clone Rev 3

Changes between Revision 2 and Revision 3 Boards

Revision 3 boards had a number of minor changes to fix know issues on Revision 2 boards. No new features or capabilities were added.
– IC19 was removed
–IC18 changed from 74AVC1T45 to 74LVC1T45
– IC16 changed to 74LS00
– IC7 and IC8 changed to 74LS145
– R37 and R38 changed to 470 ohms
– C18 was added
– IC17 had power routing fixed

KIM-1 Clone Rev 3 User manual

KIM clone versions

In 2017 Bob Applegate started to design a KIM CLone.
He went to 5 versions.
The first were enhanced KIM-1 replica’s without expansion connectors but with lots of RAM and ROM. The later versions and 5 did have expansion connectors, and a Motherboard, I/O board and Protoboard were added.

post

Multifunction and Motherboard

This board combines several existing boards into one, and puts it into a form factor meant for those who have legacy motherboards such as the MTU K-1005, or any other motherboard that brings the raw Application and Expansion connectors to third party boards. It can also be used with the Corsham Technologies KIM Motherboard.

Manual KIM-1 Multifunction and Motherboard

post

KIM-1 RAM ROM 60K board

This is a combination RAM and EPROM board with a fair amount of flexibility for adding more functionality to your KIM-1!

Features:
Fills in the KIM’s missing RAM from $0400 to $13FF, giving you 5K from $0000 to $13FF.
Has RAM from $2000 to $FFF7, selectable in 8K segments.
The top 8K ($E000 to $FFFF) can optionally be replaced with 8K of EPROM on the board (27C64 EPROM).
Includes the xKIM extended KIM-1 monitor by default.
The xKIM monitor has commands to load hex files, dump and edit memory, a memory test, plus commands to access SD card features from our SD Card System.
The extended monitor has vectors to command functions so programs written for it won’t break when new versions are introduced.
This board can be added to any KIM-1 system, but the easiest way to add it is with our I/O Board. This board comes with a ribbon cable that plugs right into the I/O Board with no mess. By default the DIP switches are set so your KIM will have 5K of RAM from $0000 to $13FF and from $2000 to $DFFF. The extended monitor is from $E000 to $FFFF.

KIM 60K RAM ROM Manual
Schematic KIM 60K RAM ROM board
Memory test program