Home
yaAGS et al.
Download
Links
Change log
Bug and issues
Developer info
FAQ
Virtual AGC and AGS
DSKY Emulator (yaDSKY)  

yaAGC
yaYUL
yaDSKY
yaOtherStuff
Luminary
Colossus
Language Manual
Physical Implementations

Artist's conception of a DSKY

What is a DSKY?

The DSKY is the "display/keyboard" (DSKY) used by the Apollo Guidance Computer (AGC).  The DSKY provided only a means to input keyboard data to the AGC, or to display visual information at command of the AGC, and therefore had little or no functionality of its own, when considered as a stand-alone device. 

The  DSKY may seem somewhat familiar from, for example, the movie Apollo 13. In the HBO mini-series, From the Earth to the Moon, the DSKY appears so prominently that it almost becomes another character (dramatically speaking). For those of us who are familiar with it from these sources, it is easy to think of the DSKY itself as being the computer.  However, the DSKY really was quite independent from the AGC.  From the computer's standpoint, the DSKY was just another few i/o channels, more or less, as in the block diagram below.

Click to enlarge.


Guidance&Navigation block architecture

The Lunar Module had a single DSKY, at the bottom center of the control panel.  The Command Module had two DSKY units: one in the main control panel near the commander; the other at the navigator's station.
LM control panel.Real DSKY.Guidance, navigation, and control system.CM control panel.

What is yaDSKY?

yaDSKY and DSKY LITE, side-by-sideyaDSKY is a computer program which emulates the DSKY.  The DSKY had little or no functionality of its own, when considered as a stand-alone device.  The same is true of the yaDSKY emulation of the DSKY.  It requires the yaAGC program (which simulates the AGC) to be useful.    Just as the true AGC and DSKY communicated between themselves by means of wiring, the virtual yaAGC and yaDSKY communicate between themselves using communication channels (sockets) that act like virtual wires.   In other words, yaDSKY merely communicates keypresses to yaAGC, and receives communications from the yaAGC about which lights to activate.

If you don't like my yaDSKY, or if you want to integrate yaAGC into a larger simulation project, or if you want something that works on a platform I don't support, you can replace yaDSKY with a program more to your liking. The method for doing so is described in detail on the developer-info page.  In fact, Stephan Hotto has done just that (among other things) with the LM_Simulator software he has contributed to this project.  At the right is a very cute screenshot (click to enlarge) of yaDSKY and Stephan's "DSKY LITE" running side-by-side and communicating with the same yaAGC.

Running yaDSKY

The yaDSKY program is invoked as follows:

yaDSKY [OPTIONS]
or
yadsky [OPTIONS]


The available options are as follows:

--help
Display a list of options, something like the information shown here.

--ip=addr
yaDSKY and yaAGC are a client/server pair, and can be running on the same computer or on different computers. In order to connect to the yaAGC server, yaDSKY has to know the IP-address of the machine on which yaAGC is running. By default this is "localhost"---i.e., the two are running on the same computer. However, a different IP address may be specified using this command-line switch. In Linux, this may be either the machine's name, or else a numerical address in dotted format (n.n.n.n). MS-Windows---at least Windows 98---is somewhat crippled in this respect, and will only accept a host name rather than a numerical IP address.

--port=port
Similarly (see above), in addition to an IP address, a port number is needed. This must be in the range of port numbers yaAGC is scanning (which by default is 19697-19706).  If no port is specified, yaDSKY will use 19697 (since the Apollo 11 mission was in July 1969). A simulation of the Command Module would require two DSKY units, one for the contral panel and one for the navigator's station; so two copies of yaDSKY would be run, and would have to be assigned different ports (such as 19697 and 19698).  The developer page contains suggested port assignments, including the suggestion that Colossus should use the range 19697-19706 while Luminary should use the range 19797-19806.

--cfg=ConfigFilename
This switch configures the DSKY for different Apollo missions or for CM vs. LM operation.  Among the things that differ in different configurations are the legends that appear on the 14 indicator lights on the upper-left side of the DSKY panel, and the labeling on the PRO key.  The DSKY is reconfigured through the use of configuration files, of which the ones that exist as of this writing are CM0.ini, CM.ini, LM.ini, and LM1.ini.  (A description of the differences appears later.)  If no "--cfg" switch is present, default values are used which are the same as those in the distribution version of LM.ini, but the LM.ini file itself is not used unless specified by the presence of "--cfg=LM.ini".  Refer to the developer page for information on modifying the legend sets or adding new sets.   If a complete pathname for ConfigFilename is not specified, then yaDSKY will look first in the current directory, and then (for software versions 05/06/2004 or later) in the installation directory (which is /usr/local/bin by default, but which may be changed at build-time).

--half-size
(Only versions 20040811 and after.)  yaDSKY's graphical interface is simply too big for PC's with lower graphical resolution (smaller than 1024×768).  If the --half-size switch is used, half-size graphics are used, and so the interface should be usable even down to 640×480 resolutions.  The smaller interface doesn't really look very good, because it is simply blindly scaled down from the larger interface, rather than being optimized, but at least it's usable at 800×600 and 640×480 resolutions.  If both the --half-size and --cfg switches are used, the --half-size switch must be to the left of the --cfg switch on the command line.

