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