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. |
012944,000002: ## Copyright: Public domain.
012945,000003: ## Filename: UPDATE_PROGRAM_PART_1_OF_2.agc
012946,000004: ## Purpose: A module for revision 0 of BURST120 (Sunburst). It
012947,000005: ## is part of the source code for the Lunar Module's
012948,000006: ## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
012949,000007: ## Assembler: yaYUL
012950,000008: ## Contact: Ron Burkey <info@sandroid.org>.
012951,000009: ## Website: www.ibiblio.org/apollo/index.html
012952,000010: ## Mod history: 2016-09-30 RSB Created draft version.
012953,000011: ## 2016-10-14 RSB Transcribed.
012954,000012: ## 2016-10-31 RSB Typo.
012955,000013: ## 2016-12-05 RSB Proofed with octopus/ProoferComments
012956,000014: ## and various comments corrected, but the
012957,000015: ## proofing process is not yet completed.
012958,000016: ## 2016-12-05 RSB Comment-proofing pass with octopus/ProoferComments completed.
012959,000017:
![]() |
Page 316 |
012961,000019: # PROGRAM NAME- UPDATE PROGRAM
012962,000020: # PROGRAM WRITTEN BY- RHODE
012963,000021: # MOD NO.- 2
012964,000022: # MOD BY- KILROY TO ADD AGC CLOCK AND TE(V75E4ETTTTTE) UPDATE FEATURE.
012965,000023: # DATE- 01FEB67
012966,000024: # LOG SECTIONS- UPDATE PROGRAM PART 1 OF 2
012967,000025: # UPDATE PROGRAM PART 2 OF 2
012968,000026: # ASSEMBLY- REV 93 OF SUNBURST
012969,000027: # FUNCTIONAL DESCRIPTION- TO PROCESS COMMANDS AND DATA INSERTIONS
012970,000028: # REQUESTED BY THE GROUND VIA UPLINK.
012971,000029: # VERBS V64, V67, V70, V71, V72, V73, V75 AND V76 WILL NOT BE
012972,000030: # PROCESSED IF THE MISSION TIMERS ARE DISABLED(I.E. AN MP IS IN
012973,000031: # PROGRESS). OPERATOR ERROR LIGHT WILL BE TURNED ON.
012974,000032: # V65, V66 AND V74 WILL BE PROCESSED EVEN IF A MP IS IN PROGRESS
012975,000033: # CALLING SEQUENCE- TCF XXUPDAT WHERE XX = EXTENDED VERGS(64 TO 76)
012976,000034: # LST2FAN CONTAINS A LIST OF TCF XXUPDAT
012977,000035: # WHICH ARE USED BY VERBFAN IN PINBALL TO
012978,000036: # GIVE CONTROL TO THE UPDATE PROGRAM.
012979,000037: # SUBROUTINES CALLED- POSTJUMP,IBNKCALL, BANKCALL, CHECKMM, GRABWAIT,
012980,000038: # NEWMODEX, FREEDSP, WAITLIST, ENDOFJOB, NOVAC, TASKOVER, FINDVAC
012981,000039: # ENDUP, DOV67, DOV70, DOV71, DOV72, DOV73, DOV74, DFITMCAL,
012982,000040: # GRRPLACE, NVSBWAIT, ENDIDLE, XACTALM, MGETUP, UPDATINT, TPAGREE
012983,000041: # NORMAL EXIT MODE- TC BANKCALL
012984,000042: # CADR ENDUP
012985,000043: # ALARM OR ABORT EXIT MODE- BZF XACTALM IF MP IN PROGRESS
012986,000044:
012987,000045: # TC BANKCALL IF MP IN PROGRESS
012988,000046: # CADR XACTALM
012989,000047: # RESTART PROTECTION- NONE FOR VERBS 64 TO 74. RESTART PROTECTION IS
012990,000048: # INCLUDED FOR V75 AND V76 UNDER THE FOLLOWING CIRCUMSTANCES-----
012991,000049: # 1. THE DATA HAS BEEN SENT AND VERIFIED(I.E. V33E HAS BEEN SENT)
012992,000050: # 2. PROGRAM IS IN THE PROCESS OF MOVING DATA FROM STBUFF TO
012993,000051: # APPROPRIATE REGISTERS OR
012994,000052: # VERB 75 OR VERB 75(INDEX = 4 ONLY) PROGRAM(S) ARE WAITING(VIA WAITLIST
012995,000053: # 3 SEC CALL) FOR ORBITAL INTEGRATION TO BE TURNED OFF.
012996,000054: # ***OF COURSE ALL GROUND UPDATES(IF LOST DUE TO A RESTART) CAN
012997,000055: # BE RESTARTED BY SENDING THE COMMANDS AND DATA A SECOND TIME***
012998,000056: # INPUT(SEE LATEST AS206 GSOP:R527:FOR MORE INFO)- ..................DESCRIPTION OF UPDATE COMPONENTS..........
012999,000057: # COMP.
013000,000058: # UPDATE ENTRY DESCRIPTION OF UPDATE VERBS NO. SYMBOL VALUES DEFINITION (WHERE STORED)
013001,000059: # --------------- ----------------------------------- ---- ------ ---------------- -------------------------------
013002,000060: # V64EIEXXXXXE SET MISSION TIMER I TO ELAPSE AT A 1. I 1,2,3,4 MISSION TIMERS
013003,000061: # XXXXXE GIVEN GROUND ELAPSED TIME(GET).X-S 2. XXXXX MSB OF GET(MUST BE IN)
013004,000062: # ARE THE GET(IN CENTISECONDS OF THE 3. XXXXX LSB OF GET(THE FUTURE)
013005,000063: # DESIRED EVENT.
013006,000064: # V65E SET GUIDANCE REFERENCE RELEASE NONE
013007,000065: # DISCRETE.
013008,000066: # V66E INITIATE THE LGC DFI TLM CALIBRATE NONE
013009,000067: # ROUTINE.
013010,000068: # V67EXXXE ENTER A THREE DIGIT OCTAL NUMBER 1. XXX 1-377(OCTAL) SEE GSOP FOR LIST OF COMMANDS
![]() |
Page 317 |
013012,000070: # REPRESENTING THE 8 BIT COMMAND TO
013013,000071: # BE SENT TO THE LMP.
013014,000072: # V70EIETTTTTE INCREMENT TIMER I BY TTTTT OCTAL 1. I 1,2,3,4 MISSION TIMERS
013015,000073: # SECONDS. 2. TTTTT **SEE NOTES TO LEFT**
013016,000074: # **SEE BELOW FOR DESCRIPTION OF
013017,000075: # :UPDATE OF TIMERI LOGIC : AND
013018,000076: # :TIMER MAINTENANCE LOGIC:**
013019,000077: # V71EIEPPE SET MISSION PHASE REGISTER I TO 1. I 1,2,3,4 MISSION PHASE REGISTERS
013020,000078: # MISSION PHASE PP (OCTAL) 2. PP 7,10,11,13,15(OCT) MISSION PHASES
013021,000079: # V72EIEPPETTTTTE (--COMBINATION OF V70 AND V71.--)
013022,000080: # V73EIE CHANGE THE STATE OF THE DPS COLD 1. I 1 ENABLE/INHIBIT RCS TESTING
013023,000081: # SOAK (MISSION PHASE 8) DISCRETE(I=2) I 2 ENABLE/INHIBIT DPS COLD SOAK
013024,000082: # I 3 ENABLE/INHIBIT RCS COLD SOAK
013025,000083: # (I = 1 OR 3 WILL ONLY INVERT
013026,000084: # RESPECTIVE BITS OF FLAGWRD2 AND
013027,000085: # HAVE NO OTHER EFFECT ON 206)
013028,000086: # V74E MISSION IDLE COMMAND. NONE
013029,000087: # (VERB 15,NOUN 50, R1 = FAILREG,
013030,000088: # R2 = FAILREG +1, R3 = FAILREG +2
013031,000089: # WILL APPEAR ON DSKY)
013032,000090: # V75E1EXXXXXE UPDATE TARGET PARAMETERS FOR DPS1 1. I 1 DPS1 TARGET PARAMS UPDATE CODE
013033,000091: # XXXXXE BURN.(MISSION PHASE 9). 2. XXXXX MSB OF R(P) (RP )
013034,000092: # 3. XXXXX LSB OF R(P) (RP +1)
013035,000093: # (RP IS THE DESIRED PERIGEE OR APOGEE
013036,000094: # RADIUS SCALED AT METERS 2(24))
013037,000095: # V75E2EXXXXXE UPDATE TARGET PARAMETERS FOR DPS2 1. I 2 DPS2 TARGET PARAMS UPDATE CODE
013038,000096: # XXXXXE BURN (MISSION PHASE 11). 2. XXXXX MSB OF CPT(6) (CPT6/2 )
013039,000097: # XXXXXE 3. XXXXX LSB OF CPT(6) (CPT6/2 +1)
013040,000098: # XXXXXE 4. XXXXX MSB OF CPT(7) (CPT6/2 +2)
013041,000099: # XXXXXE 5. XXXXX LSB OF CPT(7) (CPT6/2 +3)
013042,000100: # XXXXXE 6. XXXXX MSB OF CPT(8) (CPT6/2 +4)
013043,000101: # 7. XXXXX LSB OF CPT(8) (CPT6/2 +5)
013044,000102: # (CPT/6 IS 1/2 UNIT NORMAL TO THE
013045,000103: # DESIRED ORBITAL PLANE IN STABLE MEMBER
013046,000104: # COORDINATES)
013047,000105: # V75E3EXXXXXE UPDATE TARGET PARAMETERS FOR APS2 1. I 3 APS2 TARGET PARAMS UPDATE CODE
013048,000106: # XXXXXE BURN (MISSION PHASE 13). 2. XXXXX MSB OF RCSM(TA)0 (RIVEC )
013049,000107: # XXXXXE 3. XXXXX LSB OF RCSM(TA)0 (RIVEC +1)
013050,000108: # XXXXXE 4. XXXXX MSB OF RCSM(TA)1 (RIVEC +2)
013051,000109: # XXXXXE 5. XXXXX LSB OF RCSM(TA)1 (RIVEC +3)
013052,000110: # XXXXXE 6. XXXXX MSB OF RCSM(TA)2 (RIVEC +4)
013053,000111: # XXXXXE 7. XXXXX LSB OF RCSM(TA)2 (RIVEC +5)
013054,000112: # XXXXXE 8. XXXXX MSB OF TA (TINT )
013055,000113: # XXXXXE 9. XXXXX LSB OF TA (TINT +1)
013056,000114: # XXXXXE 10. XXXXX MSB OF RD (RCO )
013057,000115: # 11. XXXXX LSB OF RD (RCO +1)
013058,000116: # (RIVEC IS THE POSITION VECTOR OF THE
013059,000117: # DESIRED INTERCEPT POINT IN STABLE
013060,000118: # MEMBER COORD SCALED AT METERS 2(25).
013061,000119: # TINT IS THE TIME SCALED AT CSEC 2(28).
![]() |
Page 318 |
013063,000121: # RCO IS THE DESIRED RADIUS AT CUTOFF
013064,000122: # SCALED AT METERS 2(25))
013065,000123: # V75E4ETTTTTE UPDATE LGC CLOCK(TIME2,TIME1) 1. I 4 LGC AND SV CLOCK UPDATE CODE
013066,000124: # AND STATE VECTOR TIME(TE,TE +1) 2. TTTTT DELTA TIME(SP,OCTAL,CSEC) TO
013067,000125: # WITH TTTTT(IN CENTISECONDS) BE ADDED TO TIME1 AND TE +1
013068,000126: # V76E XXXXXE STATE VECTOR UPDATE. 1. XXXXX MSB OF X POSITION (REFRRECT )
013069,000127: # XXXXXE 2. XXXXX LSB OF X POSITION (REFRRECT +1)
013070,000128: # XXXXXE 3. XXXXX MSB OF Y POSITION (REFRRECT +2)
013071,000129: # XXXXXE 4. XXXXX LSB OF Y POSITION (REFRRECT +3)
013072,000130: # XXXXXE 5. XXXXX MSB OF Z POSITION (REFRRECT +4)
013073,000131: # XXXXXE 6. XXXXX LSB OF Z POSITION (REFRRECT +5)
013074,000132: # XXXXXE 7. XXXXX MSB OF X VELOCITY (REFVRECT )
013075,000133: # XXXXXE 8. XXXXX LSB OF X VELOCITY (REFVRECT +1)
013076,000134: # XXXXXE 9. XXXXX MSB OF Y VELOCITY (REFVRECT +2)
013077,000135: # XXXXXE 10. XXXXX LSB OF Y VELOCITY (REFVRECT +3)
013078,000136: # XXXXXE 11. XXXXX MSB OF Z VELOCITY (REFVRECT +4)
013079,000137: # XXXXXE 12. XXXXX LSB OF Z VELOCITY (REFVRECT +5)
013080,000138: # XXXXXE 13. XXXXX MSB OF TIME (TE )
013081,000139: # XXXXXE 14. XXXXX LSB OF TIME (TE +1 )
013082,000140: # (POSITION SCALED AT KILOMETERS 2(14).
013083,000141: # VELOCITY SCALED AT METERS/CSEC
013084,000142: # 2(7) / 1.29753638
013085,000143: # TIME SCALED AT CENTISECONDS 2(23) )
013086,000144: # UPTATE OF TIMERI LOGIC(UPDT = TTTTT TIME SENT VIA UPLINK)-
013087,000145: # T
013088,000146: # BEFORE A A A H
013089,000147: # UPDATE N N N E
013090,000148: # TIMERI = D UPDT = D TIMERI + UPDT = D TIMERI + UPDT = N TIMERI =
013091,000149: # -------- - ------ - --------------- - --------------- - -------------
013092,000150: # ( (
013093,000151: # ( ( OVERFLOW NO CHANGE (EXCEPT OPERATOR ERROR = ON)
013094,000152: # ( (
013095,000153: # ( (
013096,000154: # ( ( (
013097,000155: # ( .GT. +0( ( .GE. +0 TIMERI + UPDT
013098,000156: # ( .LT. -0( NO (
013099,000157: # ( ( OVERFLOW ( .LT. -0 0
013100,000158: # .GE. +0 ( ( (
013101,000159: # ( ( ( .EQ. -0 0
013102,000160: # ( ( (
013103,000161: # ( (
013104,000162: # (
013105,000163: # ( (
013106,000164: # ( .EQ. +0( UPDT
013107,000165: # ( .EQ. -0(
013108,000166: # ( (
013109,000167: # (
013110,000168:
013111,000169: # .LE. -0 UPDT
013112,000170:
![]() |
Page 319 |
013114,000172: # TIMER MAINTENANCE LOGIC(BY MMAINT)-
013115,000173: # TIMERI = MEANS
013116,000174: # -------- --------------------------------------------------------------
013117,000175: # .GT. +0 TIMERI IS COUNTING DOWN
013118,000176: # .EQ. +0 MISSION PHASE IN ASSOCIATED MISSION PHASE REGISTER IS NOW DUE
013119,000177: # .LT. -0 FREE BUT LOADED BY GROUND
013120,000178: # .EQ. -0 FREE
013121,000179: # OUTPUT- PERFORM UPDATES AS DESCRIBED IN GSOP AND :INPUT:
013122,000180: # ERASABLE INITIALIZATION REQUIRED- NONE
013123,000181: # DEBRIS(ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM)- MPAC - MPAC +2,
013124,000182: # STCOUNT, EBANK, UPVERB, UPOLDMOD, FLAGWRD2(BIT6),UPTEMP,
013125,000183: # UPTEMP1, COMPNUMB, REFRRECT - REFRRECT +5, REFRCV - REFRCV +5,
013126,000184: # REFVRECT - REFVRECT +5, REFVCV - REFVCV +5, TE - TE +1,
013127,000185: # DELTAV - DELTAV +5, NUV - NUV +5, REFTC -REFTC +1,
013128,000186: # REFKEP - REFKEP +1, UPINDEX, UPDT
013129,000187: # AND CENTRAL REGISTERS
013130,000188:
013131,000189: 11,3242 BANK 11
013132,000190: 11,3242 E4,1677 EBANK= STBUFF
013133,000191: 11,3242 05225 65UPDAT TC POSTJUMP
013134,000192: 11,3243 56000 CADR GRRPLACE
013135,000193: 11,3244 05225 74UPDAT TC POSTJUMP
013136,000194: 11,3245 16003 CADR DOV74
013137,000195: 11,3246 00004 66UPDAT INHINT
013138,000196: 11,3247 05270 TC IBNKCALL
013139,000197: 11,3250 56204 CADR DFITMCAL
013140,000198: 11,3251 15567 TCF ENDOFJOB
013141,000199:
013142,000200: 11,3252 33311 73UPDAT CA OCT73
013143,000201: 11,3253 03255 TC 67UPDAT +1
013144,000202: 11,3254 33312 67UPDAT CA OCT67
013145,000203: 11,3255 54144 TS MPAC
013146,000204: 11,3256 37763 CA ONE
013147,000205: 11,3257 03277 TC 76UPDAT +3
013148,000206: 11,3260 33313 70UPDAT CA OCT70
013149,000207: 11,3261 03263 TC 71UPDAT +1
013150,000208: 11,3262 33314 71UPDAT CA OCT71
013151,000209: 11,3263 54144 TS MPAC
013152,000210: 11,3264 37762 CA TWO
013153,000211: 11,3265 03277 TC 76UPDAT +3
013154,000212: 11,3266 33315 64UPDAT CA 11OCT64
013155,000213: 11,3267 03271 TC 72UPDAT +1
013156,000214: 11,3270 33316 72UPDAT CA OCT72
013157,000215: 11,3271 54144 TS MPAC
013158,000216: 11,3272 36311 CA THREE
013159,000217: 11,3273 03277 TC 76UPDAT +3
013160,000218: 11,3274 33317 76UPDAT CA OCT76
013161,000219: 11,3275 54144 TS MPAC
013162,000220: 11,3276 33320 CA 11OCT16
013163,000221: 11,3277 54145 TS MPAC +1
![]() |
Page 320 |
013165,000223: 11,3300 03303 TC 75UPDAT +2
013166,000224: 11,3301 33321 75UPDAT CA 11OCT75
013167,000225: 11,3302 54144 TS MPAC
013168,000226: 11,3303 30076 CA FLAGWRD2 # TEST IF TIMERS ENABLED
013169,000227: 11,3304 77757 MASK BIT5
013170,000228: 11,3305 00006 EXTEND
013171,000229: 11,3306 12053 BZF XACTALM # NO, RETURN
013172,000230: 11,3307 05206 TC BANKCALL
013173,000231: 11,3310 54000 CADR UPPART2
013174,000232: 11,3311 00073 OCT73 OCT 00073
013175,000233: 11,3312 00067 OCT67 OCT 00067
013176,000234: 11,3313 00070 OCT70 OCT 00070
013177,000235: 11,3314 00071 OCT71 OCT 00071
013178,000236: 11,3315 00064 11OCT64 OCT 00064
013179,000237: 11,3316 00072 OCT72 OCT 00072
013180,000238: 11,3317 00076 OCT76 OCT 00076
013181,000239: 11,3320 00016 11OCT16 OCT 16
013182,000240: 11,3321 00075 11OCT75 OCT 00075
End of include-file UPDATE_PROGRAM_PART_1_OF_2.agc. Parent file is MAIN.agc