--delay=Milliseconds
(Versions 20040821 and after.)  Adds a delay at start-up, so that yaDSKY does not immediately begin attempting to communicate with yaAGC.  The current defaults are 0 ms. in Linux and 500 ms. in Win32.  This "feature" has been added as a temporary work-around for problem report #23, and probably has no other sensible purpose.  Even on Win32 it isn't usually needed, but it's here for the 10% (or whatever) of the time it's needed.

--debug-counter-mode
(Versions 20050515 and after.)  This is present only for debugging the AGC's "unprogrammed" counter-increments, and has no useful purpose otherwise.  In this mode, the keys of the simulated DSKY -- or at least, the VERB, NOUN, 0-7, and PRO keys -- do not have their normal interpretations and cannot be used to affect the AGC CPU in any normal way.  Instead, the combination NOUN-digit-digit is used to specify an (octal) CPU counter-register number, and the combination VERB-digit is used to select a counter-increment type as defined on the developer page.  The PRO key is used to send the selected counter-increment command to the AGC, to increment/decrement the counter-register.  Note that there are no visual displays associated with this, since the AGC is still commanding the DSKY visual display in its usual way, so you just have to mentally keep track of what counter-register and which unprogrammed-increment command you've chosen.  This mode is terminated only by restarting yaDSKY.  Only counter registers in the range 32-60 (octal, default 32) are accepted, and only increment-types in the range 0-6 (default 1) are accepted.  Any time the PRO key is pressed with settings outside this range, no action occurs.  The only useful way to use this is to make sure that yaAGC has been run in debug mode (for example, "SimLuminary131 --debug-counter-mode --debug"), and to use the yaAGC debugger's "dump" command to check the results of the various increment/decrement commands.  For example, if the default settings aren't changed, the command "dump 32" will initially show 00000, but will show "00001" after the PRO key has been hit once, "00002" after the PRO key has been hit twice, and so on.

--test-uplink
(Versions 20050626 and after.)  In this mode, keystrokes are communicated to yaAGC via the digital uplink rather than via the normal CPU input channel 015, but this is relatively transparent to the user, other than the fact that the UPLINK ACTY indicator lights up.  Normally this facility would have been used by the ground-station for uplinking data.  However, since the uplink consists of encoded DSKY keycodes, "--test-uplink" provides a convenient method of testing this facility without having to write a whole new program.  I've noted that when using this mode, the keystrokes seem to work properly, but updating the DSKY display is very hit-and-miss.  I assume this is a normal property of the uplink --- rather than a bug in yaAGC --- but I don't really know. 

--test-downlink
(Versions 20050628 and after.)  In this mode, yaDSKY provides the additional function of displaying telemetry-downlink lists as they are emitted from the AGC.  It's not as pretty as the yaTelemetry program (which was supposed to provide this functionality) would have been, but it's here now and yaTelemetry isn't.  To use this mode effectively, yaDSKY should be run from a terminal window which is at least 80 text-columns wide, and at least 36 text-rows high; otherwise, a complete downlink list will not fit on-screen and portions will scroll off the top of the screen.  Furthermore, an ANSI terminal will provide the most effective (and attractive) display, since some ANSI escape-sequences are used for cursor positioning.  In Linux this should be no problem.  In Windows, it is generally necessary to install ANSI.SYS in order for the command-line interface to accept ANSI commands.  I must admit, though, that in experimenting with Windows XP I have been unable to get ANSI.SYS to install.  (If somebody wants to send me the magic formula for this, I'd appreciate it.)

yaDSKY and yaAGC attempt to be insensitive to each other's absence, but I'd recommend running yaAGC first and yaDSKY second, particularly in Win32.

The Different Parts of the DSKY

It's important to understand that the various keys and displays of the DSKY have no intrinsic interpretations of their own.  The interpretations of the keys and displays are entirely dictated by the software running on the AGC; with different AGC software, different interpretations might apply.  Fortunately, though, the software was fairly consistent in this regard, and the typical meanings of the keys and displays are summarized below.

The Keys

Key
Description
0-9, +, -
Self-explanatory, I think.
VERB, NOUN, ENTR
"Verbs" and "nouns" were used by the astronaut to supply commands to the AGC. First a verb would be entered, then a noun. (For example, verb 37 would indicate that the astronaut desired the AGC to run a particular sub-program. The noun would be the requested sub-program number.) In general, the sequence of steps for keying in a noun/verb pair was: VERB, digit, digit, NOUN, digit, digit, ENTR.
CLR
Clears the current data display.  Pressing CLR twice clears two data displays.
KEY REL
This key was pressed by the astronaut to "release" the DSKY. In other words, to tell the AGC that he was done with what he was doing and that the AGC could begin displaying other data on the DSKY, if it desired to do so.
PRO or PROG or STBY
Toggles "standby" mode on or off.  In other words, if in normal operating mode proceeds to standby mode, but if in standby mode proceeds to normal operating mode.
RSET
Resets (turns off) the indicator lamps.

