Deciphering the DSKY keyboard module

Keyboard Module

Photo of the Apollo DSKY Keyboard Module Credit: Steve Jurvetson

The photo on the right is the only photo that I know of that clearly shows the Apollo DSKY keyboard module. This photo was taken by Steve Jurvetson of the inside of his privately owned Block II DSKY. Even though the photo is of a quite high resolution, it only shows the module from one side and much of the wiring is obscured.

When I first saw this photo, I didn’t regard it as very important apart from the fact that it had a lot of detail. I never thought that it would provide the key (pun intended) to deciphering the DSKY keyboard module.

As far as I know, there are no circuit diagrams or any detailed documentation for this little module. I did find a few diagrams showing how the keys were connected and one “circuit diagram” showing how this module connected to the actual Apollo Guidance Computer (AGC). In addition, there are a number of technical documents describing the functionality of the keyboard, and by definition the keyboard module. We know that there were a total of 19 keys of which 18 keys were encoded into unique 5 bit binary numbers. We also know that the computer was interrupted (KEYRUPT1 and KEYRUPT2) whenever a key is pressed. The available documentation describes in general how the DSKY keyboard functioned, but apart from that, we just don’t know much more.

The following excerpt from an MIT document called “KEYBOARD AND DISPLAY, PROGRAM AND OPERATION” is an example of the typical documentation available. It is fairly detailed and provides a lot of background information, but lacks the actual circuit info.

The Keyboard contains the following characters: VERB, NOUN, +, -, the numerical characters from 0 through 9, CLEAR, ENTER, RESET, and KEY RELEASE. Each of the characters is represented by a 5-bit binary code (see Appendix I). The Keyboard code is transmitted to the computer over a 5-wire link and is placed into bits 1 – 5 of the appropriate input channel.

This capture from another MIT document shows the inside of DSKY with the decoding modules and power supply section removed. In the lower section, we can see the key switches and wiring running up to the keyboard module on the upper right section.

Disassembled view of the DSKY showing the key switches and the keyboard module.

Disassembled view of the DSKY showing the key switches and the keyboard module.
[1029 – MIT’s Role in project Apollo, volume III (R-700)]

The key switches had three terminals (single pole, double throw types) with two additional terminals for the key caption’s Electroluminescent (EL) backlight. The “normally closed” (NC) terminals of each keyboard switch were daisy chained to the next key’s “common” input. This way, when a key was pressed, it would physically disconnect all the keys above it. Nifty techniques like this were abundant on the Apollo program and shows how the engineers solved complex problems with simple, straightforward solutions.

Key switch wiring showing how the 19 keys were connected.

From the diagram on the right, you can also see that each key were encoded to a unique 5-bit binary number. The encoding was performed with diodes connecting the output of each key switch to one or more of the 5 binary outputs.

You will notice that on the left hand side of the diagram, a positive 28VDC signal is fed into the switch array. This gives us an important clue as to how the diodes were connected. For a key to produce a binary “1” on any of the 5 output lines, a (forward conducting) diode must be placed between the key’s output and the 5-bit output bus.

By counting the number of “ones” in all the key codes, we can surmise that at least 42 diodes were used in this circuit. Note that we can safely assume that no diodes were used for “zeros” as the computer itself would probably pull the 5 data lines low internally. (This will become evident at a later point).

With no keys pressed, the 28VDC power signal would pass through all the keys’ normally-close (NC) contacts and feed into the “TRAP RESET” line. Absence of the 28VDC signal on the “TRAP RESET” line indicates that at least one of the keys had been pressed. As we will see later, there was a very good reason why this signal was called “TRAP RESET” and this will lead us to another interesting discovery.

It is also important to note that the “Proceed” (PRO) key at the top of the diagram were connected in a different way than the rest of the key switches. It is well documented that the Proceed key were connected to a dedicated interrupt input on the AGC. This allowed the computer to react quicker to a Proceed request.

In some older documents, the Proceed key was actually called the “Standby” key, but later documentation sometimes referred to this key as “PROCEED/STANDBY”. This key actually serves two functions, so the latter name probably better reflects its true function.

The following two photos shows two DSKYs with different key labeling for the Proceed key. (On the left image you can see the exposed Electroluminecent (EL) back-light for the “0” key where the engraved key cap became dislodged).

