Source Code
![]() |
These source-code files were transcribed from scans made from Don Eyles's personal
copy of BURST120 (SUNBURST 120). They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Mike Stewart. The code was transcribed
from these scans by a team of volunteers who are referenced in the program
comments. Comments from the original source code are in ALL-CAPS, whereas
comments added later in transcription are in Mixed-Case. In some cases, where
similar code blocks exist in previously-transcribed AGC programs (primarily
Luminary 99, from Apollo 11) those code blocks were used as a starting point and
then corrected to agree with the BURST120 scans. The full scans are available
at the Virtual AGC
project's collection at archive.org, while more-convenient reduced-size (but reduced-quality)
images are available at
the main Virtual AGC website. Report any errors noted by creating an
issue report at the Virtual AGC
project's GitHub repository. Notations on the program listing read, in part:YUL SYSTEM FOR AGC: REVISION 0 OF PROGRAM BURST120 BY NASA 2021106-031 DEC 7, 1967 THIS LISTING IS A COPY OF A VERSION OF THE PROGRAM INTENDED FOR USE IN THE ON-BOARD PRIMARY GUIDANCE COMPUTER IN THE UNMANNED FLIGHT OF APOLLO LUNAR MODULE 1 --- THE AS206 MISSION.Note that the date is the date of the printout, not the date of the program revision. |
034103,000002: ## Copyright: Public domain.
034104,000003: ## Filename: LMP_COMMAND_ROUTINES.agc
034105,000004: ## Purpose: A module for revision 0 of BURST120 (Sunburst). It
034106,000005: ## is part of the source code for the Lunar Module's
034107,000006: ## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
034108,000007: ## Assembler: yaYUL
034109,000008: ## Contact: Ron Burkey <info@sandroid.org>.
034110,000009: ## Website: www.ibiblio.org/apollo/index.html
034111,000010: ## Mod history: 2016-09-30 RSB Created draft version.
034112,000011: ## 2016-10-28 HG transcribed
034113,000012: ## 2016-12-06 RSB Comments proofed using octopus/ProoferComments,
034114,000013: ## changes made.
034115,000014:
![]() |
Page 799 |
034117,000016: # THE FOLLOWING SUBROUTINES ALLOW MISSION PROGRAMS TO REQUEST LMP (LEM MISSION PROGRAMMER) OUTPUTS.
034118,000017: # THE PROPER DECIMAL CODE IS ENTERED INTO A TABLE AND FROM THENCE TO CHANNEL 10 VIA T4RUPT AND ARE INCLUDED IN
034119,000018: # THE DOWNLINK.
034120,000019:
034121,000020: # FOUR ROUTINES ARE PROVIDED:
034122,000021:
034123,000022: # TC 1LMP CALLED UNDER EXEC OR RUPT. DELIVERS CODE
034124,000023: # DEC LMPCODE AND RETURNS IMMEDIATELY.
034125,000024:
034126,000025: # TC 2LMP SAME AS 1LMP BUT TWO CODES ARE
034127,000026: # DEC LMPCODE1 SENT.
034128,000027: # DEC LMPCODE2
034129,000028:
034130,000029: # TC 1LMP+DT ASSUMES CALLED AS PART OF WAITLIST TASK.
034131,000030: # DEC LMPCODE DELIVERS LMP CODE, DOES A VARDELAY FOR
034132,000031: # DEC DT DT, AND THEN RETURNS UNDER WL CONTROL.
034133,000032:
034134,000033: # TC 2LMP+DT SAME AS 1LMP+DT BUT TWO CODES SENT.
034135,000034: # DEC LMPCODE1
034136,000035: # DEC LMPCODE2
034137,000036: # DEC DT
034138,000037:
034139,000038: # WARNING ***** PROGRAMS UNDER EXEC WHICH CALL 1LMP + 2LMP MUST FIRST
034140,000039: # INHIBIT INTERRUPT....RETURNS STILL INHIBITED.
034141,000040:
034142,000041:
034143,000042:
034144,000043: 5052 BLOCK 02
034145,000044: 5052 50002 2LMP INDEX Q # PICK UP 1ST CODE
034146,000045: 5053 30000 CA 0
034147,000046: 5054 24002 INCR Q
034148,000047: 5055 22002 LXCH Q # SAVE 2ND CODE ADDRESS IN L
034149,000048:
034150,000049: 5056 LMPGROUP EQUALS 2
034151,000050: 5056 1115 LMPTBASE EQUALS TBASE2
034152,000051: 5056 1102 LMPPHASE EQUALS PHASE2
034153,000052:
034154,000053: 5056 05063 TC STORCOM -1 # TO STORE IN BUFFER AND UPDATE POINTER
034155,000054:
034156,000055: 5057 22002 LXCH Q # RETRIEVE 2ND CODE ADDRESS FROM L.
034157,000056:
034158,000057: 5060 50002 1LMP INDEX Q
034159,000058: 5061 30000 CA 0 # GET LMP CODE
034160,000059: 5062 24002 INCR Q # SET RETURN.
034161,000060: 5063 67745 AD BIT15 # SET SIGN TO SHOW NEW COMMAND IN BUFFER
034162,000061: 5064 51143 STORCOM INDEX LMPIN
034163,000062: 5065 55133 TS LMPCMD # INSERT IN NEXT SLOT IN BUFFER
034164,000063:
034165,000064: 5066 11143 UPLMPIN CCS LMPIN # UPDATE POINTER
034166,000065:
![]() |
Page 800 |
034168,000067: 5067 15071 TCF +2
034169,000068: 5070 37765 CAF SEVEN
034170,000069: 5071 55143 TS LMPIN
034171,000070: 5072 00002 TC Q
034172,000071:
034173,000072: 5073 50002 2LMP+DT INDEX Q
034174,000073: 5074 30000 CA 0 # PICK UP 1ST CODE
034175,000074: 5075 24002 INCR Q
034176,000075: 5076 22002 LXCH Q # 2ND CODE ADDRESS IN L.
034177,000076:
034178,000077: 5077 05063 TC STORCOM -1 # STORE IN BUFFER AND UPDATE POINTER
034179,000078:
034180,000079: 5100 15102 TCF +2
034181,000080:
034182,000081: 5101 00006 1LMP+DT EXTEND # SAVE RETURN FOR RESTARTS
034183,000082: 5102 23146 QXCH LMPRET # IS LXCH IF FROM ABOVE
034184,000083: 5103 30006 CA BBANK
034185,000084: 5104 55147 TS LMPBBANK
034186,000085:
034187,000086: 5105 00006 EXTEND
034188,000087: 5106 51146 INDEX LMPRET
034189,000088: 5107 30001 DCA 0 # PICK UP CODE AND DT
034190,000089: 5110 05063 TC STORCOM -1 # GO TO STORE CODE AND UPDATE POINTER
034191,000090:
034192,000091: 5111 23150 LXCH SAVDT # SAVE FOR RESTART
034193,000092: 5112 04161 TC PHASCHNG # RESTART PROTECT DELAY
034194,000093: 5113 47012 OCT 47012
034195,000094: 5114 76627 -GENADR SAVDT
034196,000095: 5115 1115 EBANK= TBASE2
034197,000096: 5115 05123 04062 2CADR LMPRST
034198,000097:
034199,000098: 5117 31150 CA SAVDT # WAIT DT SECONDS
034200,000099: 5120 05704 TC VARDELAY
034201,000100:
034202,000101: 5121 51146 LMPEXIT INDEX LMPRET
034203,000102: 5122 00002 TC 2
034204,000103:
034205,000104: 5123 31147 LMPRST CA LMPBBANK # LMP+DT RESTARTS COME HERE
034206,000105: 5124 54006 TS BBANK # AFTER DELAY.
034207,000106: 5125 05121 TC LMPEXIT
End of include-file LMP_COMMAND_ROUTINES.agc. Parent file is MAIN.agc