In yaDSKY, you use the mouse to click the various buttons on the keypad.  For versions 2005-09-20 and later, thanks to Christian Bucher, you can also use the PC's keys

0 1 2 3 4 5 6 7 8 9 + - v n e

(DSKY keys CLR, KEY REL, PRO, and RSET have no accelerator keys on the PC's keyboard.)

The Displays

Display
Description
COMP ACTY
This lit up when the computer was busy.
PROG
The PROG lamp was normally lit. The two-digit display underneath it showed the program number that was currently running. The Luminary and Colossus programs each provided up to 100 sub-programs for various purposes. The sub-programs were numbered 00, 01, ..., 99.
VERB
The VERB lamp was normally lit, but flashed when the astronaut was supposed to key in a new verb number. The last verb keyed, or the verb currently being keyed, was shown on the two-digit display beneath the VERB lamp.
NOUN
Same idea as the VERB display, but for nouns instead.
Register 1, 2, and 3
Three 5-digit displays (plus sign) showed data that was dependent on the particular sub-program being run at the time. The numbers were decimal if the plus or minus sign was lit, but were in octal format otherwise.

The Warning or Indicator Lamps

The DSKY panel had space for up to 14 warning lights in the upper-left quadrant of its panel.  Determining the colors of the indicators (when lit) is tricky.  I've seem a film clip from the Apollo 11 CM, in which all of the left-hand column is white when lit, and all of the right-hand column is amber when lit, so I've sort of extrapolated that coloring scheme for yaDSKY.

Quite a lot of confusion will ensue if you try to determine the legends of the indicator lamps from the available online materials.  The official word, I think, comes from the Guidance System Operations Plans (GSOP) for the individual missions.  (If you look on my links page, for example, you'll see the GSOP documents for Colossus 1A rev. 249 and for Luminary 1C rev. 131.  Look in section 4 for detailed descriptions of the DSKYs.)  I haven't yet been able to locate a complete set of GSOP documents (for all of the missions), but here's what I know right now:

Prior to manned missions?
(CM0.ini)
UPLINK ACTY
TEMP
AUTO
GIMBAL LOCK
HOLD
PROG
FREE
RESTART
NO ATT
TRACKER
STBY

KEY REL
OPR ERR
CM, Apollo 7
?
CM, Apollo 8-14
LM, Apollo 9-11
(CM.ini)
UPLINK ACTY
TEMP
NO ATT
GIMBAL LOCK
STBY
PROG
KEY REL
RESTART
OP ERR
TRACKER




LM, Apollo 12-13
(LM.ini)
UPLINK ACTY
TEMP
NO ATT
GIMBAL LOCK
STBY
PROG
KEY REL
RESTART
OP ERR
TRACKER


ALT
VEL
CM, Apollo 15-17
LM, Apollo 14-16
?
LM, Apollo 17
(LM1.ini)
UPLINK ACTY
TEMP
NO ATT
GIMBAL LOCK
STBY
PROG
KEY REL
RESTART
OP ERR
TRACKER
NO DAP
ALT
PRIO DISP
VEL
CM, Apollo-Skylab
?
CM, Apollo-Soyuz
?

Legend
CM
LM
LM1
CM0
Description
UPLINK ACTY
×
× × × Lit whan data was being received from the ground
TEMP
× × × × Lit when the temperature of the stable platform containing the sensors for the inertial measurement unit (IMU) was out of tolerance.
NO ATT
× × × × Lit when the inertial subsystem could not provide attitude reference.
GIMBAL LOCK
× × × × Lit when the middle gimbal angle (for the IMU stable platform) was greater than 70 degrees.
STBY
× × × × Lit when the computer system was in standby.
PROG
× × × × Lit when the computer was waiting for operator input.
KEY REL
× × × × Lit when the computer wanted to display some information on the DSKY, but was locked out from doing so because the crew were using the DSKY. The astronaut was supposed to press the KEY REL key when this light came on, to indicate that he was done with the DSKY.
RESTART
× × × × Lit while the computer was restarting.
OPR ERR
× × × × Lit to indicate a data-entry error by the crew.
TRACKER
× × × × Lit when one of the optical coupling units failed.
NO DAP


×
Lit upon failure of the digital autopilot (DAP).
PRIO
DISP


×
A "priority display" is exactly what it sounds like:  data which is more urgent than the data currently being displayed on the DSKY, usually for critical alarm conditions.  Though I'm not sure what happens when a priority display is needed, it's probably something like this:  The priority-display data automatically replaces  what's currently being displayed, and the PRIO DISP lamp illuminates.  When the astronaut eventually dismisses the priority display, the original data display returns, and the PRIO DISP lamp goes off.  If more than one priority display wants attention at the same time, it causes a program alarm 31502.
ALT

× ×
Lit when the altitude was out of range.
VEL

× ×
Lit when the velocity was out of range.
AUTO



× TBD
HOLD



× TBD
FREE



× TBD



This page was last modified by Ronald Burkey on 2007-04-25.