Block II DSKY

As mentioned before, the outputs from 18 of the DSKY keys were encoded into unique 5-bit binary numbers. Apart from the numerical keys, these numbers seems to be arbitrarily allocated and no real effort was made to optimize the code to reduce the number of diodes used. The all-zeros code was excluded as it is used to indicate that no key was pressed.

The key codes appear in various documents and can also be found in the AGC sofware listings. The following table lists the codes in the same order as shown in the “key switch wiring diagram” above. The key order in the diagram indicates the relative key priority, but is another important clue. I assume the actual circuit diagrams (which are either lost or misplaced) would have used this same order and would have been used by the labs to construct the keyboard module, so using this key ordering seemed like a good starting point.

Key Switch Key Code
PRO   – 
RSET 10010
9 01001
8 01000
7 00111
6 00110
5 00101
4 00100
3 00011
2 00010
1 00001
0 10000
11011
+ 11010
CLR 11110
ENTR 11100
NOUN 11111
VERB 10001
KEY REL 11001

 

Before we can carry on any further, I would like to introduce one more technical document. I found this document purely by accident in an abandoned directory on a web server. This document was donated by one of the key designers of the Apollo Guidance Computer, Eldon C. Hall. and has since been republished on klabs.org.

LGC/DSKY Interface Control Document

Interface specification between the Apollo Guidance Computer and the DSKY keyboard

At a first glance, one might be mistaken in thinking that this is an actual circuit diagram. The truth is that this is only a simplified cable wiring diagram used by the Apollo technicians to manufacture and test the cable harness between the DSKY and the AGC. The components and switches are drawn as a way to visualize the current flow between the AGC and the DSKY. For instance, all the 510Ω resistors on the left side of the circuit are actually the same physical component!

This doesn’t mean that this circuit is useless to us. Far from that in fact. What we learn from this diagram is:

  1. The physical pinouts of the keyboard signals on the DSKY connector (J9).
  2. There is a single 510 Ω resistor on the keyboard power line before the switches.
  3. There are five 510 Ω resistors placed in series after the diode encoders (one for each key code line).
  4. The PRO key (PROCEED/STANDBY) has a 510 Ω resistor after the switch.
  5. The “TRAP RESET” (called KEYBOARD RESET above) has a series 510 Ω resistor.
  6. There is a strange signal called “CAUTION LIGHT RESET” connected to the same switch that also connects to the “TRAP RESET” signal. This signal line has both a diode and a 510 Ω resistor in line.

The “CAUTION LIGHT RESET” signal isn’t shown on any diagram and does not seem to be used on the AGC at all. It would seem that the DSKY made provision for another key interrupt output (similar to the PROCEED key) that was never implemented on the AGC. On closer inspection, it became clear that the “CAUTION LIGHT RESET” signal is nothing other than the standard (documented) “RSET” key output connected directly to the AGC through an additional diode + resistor. (We will find more evidence for this signal after mapping out all the wires on the Keyboard Module).

The following circuit diagram shows what I believe is the correct wiring of the DSKY Keyboard Module. The yellow area is located inside the keyboard module, while the rest of the circuit represents the wiring of the keys and the DSKY external connector (J9). The external signals (P32, P38, P40, etc.) are named in accordance with the actual Apollo documentation. The pinouts on the J9 connector is also shown.

Reverse engineered Keyboard Module circuit diagram

Reverse engineered Keyboard Module circuit diagram

The Keyboard Module was manufactured using the “cordwood” construction method. This method for building high density circuits was common in the 1950s and 1960s and often used in the Apollo space program to “miniaturize” analog electronic circuit boards.

A circuit assembly consisted of two boards separated by spacers with the components sandwiched vertically between the two boards. The component wiring was done on the outsides of the boards using either PCB traces or welded wires (as in the Keyboard Module).

The completed boards was normally potted after assembly to prevent vibration stresses and possible short circuiting in zero gravity due to floating metal bits.

Looking closely at the photo of the Keyboard Module again, you will notice that all the components are mounted in 14 columns with 5 rows. It is not accidental that the keys also output 5 binary digits, so let’s assume that the rows in the module match the digits in the Key Code.

