|
|
|||||||||||||||||||||
Please enable javascript in your
browser to see a site-search form here.
|
The Gemini VIII OBC, with cover removed (Smithsonian National Air & Space Museum) |
Location of the OBC in the spacecraft |
Modular Display Keyboard (MDK) |
Modular Display Readout |
Software modules |
Math Flow version →→→ increasing time →→→ |
||||||
---|---|---|---|---|---|---|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
Pre-launch |
Yes |
||||||
Ascent |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Catch-up |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Orbital navigation |
Yes |
||||||
Rendezvous |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Re-entry initialization |
Yes |
Yes |
Yes |
||||
Re-entry |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Executor |
Yes |
Spacecraft |
Operational Program version |
Math Flow version |
Comments |
---|---|---|---|
1 |
Unmanned mission. Since
Gemini I was apparently intended principally as a structural test of
the spacecraft, it may not have had a computer onboard. |
||
2 |
1 |
Unmanned mission. |
|
3 |
3 |
||
4 |
3 |
||
5 |
6 |
||
6 |
6 |
6 |
|
7 |
6 |
||
8 |
7 |
7 |
The principal difference between the sixth and seventh operational programs is claimed by the familiarization manual to have been the reworking of the program so that portions of it could be loaded into the computer from the (new) Auxiliary Tape Memory (ATM) during the mission. |
9 |
7 |
7 |
|
10 |
7? |
7 |
Volume
2
of
the
familiarization
manual
claims
that
the "seventh
operational program" was used in spacecraft 8 and all subsequent
spacecraft. But the manual predates the launch of Gemini
10, so that statement cannot be taken as authoritative. |
11 |
7? |
7 |
|
12 |
7? |
7 |
Bit position: |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
Syllable: |
Syllable 2 |
Syllable 1 |
Syllable 0 |
Bit position: |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Bit code: |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
A8 |
A9 |
OP1 |
OP2 |
OP3 |
OP4 |
Bit position: |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Data word: |
M25 |
M24 |
M23 |
M22 |
M21 |
M20 |
M19 |
M18 |
M17 |
M16 |
M15 |
M14 |
M13 |
M12 |
M11 |
M10 |
M9 |
M8 |
M7 |
M6 |
M5 |
M4 |
M3 |
M2 |
M1 |
S |
Bit position: |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Data word: |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
A8 |
A9 |
S1 |
S2 |
S3 |
S4 |
- |
SYA |
SYB |
- |
S5 |
- |
- |
- |
- |
- |
- |
- |
- |
Field |
Most-significant bit |
Least-significant bit |
---|---|---|
Operand (A1-A9) |
A9 |
A1 |
Opcode (OP1-OP4) |
OP4 |
OP1 |
X (A1-A3) |
A3 |
A1 |
Y (A4-A6) |
A6 |
A4 |
Data (M1-M25) |
M1 |
M25 |
Sector (S1-S4) |
S4 |
S1 |
Mnemonic |
Opcode (OP1-OP4) in octal |
Timing (140 μs cycles) |
Description of the instruction |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HOP |
00 |
1 |
This instruction combines an
unconditional jump instruction
with various other configuration options, such as memory-sector
selection. The way it works is that the address A1-A9 points to a
memory word that contains a "HOP constant", and the HOP
instruction transfers that HOP constant into the HOP register.
Recall that A1-A8 select the offset within a 256-word sector, and A9 is
the "residual bit" that selects between the current sector and the
"residual sector". There is no provision for a partial HOP
constant, and the full HOP constant needs to be given every time a HOP
instruction is used. See also TRA. |
||||||||||||||||||
DIV |
01 |
1 (results available after 6) |
This is the division instruction. The contents of the accumulator are divided by the operand pointed to by the address A1-A9 embedded within the instruction to produce a 24-bit quotient. Recall that A1-A8 select the offset within a 256-word sector, and A9 is the "residual bit" that selects between the current sector and the "residual sector". The quotient is available via the SPQ instruction from the 5th instruction following the DIV. In other words, 4 other instructions not involving multiplication or division can be performed in the interval between DIV and SPQ. | ||||||||||||||||||
PRO |
02 |
1 |
Inputs
or outputs an i/o "signal" into or from the accumulator. (In the
AGC these are called "channels". In current terminology, we'd
probably usually refer to them as "ports".) Whether or not an
input or an output is performed depends on the particular signal
chosen. The X (A1-A3) and Y (A4-A6) operand fields are used for
signal selection. A9 is used as well. For an output
operation, it determines if the accumulator should be cleared after the
output (A9=1) or preserved (A9=0). For an input operation,
it determines if the data should be loaded into the accumulator (A9=0)
or logically OR'd with the accumulator (A9=1). A table of the i/o
signals vs. addresses is given in
the following section.
(The
PRO instruction is
essentially equivalent to the LVDC
PIO
instruction, but the selection of i/o signals is different.) The documentation does not explain this, but I think that when the PRO instruction is accessing a single-bit signal, only the accumulator's sign bit is used as the output or the input. The remaining bits are unaffected (on input) or are "don't care" (on output). See also the description of shorthands for various instructions. |
||||||||||||||||||
RSU |
03 |
1 |
Same as SUB (see below), except that the order of the operands in the subtraction is reversed. | ||||||||||||||||||
ADD |
04 |
1 |
Adds the contents of the accumulator with the contents of the address embedded within the instruction and places the result in the accumulator. Recall that A1-A8 select the offset within a 256-word sector, and A9 is the "residual bit" that selects between the current sector and the "residual sector". | ||||||||||||||||||
SUB |
05 |
1 |
Subtracts the contents of a word pointed to by the address embedded within the instruction from the accumulator, and puts the result back into the accumulator. Recall that A1-A8 select the offset within a 256-word sector, and A9 is the "residual bit" that selects between the current sector and the "residual sector". See also RSU. | ||||||||||||||||||
CLA |
06 |
1 |
Store a value to the accumulator, from the memory word at the address embedded within the instruction. Recall that A1-A8 select the offset within a 256-word sector, and A9 is the "residual bit" that selects between the current sector and the "residual sector". | ||||||||||||||||||
AND |
07 |
1 |
Logically ANDs the contents of the accumulator with the contents of the address embedded within the instruction and places the result in the accumulator. Recall that A1-A8 select the offset within a 256-word sector, and A9 is the "residual bit" that selects between the current sector and the "residual sector". | ||||||||||||||||||
MPY |
10 |
1 (results available after 3) |
This is a multiplication
instruction. It multiplies two
24-bit numbers to produce a 26-bit product. The accumulator
provides the address of one operand, and the address embedded in the
instruction points to the other operand. Recall that A1-A8 select
the offset within a 256-word sector, and A9 is
the "residual bit" that selects between the current sector and the
"residual sector". In both cases, the most-significant 24-bits of
the operands are used, and the least-significant 2 bits of the operand
are ignored. The result is available via the SPQ instruction on the 2nd
instruction following MPY.
Any other instruction not involving multiplication or division can be
performed between the MPY and the
SPQ. |
||||||||||||||||||
TRA |
11 |
1 |
This
is an unconditional jump
instruction, which branches to the address
embedded in the instruction. Bits A1-A9 of the embedded address
represent the new offset
within either the currently-selected sector or the residual
sector. Note that the syllable remains the same, so if (for
example) the TRA is itself in syllable 1 of the current program
counter, then the next instruction executed will be at syllable 2 in
the new program counter. (This differs from the behavior of the
corresponding LVDC
instruction, in that the LVDC instruction allows selection of the
target syllable via A9, but does not allow the new program counter to
be in the residual sector.) See also the description of shorthands for various instructions. |
||||||||||||||||||
SHF |
12 |
Performs a logical shift
operation on the accumulator. For this instruction, only bits
A1-6 are actually used, as follows:
But what do "left" and "right" mean? Fortunately, "left" implies multiplication by powers of two, and "right" division by powers of two, just as modern programmers are accustomed to. For the left-shifts, 0 is shifted into the least-significant bit at the right. For the right-shifts, the sign-bit is shifted into the most-significant bit at the left. Note that this instruction is similar to the corresponding LVDC instruction, but differs in details. See also the description of shorthands for various instructions. |
|||||||||||||||||||
TMI |
13 |
1 |
This is a conditional jump instruction, which branches to the address embedded in the instruction if the accumulator is less than zero, but simply continues to the next instruction in sequence if the accumulator greater than or equal to zero. Bits A1-A9 of the embedded address represent the new offset within the currently selected 256-word instruction sector or the residual sector. See also TNZ. (This differs from the behavior of the corresponding LVDC instruction, in that the LVDC instruction allows selection of the target syllable via A9, but does not allow the new program counter to be in the residual sector.) | ||||||||||||||||||
STO |
14 |
1 |
Stores the contents of the
accumulator in the word indicated by the address embedded within the
instruction. Recall that A1-A8 select the offset within a
256-word sector, and A9 is
the "residual bit" that selects between the current sector and the
"residual sector". The accumulator retains its value. |
||||||||||||||||||
SPQ |
15 |
1 |
Store a product or quotient
(computed with MPY or DIV) into
the accumulator. (This instruction is equivalent to the LVDC instruction CLA 0775.) |
||||||||||||||||||
CLD |
16 |
1 |
A discrete input selected by
the operand address is read into the accumulator. The entire
accumulator is overwritten. A table of the allowed
discretes follows later. (This instruction does not exist in
the LVDC.) See also the description of shorthands for various instructions. |
||||||||||||||||||
TNZ | 17 |
1 |
This is a conditional jump instruction, which branches to the address embedded in the instruction if the accumulator is not zero, but simply continues to the next instruction in sequence if the accumulator is zero. Bits A1-A8 of the embedded address represent the new offset within the currently selected 256-word instruction sector, while bit A9 gives the syllable number within that word. The "residual sector" cannot be accessed. See also TMI. |
Operand |
Input / Output |
Signal |
Comment |
|
---|---|---|---|---|
X (A1-A3) |
Y (A4-A6) |
|||
0 |
0 |
In |
Digital
Command System shift pulse gate |
Causes
a 24-bit word buffered in the Digital Command System
(DCS) to be read
into bits M1-M24 of the accumulator. Or, reads
data from the Rendezvous Radar (if
any). |
0 |
1 |
TBD |
Data
Transmission System control gate |
TBD |
0 |
2 |
In/Out |
Time
Reference System data and timing pulses |
The action of this signal
seems pretty complex. Please read the section on the Time Reference System (TRS) for
my conclusions as to what it's actually supposed to do. |
0 |
3 |
Out |
Digit
magnitude weight 1 |
Used
in conjunction with "Digit magnitude weight 2", "Digit magnitude weight
4", and "Digit magnitude weight 8" to write a particular digit to an MDR position previously selected
using the "Digit select weight X"
outputs.
The
weights
derive
from
a
BCD
value of the digit whose
display is desired. |
0 |
4 |
Out |
Reset data
ready, enter, and readout |
When zeroed, signals the MDIU
to reset its internal buffer so that a numerical keystroke subsequently
be collected. It is unclear if this needs to be returned to a
non-zero state later. The CLD inputs
associated with the ENTER and READ OUT keys also are cleared as a
result. |
0 |
5 |
Out |
Digit
select weight 1 |
Used in conjunction with "Digit select weight 2" and "Digit select weight 4" to select the next digit position to which a display value will be output to the MDIU. It is not really explained how these work, but I think that they are used to form an index from 0-7 in the obvious way, and that the leftmost address digit is 0, the 2nd address digit is 1, the leftmost message digit is 2, and so on. |
0 |
6 |
Out |
Memory
strobe |
I believe that this signal is
used only in conjunction with
the AGE
for testing purposes. When the accumulator is negative, it seems
to enable a hardware mode called "marginal early" may help in
determining how robust the memory access is with respect to marginal
timing. When the accumulator is positive or zero, it disables
this diagnostic feature. |
1 |
0 |
Out |
Computer
ready |
Signal
to the Digital Command System (DCS) that the OBC
wishes to read a
buffered uplinked data word. Also used to tell the Rendezvouse
Radar, if any, that radar data is required. In the latter
case, a
20 ms. delay must occur afterward before polling the radar-ready
discrete input (CLD00). |
1 |
1 |
Out |
Drive
counters to zero |
For setting a delta-V display
on the IVI to zero. First do PRO11 with
the accumulator negative, then (see "Select X counter") select the X,
Y, or Z axis, then do PRO11 with
the accumulator positive or zero to return to the normal state. CLD31, CLD25, and CLD26 can
be subsequently used for feedback that the displays are actually at
zero. |
1 |
2 |
Out |
Enter |
When inactive, the Time Reference System (TRS) is capable of receiving timing data (like TR or TX) from the ODC. When active, the ODC can receive timing data (like ET or TR) from the TRS. |
1 |
3 |
Out |
Digit
magnitude weight 2 |
See Digit magnitude
weight 1 |
1 |
4 |
Out |
Display
device drive |
When zeroed, the MDIU display drivers are turned
off. When non-zero, the display drivers are turned on. |
1 |
5 |
Out |
Digit
select weight 2 |
See Digit select weight 1 |
1 |
6 |
Autopilot
scale factor |
||
2 |
0 |
Out |
Pitch
resolution |
Controls
the range switch for Pitch Error (or down range error) output. If
the sign bit is
positive, then there is a 6-to-1 attenuation applied; if the sign bit
is negative, there is no attenuation. |
2 |
1 |
Out |
Select X
counter |
Used along with "Select Y
counter" to select one of the IVI's delta-V
displays to receive additional commands, as follows:
|
2 |
2 |
Out |
Aerospace
Ground Equipment data link |
For outputting a single data
bit to the dedicated AGE
data link. |
2 |
3 |
Out |
Digit
magnitude weight 4 |
See Digit magnitude weight 1 |
2 |
5 |
Out |
Digit
select weight 4 |
See Digit select weight 1 |
2 |
6 |
In |
Reset start
computation |
From the PCDP's
RESET
switch. |
3 |
0 |
Out |
Yaw
resolution |
Controls the range switch for Yaw Error (or cross-range error) output. If the sign bit is positive, then there is a 6-to-1 attenuation applied; if the sign bit is negative, there is no attenuation. |
3 |
1 |
Out |
Select Y
counter |
See "Select X counter". |
3 |
2 |
Out |
Aerospace
Ground Equipment data clock |
Provides a data clock, one
pulse at a time, for reading data on the dedicated AGE data link. |
3 |
3 |
Out |
Digit
magnitude weight 8 |
See Digit magnitude weight 1 |
3 |
4 |
In |
Read Manual
Data Insertion Unit insert data |
Reads a keystroke that has
been buffered in the MDIU.
This
operation
should
be
done
only
in
response
to a separate discrete "Data ready" input via CLD.
The BCD value of the digit is stored into bits M1-M4 of the
accumulator. A PRO40
should be performed afterward to clear the MDIU buffer and allow the
next keystroke to be collected, and additional PRO
instructions should be used to display the digit on the MDIU. |
3 |
6 |
Out |
Reset radar
ready |
Sent to the Rendezvous Radar, if any, to reset its
discrete input buffer. |
4 |
0 |
Out |
Roll
resolution |
Controls the range switch for Roll Error output. If the sign bit is positive, then there is a 6-to-1 attenuation applied; if the sign bit is negative, there is no attenuation. |
4 |
1 |
Out |
Elapsed
time control and Time Reference System control reset / ATM wind-rewind
reset |
Signal to the Time Reference
System (TRS) that the data about to be fetched from the TRS with PRO20
commands is the elapsed time (ET). This output should persist for
9-15 ms. before being returned to the normal state. It also
apparently acts to reset the TRS control circuitry. When used instead with the Auxiliary Tape Memory (ATM), it commands the ATM to stop winding or rewinding. I believe that it also turns off the ATM ERROR lamp. |
4 |
3 |
Out |
Computer
malfunction |
To the PCDP's
MALF
light. |
4 |
4 |
Out |
ATM
verify/repro command |
Send a command to the Auxiliary Tape Memory (ATM) to
begin data output. I assume that the accumulator is negative to
begin the output and zero or positive to end it. |
4 |
6 |
TBD |
Second
stage engine cutoff |
TBD |
5 |
0 |
Out |
Computer
running |
To the PCDP's
COMP
light. |
5 |
1 |
In?/Out |
Time to
start re-entry calculations control / ATM wind command |
The use for "time to start
re-entry calculations" is TBD. For ATM usage, I believe that this initiates fast-forwarding of the tape drive. I assume that the value in the accumulator should be negative, however, I don't think that outputting a positive or zero value stops the winding. Instead, use PRO14. |
5 |
2 |
Out |
Time to
reset control / ATM rewind command |
Signal to the Time Reference
System (TRS) that transfer of time-to-equipment-reset (TX)
data
is
desired.
This
output
should
persist
for
9-15 ms. before being returned to the
normal state. For ATM usage, this initiates rewinding of the tape drive. I assume that the value in the accumulator should be negative, however, I don't think that outputting a positive or zero value stops the rewinding. Instead, use PRO14. |
5 |
3 |
Out |
Write
output processor |
For incrementally adjusting the delta-V displays of the IVI. First, the X, Y, or Z display is selected (see "Select X counter" above). No more than 1 ms. later, PRO35 is used to begin the update. The value in the accumulator comprises the sign bit and M1-M12, so the maximum change is -4096 to +4095. Since the displays are actually -999 to +999, in theory the adjustment range is more than full. In practice, only very small adjustments would be made. My understanding of what the hardware actually does is to increment or decrement the displays by 1 every 21.5 ms., and that it will not be ready to process another delta-V until the count has reached zero. For example, trying to change the display by 25 would take about half a second, and no other outputs to the IVI should take place in that interval. The "Velocity error count not zero" discrete (CLD22) can be polled to determine when the increment/decrement pulses have all been sent to the display and the counter has reached zero. |
5 |
4 |
In |
Read delta
velocity |
This port is used to read the
change in velocity from the platform electronics, and to zero the
reference velocity for the next readings. A single PRO45 instruction reads the ΔV from all three axes into the accumulator. Documentation is unclear as to how the data appearing in the accumulator is packed, but my nearest guess as to what it's trying to tell us is that each of the X, Y, and Z axis readings is a 4-bit 2's-complement value (thus being in the range -8 to +7), and that they are packed into the accumulator as follows:
|
5 |
5 |
TBD |
Input
processor time |
TBD |
5 |
6 |
Out |
Time to
retrofire control |
Signal to the Time Reference System (TRS) that transfer of time-to-retrograde (TR) data is desired. This output should persist for 9-15 ms. before being returned to the normal state. |
6 |
3 |
In |
Read pitch
gimbal |
These
ports are used for reading gimbal angles from the inertial
platform. The units used are TBD. 15-bit values are provided, including the sign bit and M1-M15. The remaining bit positions are zeroed. Each of the PRO commands associated with these ports both reads a previously-measured value and begins accumulating a new measurement, so these ports must be accessed in a very specific procedure to get a complete set of readings, as follows: ... at least 5 ms.
from last read of gimbals ...
PRO36 # Ignore the value received. ... wait 5 ms. or longer ... PRO46 STO PITCH ... wait 5 ms. or longer ... PRO56 STO ROLL ... wait 5 ms. or longer ... PRO36 STO YAW |
6 |
4 |
In |
Read roll
gimbal |
|
6 |
5 |
In |
Read yaw
gimbal |
|
7 |
0 |
Out |
Pitch error
command |
For
the re-entry mode, the outputs are down-range error rather than pitch
error, and cross-range error rather than yaw error. These are values which are expected to be output at intervals of 50 ms. or less, and feed into a 7-bit digital-to-analog converter for driving the Flight Director Indicator (FDI). The output comes from the accumulator sign bit and from bit-positions M8-M13. The analog outputs also feed into range switches which can attenuate the signals, and are controlled by PRO02, PRO03, and PRO04. |
7 |
1 |
Out |
Yaw error
command |
|
7 |
2 |
Out |
Roll error
command |
Operand |
Signal |
Comment |
|||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X (A1-A3) |
Y (A4-A6) |
||||||||||||||||||||||||||||||||||||||
0 |
0 |
Radar ready |
Indicates that data from the Rendezvous Radar (if any) is ready. |
||||||||||||||||||||||||||||||||||||
0 |
1 |
Computer
mode 2 |
From the PCDP's
COMPUTER
mode
selector
rotary
dial.
The
rotary
dial has 7
positions, encoded onto 3 discrete inputs, "Computer mode 1", "Computer
mode 2", and Computer mode 3". The encoding is:
|
||||||||||||||||||||||||||||||||||||
0 |
2 |
Spare |
|||||||||||||||||||||||||||||||||||||
0 |
3 |
Processor
timing phase 1 |
|||||||||||||||||||||||||||||||||||||
0 |
4 |
Spare |
|||||||||||||||||||||||||||||||||||||
1 |
0 |
Data ready |
From the MDIU. It indicates that a
digit-keystroke has been buffered within the MDIU and is ready to be
read. |
||||||||||||||||||||||||||||||||||||
1 |
1 |
Computer
mode 1 |
See "Computer mode 2". | ||||||||||||||||||||||||||||||||||||
1 |
2 |
Start
computation |
From the PCDP's
START
switch |
||||||||||||||||||||||||||||||||||||
1 |
3 |
X zero
indication |
Indicates that the IVI's X-velocity display is at zero. |
||||||||||||||||||||||||||||||||||||
1 |
4 |
ATM clock |
See the ATM section. |
||||||||||||||||||||||||||||||||||||
2 |
0 |
Enter |
From ENTER key of MDIU |
||||||||||||||||||||||||||||||||||||
2 |
1 |
Instrumentation
System
sync |
From Instrumentation
System (IS), to trigger beginning of a new downlink cycle every 2.4
seconds. |
||||||||||||||||||||||||||||||||||||
2 |
2 |
Velocity
error count not zero |
From the IVI.
It
is
an
indeicator
that
a
prior
"Write output processor" (PRO35) has
reached completion. |
||||||||||||||||||||||||||||||||||||
2 |
3 |
Aerospace
Ground Equipment request |
From the AGE. Becomes active
(accumulator negative) when a word is available on the dedicated AGE
data link. |
||||||||||||||||||||||||||||||||||||
2 |
4 |
Spare |
|||||||||||||||||||||||||||||||||||||
3 |
0 |
Readout |
From READ OUT key of MDIU |
||||||||||||||||||||||||||||||||||||
3 |
1 |
Computer
mode 3 |
See "Computer mode 2". | ||||||||||||||||||||||||||||||||||||
3 |
2 |
Spare |
|||||||||||||||||||||||||||||||||||||
3 |
3 |
ATM on |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
3 |
4 |
ATM data
channel 2 |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
4 |
0 |
Clear |
From CLEAR key of MDIU |
||||||||||||||||||||||||||||||||||||
4 |
1 |
ATM mode
control 1 |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
4 |
2 |
Simulaton
mode command |
|||||||||||||||||||||||||||||||||||||
4 |
3 |
ATM end of
tape |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
4 |
4 |
ATM data
channel 3 |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
5 |
0 |
Time to
start re-entry calculations |
This is a signal from the Time Reference System (TRS) that
its TR (time to retrograde) counter has reached zero. |
||||||||||||||||||||||||||||||||||||
5 |
1 |
ATM mode
control 2 |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
5 |
2 |
Y zero
indication |
Indicates that the IVI's Y-velocity display is at zero. | ||||||||||||||||||||||||||||||||||||
5 |
3 |
ATM data 1 |
See the ATM section. | ||||||||||||||||||||||||||||||||||||
5 |
4 |
Spare |
|||||||||||||||||||||||||||||||||||||
6 |
0 |
Digital
Command System ready |
This is a signal from the Digital Command System (DCS)—i.e., the digital uplink from ground control—that data is available for the OBC to read. In general, it is expected that this signal be polled at 50 ms. intervals or shorter. | ||||||||||||||||||||||||||||||||||||
6 |
1 |
Fade-in
discrete |
From the PCDP's
FADE-IN.
This
is
a
signal
from
a
relay, but anything beyond that
is TBD. |
||||||||||||||||||||||||||||||||||||
6 |
2 |
Z zero
indication |
Indicates that the IVI's Z-velocity display is at zero. | ||||||||||||||||||||||||||||||||||||
6 |
3 |
Umbilical
disconnect |
|||||||||||||||||||||||||||||||||||||
6 |
4 |
Spare |
|||||||||||||||||||||||||||||||||||||
7 |
0 |
Instrumentation
System
request |
|||||||||||||||||||||||||||||||||||||
7 |
1 |
Abort
transfer |
From the PCDP's
ABORT
switch.
The
software
should
poll
it
during ascent mode, and
switch from ascent mode to re-entry mode if the input becomes active. |
||||||||||||||||||||||||||||||||||||
7 |
2 |
Aerospace
Ground Equipment input data |
Reads a single data bit on
the dedicated AGE data
link. |
||||||||||||||||||||||||||||||||||||
7 |
3 |
Spare |
|||||||||||||||||||||||||||||||||||||
7 |
4 |
Spare |
Mode Bits |
Mode |
|||
---|---|---|---|---|
M4 |
M3 |
M2 |
M1 |
|
0 |
0 |
0 |
0 |
None |
0 |
0 |
0 |
1 |
Read words
from memory. (See below.) |
0 |
0 |
1 |
0 |
Set marginal
early. The software should use PRO60 to
enable the "marginal early" memory-accessing mode. |
0 |
0 |
1 |
1 |
Set computer
malfunction on. The software should use PRO34
to turn the MALF light on. (It's unclear how the MALF light gets
turned off. Probably the astronaut is supposed to do it manually
by pressing the RESET button on the PCDP.) |
0 |
1 |
0 |
0 |
Set marginal late. The software should use PRO60 to disable the "marginal early" memory-accessing mode. |
0 |
1 |
0 |
1 |
Set pitch
ladder output. (See below.) |
0 |
1 |
1 |
0 |
Set yaw ladder output. (See below.) |
0 |
1 |
1 |
1 |
Set roll ladder output. (See below.) |
1 |
0 |
0 |
0 |
Set all ladder outputs. (See below.) |
Shorthand |
Description |
---|---|
SHR1 |
Same as an SHF with X=1, Y=2. The existence of this shorthand and its translation is deduced from the text of the Project Gemini Familiarization Manual. |
SHR2 |
Same as an SHF with X=0, Y=2. The existence of this shorthand and its translation is deduced from the text of the Project Gemini Familiarization Manual. |
SHL1 |
Same as an SHF with Y=3. The value of X doesn't matter in this case, but our assembler will use X=0. The existence of this shorthand and its translation is deduced from the text of the Project Gemini Familiarization Manual. |
SHL2 |
Same as an SHF with Y=4. The value of X doesn't matter in this case, but our assembler will use X=0. The existence of this shorthand and its translation is deduced from the text of the Project Gemini Familiarization Manual. |
PROYX |
Same as a PRO with X=X
and Y=Y.
The
existence
of
this
shorthand
and
its
translation is deduced from the
text of the Project Gemini
Familiarization Manual. It is TBD with this shorthand how to select whether the important A9 operand bit is 0 or 1. Possibly it is always 0 and you need to use the full PRO form of the instruction when A9=1. |
CLDYX |
Same as a CLD with X=X and Y=Y. The existence of this shorthand and its translation is deduced from the text of the Project Gemini Familiarization Manual. |
NOOP |
A no-operation instruciton that simply advances to the next instruction in sequence. The assembler translates this to "TRA * + 1". The existence of NOOP, though not this specific translation of it, is deduced from LVDC code snippets created by Instrumentation Labs personnel. |
Pseudo-op |
Description |
Example |
---|---|---|
HOPCON |
Assembles a HOP constant into the current memory location. Its operand is the address of another memory location. The existence of this pseudo-op is deduced from LVDC code snippets created by Instrumentation Labs personnel. |
#
A
SUBROUTINE
LINKAGE. CLA * + 2 TRA ASUBROU HOPCON * + 1 RETHERE ... return here ... ... # A SUBROUTINE ASUBROU STO RETADDR ... do stuff ... HOP RETADDR RETADDR VAR |
DEC |
Assembles a decimal constant into memory. It can assemble either integer values or else fractional values with absolute values less than 1, and it determines the method used on the basis of whether or not a decimal point is present. There is no method provided for encoding a constant having both an integer and a fractional part. Its operand is a set of decimal digits, optionally preceded by '+' or '-', optional leading zeroes, and an optional '.'. The allowed range of values is -33554432 to +33554431 for integers. Note that the data will be aligned with the next syllable 0 in sequence. The existence of this pseudo-op is deduced from LVDC code snippets created by Instrumentation Labs personnel. | ANINT
DEC
-12345678 AFRACT DEC -.52 AFRACT2 DEC +0.987654321 |
OCT |
Assembles an octal constant into memory. Its operand is a set of octal digits. The allowed range of values is 0 to 377777777. Note that the data will be aligned with the next syllable 0 in sequence. The existence of this pseudo-op is deduced from LVDC code snippets created by Instrumentation Labs personnel. | ANOCT
OCT
1234567 |
ORG |
Moves the assembler's current
address to a different location within the current memory sector and current memory module. Its
operand is a set of octal digits forming a constant in the range 0-377. I assume from personal experience that a pseudo-op like this must exist, but there is no hint of it in any existing documentation. |
ORG
0 |
SECT |
Changes the assembler's
current memory sector within the current
memory module, and changes the assembler's current syllable pointer to
the next unused syllable in that memory sector. Its operand is a
set of octal digits forming a constant
in the range 0-17. Alternately, the operand may be the label of a memory location. In this case, what happens is that the assembler's current memory sector and memory module are changed to that of the labeled memory location, and the assembler's current syllable pointer is moved to the next unused location in that memory sector. I assume from personal experience that a pseudo-op like this must exist, but there is no hint of it in any existing documentation. |
#
WRITING
CODE
IN
SECTOR
4 SECT 4 ... ASUB ... code for ASUB ... # WANT TO DEFINE A VARIABLE # USED BY THE ASUB ROUTINE # IN THE RESIDUAL SECTOR, # BUT THEN TO CONTINUE CODING # WHERE WE LEFT OFF. SECT 17 AVAR VAR # COULD ACTUALLY SAY "SECT 4" # HERE, BUT SAYING # "SECT ASUB" INSTEAD MAKES # IT EASIER TO MOVE THE CODE # AROUND IF (SAY) SECTOR 4 # FILLS UP. SECT ASUB ... more code ... |
MODULE |
Changes the assembler's current memory module, and changes the assembler's current sector and current syllable pointer to the lowest unused syllable in that module. Its operand is a set of octal digits forming a constant in the range 0-7 for LVDC, or simply 0 for the Gemini OBC. I assume from personal experience that a pseudo-op like this must exist, but there is no hint of it in any existing documentation. |
MODULE
0 SECT 5 |
VAR |
Allocates a word or several words for storage of variables. The operand is a set of octal digits forming a constant that gives the number of words allocated. If the operand is missing, it is assumed to be 1. I assume from personal experience that a pseudo-op like this must exist, but there is no hint of it in any existing documentation. |
#
ALLOCATE
A
21-WORD
BUFFER # FOR DOWNLINKING DIGITAL # DATA. INSTDAT VAR 25 # ALSO, SEE THE HOPCON AND # SECT EXAMPLES ABOVE. |