|
|
|
Virtual
AGC and AGS
DSKY
Emulator (yaDSKY) |
|
|
|

|
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. |

|
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.
What is yaDSKY?
yaDSKY 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.