[This article describes how the Apollo Guidance Computer (AGC) was connected to the Display and Keyboard Unit (DSKY). This is rather detailed description about the hardware and gives some light about how various devices were connected to the AGC. Since the connection was digital and parallel no special arrangements was required as with the more sensitive analog interfaces. The text is mainly from reference /1/.]
|Figure 1. DSKY (Apollo Guidance Computer Display and Keyboard)|
I/O INTERFACE OF THE DSKY (KEYBOARD AND DISPLAY) /1/
"The external inputs to the Keyboard and Display System Program are the direct-wire Keyboard (manual astronaut entries) and the Uplink (from the MCC Houston and Earth's MSFN network via the CM or LM receiver). The output is the Electroluminescent Display Panel (located in front of astronauts).
|Figure 2. LGC Interfaces. AGC (LGC) in the middle and various I/O devices around it.|
|Figure 3. DSKY Interfeace is mainly via two 15 bit words (I/O Channels), one for output and one for input. Additionally channel 11 is used for status lights and channel 16 for the navigation keyboard in CM.|
[For a general idea how a DSKY works with an AGC look the following video.
YouTube video: "DSKY AGC" ]
|Figure 4. LGC/DSKY Signal reference numbers and names vs. channels. Grumman original drawing.|
1. Direct-wire Keyboard
"The Keyboard contains the following characters:
- the numerical characters from 0 through 9,
- RESET, and
- KEY RELEASE.
|0||1 0 0 0 0|
|1||0 0 0 0 1|
|2||0 0 0 1 0|
|3||0 0 0 1 1|
|4||0 0 1 0 0|
|5||0 0 1 0 1|
|6||0 0 1 1 0|
|7||0 0 1 1 1|
|8||0 1 0 0 0|
|9||0 1 0 0 1|
|VERB||1 0 0 0 1|
|RESET||1 0 0 1 0|
|KEY RELEASE||1 1 0 0 1|
|+||1 1 0 1 0|
|-||1 1 0 1 1|
|ENTER||1 1 1 0 0|
|CLEAR||1 1 1 1 0|
|NOUN||1 1 1 1 1|
Table 1. The keyboard sends these keycodes to the AGC among others.
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.
- CSM - Each depression of a button on the Main Keyboard activates INTERRUPT KEYRUPT1, and places the key code into Channel 15. The Navigation Keyboard activates INTERRUPT KEYRUPT2, and places the key code into Channel 16.
- LM - Each depression of a Keyboard button activates INTERRUPT KEYRUPT1, and places the key code into Channel 15.
|Figure 5. Most DSKY keys send keycodes, but some keys are directly connected (the more important ones). In different source documents the signals are different and reflects the evolution of the project during the 10 years period it was expanded.|
The appropriate KEYRUPT program picks up the key code and enters a request to the Executive Routine for the program which decodes and digests the key code (CHARIN). Then a RESUME is executed, terminating the KEYRUPT."
|Figure 6. The DSKY connector seen. DSKY was rather deep and heavy: 17.5 pounds, 8" x 7" x 7" compared to the today's plastic standards.|
2. UPLINK Inputs
"The Uplink is the digital telemetry system which sends information from the ground to the airborne computer.
Each time a word is received by the Uplink, INTERRUPT UPRUPT is activated. UPRUPT picks up the transmitted code (these codes are the same as key codes) and enters a request to the Executive Routine for the program which decodes and digests the key code (CHARIN). Then a RESUME is executed, terminating the UPRUPT.
Note that CHARIN makes no distinction between inputs from the Keyboard and inputs from the Uplink.
There is a toggle switch which is used either to accept Uplink inputs, or to block the Uplink. In the blocked position, the operator has chosen not to accept any keyboard type of input from the ground.
These codes enter the computer through bits 1-5 of either channel 15 or 16 (CSM or LM). The MSB is placed in bit 5; the LSB, in bit 1.
|Figure 7. Close view of the DSKY connector to the AGC. The bike tire valve is for pressurizing dry nitrogen, a common feature in Block II electronics to remove sparking fire risk in the pure oxygen cabin environment.|
3. The Display Panel
The Display Panel consists of 24 electroluminescent sections arranged as in Fig. 8 below.
|Figure 8. Display Panel. The 24 electroluminescent sections (7-segments) in the DSKY display panel and their names.|
Each section is capable of displaying any decimal character or remaining blank, except the 3 sign sections (RlS, R2S, R3S). These display a plus sign, a minus sign, or a blank. The numerical sections are grouped to form 3 data display registers, each of 5 numerical characters; and 3 control display registers, each of 2 numerical characters, The data display registers are referred to as R1, R2, R3. The control display registers are known as Verb, Noun, and Major Mode (Program or phase number).
|Figure 9. LGC sends all data to DSKY via two 15 bit channels. One for the 7-segments and one for the status lights. It is known that some spacecraft relays and I/O devices are also controlled via these channels.|
The Major Mode (Program) display register is used to indicate which phase of the mission or large system program is operating. The Verb and Noun display registers are used to indicate the activity of a smaller class of programs, such as displays, loads, etc. These may be initiated by keyboard action, or from within the computer by program action.
Each Display Panel character is controlled by a group of 5 latching relays. Once these relays are activated, the appropriate character remains visible on the Display Panel until the state of these relays is changed. The 5-bit relay codes for each numerical character are listed below.
|Blank||0 0 0 0 0|
|0||1 0 1 0 1|
|1||0 0 0 1 1|
|2||1 1 0 0 1|
|3||1 1 0 1 1|
|4||0 1 1 1 1|
|5||1 1 1 1 0|
|6||1 1 1 0 0|
|7||1 0 0 1 1|
|8||1 1 1 0 1|
|9||1 1 1 1 1|
Table 2. 5 Bit Relay Output - Codes for Display Panel
These codes are placed in Channel 10. There are two possible orientations.
- For the right character of a pair, the MSB is placed in bit 5; the LSB, in bit 1.
- For the left character of a pair, the MSB is placed in bit 10; the LSB, in bit 6.
All the information necessary to operate the Display Panel is transmitted from the computer through output channel 10 (OUT0). Two Display Panel characters are activated by OUT0 at a time.
- Bits 1 - 5 (bit 1 is the low order bit) of OUT0 operate the right character of the selected pair;
- Bits 6-10 operate the left character of the pair.
- Bit 11 is used for special one-bit functions, such as signs.
- Bits 12-15 (bit 15 is the high order bit), which are known as the Relayword code, select the appropriate pair of Display Panel characters, See tables below.
|Bits 15-12||Bit 11||Bits 10-6||Bits 5-1|
|1 0 1 1||....||MD1||MD2|
|1 0 1 0||....||VD1||VD2|
|1 0 0 1||....||ND1||ND2|
|1 0 0 0||....||....||R1D1|
|0 1 1 1||+R1S||R1D2||R1D3|
|0 1 1 0||-RlS||R1D4||R1D5|
|0 1 0 1||+R2S||R2D1||R2D2|
|0 1 0 0||-R2S||R2D3||R2D4|
|0 0 1 1||....||R2D5||R3D1|
|0 0 1 0||+R3S||R3D2||R3D3|
|0 0 0 1||-R3S||R3D4||R3D5|
Table 3. Relayword Format for OUTO
The Display Panel Output Buffer (DSPTAB) follows this same format with respect to the low order 11 bits.
|Figure 10. Inside DSKY. (Most likely a reproduction model.)|
The 15-bit word which activates a pair of characters in the Display Panel is placed into OUT0 by DSPOUT, a program operating in the Interrupt mode, DSPOUT is part of a larger Interrupt program called T4RUPT. DSPOUT is activated approximately once every 120 milliseconds. Thus, at maximum activity, two numerical characters and a sign may be updated on the Display Panel every 0.12 seconds. [To update the whole display takes 11 x 0.12 sec = 1.32 sec in the worst case. See demonstration here.]
Display Panel Buffer.
DSPOUT obtains the 15-bit word to be placed in OUT0 from an 11-register buffer called DSPTAB. Each DSPTAB register contains the information to activate a pair of numerical characters (and perhaps a special single bit function, such as sign) in the Display Panel. By retaining this information, the DSPTAB reflects the present state of the entire Display Panel. Thus it is possible to compare new information with that already displayed and to place new data in OUT0 only when they differ.
|Figure 11. Signal levels from Grumman original paper.|
- The Key Release light is controlled by bit 5 of channel 11.
- The Verb/Noun flash is controlled by bit 6 of channel 11.
- The Operator Error Alarm light is controlled by bit 7 of channel 11."
DSKY Channels According to the Luminary 099 Program Listing (LM only) /2/
CHANNEL 10 - OUT0: OUTPUT CHANNEL; REGISTER USED TO TRANSMIT LATCHING-RELAY DRIVING INFORMATION FOR THE DISPLAY SYSTEM. BITS 15-12 ARE SET TO THE ROW NUMBER (1-14 OCTAL) OF THE RELAY TO BE CHANGED AND BITS 11-1 CONTAIN THE REQUIRED SETTINGS FOR THE RELAYS IN THE ROW. [Max update rate is about 8/sec or every 0.12 sec]
[Bits from table 3 above
- BIT 1 E
- BIT 2 D
- BIT 3 C -- Right 7-segment
- BIT 4 B
- BIT 5 A
- BIT 6 E
- BIT 7 D
- BIT 8 C -- Left 7-segment
- BIT 9 B
- BIT 10 A
- BIT 11 Sign
- BIT 12 D
- BIT 13 C -- Relayword code
- BIT 14 B
- BIT 15 A
CHANNEL 11 - DSALMOUT: OUTPUT CHANNEL; REGISTER WHOSE BITS ARE USED FOR ENGINE ON-OFF CONTROL AND TO DRIVE INDIVIDUAL INDICATORS OF THE DISPLAY SYSTEM. BITS 1-7 ARE A RELAYS.
- BIT 1 ISS WARNING [Inertial SubSystem warning from various sources]
- BIT 2 LIGHT COMPUTER ACTIVITY LAMP
- BIT 3 LIGHT UPLINK ACTIVITY LAMP
- BIT 4 LIGHT TEMP CAUTION LAMP
- BIT 5 LIGHT KEYBOARD RELEASE LAMP
- BIT 6 FLASH VERB AND NOUN LAMPS
- BIT 7 LIGHT OPERATOR ERROR LAMP
- BIT 8 -- SPARE
- BIT 9 TEST CONNECTOR OUTBIT
- BIT 10 CAUTION RESET
- BIT 11 -- SPARE
- BIT 12 -- SPARE
- BIT 13 ENGINE ON
- BIT 14 ENGINE OFF
- BIT 15 -- SPARE
CHANNEL 15 - MNKEYIN: INPUT CHANNEL; KEY CODE INPUT FROM KEYBOARD OF DSKY, SENSED BY PROGRAM WHEN PROGRAM INTERRUPT #5 IS RECEIVED. USED BITS 5-1
[ Bits might be something like below
- Key code 1
- Key code 2
- Key code 3
- Key code 4
- Key code 5
- Proceed / Standby [moved to ch 032 later]
- Keyboard reset
- Caution light reset
CHANNEL 16 - NAVKEYIN: INPUT CHANNEL; OPTICS MARK INFORMATION AND NAVIGATION PANEL DSKY (CM) OR THRUST CONTROL (LM) SENSED BY PROGRAM THEN PROGRAM INTERRUPT #6 IS RECEIVED. USES BITS 3-7 ONLY.
- BIT 1 -- NOT ASSIGNED
- BIT 2 -- NOT ASSIGNED
- BIT 3 OPTICS X-AXIS MARK SIGNAL FOR ALIGN OPTICAL TSCOPE
- BIT 4 OPTICS Y-AXIS MARK SIGNAL FOR AOT
- BIT 5 OPTICS MARK REJECT SIGNAL
- BIT 6 DESCENT+ ; CREW DESIRED SLOWING RATE OF DESCENT
- BIT 7 DESCENT- ; CREW DESIRED SPEEDING UP RATE OF DESCENT
DSKY Interface Channels According to VirtualAGC Pages /3/
Those pages have found the following relation for the various I/O bits, words and channels used. This reflects most likely the later phase of the Apollo Moon program (Luminary131 etc.).
AGC Output Channel 010
Same as above.
AGC Output Channel 11
- BIT 2 Lights the "COMP ACTY" indicator.
- BIT 3 Lights the "UPLINK ACTY" indicator
- BIT 4 Lights the "TEMP" indicator.
- BIT 5 Flashes the "KEY REL" indicator. (1.5 cycle-per-second rate.)
- BIT 6 Flashes the VERB/NOUN display areas. (1.5 cycles per second. Duty cycle is about 1:3.)
- BIT 7 Falshes the "OPR ERR" indicator. (1.5 cycle-per-second rate.)
[From the original Luminary099 listing we can see (below) how the flashing of the verb and noun numbers was done simply by turning the above bit on. The AGC did not flash any bits itself so the flashing was done by the DSKY hardware alone.
FLASHON CAF BIT6 # TURN ON V/N FLASH EXTEND # BIT 6 OF CHANNEL 11 WOR DSALMOUT TC Q FLASHOFF CS BIT6 # TURN OFF V/N FLASH EXTEND WAND DSALMOUT TC Q
AGC Output Channel 013
- BIT 10 Tests alarms and DSKY lights. (Drive ALL lamps ON to see if any is broken)
- BIT 11 Lights the STANDBY indicator. (Might be incorrect info?)
AGC Input Channel 015
Same as above.
AGC Input Channel 032
- BIT 14 PRO (STBY) key pressed. (The logic is inverted)
[Worth to notice that the PROCEED button was considered so important that it was driven inverted and via channel 032 and had it own bit (not just one among the key codes as the other DSKY buttons)]
LGC Interrupts /2/
|Vector Address Octal||Interrupt Name||Trigger Condition||Description|
|4000||Startup||AGC power ON||Starting address after AGC power up|
|4004||T6RUPT||TIME6 decrement to 0||Timer for RCS jets, used by the Digital Autopilot (DAP)|
|4010||T5RUPT||TIME5 timer overflow||DAP timer|
|4014||T3RUPT||TIME3 timer overflow||WAITLIST task scheduler|
|4020||T4RUPT||TIME4 timer overflow||DSKY monitoring and updating|
|4024||KEYRUPT1||Keystroke from DSKY||Keycode from DSKY is available in channel 15|
|4030||KEYRUPT2||Keystroke from 2nd DSKY||Keycode from Navigation DSKY is available in channel 16 (CM only)|
|4034||UPRUPT||Data ready in INLINK register||Used for DSKY uplinks (remote control etc.)|
|4040||DOWNRUPT||Downlink register ready for more data||AGC downlink telemetry (to MCC consoles etc.)|
|4044||RADARUPT||Data in RNRAD register is ready||Data from rendezvous radar|
|4050||RUPT10||Used only by lunar landing guidance||LM P64 redesignation|
- /1/ Green, Alan I., and Filene, Robert J.; MIT Instrumentation Laboratory - Apollo Guidance, Navigation and Control - E-2129 - KEYBOARD AND DISPLAY PROGRAM AND OPERATION - DSR Project 55-23850, MSC NASA Contract NAS 9-4065
- /2/ Luminary 1A version 099 listing.
- /3/ VirtualAGC
* * *