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. |
039787,000002: ## Copyright: Public domain.
039788,000003: ## Filename: LAMB.agc
039789,000004: ## Purpose: A module for revision 0 of BURST120 (Sunburst). It
039790,000005: ## is part of the source code for the Lunar Module's
039791,000006: ## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
039792,000007: ## Assembler: yaYUL
039793,000008: ## Contact: Ron Burkey <info@sandroid.org>.
039794,000009: ## Website: www.ibiblio.org/apollo/index.html
039795,000010: ## Mod history: 2016-09-30 RSB Created draft version.
039796,000011: ## 2016-10-19 RSB Transcribed from scratch. Ouch!
039797,000012: ## 2016-10-31 RSB Typos.
039798,000013: ## 2016-11-01 RSB A line reading "OCT B0", which is not supported by yaYUL,
039799,000014: ## has been replaced by "OCT 1", in lieu of modifying
039800,000015: ## yaYUL at this time. An appropriate program comment was
039801,000016: ## also added at this point in the code. Plus, more typos.
039802,000017: ## 2016-12-06 RSB Comments proofed using octopus/ProoferComments,
039803,000018: ## changes made.
039804,000019:
039805,000020:
![]() |
Page 926 |
039807,000022: 36,2625 BANK 36
039808,000023: 36,2625 E3,1663 EBANK= SCAXIS
039809,000024:
039810,000025: # PROGRAM NAME ... LAMBERT ROUTINE DATE ... 11/29/66
039811,000026:
039812,000027: # MOD NO ... 3 LOG SECTION ...LAMB
039813,000028: # ASSEMBLY ... SUNBURST REVISION 03
039814,000029:
039815,000030: # MODIFICATION BY ... J.J. BESTER AND L.G. HULL
039816,000031: # FUNCTIONAL DESCRIPTION ...
039817,000032:
039818,000033: # THIS SUBROUTINE SOLVES FOR THE CONIC TRAJECTORY BETWEEN R0VEC AND R1VEC WHICH SATISFIES A SPECIFIED TIME
039819,000034: # OF FLIGHT, TFL. A SLOPE ITERATOR IS USED TO FORCE THE TIME OF FLIGHT TO CONVERGE.
039820,000035:
039821,000036:
039822,000037: # CALLING SEQUENCE:
039823,000038:
039824,000039: # THIS ROUTINE IS CALLED IN THE INTERPRETIVE MODE BY
039825,000040: # CALL
039826,000041: # LAMBERT
039827,000042:
039828,000043:
039829,000044: # NORMAL EXIT MODE:
039830,000045:
039831,000046: # EXIT FROM THIS ROUTINE IS IN BASIC BY
039832,000047: # TCF ENDOFJOB
039833,000048:
039834,000049:
039835,000050: # OUTPUT:
039836,000051:
039837,000052: # THE OUTPUT OF THIS ROUTINE (WITH SCALING INDICATED IN PARENTHESES) CONSISTS OF ...
039838,000053:
039839,000054: # V0VEC (+7) -THE REQUIRED VELOCITY VECTOR IN METERS/CENTISECONDS
039840,000055:
039841,000056: # DONESW -THE DONE SWITCH INDICATING WHETHER THE JOB HAS BEEN COMPLETED. WHEN THE JOB IS DONE IT
039842,000057: # IS TURNED ON.
039843,000058:
039844,000059: # CONVSW - THE CONVERGENCE SWITCH INDICATING WHETHER THE ITERATION PROCESS HAS CONVERGED. IT IS TURNED
039845,000060: # ON IF CONVERGENCE HAS NOT OCCURRED, BUT AN ESTIMATE OF V0VEC IS NEVERTHELESS GIVEN.
039846,000061:
039847,000062:
039848,000063: # INPUT:
039849,000064:
039850,000065: # THE QUANTITIES INPUTED AND THEIR SCALE FACTORS ARE ...
![]() |
Page 927 |
039852,000067: # RCOV (+25) -INITIAL POSITION IN METERS.
039853,000068: # RIVEC (+25) -THE TARGET POSITION IN METERS.
039854,000069:
039855,000070: # TFL (+28) -TIME OF FLIGHT IN CENTISECONDS.
039856,000071:
039857,000072: # UNNORM (+1) -A UNIT VECTOR IN THE DIRECTION OF THE ANGULAR MOMENTUM VECTOR.
039858,000073:
039859,000074: # TAG5 -A PARAMETER SET TO -0.5 IF THE TRUE ANOMALY DIFFERENCE BETWEEN R0VEC AND R1VEC IS MORE THAN
039860,000075: # 180 DEGREES. OTHERWISE IT SHOULD BE SET TO +0.5.
039861,000076:
039862,000077: # GUESSW -THE GUESS SWITCH, IF A FIRST GUESS TO THE COTANGENT OF THE FLIGHT PATH ANGLE IS AVAILABLE THE
039863,000078: # SWITCH SHOULD BE SET , CLEAR IF NO GUESS IS FORTHCOMING.
039864,000079:
039865,000080: # COGAVAIL (+5) -THE AVAILABLE COTANGENT OF THE FLIGHT PATH ANGLE. IF A GUESS IS AVAILABLE THE GUESSW SHOULD BE
039866,000081: # SET AND THE GUESS PLACED HERE BEFORE THE LAMBERT ROUTINE IS ENTERED. AFTER ONE PASS THROUGH
039867,000082: # LAMBERT, THE LAST ITERATED VALUE OF THE COTANGENT IS PLACED IN COGAVAIL AND MAY BE USED AS THE
039868,000083: # GUESS FOR THE NEXT PASS.
039869,000084:
039870,000085:
039871,000086: # THE FOLLOWING SWITCHES ARE IN THIS ROUTINE , THOUGH THEY ARE NOT USED FOR THIS PARTICULAR MISSION AND ARE
039872,000087: # ALWAYS CLEAR IN 206.
039873,000088:
039874,000089: # MOONSW - THE MOON SWITCH: 1-INSIDE THE SPHERE OF INFLUENCE OF THE MOON (35,000 N.MI.)
039875,000090: # 0-OUTSIDE
039876,000091:
039877,000092: # ESCPSW -THE ESCAPE SWITCH: 1-HYPERBOLIC ORBIT
039878,000093: # 0-ELLIPTIC ORBIT
039879,000094:
039880,000095: # SMANGLSW -SMALL ANGLE SWITCH: 1-SMALL TRANSFER ANGLES
039881,000096: # 0-LARGE ANGLES (THE USUAL CASE)
039882,000097:
039883,000098: # TWO SWITCHES ARE USED INTERNALLY. THEY ARE ...
039884,000099:
039885,000100: # ITERSW -THE ITERATION SWITCH: 1-FIRST ITERATION IS TO TAKE PLACE
039886,000101: # 0-SUBSEQUENT ITERATIONS
039887,000102:
039888,000103: # PIESW -THE 180 DEGREES SWITCH: 1-ANGLES GREATER THAN 180 DEGREES WITH TAG5=-0.5
039889,000104: # 0-ANGLES LESS THAN 180, TAG5=0.5
039890,000105:
039891,000106:
039892,000107: # DEBRIS ...
039893,000108:
039894,000109: # THE LAMBERT ROUTINE INTERNALLY USES SCALING WHICH IS DIFFERENT FROM THAT USED BY THE MAIN PROGRAM.
039895,000110: # INTERNAL TO LAMBERT,
039896,000111: # 7
039897,000112: # LENGTH IS SCALED BY RNORM = 2 RE
039898,000113:
039899,000114: # VELOCITY IS SCALED BY VNORM = 2 SQRT(MU/RE)
![]() |
Page 928 |
039901,000116: # 10 3
039902,000117: # TIME IS SCALED BY TNORM = 2 SQRT(RE /MU)
039903,000118: # WHERE MU IS THE GRAVITATIONAL CONSTANT TIMES THE MASS OF THE EARTH AND RE IS THE RADIUS OF THE EARTH.
039904,000119: # 22
039905,000120: # FOR RE, 2 METERS IS USED. HOWEVER, INPUT AND OUTPUT QUANTITIES HAVE SCALING COMPATIBLE WITH THE REST OF THE
039906,000121: # PROGRAM. RESCALING WILL BE DONE BY THE LAMBERT ROUTINE BEFORE COMPUTATIONS BEGIN.
039907,000122:
![]() |
Page 929 |
039909,000124: 36,2625 40214 LAMBERT SET SETPD
039910,000125: 36,2626 02062 ITERSW
039911,000126: 36,2627 00001 0D
039912,000127: 36,2630 43014 CLEAR CLEAR
039913,000128: 36,2631 02265 MOONSW
039914,000129: 36,2632 02261 DONESW
039915,000130: 36,2633 43014 CLEAR CLEAR
039916,000131: 36,2634 02265 SMANGLSW
039917,000132: 36,2635 02264 PIESW
039918,000133: 36,2636 51145 DLOAD BPL
039919,000134: 36,2637 03622 TAG5
039920,000135: 36,2640 74643 +3
039921,000136: 36,2641 77614 SET
039922,000137: 36,2642 02064 PIESW
039923,000138: 36,2643 77614 BON
039924,000139: 36,2644 02303 GUESSW
039925,000140: 36,2645 74653 +6
039926,000141: 36,2646 77745 DLOAD
039927,000142: 36,2647 35644 D1/4
039928,000143: 36,2650 01725 STORE TWEEKIT
039929,000144: 36,2651 77650 GOTO
039930,000145: 36,2652 74656 PROG
039931,000146: 36,2653 77745 DLOAD
039932,000147: 36,2654 35640 D1/64
039933,000148: 36,2655 01725 STORE TWEEKIT
039934,000149: 36,2656 41345 PROG DLOAD DMP
039935,000150: 36,2657 02143 TFL
039936,000151: 36,2660 35670 TFACT
039937,000152: 36,2661 77652 SL3 # RESCALE TIME OF FLIGHT
039938,000153: 36,2662 25672 STOVL TF
039939,000154: 36,2663 03614 RCOTEMPV
039940,000155: 36,2664 77702 VSR4
039941,000156: 36,2665 35707 STCALL R0VEC
039942,000157: 36,2666 75112 DTPRD
039943,000158: 36,2667 77624 CALL
039944,000159: 36,2670 75133 CGTH
039945,000160: 36,2671 60345 DLOAD NORM
039946,000161: 36,2672 00045 36D
039947,000162: 36,2673 00047 X1
039948,000163: 36,2674 53665 BDDV SL*
039949,000164: 36,2675 00041 32D
039950,000165: 36,2676 20172 0 -7,1
039951,000166: 36,2677 14037 STODL 30D # 30D=R (+7)
039952,000167:
039953,000168: 36,2700 35646 D1/2
039954,000169: 36,2701 70425 DSU SR1
039955,000170: 36,2702 00035 28D
039956,000171: 36,2703 00025 STORE 20D # 20D=1-CSTH (+2) (FOR PCALC IN LOOP)
039957,000172:
039958,000173: 36,2704 65301 NORM PDDL # 1-CSTH (+2-N1) PL AT 2D
![]() |
Page 930 |
039960,000175: 36,2705 00047 X1
039961,000176: 36,2706 00037 30D
039962,000177: 36,2707 77671 DDV # PL AT 0D
039963,000178: 36,2710 75457 SL* SQRT
039964,000179: 36,2711 20175 0 -4,1
039965,000180: 36,2712 44214 BOFF BDSU
039966,000181: 36,2713 02345 ESCPSW
039967,000182: 36,2714 75061 ELIPLMTS
039968,000183: 36,2715 00021 16D
039969,000184: 36,2716 51406 PUSH ABS # PL AT 2D
039970,000185: 36,2717 44205 DMP BDSU # PL AT 0D
039971,000186: 36,2720 35656 PERCENT
039972,000187: 36,2721 77626 STADR
039973,000188: 36,2722 63744 STODL 26D # 26D=COGAMX
039974,000189:
039975,000190: 36,2723 00031 24D
039976,000191: 36,2724 77742 SR1
039977,000192: 36,2725 00023 STORE 18D # 18D=SIN(TH) (+2) (FOR PCALC IN LOOP)
039978,000193: 36,2726 65301 NORM PDDL # SIN(TH) (+1-N1) PL AT 2D
039979,000194: 36,2727 00047 X1
039980,000195: 36,2730 00035 28D
039981,000196: 36,2731 45261 SR DSU
039982,000197: 36,2732 20607 6
039983,000198: 36,2733 00037 30D
039984,000199: 36,2734 00037 STORE 30D # 30D=COS(TH)-R (+7) (FOR PCALC IN LOOP)
039985,000200:
039986,000201: 36,2735 56214 BON DDV # PL AT 0D
039987,000202: 36,2736 02304 PIESW
039988,000203: 36,2737 74750 ABSMIN
039989,000204: 36,2740 40057 SL* BOV
039990,000205: 36,2741 20201 0,1
039991,000206: 36,2742 74750 ABSMIN
039992,000207: 36,2743 51406 PUSH ABS # (CSTH-R)/SNTH (+5) PL AT 2D
039993,000208: 36,2744 43205 DMP DAD # PL AT 0D
039994,000209: 36,2745 35656 PERCENT
039995,000210: 36,2746 77650 GOTO
039996,000211: 36,2747 74753 +4
039997,000212: 36,2750 71201 ABSMIN SETPD DLOAD # PL AT 0D
039998,000213: 36,2751 00001 0D
039999,000214: 36,2752 35666 ABSOLMIN
040000,000215: 36,2753 00027 STORE 22D # 22D=COGAMN (+5)
040001,000216: 36,2754 71214 BOFF DLOAD # PL AT 2D
040002,000217: 36,2755 02343 GUESSW
040003,000218: 36,2756 75041 FIRSTCOG
040004,000219: 36,2757 01674 COGAVAIL
040005,000220: 36,2760 45214 BON DSU # IF ESCPSW IS OFF, CHECK IF COGAVAIL
040006,000221: 36,2761 02305 ESCPSW # IS LESS THAN COGAMN
040007,000222: 36,2762 74774 LOOP
040008,000223: 36,2763 00027 22D
040009,000224: 36,2764 71244 BPL DLOAD
![]() |
Page 931 |
040011,000226: 36,2765 74772 +5
040012,000227: 36,2766 00027 22D # COGAVAIL IS A BAD GUESS, SO PUT
040013,000228: 36,2767 01674 STORE COGAVAIL # COGAMN IN COGAVAIL
040014,000229: 36,2770 77650 GOTO
040015,000230: 36,2771 74774 LOOP
040016,000231: 36,2772 77745 DLOAD
040017,000232: 36,2773 01674 COGAVAIL
040018,000233: 36,2774 01723 LOOP STORE INDEP
040019,000234: 36,2775 45205 DMP DSU
040020,000235: 36,2776 00023 18D
040021,000236: 36,2777 00037 30D
040022,000237: 36,3000 55301 NORM BDDV
040023,000238: 36,3001 00047 X1
040024,000239: 36,3002 00025 20D
040025,000240: 36,3003 40057 SL* BOV
040026,000241: 36,3004 20172 0 -7,1
040027,000242: 36,3005 75107 SPEEDY
040028,000243: 36,3006 34043 PSTORE STCALL 34D # 34D=P (+2)
040029,000244: 36,3007 75146 SMAR
040030,000245: 36,3010 77624 CALL
040031,000246: 36,3011 75163 TRIGFNS
040032,000247: 36,3012 77624 CALL
040033,000248: 36,3013 75346 SMA
040034,000249: 36,3014 77624 CALL
040035,000250: 36,3015 75414 DELTIME
040036,000251: 36,3016 01727 ZOOM STORE DEPVAR
040037,000252: 36,3017 77621 BDSU
040038,000253: 36,3020 01672 TF
040039,000254: 36,3021 01733 STORE DELDEP
040040,000255: 36,3022 45246 ABS DSU
040041,000256: 36,3023 35672 DEPCRIT
040042,000257: 36,3024 45040 BMN CALL
040043,000258: 36,3025 75046 TIMECONV
040044,000259: 36,3026 75513 ITERATOR
040045,000260: 36,3027 45246 ABS DSU
040046,000261: 36,3030 35650 NEARZERO
040047,000262: 36,3031 71240 BMN DLOAD
040048,000263: 36,3032 75056 NOSOL
040049,000264: 36,3033 01727 DEPVAR
040050,000265: 36,3034 15731 STODL PREVDEP
040051,000266: 36,3035 01735 DELINDEP
040052,000267: 36,3036 52015 DAD GOTO
040053,000268: 36,3037 01723 INDEP
040054,000269: 36,3040 74774 LOOP
040055,000270: 36,3041 65342 FIRSTCOG SR1 PDDL # PL AT 2D
040056,000271: 36,3042 00033 26D
040057,000272: 36,3043 43342 SR1 DAD # PL AT 0D
040058,000273: 36,3044 77650 GOTO
040059,000274: 36,3045 74774 LOOP
![]() |
Page 932 |
040061,000276: 36,3046 77745 TIMECONV DLOAD
040062,000277: 36,3047 01723 INDEP
040063,000278: 36,3050 01674 STORE COGAVAIL
040064,000279: 36,3051 34023 STCALL 18D # 18D=COGA (+5)
040065,000280: 36,3052 75602 INITV
040066,000281: 36,3053 77414 SET EXIT
040067,000282: 36,3054 02061 DONESW
040068,000283: 36,3055 15567 TCF ENDOFJOB
040069,000284: 36,3056 52014 NOSOL SET GOTO
040070,000285: 36,3057 02060 CONVSW
040071,000286: 36,3060 75046 TIMECONV
040072,000287: 36,3061 43206 ELIPLMTS PUSH DAD # PL AT 2D
040073,000288: 36,3062 00021 16D
040074,000289: 36,3063 51406 PUSH ABS # PL AT 4D
040075,000290: 36,3064 44205 DMP BDSU # PL AT 2D
040076,000291: 36,3065 35656 PERCENT
040077,000292: 36,3066 77626 STADR
040078,000293: 36,3067 63744 STODL 26D # 26D=COGAMX (+5)
040079,000294: 36,3070 00035 28D
040080,000295: 36,3071 45261 SR DSU
040081,000296: 36,3072 20607 6
040082,000297: 36,3073 00037 30D
040083,000298: 36,3074 14037 STODL 30D # 30D=CSTH-R (+7)
040084,000299: 36,3075 00031 24D
040085,000300: 36,3076 77742 SR1
040086,000301: 36,3077 14023 STODL 18D
040087,000302: 36,3100 00021 16D
040088,000303: 36,3101 41425 DSU PUSH # PL AT 0D,2D
040089,000304: 36,3102 41246 ABS DMP
040090,000305: 36,3103 35656 PERCENT
040091,000306: 36,3104 77615 DAD # PL AT 0D
040092,000307: 36,3105 77650 GOTO
040093,000308: 36,3106 74753 ABSMIN +3
040094,000309: 36,3107 52145 SPEEDY DLOAD GOTO
040095,000310: 36,3110 35273 DZERO
040096,000311: 36,3111 75016 ZOOM
040097,000312:
![]() |
Page 933 |
040099,000314: # THIS SECTION CALCULATES THE SINE AND COSINE OF THE ANGLE BETWEEN R0VEC
040100,000315: # AND R1VEC. THE SIGN OF SIN(TH) IS DETERMINED BY TAG5. THE COSINE OF THE
040101,000316: # ANGLE IS STORED IN 28D WHILE THE SINE IS IN MPAC AS WELL AS IN 24D, BOTH
040102,000317: # ARE SCALED BY (+2).
040103,000318:
040104,000319:
040105,000320: # ASSUMES R0VEC (+7) , R1VEC (+7) , TAG5 (+/- ACCORDING TO ANGLE GREATER
040106,000321: # OR LESS THAN 180 DEG) AVAILABLE.
040107,000322: 36,3112 53575 DTPRD VLOAD UNIT
040108,000323: 36,3113 01707 R0VEC
040109,000324: 36,3114 15701 STODL UNR1
040110,000325: 36,3115 00045 36D
040111,000326: 36,3116 24041 STOVL 32D # 32D=R1 (+7)
040112,000327: 36,3117 02365 R1VEC
040113,000328: 36,3120 77702 VSR4
040114,000329: 36,3121 41456 UNIT PUSH # 32D=R1 (+7) PL AT 6D
040115,000330: 36,3122 72441 DOT SL1
040116,000331: 36,3123 01701 UNR1
040117,000332: 36,3124 24035 STOVL 28D # 28D=COS(TH) (+1)
040118,000333: 36,3125 01701 UNR1
040119,000334: 36,3126 76435 VXV VSL1 # PL AT 0D
040120,000335: 36,3127 75246 ABVAL SIGN
040121,000336: 36,3130 03622 TAG5
040122,000337: 36,3131 00031 STORE 24D # 24D=SIN(TH) (+1)
040123,000338: 36,3132 77616 RVQ
040124,000339:
040125,000340: # 28D=COS(TH) (+1), 24D=SIN(TH) (+1)=MPAC.
040126,000341:
![]() |
Page 934 |
040128,000343: # THIS SECTION COMPUTES COT(TH/2) = (1+COS(TH))/SIN(TH) SCALED BY (+5),
040129,000344: # AND STORES IT IN 16D. NOTE THAT COT(TH/2) WILL OVERFLOW IF THE ANGLE
040130,000345: # TH IS LESS THAN 3 DEG 35 MINUTES OR GREATER THAN 356 DEG 25 MINUTES.
040131,000346:
040132,000347:
040133,000348: # ASSUMES SNTH(+1) IN MPAC, 28D=CSTH (+1).
040134,000349: 36,3133 60254 CGTH BZE NORM # SNTH (+1-N1)
040135,000350: 36,3134 75144 THISPI
040136,000351: 36,3135 00047 X1
040137,000352: 36,3136 70525 PDDL SR1
040138,000353: 36,3137 00035 28D
040139,000354: 36,3140 56215 DAD DDV # PL AT 0D
040140,000355: 36,3141 35644 D1/4
040141,000356: 36,3142 77657 SL*
040142,000357: 36,3143 20175 0 -4,1
040143,000358: 36,3144 00021 THISPI STORE 16D
040144,000359: 36,3145 77616 RVQ
040145,000360:
040146,000361: # COGTH (+5)=16D.
040147,000362:
![]() |
Page 935 |
040149,000364: # THIS SECTION USES COT(GAMMA),I.E. COGA (+5) AND P (+2) TO CALCULATE R1A
040150,000365: # SCALED BY (+6) AND STORES THE RESULT IN 14D.
040151,000366:
040152,000367:
040153,000368: # ASSUMES COGA=INDEP (+5), P (+2)=34D.
040154,000369: 36,3146 63545 SMAR DLOAD DSQ
040155,000370: 36,3147 01723 INDEP
040156,000371: 36,3150 60215 DAD NORM
040157,000372: 36,3151 35636 D1/1024
040158,000373: 36,3152 00047 X1
040159,000374: 36,3153 53605 DMP SR*
040160,000375: 36,3154 00043 34D
040161,000376: 36,3155 20573 0 -6,1
040162,000377: 36,3156 40021 BDSU BOV
040163,000378: 36,3157 35642 D1/32
040164,000379: 36,3160 75107 SPEEDY
040165,000380: 36,3161 00017 SMARSTOR STORE 14D # 14D=R1A (+6)
040166,000381: 36,3162 77616 RVQ
040167,000382:
040168,000383:
040169,000384: # R1A (+6)=2-P(1+COGA*COGA) IN 14D.
040170,000385:
![]() |
Page 936 |
040172,000387: # ASSUMES 16D=COGTH (+5), INDEP=COGA(+5), 34D=P (+2), 14D= R1A (+6).
040173,000388: 36,3163 45345 TRIGFNS DLOAD DSU
040174,000389: 36,3164 00021 16D
040175,000390: 36,3165 01723 INDEP
040176,000391: 36,3166 00045 STORE 36D # 36D=DCOT=COT(TH/2)-COGA (+5)
040177,000392:
040178,000393: 36,3167 60316 DSQ NORM
040179,000394: 36,3170 00047 X1
040180,000395: 36,3171 70405 DMP SR1
040181,000396: 36,3172 00043 34D
040182,000397: 36,3173 51525 PDDL ABS # DCOT*DCOT (+13-N1) PL AT 2D
040183,000398: 36,3174 00017 14D
040184,000399: 36,3175 55301 NORM BDDV # COGDS (+7-N1+N2) PL AT 0D
040185,000400: 36,3176 00051 S1
040186,000401: 36,3177 53660 XSU,1 SR*
040187,000402: 36,3200 00050 S1
040188,000403: 36,3201 20604 3,1
040189,000404: 36,3202 77600 BOV
040190,000405: 36,3203 75343 COGDSOVF
040191,000406: 36,3204 75206 COGDSTOR PUSH SIGN # COGDS (+10)
040192,000407: 36,3205 00017 14D
040193,000408: 36,3206 60215 DAD NORM
040194,000409: 36,3207 35636 D1/1024
040195,000410: 36,3210 00047 X1
040196,000411: 36,3211 65265 BDDV PDDL # 2D=1-CSD (-7+N1) PL AT 4D
040197,000412: 36,3212 35644 D1/4
040198,000413: 36,3213 00001 0D
040199,000414: 36,3214 60366 SQRT NORM
040200,000415: 36,3215 00050 X2
040201,000416: 36,3216 75205 DMP SIGN
040202,000417: 36,3217 00003 2D
040203,000418: 36,3220 00045 36D # SND=+-(1-CSD)SQRT(COGDS) (-2+N1-N2)
040204,000419: 36,3221 43064 XSU,2 BON
040205,000420: 36,3222 00046 X1
040206,000421: 36,3223 02305 ESCPSW
040207,000422: 36,3224 75250 HYPTRIG # DUE TO DIFFERENT SCALING
040208,000423: 36,3225 65257 SR* PDDL # DXNGE WITH PD,2D=SND (+1) PL AT 4D
040209,000424: 36,3226 57173 3,2
040210,000425: 36,3227 40057 SL* BOV
040211,000426: 36,3230 20171 0 -8D,1
040212,000427: 36,3231 75245 HALFCIRC
040213,000428: 36,3232 57406 COSFN PUSH DCOMP # 4D=(1-CSD)(+1) PL AT 6D
040214,000429: 36,3233 65415 DAD ACOS
040215,000430: 36,3234 35646 D1/2
040216,000431: 36,3235 41365 SIGN DMP
040217,000432: 36,3236 00045 36D
040218,000433: 36,3237 05740 PI/4 # CONVERT FROM CIRCLES TO RADIANS/8
040219,000434: 36,3240 43244 BPL DAD
040220,000435: 36,3241 75243 +2
040221,000436: 36,3242 05740 PI/4
![]() |
Page 937 |
040223,000438: 36,3243 00001 STORE 0D # 0D=DELTAE (+3)
040224,000439: 36,3244 77616 RVQ
040225,000440:
040226,000441:
040227,000442: 36,3245 52145 HALFCIRC DLOAD GOTO
040228,000443: 36,3246 35652 NEARI
040229,000444: 36,3247 75232 COSFN
040230,000445: 36,3250 57457 HYPTRIG SR* DCOMP
040231,000446: 36,3251 57162 12D,2
040232,000447: 36,3252 77725 PDDL # DXNGE WITH PD,2D=SND (+10) PL AT 4D
040233,000448: 36,3253 41457 SL* PUSH
040234,000449: 36,3254 20160 0 -17D,1 # 4D=(1-CSD) (+10) PL AT 6D
040235,000450: 36,3255 43276 DCOMP DAD
040236,000451: 36,3256 35636 D1/1024
040237,000452: 36,3257 65342 SR1 PDDL # PL AT 8D
040238,000453: 36,3260 00003 2D
040239,000454: 36,3261 43342 SR1 DAD # ARG=COSH(DELG)+SINH(DELG) (+11) PL AT 6D
040240,000455:
040241,000456: 36,3262 44301 NORM BDSU # THIS IS AN ARCSINH ROUTINE
040242,000457: 36,3263 01676 SPLOC # ARG=.5-ARG (+11-N1)
040243,000458: 36,3264 35646 D1/2
040244,000459: 36,3265 77776 EXIT
040245,000460: 36,3266 34570 ARCSINH CA TEN
040246,000461: 36,3267 27675 ADS SPLOC # C(SPLOC)=10-N1
040247,000462: 36,3270 07274 TC POLY
040248,000463: 36,3271 00011 DEC 9 B-14
040249,000464: 36,3272 00000 00000 DZERO 2DEC .0
040250,000465:
040251,000466: 36,3274 00400 00000 2DEC .015625
040252,000467:
040253,000468: 36,3276 00400 00000 2DEC .015625
040254,000469:
040255,000470: 36,3300 00525 12525 2DEC .020833333
040256,000471:
040257,000472: 36,3302 01000 00000 2DEC .03125
040258,000473:
040259,000474: 36,3304 01463 06315 2DEC .05
040260,000475:
040261,000476: 36,3306 02525 12525 2DEC .083333333
040262,000477:
040263,000478: 36,3310 04444 22222 2DEC .14285714
040264,000479:
040265,000480: 36,3312 10000 00000 2DEC .25
040266,000481:
040267,000482: 36,3314 16161 30706 2DEC .44444444
040268,000483:
040269,000484: 36,3316 31463 06315 2DEC .8
040270,000485:
040271,000486: 36,3320 37767 CAF ZERO
040272,000487:
![]() |
Page 938 |
040274,000489: 36,3321 54146 TS MPAC +2
040275,000490: 36,3322 00006 EXTEND
040276,000491: 36,3323 33660 DCA LN2/128
040277,000492: 36,3324 52145 DXCH MPAC # MPAC,+1 CONTAINS LN2/128
040278,000493: 36,3325 53677 DXCH SPLOC +1 # SPLOC+1,+2 CONTAINS LN(1/2-ARGS)/128
040279,000494: 36,3326 31675 CA SPLOC
040280,000495: 36,3327 07357 TC SHORTMP
040281,000496: 36,3330 52146 DXCH MPAC +1
040282,000497: 36,3331 52145 DXCH MPAC # MPAC CONTAINS (10-N1)LN2/128
040283,000498: 36,3332 53677 DXCH SPLOC +1 # A,L CONTAIN LN(1/2-ARGS)/128
040284,000499: 36,3333 00006 EXTEND
040285,000500: 36,3334 40001 DCOM
040286,000501: 36,3335 20145 DAS MPAC
040287,000502: 36,3336 06112 TC INTPRET
040288,000503: 36,3337 77661 SR
040289,000504: 36,3340 20606 5
040290,000505: 36,3341 00001 STORE 0D # 0D=DELG (+12) PL AT 6D
040291,000506: 36,3342 77616 RVQ
040292,000507:
040293,000508:
040294,000509: 36,3343 52145 COGDSOVF DLOAD GOTO
040295,000510: 36,3344 35654 BIGNO # BIGNO=NEARONE-DP1/1024
040296,000511: 36,3345 75204 COGDSTOR
040297,000512: # RETURNS WITH 0D=DELE (+3) OR DELG(+12),,2D=SND (+1 OR +10),4D=1-CSD (+1
040298,000513: # OR +10), AND PUSHLOC AT 6D
040299,000514:
![]() |
Page 939 |
040301,000516: # ASSUMES 14D=R1A (+6), 32D= R1 (+7)
040302,000517: 36,3346 60345 SMA DLOAD NORM # THIS IS ESSENTIALLY A FLOATING POINT SUB
040303,000518: 36,3347 00017 14D # C(SPLOC+1)=-N1
040304,000519: 36,3350 01677 SPLOC +1 # SPLOC LATER WILL BE STORED IN X1 FOR SHF
040305,000520: 36,3351 60325 PDDL NORM
040306,000521: 36,3352 00041 32D
040307,000522: 36,3353 01676 SPLOC # C(SPLOC)=-N2
040308,000523: 36,3354 56342 SR1 DDV
040309,000524: 36,3355 77446 ABS EXIT # ABS(R1/R1A) (+2+N1-N2)
040310,000525: 36,3356 41676 CS SPLOC +1
040311,000526: 36,3357 61675 AD SPLOC
040312,000527: 36,3360 55675 TS SPLOC
040313,000528: 36,3361 54020 TS CYR
040314,000529: 36,3362 30020 CA CYR
040315,000530: 36,3363 60000 DOUBLE
040316,000531: 36,3364 54000 OVSK
040317,000532: 36,3365 13370 TCF EVEN
040318,000533: 36,3366 37763 ODD CA ONE
040319,000534: 36,3367 13371 TCF STORETAG
040320,000535: 36,3370 37767 EVEN CA ZERO
040321,000536: 36,3371 55676 STORETAG TS SPLOC +1 # A TAG TO DESIGNATE ADDITIONAL SHIFTRIGHT
040322,000537: 36,3372 27675 ADS SPLOC # C(SPLOC)=N1-N2+0 OR 1
040323,000538: 36,3373 31675 CA SPLOC
040324,000539: 36,3374 54021 TS SR
040325,000540: 36,3375 60021 AD SR
040326,000541: 36,3376 55675 TS SPLOC # C(SPLOC)=3(N1-N2+0 OR 1)/2
040327,000542: 36,3377 06112 TC INTPRET
040328,000543: 36,3400 53740 LXC,1 SR*
040329,000544: 36,3401 01676 SPLOC +1
040330,000545: 36,3402 20601 0,1
040331,000546: 36,3403 73006 PUSH LXA,2 # ABS(R1/R1A) (+2+N1-N2+0 OR 1) PL DOWN 2
040332,000547: 36,3404 01675 SPLOC # C(X2)=+3(N1-N2+0 OR 1)/2
040333,000548: 36,3405 41366 SQRT DMP # ARG TO THE 3/2 POWER,SCALED +3+(3/2)(N1
040334,000549: # -N2 +0 OR 1) PL UP 2
040335,000550: 36,3406 41214 BOFF DMP
040336,000551: 36,3407 02345 MOONSW
040337,000552: 36,3410 75412 +2
040338,000553: 36,3411 35662 ROOTMU
040339,000554: 36,3412 00015 STORE 12D # 12D=SQRT(ABS(R1/R1A))ABS(R1/R1A)
040340,000555: 36,3413 77616 RVQ # SCALED (+3 OR +7)+(3/2)(N1-N2+0 OR 1)
040341,000556: # SMA TO THE 3/2 POWER * ROOTMU IN 12D.
040342,000557: # IF LSW1 SET, INSIDE SPHERE AND 12D SCALED +7+C(X2)
040343,000558: # IF LSW1 OFF, OUTSIDE SPHERE AND 12D SCALED +3+C(X2)
040344,000559:
040345,000560:
![]() |
Page 940 |
040347,000562: # THIS IS KEPLERS EQUATION FOR TIME-OF-FLIGHT BETWEEN TWO POINTS ON A
040348,000563: # CONIC TRAJECTORY. IT ASSUMES R1A (+6)=14D, P (+2)=34D, 1-CSD (+1,+10,-2
040349,000564: # =4D, SND (+1,+10,-2)=2D, D (+3,+12,0)=0D.
040350,000565:
040351,000566: 36,3414 41345 DELTIME DLOAD DMP # PL AT 6D
040352,000567: 36,3415 00043 34D
040353,000568: 36,3416 00017 14D
040354,000569: 36,3417 40061 SL BOV
040355,000570: 36,3420 20207 6
040356,000571: 36,3421 75107 SPEEDY
040357,000572: 36,3422 75446 ABS SQRT
040358,000573: 36,3423 77605 DMP # PL AT 4D
040359,000574: 36,3424 72205 DMP TLOAD
040360,000575: 36,3425 01723 INDEP
040361,000576: 36,3426 00145 MPAC # CHANGES MODE TO TP (00001).
040362,000577: 36,3427 45325 PDDL DSU # SQRT (P ABS(R1A))(1-CSD)COGA (+7 OR 16)
040363,000578: 36,3430 00017 14D # PL AT 7D
040364,000579: 36,3431 35640 D1/64
040365,000580: 36,3432 77605 DMP
040366,000581: 36,3433 00003 2D
040367,000582: 36,3434 65351 TLOAD PDDL # (R1A-1)SND (+7 OR16)
040368,000583: 36,3435 00145 MPAC # CHANGES MODE TO TP PL AT 10D
040369,000584: 36,3436 00001 0D
040370,000585: 36,3437 76202 SR4 TAD # PL PUSHES UP 3 SINCE TAD GOVERNS INSTEAD
040371,000586: 36,3440 77771 TAD # OF MODE. MODE REMAINS DP. PL AT 7D,4D
040372,000587: 36,3441 75301 NORM SIGN
040373,000588: 36,3442 00047 X1
040374,000589: 36,3443 00017 14D
040375,000590: 36,3444 56005 DMP XAD,1 # T (+(3 OR 7)+C(X2)+(7 OR 16)+C(X1))
040376,000591: 36,3445 00015 12D
040377,000592: 36,3446 00047 X2
040378,000593: 36,3447 77614 BON
040379,000594: 36,3450 02305 SMANGLSW
040380,000595: 36,3451 75502 THETASM
040381,000596: 36,3452 43014 BOFF BOFF
040382,000597: 36,3453 02345 MOONSW
040383,000598: 36,3454 75465 NEARERTH
040384,000599: 36,3455 02345 ESCPSW
040385,000600: 36,3456 75462 +4
040386,000601: 36,3457 52057 SR* GOTO
040387,000602: 36,3460 20564 0 -13D,1
040388,000603: 36,3461 75475 TMESTORE
040389,000604: 36,3462 52057 SR* GOTO
040390,000605: 36,3463 20575 0 -4,1
040391,000606: 36,3464 75475 TMESTORE
040392,000607: 36,3465 53614 NEARERTH BOFF SR*
040393,000608: 36,3466 02345 ESCPSW
040394,000609: 36,3467 75473 +4
040395,000610: 36,3470 20570 0 -9D,1
040396,000611: 36,3471 77650 GOTO
![]() |
Page 941 |
040398,000613: 36,3472 75475 TMESTORE
040399,000614: 36,3473 77657 SR*
040400,000615: 36,3474 20601 0,1
040401,000616: 36,3475 77600 TMESTORE BOV
040402,000617: 36,3476 75510 TIMELONG
040403,000618: 36,3477 00015 STORE 12D # 12D=T (+10)
040404,000619: 36,3500 43401 SETPD RVQ
040405,000620: 36,3501 00001 0D
040406,000621:
040407,000622:
040408,000623: 36,3502 42414 THETASM BOFF SL4 # T (+7 +C(X1))
040409,000624: 36,3503 02342 ITERSW
040410,000625: 36,3504 75505 ERTHSFER
040411,000626: 36,3505 52057 ERTHSFER SR* GOTO
040412,000627: 36,3506 20604 3,1
040413,000628: 36,3507 75475 TMESTORE
040414,000629:
040415,000630: 36,3510 52145 TIMELONG DLOAD GOTO
040416,000631: 36,3511 35652 NEARI
040417,000632: 36,3512 75477 TMESTORE +2
040418,000633:
040419,000634:
040420,000635: # T (+10) IN 12D AND IN MPAC.
040421,000636:
040422,000637:
![]() |
Page 942 |
040424,000639: # THIS IS A GENERAL NEWTON ITERATOR WHEREIN A STARTING INDEPENDENT VARIABL
040425,000640: # IS INPUT AND THE CHANGE IN THE INDEPENDENT VARIABLE IS OUTPUT. THE
040426,000641: # BOUNDS OF THE INDEPENDENT VARIABLE,MAXINDEP AND MININDEP, MUST BE AVAILA
040427,000642: # BLE AND SWITCH 7 MUST BE SET. IF A GOOD GUESS TO INDEP IS KNOWN,
040428,000643: # TWEEKIT SHOULD BE SET TO A SMALL FRACTION,DEPENDING ON HOW WELL INDEP IS
040429,000644: # KNOWN. OTHERWISE THE FIRST GUESS TO INDEP SHOULD BE .5(MAXINDEP+MININ-
040430,000645: # DEP) AND TWEEKIT SHOULD BE SET TO .25. IT IS ASSUMED THAT THE CRITERIA
040431,000646: # FOR EXITING FROM THE CALLING PROGRAMS LOOP I SIN THE CALLING PROGRAM.
040432,000647: # THE DEPENDENT VARIABLE MUST BE IN DEPVAR AND THE PREVIOUS ONE MUST BE IN
040433,000648: # PREVDEP. THE SIGN OF TWEEKIT SOULD BE +/- ACCORDING TO WHETHER THE
040434,000649: # SINGLE-VALUED FUNCTION IS MONOTONICLY INCREASING OR DECREASING.
040435,000650:
040436,000651:
040437,000652: 36,3513 71214 ITERATOR BONCLR DLOAD
040438,000653: 36,3514 02202 ITERSW
040439,000654: 36,3515 75544 FRSTTIME
040440,000655: 36,3516 01727 DEPVAR
040441,000656: 36,3517 60225 DSU NORM
040442,000657: 36,3520 01731 PREVDEP
040443,000658: 36,3521 00047 X1
040444,000659: 36,3522 70525 PDDL SR1 # PL DOWN 2
040445,000660: 36,3523 01733 DELDEP
040446,000661: 36,3524 77671 DDV # PL UP 2
040447,000662: 36,3525 53605 DMP SL*
040448,000663: 36,3526 01735 DELINDEP
040449,000664: 36,3527 20202 1,1
040450,000665: 36,3530 01735 NEWDELTA STORE DELINDEP
040451,000666: 36,3531 71240 BMN DLOAD # NOW MUST CHECK TO SEE IF THIS DELTA CAN
040452,000667: 36,3532 75556 MINCHECK # CAUSE THE INDEPENDENT VARIABLE TO EXCEED
040453,000668: 36,3533 00033 MAXINDEP # ITS LIMITS.
040454,000669: 36,3534 45225 DSU DSU
040455,000670: 36,3535 01723 INDEP
040456,000671: 36,3536 01735 DELINDEP
040457,000672: 36,3537 50000 BOV BMN
040458,000673: 36,3540 75570 XEEDULMT
040459,000674: 36,3541 75570 XEEDULMT
040460,000675: 36,3542 43545 DLOAD RVQ
040461,000676: 36,3543 01735 DELINDEP
040462,000677:
040463,000678:
040464,000679: 36,3544 41345 FRSTTIME DLOAD DMP
040465,000680: 36,3545 00027 MININDEP
040466,000681: 36,3546 01725 TWEEKIT # TWEEKIT SHOULD BE SET .25 IF THE FIRST
040467,000682: # GUESS OF INDEP WAS .5(MAXINDEP+MININDEP)
040468,000683: 36,3547 41325 PDDL DMP # DOWN 2D
040469,000684: 36,3550 00033 MAXINDEP
040470,000685: 36,3551 01725 TWEEKIT
040471,000686: 36,3552 77625 DSU # UP 2D
![]() |
Page 943 |
040473,000688: 36,3553 52165 SIGN GOTO
040474,000689: 36,3554 01733 DELDEP
040475,000690: 36,3555 75530 NEWDELTA
040476,000691: 36,3556 45345 MINCHECK DLOAD DSU
040477,000692: 36,3557 00027 MININDEP
040478,000693: 36,3560 01723 INDEP
040479,000694: 36,3561 40025 DSU BOV
040480,000695: 36,3562 01735 DELINDEP
040481,000696: 36,3563 75575 XEEDLLMT
040482,000697: 36,3564 71244 BPL DLOAD
040483,000698: 36,3565 75575 XEEDLLMT
040484,000699: 36,3566 01735 DELINDEP
040485,000700: 36,3567 77616 RVQ
040486,000701:
040487,000702:
040488,000703: 36,3570 45345 XEEDULMT DLOAD DSU
040489,000704: 36,3571 00033 MAXINDEP
040490,000705: 36,3572 01723 INDEP
040491,000706: 36,3573 01735 STORE DELINDEP
040492,000707: 36,3574 77616 RVQ
040493,000708:
040494,000709:
040495,000710: 36,3575 45345 XEEDLLMT DLOAD DSU
040496,000711: 36,3576 00027 MININDEP
040497,000712: 36,3577 01723 INDEP
040498,000713: 36,3600 01735 STORE DELINDEP
040499,000714: 36,3601 77616 RVQ
040500,000715:
040501,000716:
![]() |
Page 944 |
040503,000718: # ASSUMES 32D=R (+7), 34D=P (+2), TAG5 (+/-), 18D=COGA (+5), UNR1 (+1), R2
040504,000719: # VEC (+7) AVAILABLE.
040505,000720: 36,3602 60345 INITV DLOAD NORM
040506,000721: 36,3603 00041 32D
040507,000722: 36,3604 00047 X1
040508,000723: 36,3605 70525 PDDL SR1 # R1 (+7-N1) PL AT 2D
040509,000724: 36,3606 00043 34D
040510,000725: 36,3607 77671 DDV # P/R1 (-4+N1) PL AT 0D
040511,000726: 36,3610 41214 BOFF DMP
040512,000727: 36,3611 02345 MOONSW
040513,000728: 36,3612 75617 OUTSIDE
040514,000729: 36,3613 35664 MU
040515,000730: 36,3614 52057 SL* GOTO
040516,000731: 36,3615 20165 0 -12D,1
040517,000732: 36,3616 75621 MAGVTAN
040518,000733: 36,3617 77657 OUTSIDE SL*
040519,000734: 36,3620 20173 0 -6,1
040520,000735: 36,3621 63366 MAGVTAN SQRT PDVL # V SIN(GAMMA) (+1) PL AT 2D
040521,000736:
040522,000737: 36,3622 01701 UNR1
040523,000738: 36,3623 63361 VXSC PDVL # 2D=COGA UNR1 (+6) PL AT 8D
040524,000739: 36,3624 00023 18D
040525,000740: 36,3625 01715 UNNORM
040526,000741: 36,3626 60435 VXV VSR4 # UNVTAN (+6)
040527,000742: 36,3627 01701 UNR1
040528,000743: 36,3630 74255 VAD VXSC # PL AT 2D,0D
040529,000744: 36,3631 46561 VXSC VSL7
040530,000745: 36,3632 35670 VFACT # SCALE FOR ASCENT STEERING AT +7
040531,000746: 36,3633 02324 STORE V0VEC
040532,000747: 36,3634 77616 RVQ
040533,000748:
040534,000749: # RETURNS WITH VELOCITY IN MPAC AND IN V0VEC SCALED (+1)
040535,000750:
040536,000751:
![]() |
Page 945 |
040538,000753: 36,3635 00020 00000 D1/1024 2DEC .5 B-9
040539,000754:
040540,000755: 36,3637 00400 00000 D1/64 2DEC .5 B-5
040541,000756:
040542,000757: 36,3641 01000 00000 D1/32 2DEC .5 B-4
040543,000758:
040544,000759: 36,3643 10000 00000 D1/4 2DEC .5 B-1
040545,000760:
040546,000761: 36,3645 20000 00000 D1/2 2DEC .5
040547,000762:
![]() |
The following line is "NEARZERO 2OCT B0" in the original program listing, but the yaYUL assembler does not syntactically support a bare exponent like "B0" in the operand, so it has been replaced by a numerical equivalent that the assembler does support. |
040551,000766: 36,3647 00000 00001 NEARZERO 2OCT 1
040552,000767:
040553,000768: 36,3651 37777 37777 NEARI 2OCT 3777737777
040554,000769:
040555,000770: 36,3653 37757 37777 BIGNO 2OCT 3775737777
040556,000771:
040557,000772: 36,3655 00020 14223 PERCENT 2DEC E-3 B-28
040558,000773:
040559,000774: 36,3657 00130 27103 LN2/128 2DEC .693147181 B-7
040560,000775:
040561,000776: 36,3661 22031 22343 ROOTMU 2DEC 9.0249769 B-4
040562,000777:
040563,000778: 36,3663 31111 32405 MU 2DEC .0122774395 B+6
040564,000779:
040565,000780: 36,3665 40010 40042 ABSOLMIN 2DEC -.999511590
040566,000781:
040567,000782: 36,3667 30276 05000 VFACT 2DEC .761606218
040568,000783:
040569,000784: 36,3671 36,3667 TFACT EQUALS VFACT
040570,000785: 36,3671 00000 00036 DEPCRIT 2DEC 1.135 E-7 # 50 MS. SCALED BY TNORM
End of include-file LAMB.agc. Parent file is MAIN.agc