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. |
033371,000002: ## Copyright: Public domain.
033372,000003: ## Filename: ORBITAL_INTEGRATION_PROGRAM.agc
033373,000004: ## Purpose: A module for revision 0 of BURST120 (Sunburst). It
033374,000005: ## is part of the source code for the Lunar Module's
033375,000006: ## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
033376,000007: ## Assembler: yaYUL
033377,000008: ## Contact: Hartmuth Gutsche <hgutsche@xplornet.com>.
033378,000009: ## Website: www.ibiblio.org/apollo/index.html
033379,000010: ## Mod history: 2016-09-30 RSB Created draft version.
033380,000011: ## 2016-10-26 HG Transcribed
033381,000012: ## 2016-10-31 RSB Typos.
033382,000013: ## 2016-11-01 RSB More typos.
033383,000014: ## 2016-12-06 RSB Comments proofed using octopus/ProoferComments,
033384,000015: ## changes made.
033385,000016: ## 2017-06-12 MAS Just a couple of typos found while updating for
033386,000017: ## Sunburst 37.
033387,000018:
![]() |
Page 776 |
033389,000020: # FBR3 SETS UP A TIMESTEP CALL TO KEPLER.
033390,000021:
033391,000022:
033392,000023:
033393,000024: 07,2551 50545 FBR3 DLOAD SR3
033394,000025: 07,2552 02165 H
033395,000026: 07,2553 43262 SR3R DAD
033396,000027: 07,2554 02045 TC
033397,000028: 07,2555 16161 STODL TAU
033398,000029: 07,2556 17755 EARTHTAB +9D
033399,000030: 07,2557 54205 DMP SRR
033400,000031: 07,2560 02163 DT/2
033401,000032: 07,2561 21615 12D
033402,000033: 07,2562 77615 DAD
033403,000034: 07,2563 02047 TET
033404,000035: 07,2564 02047 STORE TET
033405,000036:
![]() |
Page 777 |
033407,000038: # THIS ORBITAL KEPLER SUBROUTINE FINDS THE POSITION AND VELOCITY OF THE VEHICLE AFTER TIME FOUND IN GIVENT
033408,000039: # SINCE RECTIFICATION TO POSITION RRECT AND VELOCITY VRECT. THE RESULTING POSITION AND VELOCITY ARE LEFT IN
033409,000040: # FOUNDR AND FOUNDV, RESPECTIVELY.
033410,000041:
033411,000042:
033412,000043:
033413,000044: 07,2565 40375 KEPLER VLOAD SETPD # UNIT OF RECTIFICATION POSITION TO 0
033414,000045: 07,2566 02001 RRECT
033415,000046: 07,2567 00001 0
033416,000047: 07,2570 65256 UNIT PDDL # AND LENGTH OF ORIGINAL IN 6
033417,000048: 07,2571 00045 36D
033418,000049: 07,2572 77715 PDVL # LENGTH OF POSITION AT RECTIFICATION.
033419,000050: 07,2573 02007 VRECT
033420,000051: 07,2574 61436 VSQ ROUND
033421,000052: 07,2575 45205 DMP DSU
033422,000053: 07,2576 00007 6 # LENGTH OF POSITION AT RECTIFICATION
033423,000054: 07,2577 17702 DP1/4
033424,000055: 07,2600 41532 SL2R PUSH # A4 TO REGISTER 8
033425,000056: 07,2601 57502 SR2 DCOMP
033426,000057: 07,2602 56215 DAD DDV
033427,000058: 07,2603 17702 DP1/4
033428,000059: 07,2604 00007 6
033429,000060: 07,2605 50315 PDVL DOT # ALPHA TO REGISTER 10
033430,000061: 07,2606 02001 RRECT
033431,000062: 07,2607 02007 VRECT
033432,000063: 07,2610 63306 ROUND PDVL # A1 TO REGISTER 12
033433,000064: 07,2611 02031 RCV
033434,000065: 07,2612 50256 UNIT DOT
033435,000066: 07,2613 02037 VCV
033436,000067: 07,2614 77725 PDDL # IR/2.VC IN 14D.
033437,000068: 07,2615 00045 36D
033438,000069: 07,2616 16155 STODL ALPHAM # RC IN ALPHAM
033439,000070: 07,2617 02163 DT/2
033440,000071: 07,2620 54442 SR3 SR3R
033441,000072: 07,2621 77071 DDV AXT,2
033442,000073: 07,2622 02155 ALPHAM
033443,000074: 07,2623 00012 10D # MAX ITERATION COUNT IS 10
033444,000075:
![]() |
Page 778 |
033446,000077: 07,2624 56325 PDDL DDV # Q IN 16
033447,000078: 07,2625 17702 DP1/4
033448,000079: 07,2626 02155 ALPHAM
033449,000080: 07,2627 57225 DSU DMPR
033450,000081: 07,2630 00013 10D # 1/4RC : ALPHA
033451,000082: 07,2631 00021 16D # Q( )
033452,000083: 07,2632 57275 DMPR DMPR
033453,000084: 07,2633 00021 16D # QQ( )
033454,000085: 07,2634 17704 DP1/3
033455,000086: 07,2635 52452 SL3 SL3
033456,000087: 07,2636 57325 PDDL DMPR
033457,000088: 07,2637 00017 14D
033458,000089: 07,2640 00021 16D
033459,000090: 07,2641 41412 SL4 PUSH # 16(UR/2.VC)Q IN 20
033460,000091: 07,2642 57221 BDSU DMPR
033461,000092: 07,2643 17730 DP1/2
033462,000093: 07,2644 45221 BDSU DSU
033463,000094: 07,2645 17730 DP1/2
033464,000095: 07,2646 76405 DMP SL1R
033465,000096: 07,2647 66215 DAD SSP
033466,000097: 07,2650 02051 XKEP
033467,000098: 07,2651 00052 S2
033468,000099: 07,2652 00001 1
033469,000100: 07,2653 02051 STORE XKEP
033470,000101:
![]() |
Page 779 |
033472,000103: # ITERATING EQUATIONS - GIVEN X IN MPAC, FIND TIME OF FLIGHT.
033473,000104:
033474,000105:
033475,000106:
033476,000107: 07,2654 61516 KTIMEN+1 DSQ ROUND # FORM ALPHA X-SQUARED AND CALL S AND C
033477,000108: 07,2655 66405 DMP SL2R
033478,000109: 07,2656 00013 10D
033479,000110: 07,2657 45001 SETPD CALL # SET PD INDICATOR TO 16
033480,000111: 07,2660 00021 16D
033481,000112: 07,2661 16751 S(X)C(X)
033482,000113: 07,2662 42405 DMP SL4
033483,000114: 07,2663 02051 XKEP
033484,000115: 07,2664 72405 DMP SL1
033485,000116: 07,2665 02051 XKEP
033486,000117: 07,2666 76405 DMP SL1R
033487,000118: 07,2667 02051 XKEP
033488,000119: 07,2670 00030 STORE 23D # A3
033489,000120: 07,2671 65275 DMPR PDDL
033490,000121: 07,2672 00011 8D
033491,000122: 07,2673 02051 XKEP
033492,000123: 07,2674 42405 DMP SL4
033493,000124: 07,2675 00021 16D # VALUE OF C
033494,000125: 07,2676 41352 SL1 DMP
033495,000126: 07,2677 02051 XKEP
033496,000127: 07,2700 77732 SL2R
033497,000128: 07,2701 00026 STORE 21D # A2
033498,000129: 07,2702 74405 DMP SR1R
033499,000130: 07,2703 00015 12D # A1
033500,000131: 07,2704 77615 DAD
033501,000132: 07,2705 57325 PDDL DMPR
033502,000133: 07,2706 00007 6
033503,000134: 07,2707 02051 XKEP
033504,000135: 07,2710 77615 DAD
033505,000136: 07,2711 44206 PUSH BDSU # COMPARE WITH GIVEN TIME OF FLIGHT
033506,000137: 07,2712 02161 GIVENT
033507,000138: 07,2713 00021 STORE 16D # DIFFERENCE TO REGISTER 16
033508,000139: 07,2714 77776 EXIT
033509,000140:
![]() |
Page 780 |
033511,000142: 07,2715 06112 DUMPDUMP TC INTPRET # FOR DUMP ONLY *******
033512,000143: 07,2716 45246 ABS DSU
033513,000144: 07,2717 17674 KEPSILON # SEE IF WITHIN EPSILON OF GIVEN TIME.
033514,000145: 07,2720 61040 BMN TIX,2 # IF SO, GET R AND V AND EXIT.
033515,000146: 07,2721 17036 GETRANDV
033516,000147: 07,2722 16725 GETNEWX
033517,000148: 07,2723 77650 GOTO
033518,000149: 07,2724 17036 GETRANDV
033519,000150: 07,2725 41345 GETNEWX DLOAD DMP
033520,000151: 07,2726 00013 10D # ALPHA
033521,000152: 07,2727 00030 23D # A3
033522,000153: 07,2730 44332 SL2R BDSU
033523,000154: 07,2731 02051 XKEP
033524,000155: 07,2732 46405 DMP SL4R
033525,000156: 07,2733 00015 12D # A1
033526,000157: 07,2734 14023 STODL 18D
033527,000158: 07,2735 00026 21D # A2
033528,000159: 07,2736 76405 DMP SL1R
033529,000160: 07,2737 00011 8D # A4
033530,000161: 07,2740 77615 DAD
033531,000162: 07,2741 65215 DAD PDDL
033532,000163: 07,2742 00007 6 # R0
033533,000164: 07,2743 00021 16D
033534,000165: 07,2744 43271 DDV DAD
033535,000166: 07,2745 00023 18D
033536,000167: 07,2746 02051 XKEP
033537,000168: 07,2747 36051 STCALL XKEP
033538,000169: 07,2750 16654 KTIMEN+1
033539,000170:
![]() |
Page 781 |
033541,000172: # SUBROUTINE FOR COMPUTING THE UNIVERSAL CONIC FUNCTIONS S(X) AND C(X). THE ACTUAL OUTPUT OF THIS ROUTINE
033542,000173: # CONSISTS OF SCALED VERSIONS DEFINED AS FOLLOWS -
033543,000174:
033544,000175: # S (X) = S(64X) C (X) = C(64X)/4
033545,000176: # S S
033546,000177:
033547,000178: # IT IS ASSUMED THAT THE INPUT ARRIVES IN MPAC,MPAC+1 AND THAT IT LIES BETWEEN -30/64 AND 40/64. UPON EXIT,
033548,000179: # S(X) WILL BE LEFT IN MPAC,MPAC+1 AND C(X) ON TOP OF THE PUSHDOWN LIST.
033549,000180:
033550,000181:
033551,000182:
033552,000183: 07,2751 00043 S(X)C(X) STORE 34D # X TO 34D
033553,000184: 07,2752 63434 RTB DSQ
033554,000185: 07,2753 17000 A(X)
033555,000186: 07,2754 41506 ROUND PUSH
033556,000187: 07,2755 00045 STORE 36D # A SQUARED TO 36D
033557,000188: 07,2756 76405 DMP SL1R
033558,000189: 07,2757 00043 34D # 2 2
033559,000190: 07,2760 57221 BDSU DMPR # C (X) = A (.25 - 2XA ) TO PD LIST
033560,000191: 07,2761 17702 POS1/4 # S
033561,000192: 07,2762 00045 36D
033562,000193: 07,2763 64525 PDDL SR2R # 2
033563,000194: 07,2764 47125 PDDL RTB # A /4 TO PD LIST
033564,000195: 07,2765 00043 34D
033565,000196: 07,2766 17017 B(X)
033566,000197: 07,2767 61516 DSQ ROUND
033567,000198: 07,2770 57325 PDDL DMPR # B SQUARED TO PD LIST
033568,000199: 07,2771 00043 34D
033569,000200: 07,2772 00045 36D
033570,000201: 07,2773 57221 BDSU DMPR # 2 2 2
033571,000202: 07,2774 17706 POS1/16 # LEAVES S (X)=B (.0625-A X)+A /4 IN MPAC
033572,000203: 07,2775 43415 DAD ITCQ # S
033573,000204: 07,2776 74631 63145 -1/12 2DEC -.1 # DONT MOVE.
033574,000205:
![]() |
Page 782 |
033576,000207: # A AND B POLYNOMIALS WHOSE COEFFICIENTS WERE OBTAINED WITH THE *AUTOCURVEFIT* PROGRAM.
033577,000208: 07,3000 07274 A(X) TC POLY
033578,000209: 07,3001 00004 DEC 4 B-14
033579,000210: 07,3002 26501 07463 2DEC 7.071067810 E-1
033580,000211: 07,3004 60724 60210 2DEC -4.714045180 E-1
033581,000212: 07,3006 03010 26256 2DEC 9.42808914 E-2
033582,000213: 07,3010 77554 74242 2DEC -8.9791893 E-3
033583,000214: 07,3012 00010 05475 2DEC 4.989987 E-4
033584,000215: 07,3014 77777 66460 2DEC -1.79357 E-5
033585,000216: 07,3016 06125 TC DANZIG
033586,000217: 07,3017 07274 B(X) TC POLY
033587,000218: 07,3020 00004 DEC 4 B-14
033588,000219: 07,3021 32101 17270 2DEC 8.164965793 E-1
033589,000220: 07,3023 65431 40174 2DEC -3.265986572 E-1
033590,000221: 07,3025 01710 10660 2DEC 5.90988980 E-2
033591,000222: 07,3027 77676 52270 2DEC -4.0085592 E-3
033592,000223: 07,3031 00004 21652 2DEC 2.781528 E-4
033593,000224: 07,3033 77777 71323 2DEC -1.25610 E-5
033594,000225: 07,3035 06125 TC DANZIG
033595,000226:
![]() |
Page 783 |
033597,000228: # ROUTINE FOR OBTAINING R AND V, NOW THAT THE PROPER X HAS BEEN FOUND.
033598,000229:
033599,000230:
033600,000231:
033601,000232: 07,3036 40345 GETRANDV DLOAD SETPD
033602,000233: 07,3037 00026 21D # A2 FROM LAST ITERATION
033603,000234: 07,3040 00032 25D
033604,000235: 07,3041 74276 DCOMP VXSC
033605,000236: 07,3042 00001 0 # UNIT OF GIVEN POSITION VECTOR
033606,000237: 07,3043 45325 PDDL DSU
033607,000238: 07,3044 00023 18D # LAST VALUE OF T
033608,000239: 07,3045 00030 23D # LAST VALUE OF A3
033609,000240: 07,3046 74312 SL2 VXSC
033610,000241: 07,3047 02007 VRECT
033611,000242: 07,3050 76455 VAD VSL1 # ADDITION MUST BE DONE IN THIS ORDER
033612,000243: 07,3051 53206 PUSH VAD
033613,000244: 07,3052 02001 RRECT
033614,000245: 07,3053 45455 VAD STADR
033615,000246: 07,3054 75746 STORE FOUNDR # RESULTING CONIC POSITION
033616,000247: 07,3055 77646 ABVAL
033617,000248: 07,3056 14021 STODL 16D
033618,000249: 07,3057 00013 10D # ALPHA
033619,000250: 07,3060 66405 DMP SL2R
033620,000251: 07,3061 00030 23D # A3
033621,000252: 07,3062 56225 DSU DDV
033622,000253: 07,3063 02051 XKEP
033623,000254: 07,3064 00021 16D # LENGTH OF FOUND POSITION
033624,000255: 07,3065 72561 VXSC VSL2
033625,000256: 07,3066 00001 0 # UNIT OF RECTIFICATION POSITION
033626,000257: 07,3067 70525 PDDL SR1
033627,000258: 07,3070 00021 16D
033628,000259: 07,3071 56225 DSU DDV
033629,000260: 07,3072 00026 21D
033630,000261: 07,3073 00021 16D
033631,000262: 07,3074 53361 VXSC VAD
033632,000263: 07,3075 02007 VRECT
033633,000264: 07,3076 77772 VSL1
033634,000265: 07,3077 36037 STCALL FOUNDV # THIS COMPLETES THE CALCULATION
033635,000266: 07,3100 02171 HBRANCH
033636,000267:
![]() |
Page 784 |
033638,000269: # THE POSTRUE ROUTINES SET UP THE BETA VECTOR AND OTHER INITIAL CONDITIONS FOR THE NEXT ACCOMP.
033639,000270: 07,3101 77331 POSTRUE SSP VLOAD # TIME STEP CALLS TO KEPLER RETURN HERE
033640,000271: 07,3102 02207 SCALEA
033641,000272: 07,3103 00004 4
033642,000273: 07,3104 02053 ALPHAV
033643,000274: 07,3105 53261 VSR VAD
033644,000275: 07,3106 20613 10D
033645,000276: 07,3107 02031 RCV # POSITION OUTPUT OF KEPLER
033646,000277: 07,3110 43154 LXA,2 BOF
033647,000278: 07,3111 02205 DIFEQCNT
033648,000279: 07,3112 00340 WMATFLAG
033649,000280: 07,3113 17115 NOSAVE1
033650,000281: 07,3114 12111 STORE VECTAB,2
033651,000282: 07,3115 66331 NOSAVE1 SSP SSP # SETS UP SCALE B AND GMODE
033652,000283: 07,3116 02210 SCALEB
033653,000284: 07,3117 00016 14D
033654,000285: 07,3120 02173 GMODE
033655,000286: 07,3121 00002 2
033656,000287: 07,3122 02061 STORE BETAV
033657,000288:
![]() |
Page 785 |
033659,000290: # AGC ROUTINE TO COMPUTE ACCELERATION COMPONENTS.
033660,000291:
033661,000292:
033662,000293:
033663,000294: 07,3123 53575 ACCOMP VLOAD UNIT
033664,000295: 07,3124 02053 ALPHAV
033665,000296: 07,3125 16053 STODL ALPHAV
033666,000297: 07,3126 00045 36D
033667,000298: 07,3127 02155 STORE ALPHAM
033668,000299: 07,3130 77600 BOV
033669,000300: 07,3131 17132 ACCOMP2 # TURN OFF OVERFLOW INDICATOR
033670,000301: 07,3132 74575 ACCOMP2 VLOAD VSR1
033671,000302: 07,3133 02061 BETAV
033672,000303: 07,3134 40236 VSQ SETPD
033673,000304: 07,3135 00001 0
033674,000305: 07,3136 61501 NORM ROUND
033675,000306: 07,3137 00051 S1
033676,000307: 07,3140 60325 PDDL NORM # NORMED B SQUARED TO PD LIST
033677,000308: 07,3141 02155 ALPHAM # NORMALIZE (LESS ONE) LENGTH OF ALPHA
033678,000309: 07,3142 00047 X1 # SAVING NORM SCALE FACTOR IN X1
033679,000310: 07,3143 63342 SR1 PDVL
033680,000311: 07,3144 02061 BETAV # C(PDL+2) = ALMOST NORMED ALPHA
033681,000312: 07,3145 77656 UNIT
033682,000313: 07,3146 16061 STODL BETAV
033683,000314: 07,3147 00045 36D
033684,000315: 07,3150 02157 STORE BETAM
033685,000316: 07,3151 55301 NORM BDDV # FORM NORMALIZED QUOTIENT ALPHAM/BETAM
033686,000317: 07,3152 00050 X2
033687,000318: 07,3153 41562 SR1R PUSH # C(PDL+2) = ALMOST NORMALIZED RHO.
033688,000319: 07,3154 57144 LXC,2 XAD,2
033689,000320: 07,3155 00047 X2 # C(X2) = -SCALE(RHO) + 1
033690,000321: 07,3156 02206 SCALEA # = -S(B)-N(B)+S(A)+N(A)+1
033691,000322: 07,3157 55074 XAD,2 XSU,2
033692,000323: 07,3160 00046 X1
033693,000324: 07,3161 02207 SCALEB
033694,000325: 07,3162 53714 INCR,2 SR*
033695,000326: 07,3163 00002 2
033696,000327: 07,3164 57176 0,2
033697,000328: 07,3165 64406 PUSH SR2R # RHO/4 PD+6
033698,000329: 07,3166 50315 PDVL DOT
033699,000330: 07,3167 02053 ALPHAV
033700,000331: 07,3170 02061 BETAV
033701,000332: 07,3171 44372 SL1R BDSU # (RHO/4) - 2(ALPHAV/2.BETAV/2)
033702,000333: 07,3172 57206 PUSH DMPR # TO PDL+6
033703,000334: 07,3173 00005 4
033704,000335:
![]() |
Page 786 |
033706,000337: 07,3174 43206 PUSH DAD # Q/4 = RHO(C(PDL+4)) TO PD+8D
033707,000338: 07,3175 17702 DQUARTER # (Q+1)/4 TO PD+10D
033708,000339: 07,3176 75406 PUSH SQRT # 3/2
033709,000340: 07,3177 41475 DMPR PUSH # ((Q+1)/4) TO PD+12D
033710,000341: 07,3200 00013 10D
033711,000342: 07,3201 43352 SL1 DAD
033712,000343: 07,3202 17702 DQUARTER # 3/2
033713,000344: 07,3203 43325 PDDL DAD # (1/4)+2((Q+1)/4) TO PD+14D
033714,000345: 07,3204 00013 10D
033715,000346: 07,3205 17730 DP1/2
033716,000347: 07,3206 72475 DMPR SL1
033717,000348: 07,3207 00011 8D
033718,000349: 07,3210 56215 DAD DDV
033719,000350: 07,3211 17676 THREE/8
033720,000351: 07,3212 00017 14D
033721,000352: 07,3213 74275 DMPR VXSC
033722,000353: 07,3214 00007 6
033723,000354: 07,3215 02061 BETAV # -
033724,000355: 07,3216 64515 PDVL VSR3 # (G/2)(C(PD+4))B/2 TO PD+16D
033725,000356: 07,3217 02053 ALPHAV
033726,000357: 07,3220 41455 VAD PUSH # A12 + C(PD+16D) TO PD+16D
033727,000358: 07,3221 41345 DLOAD DMP
033728,000359: 07,3222 00001 0
033729,000360: 07,3223 00015 12D # -
033730,000361: 07,3224 61501 NORM ROUND # GAMMA TO PD+22D
033731,000362: 07,3225 00052 S2 # - SCALE(GAMMA)-1 TO X1
033732,000363: 07,3226 70065 BDDV LXC,1
033733,000364: 07,3227 00003 2
033734,000365: 07,3230 00047 X2 # C(X2) = SCALE(RHO)
033735,000366: 07,3231 56070 XAD,1 XAD,1
033736,000367: 07,3232 00051 S2 # C(S2) = N((B.B/4)(....)3/2)
033737,000368: 07,3233 00050 S1 # C(S1) = N(B.B/4)
033738,000369: 07,3234 56070 XAD,1 XAD,1
033739,000370: 07,3235 02207 SCALEB
033740,000371: 07,3236 02207 SCALEB
033741,000372: 07,3237 74276 DCOMP VXSC
033742,000373: 07,3240 00021 16D # RESULT OF PRECEDING EQUATION
033743,000374: 07,3241 73206 PUSH CGOTO
033744,000375: 07,3242 02173 GMODE
033745,000376: 07,3243 17244 GTABLE
033746,000377: 07,3244 17315 GTABLE CADR GMODE10
033747,000378: 07,3245 17276 CADR GMODE11
033748,000379: 07,3246 17247 CADR GMODE12
033749,000380:
![]() |
Page 787 |
033751,000382: # THE GMODE12 ROUTINE SETS UP THE SECONDARY BODY DISTURBING ACCELERATION FOR ACCOMP.
033752,000383: 07,3247 77657 GMODE12 VSL* # -SCALE(GAMMA)-1 IS LEFT IN X1.
033753,000384: 07,3250 20240 31D,1 # ADJUST GAMMA TO SCALE OF -32
033754,000385: 07,3251 26103 STOVL FV
033755,000386: 07,3252 02061 BETAV
033756,000387: 07,3253 16053 STODL ALPHAV # BETA VECTOR INTO ALPHA FOR NEXT ACCOMP
033757,000388: 07,3254 02157 BETAM
033758,000389: 07,3255 02155 STORE ALPHAM
033759,000390: 07,3256 45014 BOFF CALL
033760,000391: 07,3257 00342 MIDFLAG
033761,000392: 07,3260 17322 OBLATEST
033762,000393: 07,3261 17735 MOONPOS
033763,000394: 07,3262 02061 STORE BETAV # MOON(EARTH) POSITION WILL BE BETA NEXT
033764,000395: 07,3263 43150 LXA,1 BOF
033765,000396: 07,3264 02205 DIFEQCNT # SAVE R/QV IN VECTAB FOR W-MATRIX UPDATE
033766,000397: 07,3265 00340 WMATFLAG
033767,000398: 07,3266 17270 NOSAVE2
033768,000399: 07,3267 06117 STORE VECTAB +6,1
033769,000400: 07,3270 65174 NOSAVE2 AXT,2 XCHX,2 # SETUP ALPHAM AND SCALEA
033770,000401: 07,3271 00023 19D # SCALE FOR R/QV
033771,000402: 07,3272 02207 SCALEB # SWAP SCALEB AND X2
033772,000403: 07,3273 52134 SXA,2 GOTO
033773,000404: 07,3274 02206 SCALEA
033774,000405: 07,3275 17132 ACCOMP2 # ENTRY IF UNIT(ALPHAV) AVAILABLE
033775,000406:
![]() |
Page 788 |
033777,000408: # THE GMODE11 ROUTINE SETS UP THE SUNS DISTURBING ACCELERATION.
033778,000409:
033779,000410:
033780,000411:
033781,000412: 07,3276 45144 GMODE11 LXC,2 CALL # SET X2 TO TABLE OF PROPER CONSTANTS
033782,000413: 07,3277 02227 PBODY
033783,000414: 07,3300 17434 ADDTOFV
033784,000415: 07,3301 77624 CALL # BARICENTER-TO-SUN POSITION VECTOR.
033785,000416: 07,3302 17737 SUNPOS # LEAVES VECTOR IN PDL
033786,000417: 07,3303 76750 LXA,1 VLOAD* # COMPUTE R/PS USING CORRECT TABLE FOR
033787,000418: 07,3304 02205 DIFEQCNT # MASS RATIO, ETC.
033788,000419: 07,3305 02117 VECTAB +6,1
033789,000420: 07,3306 53357 VXSC* VAD
033790,000421: 07,3307 77770 6,2 # USE SCALAR AT ENTRY 6 IN THE TABLE
033791,000422: 07,3310 66170 AXT,1 SXA,1
033792,000423: 07,3311 00034 28D
033793,000424: 07,3312 02207 SCALEB # SET SCALEB AND RETURN TO ACCOMP
033794,000425: 07,3313 36061 STCALL BETAV
033795,000426: 07,3314 17132 ACCOMP2
033796,000427:
033797,000428: # THE GMODE10 ROUTINE ADDS IN THE SUNS PERTURBING ACCELERATION AND COMPUTES THE OBLATENESS CONTRIBUTION
033798,000429: 07,3315 63144 GMODE10 LXC,2 INCR,2
033799,000430: 07,3316 02227 PBODY
033800,000431: 07,3317 77774 DEC -3 B-14
033801,000432: 07,3320 77624 CALL
033802,000433: 07,3321 17434 ADDTOFV
033803,000434: 07,3322 77614 OBLATEST BON
033804,000435: 07,3323 00303 MOONFLAG
033805,000436: 07,3324 17422 NBRANCH
033806,000437:
![]() |
Page 789 |
033808,000439: # THE OBLATE ROUTINE COMPUTES THE ACCELERATION DUE TO THE EARTHS OBLATENESS. 2T USES THE UNIT OF THE VEHICLE
033809,000440: # POSITION VECTOR FOUND IN ALPHAV AND THE DISTANCE TO THE CENTER IN ALPHAM. THIS IS ADDED TO THE SUM OF THE
033810,000441: # DISTURBING ACCELERATIONS IN FV AND THE PROPER DIFEQ STAGE IS CALLED VIA X1.
033811,000442: 07,3325 77745 OBLATE DLOAD
033812,000443: 07,3326 02057 ALPHAV +4 # Z COMPONENT OF POSITION IS COS PHI
033813,000444: 07,3327 57201 SETPD DMPR
033814,000445: 07,3330 00001 0
033815,000446: 07,3331 17712 3/4
033816,000447: 07,3332 63525 PDDL DSQ # P2:/8 TO REGISTER 0
033817,000448: 07,3333 02057 ALPHAV +4
033818,000449: 07,3334 57252 SL3 DMPR
033819,000450: 07,3335 17710 15/16
033820,000451: 07,3336 41425 DSU PUSH # P3:/4 TO REGISTER 2
033821,000452: 07,3337 17676 3/8
033822,000453: 07,3340 57275 DMPR DMPR
033823,000454: 07,3341 02057 ALPHAV +4
033824,000455: 07,3342 17716 7/12
033825,000456: 07,3343 65352 SL1 PDDL # P4:/16 TO REGISTER 4
033826,000457: 07,3344 00001 0
033827,000458: 07,3345 44275 DMPR BDSU
033828,000459: 07,3346 17734 2/3
033829,000460: 07,3347 57206 PUSH DMPR # BEGIN COMPUTING P5:/128
033830,000461: 07,3350 02057 ALPHAV +4
033831,000462: 07,3351 65275 DMPR PDDL
033832,000463: 07,3352 17720 9/16
033833,000464: 07,3353 00003 2
033834,000465: 07,3354 44275 DMPR BDSU # FINISH P5:/128 AND TERM USING UNIT
033835,000466: 07,3355 17722 5/128 # POSITION VECTOR AT ALPHA
033836,000467: 07,3356 62405 DMP SL2
033837,000468: 07,3357 17726 J4REQ/J3
033838,000469: 07,3360 43271 DDV DAD
033839,000470: 07,3361 02155 ALPHAM
033840,000471: 07,3362 00005 4
033841,000472: 07,3363 56275 DMPR DDV
033842,000473: 07,3364 17724 2J3RE/J2
033843,000474: 07,3365 02155 ALPHAM
033844,000475: 07,3366 74215 DAD VXSC
033845,000476: 07,3367 00003 2
033846,000477: 07,3370 02053 ALPHAV
033847,000478: 07,3371 16053 STODL ALPHAV
033848,000479:
![]() |
Page 790 |
033850,000481: 07,3372 72405 DMP SL1 # COMPUTE TERM USING IZ
033851,000482: 07,3373 17726 J4REQ/J3
033852,000483: 07,3374 43271 DDV DAD
033853,000484: 07,3375 02155 ALPHAM
033854,000485: 07,3376 50525 PDDL SR3
033855,000486: 07,3377 17724 2J3RE/J2
033856,000487: 07,3400 77675 DMPR
033857,000488: 07,3401 43271 DDV DAD
033858,000489: 07,3402 02155 ALPHAM
033859,000490: 07,3403 77621 BDSU
033860,000491: 07,3404 02057 ALPHAV +4
033861,000492: 07,3405 16057 STODL ALPHAV +4
033862,000493: 07,3406 02155 ALPHAM
033863,000494: 07,3407 63516 DSQ DSQ
033864,000495: 07,3410 55301 NORM BDDV
033865,000496: 07,3411 00047 X1
033866,000497: 07,3412 17714 J2REQSQ
033867,000498: 07,3413 62161 VXSC INCR,1
033868,000499: 07,3414 02053 ALPHAV
033869,000500: 07,3415 00004 4
033870,000501: 07,3416 53257 VSL* VAD # SHIFTS LEFT ON +, RIGHT ON -.
033871,000502: 07,3417 20201 0,1
033872,000503: 07,3420 02103 FV
033873,000504: 07,3421 02103 STORE FV
033874,000505: 07,3422 72135 NBRANCH SLOAD LXA,1
033875,000506: 07,3423 02206 DIFEQCNT
033876,000507: 07,3424 00144 MPAC
033877,000508: 07,3425 73205 DMP CGOTO
033878,000509: 07,3426 16777 -1/12
033879,000510: 07,3427 00145 MPAC
033880,000511: 07,3430 17431 DIFEQTAB
033881,000512: 07,3431 17526 DIFEQTAB CADR DIFEQ+0
033882,000513: 07,3432 17532 CADR DIFEQ+1
033883,000514: 07,3433 17543 CADR DIFEQ+2
033884,000515: 07,3434 77743 ADDTOFV DLOAD* # SETS UP S1 AND S2 PER PRIMARY BODY TABLE
033885,000516: 07,3435 77776 0,2
033886,000517: 07,3436 24051 STOVL S1
033887,000518: 07,3437 00027 22D
033888,000519: 07,3440 73670 XAD,1 VXSC*
033889,000520: 07,3441 00050 S1
033890,000521: 07,3442 77775 1,2
033891,000522: 07,3443 53257 VSL* VAD
033892,000523: 07,3444 20240 31D,1
033893,000524: 07,3445 02103 FV
033894,000525: 07,3446 02103 STORE FV
033895,000526: 07,3447 77616 ITCQ
033896,000527:
![]() |
Page 791 |
033898,000529: # BEGIN INTEGRATION STEP WITH RECTIFICATION TEST.
033899,000530:
033900,000531:
033901,000532:
033902,000533: 07,3450 77775 TIMESTEP VLOAD # MOVE TEMPORARY DELTA AND NU VECTORS
033903,000534: 07,3451 02023 TNUV # TO WORKING STORAGE
033904,000535: 07,3452 26222 STOVL ZV
033905,000536: 07,3453 02015 TDELTAV
033906,000537: 07,3454 02214 STORE YV
033907,000538: 07,3455 45246 ABVAL DSU # RECTIFICATION REQUIRED IF THE LENGTH
033908,000539: 07,3456 17730 DP1/2 # OF DELTA IS GREATER THAN .5 (8KM).
033909,000540: 07,3457 45040 BMN CALL
033910,000541: 07,3460 17462 INTGRATE
033911,000542: 07,3461 17500 RECTIFY
033912,000543: 07,3462 66331 INTGRATE SSP SSP # INITIALIZE INDICES AND SWITCHES
033913,000544: 07,3463 02171 FBRANCH # EXIT FROM DIFEQCOM
033914,000545: 07,3464 16551 CADR FBR3
033915,000546: 07,3465 02172 HBRANCH # EXIT FROM KEPLER
033916,000547: 07,3466 17101 CADR POSTRUE
033917,000548: 07,3467 77614 CLEAR
033918,000549: 07,3470 00261 JSWITCH # 1 FOR W MATRIX EXTRAPOLATE, 0 OTHERWISE.
033919,000550: 07,3471 77775 DIFEQ0 VLOAD # POSITION DEVIATION INTO ALPHA
033920,000551: 07,3472 02214 YV
033921,000552: 07,3473 16053 STODL ALPHAV
033922,000553: 07,3474 17732 DPZERO
033923,000554: 07,3475 02165 STORE H # START H AT ZERO. GOES O(DELT/2)DELT.
033924,000555: 07,3476 36206 STCALL DIFEQCNT # ZERO DIFEQCNT AND REGISTER FOLLOWING.
033925,000556: 07,3477 02171 HBRANCH # GOES 0(-12D)(-24D).
033926,000557:
![]() |
Page 792 |
033928,000559: # THE RECTIFY SUBROUTINE IS CALLED BY THE INTEGRATION PROGRAM AND OCCASIONALLY BY THE MEASUREMENT INCORPORATION
033929,000560: # ROUTINES TO ESTABLISH A NEW CONIC.
033930,000561:
033931,000562:
033932,000563:
033933,000564: 07,3500 40575 RECTIFY VLOAD VSR8 # RECTIFY - FORM TOTAL POSITION AND VEL.
033934,000565: 07,3501 02015 TDELTAV # ADJUST SCALE DIFFERENCE (ASSUMED
033935,000566: 07,3502 53342 VSR2 VAD # CONSTANT HERE.)
033936,000567: 07,3503 02031 RCV
033937,000568: 07,3504 02001 STORE RRECT
033938,000569: 07,3505 26031 STOVL RCV # SET UP CONIC ,ANSWER, FOR TIMESTEP
033939,000570: 07,3506 02023 TNUV
033940,000571: 07,3507 53202 VSR8 VAD # SAME FOR VELOCITY.
033941,000572: 07,3510 02037 VCV
033942,000573: 07,3511 02007 STORE VRECT
033943,000574: 07,3512 66370 AXT,1 SSP
033944,000575: 07,3513 00014 12D # ZERO DELTA, NU, AND TIME SINCE RECT.
033945,000576: 07,3514 00051 S1
033946,000577: 07,3515 00002 2
033947,000578: 07,3516 16037 STODL VCV
033948,000579: 07,3517 17732 DPZERO
033949,000580: 07,3520 02045 STORE TC
033950,000581: 07,3521 02051 STORE XKEP # ZERO X.
033951,000582: 07,3522 06230 ZEROLOOP STORE YV +12D,1 # INDICES CAUSE LOOP TO ZERO 6 CONSECUTIVE
033952,000583: 07,3523 06031 STORE TDELTAV +12D,1 # DP NUMBERS (DELTA AND NU ARE ADJACENT).
033953,000584: 07,3524 43500 TIX,1 ITCQ # LOOP OR START INTEGRATION STEP IF DONE.
033954,000585: 07,3525 17522 ZEROLOOP
033955,000586:
![]() |
Page 793 |
033957,000588: # THE THREE DIFEQ ROUTINES - DIFEQ+0, DIFEQ+12, AND DIFEQ+24 - ARE ENTEREDTO PROCESS THE CONTRIBUTIONS AT THE
033958,000589: # BEGINNING, MIDDLE, AND END OF THE TIMESTEP, RESPECTIVELY. THE UPDATING IS DONE BY THE NYSTROM METHOD.
033959,000590: 07,3526 64575 DIFEQ+0 VLOAD VSR3
033960,000591: 07,3527 02103 FV
033961,000592: 07,3530 36067 STCALL PHIV
033962,000593: 07,3531 17635 DIFEQCOM
033963,000594: 07,3532 74575 DIFEQ+1 VLOAD VSR1
033964,000595: 07,3533 02103 FV
033965,000596: 07,3534 53206 PUSH VAD
033966,000597: 07,3535 02067 PHIV
033967,000598: 07,3536 26075 STOVL PSIV
033968,000599: 07,3537 53362 VSR1 VAD
033969,000600: 07,3540 02067 PHIV
033970,000601: 07,3541 36067 STCALL PHIV
033971,000602: 07,3542 17635 DIFEQCOM
033972,000603: 07,3543 57345 DIFEQ+2 DLOAD DMPR
033973,000604: 07,3544 02165 H
033974,000605: 07,3545 17734 DP2/3
033975,000606: 07,3546 74206 PUSH VXSC
033976,000607: 07,3547 02067 PHIV
033977,000608: 07,3550 53372 VSL1 VAD
033978,000609: 07,3551 02222 ZV
033979,000610: 07,3552 53361 VXSC VAD
033980,000611: 07,3553 02165 H
033981,000612: 07,3554 02214 YV
033982,000613: 07,3555 26214 STOVL YV
033983,000614: 07,3556 02103 FV
033984,000615: 07,3557 53322 VSR3 VAD
033985,000616: 07,3560 02075 PSIV
033986,000617: 07,3561 76561 VXSC VSL1
033987,000618: 07,3562 43055 VAD BOFF # SEE IF THIS IS STATE VECTOR OR W COLUMN.
033988,000619: 07,3563 02222 ZV
033989,000620: 07,3564 00341 JSWITCH
033990,000621: 07,3565 17605 ENDSTATE
033991,000622: 07,3566 77770 AXT,1
033992,000623: 07,3567 00000 0
033993,000624: 07,3570 12341 STORE W +72D,2 # VELOCITY COLUMN VECTOR
033994,000625: 07,3571 77745 DLOAD
033995,000626: 07,3572 02214 YV
033996,000627: 07,3573 12275 STORE W +36D,2 # POSITION COLUMN VECTOR
033997,000628: 07,3574 52104 TIX,2 GOTO # **********
033998,000629: 07,3575 17577 NEXTCOL
033999,000630: 07,3576 02204 STEPEXIT
034000,000631:
![]() |
Page 794 |
034002,000633: 07,3577 77773 NEXTCOL VLOAD* # SET UP NEXT COLUMNS OF W MATRIX
034003,000634: 07,3600 75502 W +36D,2
034004,000635: 07,3601 32214 STOVL* YV
034005,000636: 07,3602 75436 W +72D,2
034006,000637: 07,3603 36222 STCALL ZV
034007,000638: 07,3604 17471 DIFEQ0
034008,000639: 07,3605 26023 ENDSTATE STOVL TNUV
034009,000640: 07,3606 02214 YV
034010,000641: 07,3607 16015 STODL TDELTAV
034011,000642: 07,3610 02165 H
034012,000643: 07,3611 64402 SR4 SR2R
034013,000644: 07,3612 77615 DAD
034014,000645: 07,3613 02045 TC
034015,000646: 07,3614 02045 STORE TC
034016,000647: 07,3615 77014 BOFF AXT,2
034017,000648: 07,3616 00340 WMATFLAG
034018,000649: 07,3617 02204 STEPEXIT
034019,000650: 07,3620 00044 36D
034020,000651: 07,3621 76131 SSP AXT,1
034021,000652: 07,3622 00052 S2
034022,000653: 07,3623 00006 6
034023,000654: 07,3624 17655 DOW..
034024,000655: 07,3625 66130 SXA,1 SXA,1
034025,000656: 07,3626 02170 FBRANCH
034026,000657: 07,3627 02171 HBRANCH
034027,000658: 07,3630 76014 INVERT AXT,1
034028,000659: 07,3631 00161 JSWITCH
034029,000660: 07,3632 00000 0
034030,000661: 07,3633 77650 GOTO
034031,000662: 07,3634 17577 NEXTCOL
034032,000663:
![]() |
Page 795 |
034034,000665: # COMES HERE TO FINISH FIRST TWO DIFEQ COMPUTATIONS.
034035,000666:
034036,000667:
034037,000668:
034038,000669: 07,3635 43345 DIFEQCOM DLOAD DAD # INCREMENT H AND DIFEQCNT.
034039,000670: 07,3636 02163 DT/2
034040,000671: 07,3637 02165 H
034041,000672: 07,3640 66110 INCR,1 SXA,1
034042,000673: 07,3641 77763 DEC -12 B-14
034043,000674: 07,3642 02205 DIFEQCNT # DIFEQCNT SET FOR NEXT ENTRY.
034044,000675: 07,3643 02165 STORE H
034045,000676: 07,3644 74561 VXSC VSR1
034046,000677: 07,3645 02103 FV
034047,000678: 07,3646 74255 VAD VXSC
034048,000679: 07,3647 02222 ZV
034049,000680: 07,3650 02165 H
034050,000681: 07,3651 77655 VAD
034051,000682: 07,3652 02214 YV
034052,000683: 07,3653 36053 STCALL ALPHAV
034053,000684: 07,3654 02170 FBRANCH
034054,000685:
![]() |
Page 796 |
034056,000687: # ORBITAL ROUTINE FOR EXTRAPOLATION OF THE W MATRIX. IT COMPUTES THE SECOND DERIVATIVE OF EACH COLUMN POSITION
034057,000688: # VECTOR OF THE MATRIX AND CALLS THE NYSTROM INTEGRATION ROUTINES TO SOLVETHE DIFFERENTIAL EQUATIONS. THE PROGRAM
034058,000689: # USES A TABLE OF VEHICLE POSITION VECTORS COMPUTED DURING THE INTEGRATION OF THE VEHICLES POSITION AND VELOCITY.
034059,000690: 07,3655 50575 DOW.. VLOAD VSR6
034060,000691: 07,3656 02053 ALPHAV
034061,000692: 07,3657 53513 PDVL* UNIT
034062,000693: 07,3660 02111 VECTAB,1
034063,000694: 07,3661 46315 PDVL VPROJ
034064,000695: 07,3662 02053 ALPHAV
034065,000696: 07,3663 52361 VXSC VSU
034066,000697: 07,3664 17700 3/16
034067,000698: 07,3665 41325 PDDL DMP
034068,000699: 07,3666 00043 34D
034069,000700: 07,3667 00045 36D
034070,000701: 07,3670 45541 V/SC STADR
034071,000702: 07,3671 41674 STCALL FV
034072,000703: 07,3672 17422 NBRANCH
034073,000704:
![]() |
Page 797 |
034075,000706: # CONSTANTS
034076,000707:
034077,000708:
034078,000709:
034079,000710: 07,3673 00000 KEPSILON OCT 00000
034080,000711: 07,3674 00002 OCT 00002
034081,000712: 07,3675 14000 00000 THREE/8 2DEC .375
034082,000713: 07,3677 06000 00000 3/16 2DEC 3 B -4
034083,000714: 07,3701 10000 00000 DP1/4 2DEC .25
034084,000715: 07,3703 12525 12525 DP1/3 2DEC .333333333
034085,000716: 07,3705 07,3701 DQUARTER EQUALS DP1/4
034086,000717: 07,3705 02000 00000 POS1/16 2DEC .0625
034087,000718: 07,3707 07,3701 POS1/4 EQUALS DP1/4
034088,000719: 07,3707 07,3675 3/8 EQUALS THREE/8
034089,000720: 07,3707 36000 00000 15/16 2DEC 15. B -4
034090,000721: 07,3711 30000 00000 3/4 2DEC 3.0 B -2
034091,000722: 07,3713 12577 24106 J2REQSQ 2DEC .335914874 # SECOND HARMONIC TIMES SQUARE OF RADIUS.
034092,000723: 07,3715 22525 12525 7/12 2DEC .5833333333
034093,000724: 07,3717 22000 00000 9/16 2DEC 9 B -4
034094,000725: 07,3721 01200 00000 5/128 2DEC 5 B -7
034095,000726: 07,3723 77711 71033 2J3RE/J2 2DEC -.003309146
034096,000727: 07,3725 23377 06703 J4REQ/J3 2DEC .60932709
034097,000728: 07,3727 20000 00000 DP1/2 2DEC .5
034098,000729: 07,3731 00000 00000 DPZERO 2DEC 0.0
034099,000730: 07,3733 25252 25253 DP2/3 2DEC .6666666667
034100,000731: 07,3735 07,3733 2/3 EQUALS DP2/3
034101,000732:
![]() |
Page 798 |
034103,000734: # DUMMYMOON POSITION ROUTINE, SUN POSITION ROUTINE, AND PBODY TABLE FOR CHECKOUT OF EARTH-ORBITAL ONLY.
034104,000735: 07,3735 43575 MOONPOS VLOAD ITCQ # LOAD CONSTANT VECTOR INTO A AND EXIT.
034105,000736: 07,3736 17744 MOONVEC
034106,000737:
034107,000738: 07,3737 77201 SUNPOS SETPD VLOAD # RETURNS WITH VECTOR IN VAC AND IN PDL.
034108,000739: 07,3740 00001 0
034109,000740: 07,3741 17747 SUNVEC
034110,000741: 07,3742 77616 ITCQ
034111,000742:
034112,000743:
034113,000744: 07,3743 00006 EARTHTAB DEC 6 B-14
034114,000745: 07,3744 00000 00000 2DEC 0.0
034115,000746: 07,3746 00012 DEC 10 B-14
034116,000747: 07,3747 00000 00000 2DEC 0.0
034117,000748: 07,3751 00000 00000 2DEC 0.0
034118,000749: 07,3753 77743 DEC -28 B-14 # 28 3/2
034119,000750: 07,3754 24214 11244 2DEC .6335627 # 400/SQRT(MU)
034120,000751: 07,3756 07,3743 MOONVEC EQUALS EARTHTAB
034121,000752: 07,3756 07,3746 SUNVEC EQUALS EARTHTAB +3 # ******
End of include-file ORBITAL_INTEGRATION_PROGRAM.agc. Parent file is MAIN.agc