Keyboard Module

Starting from the right hand side of the module and working your way to the left, you will notice:

  • Column 14 has wire 30 connected to the first and last row (“A” and “E”)
  • Column 13 has wire 29 connected to the first, second and last rows (“A”, “B” and “E”)
  • Column 12 has the completely bare wire 26 connected to all five rows (“A” to “E”)

Consulting our table of key codes above, you will see that the last key in the table (KEY REL) has a pattern of ones that match wire 29 (column 13). Likewise, the pattern of ones in the “VERB” key code match wire 30 (column 14) and the “NOUN” (with all ones) match wire 26 (column 12).

This is no coincidence and we can find all the diodes for all the keys on the DSKY in this way. As an exercise, you can try to see how many other key codes you can match to wires. 😉

If you have wondered why the “KEY REL” and “VERB” keys were swapped around, there is a very good explanation for that. Looking closely at the left side of the module, you will see a large round hole of sorts. This is probably the hole for the standoff that separated the top and bottom boards. It is not clearly visible on the photo, but there is probably another hole like this on the right hand side of the module. This hole is larger that the holes for the components, so it effectively occupies the space of three component holes. This means that the first and last columns in the module had only two component holes each. The connections for the “KEY REL” and “VERB” keys were swapped around on the module, because the “VERB” key had “1”s that matched the only available holes in column 14.

I started matching diodes to keys by looking at the keys that had multiple binary ones in their code codes. All the keys matched quite easily, except for the “RSET” key with a key code of “10010”. I then found that wire 4 connected to three components in column 2. Since this was the only possible match for the “RSET” key, I had to assume that this wire was connected to “RSET” but that another component was also connected to “RSET”. This all started making sense when I discovered the “CAUTION LIGHT RESET” signal (see wiring diagram above).

I then turned to the keys with only a single binary one. These diodes were more difficult to match as there were often more than one possible solution. When I added the 510 Ω resistors, many of the options were however reduced to a single solution. Where there were still more than one solution, I simply followed the mapping sequence of the diodes that had only one solution.

After adding all of the remaining resistors and diodes, I was left with three unknown wires. As much as I tried, I couldn’t account for these connections and was on the brink of giving up when I had a “light bulb” moment. I initially assumed that there were wires connected to both sides of the keyboard module. When I calculated the number of wires that would be connected to the bottom of the module, it came to only three wires. These were all connected to single resistors (see R7, R8 and R9 in my circuit diagram). As it turned out, the three unknown wires were actually just bare wires going through the module to the bottom and connecting to the other sides of the single resistors. Two of the “unknown” wires were located right next to the single resistors (which made sense) and I could match the third wire quite easily by swapping this last resistor with another component located next to an “unknown” wire.

We don’t have any pictures of the bottom board in this assembly, but it is not difficult to visualize that there are five long parallel wires connecting the common (cathode) sides of the diodes together with the key code output resistors. In addition, there are also four separate circuits containing the diode (D1) and resistor (R6) (for the “CAUTION LIGHT RESET” signal) as well as the single resistors R7, R8 and R9.

The following table depicts the wiring on the underside of the keyboard module. All the items with the same coloring are interconnected on the bottom board. The grey blocks do not contain any components.

A B C D E
1 R1
2 X R2 X X R5
3 R7 9 R6 9
4 W 8 7 7 7
5 R8 6 6
6 W 5 5
7 0 3 3
8
9 + + 4 + R9
10 C C C C W
11 E E E 2 1
12 N N N N N
13 K K R3 R4 K
14 V V
“0” to “9” connect to the diodes for the numeric keys
“-” and “+” connect to the diodes for the sign keys
“C” connect to the diodes for the CLR key
“E” connect to the diodes for the ENTR key
“K” connect to the diodes for the KEY REL key
“N” connect to the diodes for the NOUN key
“V” connect to the diodes for the VERB key
“X” connect to the diodes for the RST key
R1 to R9 are the 510 Ω resistors
“W” are straight wire connections to the top board

 

The following interactive image identifies all the wires connected to the keyboard module. You can view the description of each wire by hovering your mouse cursor over the individual wires.

Please enable Adobe Flash to view this animation

Leave a Comment

Your email address will not be published. Required fields are marked *