Devising the Fix
The intermittent short circuit of the ABORT button
represented the most dramatic moment for the MIT computer folks in the
entire Apollo program. They had between three and four hours to find a
way for the computer to ignore it, test the fix at Grumman, then test
it in Houston before sending it to the crew in time for PDI .
In the LM Guidance Computer (LGC) a "discrete" was set
when either the ABORT or ABORT STAGE button was pushed. Every 1/4 of a
second an Abort Monitor Routine would first verify that the LETABORT
flag was set, indicating that aborts were allowed, and then, at the
first sign of one of these discretes, automatically select an abort
program: either P70, a main engine abort, or P71, a staged abort with
the ascent engine.
Don Eyles at MIT first thought that simply
disallowing aborts by resetting LETABORT through the bit manipulation
noun, NOUN 7, would do the trick. Unfortunately, 0.2 seconds after
engine start, the Ignition Routine automatically set the LETABORT
flag! In the middle of all the excitement of engine start, the
crew would have to quickly enter the reset sequence and, for those few
seconds, would still be vulnerable to the ABORT button signal.
Fortunately, another path in the Abort Monitor
Routine to close this window of vulnerability was found --
MODEREG: the Mode Register memory location that held the number of the
program or "major mode" that was currently running. That register
was accessed mainly for the PROG display on the DSKY, but was also
checked by the Abort Monitor Routine in case P70 or P71 was already
running. If an abort was the current major mode, there was no need to
start a new one.
So the plan was: fake out the Abort Monitor Routine
with P71 in MODEREG immediately after manuevering to the burn attitude,
wait for ignition to automatically set LETABORT, reset LETABORT
(disabling aborts), and then restore MODEREG. However, two
further complications had to be added to this simple plan. The
Ignition Routine also checked MODEREG, and if it didn't find P63 there,
it didn't "zoom" the engine to full throttle after 26 seconds of thrust
vector trimming, nor did it set ZOOMFLAG which permitted the descent
guidance to take over. So now the final plan was: Ed would put P71 in
MODEREG before ignition, they'd do everything normally through ignition
and the 26 second trim, then Al would push his thottle control up to
full, then Ed would set ZOOMFLAG, then reset LETABORT to disable any
abort signal, then restore P63 in MODEREG, and, finally, Al would put
his thrust controller to minimum to let the Guidance routine take over
the engine.
The reason P63 had to be in MODEREG even after the
ignition sequence didn't need it was that the State Vector update
routine also checked this register to see what weighting to give the
Landing Radar data. The routine corrected their calculated height
with only a portion of the difference between the radar measured height
and that measured by the accelerometers (delta H). At 50,000 feet
it would add 0% of the delta H then increase that to 35% as they got
down to 10,000 feet. If MODEREG didn't have the number for P63,
the update routine would think they were in P66 and incorporate a full
35% of the delta H, which, at high altitude, would make for a bumpy
ride. Grumman's Performance Evaluation Report claimed that the
entire procedure did not affect the radar in any way. The later
Landing Radar problem was caused by a scale bit which had switched 38
seconds before any of these abort masking procedures where entered.
Finally, if an abort was required, Ed would have to
set LETABORT by punching all of this into the DSKY: Verb 25, Noun 7
Enter, 105 Enter, 400 Enter, 1 Enter. Then they could get out of
Dodge!
Real-Time Implementation
********
108:02:45 Shepard: Okay. (Pause)
We'll take the Throttle up at 26.
(Pause)
108:02:54 Mitchell: Throttle up.
[Al was late by 2
seconds.]
108:02:56 Shepard: Okay. We're at full throttle, Houston.
108:02:58 Mitchell: Command is Down. Verb (garbled) 5, ...
[Ed
is starting to punch the sequence: Verb 25 Noun
7 Enter, 101 Enter, 200 Enter, 1 Enter which sets ZOOMFLAG to
permit Guidance Steering.]
108:03:01 Haise: (Responding to Ed's report of 'full throttle') Roger,
Antares.
108:03:03 Mitchell: ... Noun 7, Enter 101.
108:03:09 Shepard: 1.7.
108:03:12 Mitchell: (200 Enter), 001 Enter. Should have guidance. And
you have
Command
and Throttle.
[ZOOMFLAG
is set.]
108:03:19 Shepard: Okay. We have guidance.
[Mitchell
- "I think that all of this is
change procedure, instead of automatic. I think that the
computer would not automatically start guidance until I gave it
control. And I think that's what these two or three lines is all
about here."]
108:03:23 Mitchell: All right. I'm Disabling (aborts). Verb 25 Noun 7
Enter;
105
Enter, ...
[Ed
is punching the sequence for resetting LETABORT, disabling aborts.]
108:03:31 Haise: You're Go at one (minute) Antares.
108:03:32 Mitchell: 400 Enter, 0 Enter. Okay. Landing radar enable:
[Ed
is now restoring P63 in MODEREG so the State
Vector routine will use the correct weighting function to apply to the
radar delta H.]
08:03:xx Mitchell: Verb 21 Noun 1 (does he say Noun 7, which is what it
should be?), Enter; 1010, Enter; 77, Enter. The landing radar is there.
Al, you can reduce your Throttle to Minimum.
[77
is the number for P63 in MODEREG.]