Skip to content
0 / 17
Pre-launch Review

BURN BABY BURN

Of all the filenames in the Apollo 11 source code, this one tends to stop people cold: BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc. It sounds like a dare. It was, in a way.

Scanned page 731 of the Luminary099 assembly listing showing the BURN, BABY, BURN master ignition routine. Comment-only lines (prefixed with R) have blank address and octal columns — the assembler produced nothing for them.

Page 731 of the actual Luminary099 assembly listing, photographed at the MIT Museum by Paul Fjeld for the Virtual AGC project. Comment lines prefixed R have blank address and octal columns — the assembler produced nothing for them.

The name traces back to Magnificent Montague, a larger-than-life disc jockey who ruled soul music radio in Chicago, New York, and Los Angeles from the mid-1950s through the mid-1960s. His signature catchphrase — shouted when he put on a record too hot to handle — was “Burn, baby! BURN!”

The phrase took on darker resonance during the 1965 Watts riots in Los Angeles, when it was reportedly chanted in the streets. By the time Don Eyles and Peter Adler were writing the ignition routine for the Lunar Module’s guidance computer, the phrase had become cultural shorthand for something intense and unstoppable.

At the 2009 reunion of AGC developers celebrating the 40th anniversary of the first moonwalk, Eyles confirmed the connection. The source code itself includes this note:

## It traces back to 1965 and the Los Angeles riots, and was inspired
## by disc jockey extraordinaire and radio station owner Magnificent Montague.
## Magnificent Montague used the phrase "Burn, baby! BURN!" when spinning the
## hottest new records.

The master ignition routine is the central engine sequencing system for the Lunar Module. It handles every phase of engine ignition for programs P12, P40, P42, P61, and P63 — from the pre-ignition countdown at TIG-35 seconds through TIG+26 seconds, when DPS programs throttle up.

The routine manages:

  • Pre-ignition countdown displays
  • Ullage (settling) burns to push fuel against the engine inlet
  • The actual engine-on command
  • Post-ignition throttle-up
  • Abort handling if something goes wrong before or during ignition

Different programs require different behaviors at each stage, so the routine uses a table-driven design. Each calling program sets the erasable register WHICH to point to its own table of constants and branch addresses.

Eyles and Adler left their mark in the comments. Just before the program tables, the code declares:

Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
# THE MASTER IGNITION ROUTINE WAS CONCEIVED AND EXECUTED, AND (NOTA BENE)
# IS MAINTAINED BY ADLER AND EYLES.
#
#              HONI SOIT QUI MAL Y PENSE
Machine instructions — woven into rope Comments — woven into history

Nota bene — “note well.” Honi soit qui mal y pense — “Shame on him who thinks evil of it,” the motto of the Order of the Garter, the oldest order of chivalry in England. A warning to anyone who might criticize their work, wrapped in medieval French.

And just below, guarding the program tables:

Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
#			NOLI SE TANGERE
Machine instructions — woven into rope Comments — woven into history

“Do not touch.” A direct instruction to any maintainer who might be tempted to rearrange the carefully indexed table entries that follow.

The table-driven architecture is elegant for its constraints. Each program’s table occupies a fixed set of indexed entries. The ignition routine uses INDEX WHICH to jump to the correct entry for the current program:

P63TABLE VN 0662 # (0) Verb/Noun for display
TCF ULLGNOT # (1) Ullage setup
TCF COMFAIL3 # (2) Communication failure
TCF V99RECYC # (3) Post-burn/recycle
TCF TASKOVER # (4) Task termination
TCF P63SPOT # (5) Program-specific entry
DEC 2240 # (6) Ullage duration (centiseconds)
EBANK= WHICH
2CADR SERVEXIT # (7) AVERAGEG exit address

Entry (0) holds the Verb/Noun code for the countdown display. Entry (6) holds the ullage duration — 22.4 seconds for P63, zero for P12 (which needs no ullage), and 26.4 seconds for P42. The two-word address at (7) tells the routine where to return control after the burn is established.

The entry point is BURNBABY. Its first act is practical — restart protection and zeroing out the delta-V accumulator:

Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
BURNBABY	TC	PHASCHNG	# GROUP 4 RESTARTS HERE
	OCT	04024

	CAF	ZERO		# EXTIRPATE JUNK LEFT IN DVTOTAL
	TS	DVTOTAL
	TS	DVTOTAL +1
Machine instructions — woven into rope Comments — woven into history

“Extirpate” — to root out and destroy completely. Not “clear” or “zero.” Extirpate.

Shortly after, a second label appears: B*RNB*B*. This isn’t obfuscation; it is a distinct entry point reached after the auto-mode check completes. The asterisks were likely chosen to create a visually distinct label that wouldn’t collide with BURNBABY in the symbol table while still being obviously related.

The P40AUTO subroutine — which checks that the guidance computer is in primary control and auto-stabilization mode — greets and dismisses the caller like a shopkeeper:

Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
P40AUTO		TC	MAKECADR	# HELLO THERE.
	TS	TEMPR60		# FOR GENERALIZED RETURN TO OTHER BANKS.
Machine instructions — woven into rope Comments — woven into history

And at the return:

Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
GOBACK		CA	TEMPR60
	TC	BANKJUMP	# GOODBYE.  COME AGAIN SOON.
Machine instructions — woven into rope Comments — woven into history

The ignition timeline is a cascade of waitlist tasks, each setting up the next:

  1. TIG-35: Blanks the DSKY for 5 seconds to signal that Average-G is starting
  2. TIG-30: Starts the countdown display and triggers ullage if needed
  3. TIG-5: Resets flags, prepares for ignition
  4. TIG-0: Sets IGNFLAG and either fires the engine immediately or waits for the astronaut’s “PROCEED” response to the “PLEASE ENABLE ENGINE” display (Verb 99)

The engine-on command itself is startlingly direct:

IGNITION CS FLAGWRD5 # INSURE ENGONFLG IS SET.
MASK ENGONBIT
ADS FLAGWRD5
CS PRIO30 # TURN ON THE ENGINE.
EXTEND
RAND DSALMOUT
AD BIT13
EXTEND
WRITE DSALMOUT

That WRITE DSALMOUT — writing a single bit to an output channel — is the instruction that ignites a rocket engine 240,000 miles from Earth.

Near the end of the constants section, there is this:

? = GOTOPOOH

A label that is literally a question mark, equated to GOTOPOOH — the routine that returns the computer to program P00 (idle). Whether this was a placeholder that never got a proper name, or a deliberate expression of uncertainty about where to go next, the source code does not say.