Source Code
![]() |
These source-code files were transcribed from scans made from Don Eyles's personal
copy of Luminary 069. They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Onno Hommes. 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 prefixed with a single '#' symbol,
whereas comments added later are prefixed by "##" or "###". 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 Luminary 69 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:GAP: ASSEMBLE REVISION 069 OF AGC PROGRAM LUMINARY BY NASA 2021112-011 19:02 NOV. 25,1968Note that the date is the date of the printout, not the date of the program revision. |
021398,000002: ## Copyright: Public domain.
021399,000003: ## Filename: R60,R62.agc
021400,000004: ## Purpose: The main source file for Luminary revision 069.
021401,000005: ## It is part of the source code for the original release
021402,000006: ## of the flight software for the Lunar Module's (LM) Apollo
021403,000007: ## Guidance Computer (AGC) for Apollo 10. The actual flown
021404,000008: ## version was Luminary 69 revision 2, which included a
021405,000009: ## newer lunar gravity model and only affected module 2.
021406,000010: ## This file is intended to be a faithful transcription, except
021407,000011: ## that the code format has been changed to conform to the
021408,000012: ## requirements of the yaYUL assembler rather than the
021409,000013: ## original YUL assembler.
021410,000014: ## Reference: pp. 485-497
021411,000015: ## Assembler: yaYUL
021412,000016: ## Contact: Ron Burkey <info@sandroid.org>.
021413,000017: ## Website: www.ibiblio.org/apollo/index.html
021414,000018: ## Mod history: 2016-12-13 MAS Created from Luminary 99.
021415,000019: ## 2016-12-14 MAS Updated from comment-proofed Luminary 99 version.
021416,000020: ## 2017-01-20 RRB Updated for Luminary 69.
021417,000021: ## 2017-01-27 RSB Proofed comment text using octopus/prooferComments
021418,000022: ## and fixed errors found.
021419,000023: ## 2017-03-09 RSB Comment text fixes noted in proofing Luminary 116.
021420,000024:
![]() |
Page 485 |
021422,000026: # MOD NO: 0 DATE: 1 MAY 1968
021423,000027: # MOD BY: DIGITAL DEVEL GROUP LOG SECTION R60,R62
021424,000028:
021425,000029: # FUNCTIONAL DESCRIPTION:
021426,000030:
021427,000031: # CALLED AS A GENERAL SUBROUTINE TO MANEUVER THE LM TO A SPECIFIED
021428,000032: # ATTITUDE.
021429,000033:
021430,000034: # 1. IF THE 3-AXIS FLAG IS NOT SET THE FINAL CDU ANGLES ARE
021431,000035: # CALCULATED (VECPOINT).
021432,000036:
021433,000037: # 2. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).
021434,000038:
021435,000039: # 3. REQUEST FLASHING DISPLAY V50 N18 PLEASE PERFORM AUTO MANEUVER.
021436,000040:
021437,000041: # 4. IF PRIORITY DISPLAY FLAG IS SET DO A PHASECHANGE. THEN AWAIT
021438,000042: # ASTRONAUT RESPONSE.
021439,000043:
021440,000044: # 5. DISPLAY RESPONSE RETURNS:
021441,000045:
021442,000046: # A. ENTER - RESET 3-AXIS FLAG AND RETURN TO CLIENT.
021443,000047:
021444,000048: # B. TERMINATE - IF IN P00 GO TO STEP 5A. OTHERWISE CHECK IF R61 IS
021445,000049: # THE CALLING PROGRAM. IF IN R61 AN EXIT IS MADE TO GOTOV56. IF
021446,000050: # NOT IN R61 AN EXIT IS DONE VIA GOTOP00H.
021447,000051:
021448,000052: # C. PROCEED - CONTINUE WITH PROGRAM AT STEP 6.
021449,000053:
021450,000054: # 6. IF THE 3-AXISFLAG IS NOT SET, THE FINAL CDU ANGLES ARE CALCULATED
021451,000055: # (VECPOINT).
021452,000056:
021453,000057: # 7. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).
021454,000058:
021455,000059: # 8. IF THE G+N SWITCH IS NOT SET GO BACK TO STEP 3.
021456,000060: #
021457,000061: # 9. IF THE AUTO SWITCH IS NOT SET GO BACK TO STEP 3.
021458,000062:
021459,000063: # 10. NONFLASHING DISPLAY V06N18 (FDAI ANGLES).
021460,000064:
021461,000065: # 11. DO A PHASECHANGE.
021462,000066:
021463,000067: # 12. DO A MANEUVER CALCULATION AND ICDU DRIVE ROUTINE TO ACHIEVE FINAL
021464,000068:
021465,000069: # GIMBAL ANGLES (GOMANUR).
021466,000070: # 13. AT END OF MANEUVER GO TO STEP 3.
021467,000071:
021468,000072: # IF SATISFACTORY MANEUVER STEP 5A EXITS R60.
021469,000073: # FOR FURTHER ADJUSTMENT OF THE VEHICLE ATTITUDE ABOUT THE
021470,000074: # DESIRED VECTOR, THE ROUTINE MAY BE PERFORMED AGAIN STARTING AT
![]() |
Page 486 |
021472,000076: # STEP 5C.
021473,000077:
021474,000078: # CALLING SEQUENCE: TC BANKCALL
021475,000079: # CADR R60LEM
021476,000080:
021477,000081: # ERASABLE INITIALIZATION REQUIRED: SCAXIS, POINTVSM (FOR VECPOINT)
021478,000082: # 3AXISFLG.
021479,000083:
021480,000084: # SUBROUTINES CALLED: VECPOINT, BALLANGS, GOPERF2R, LINUS, GODSPER,
021481,000085: # GOMANUR, DOWNFLAG, PHASCHNG, UPFLAG
021482,000086:
021483,000087: # NORMAL EXIT MODES: CAE TEMPR60 (CALLERS RETURN ADDRESS)
021484,000088: # TC BANKJUMP
021485,000089:
021486,000090: # ALARMS: NONE
021487,000091:
021488,000092: # OUTPUT: NONE
021489,000093:
021490,000094: # DEBRIS: CPHI, CTHETA, CPSI, 3AXISFLG, TBASE2
021491,000095:
021492,000096: 34,2000 BANK 34
021493,000097: 26,2000 SETLOC MANUVER
021494,000098: 26,2000 BANK
021495,000099:
021496,000100: 26,2101 1164 EBANK= TEMPR60
021497,000101:
021498,000102: 26,2101 COUNT* $$/R06
021499,000103: 26,2101 04645 R60LEM TC MAKECADR
021500,000104: 26,2102 55164 TS TEMPR60
021501,000105:
021502,000106: 26,2103 34746 REDOMANN CAF 3AXISBIT
021503,000107: 26,2104 70101 MASK FLAGWRD5 # IS 3-AXIS FLAG SET
021504,000108: 26,2105 10000 CCS A
021505,000109: 26,2106 12114 TCF TOBALL # YES
021506,000110: 26,2107 06036 TC INTPRET
021507,000111: 26,2110 77624 CALL
021508,000112: 26,2111 56016 VECPOINT # TO COMPUTE FINAL ANGLES
021509,000113: 26,2112 00322 STORE CPHI # STORE FINAL ANGLES - CPHI, CTHETA, CPSI
021510,000114: 26,2113 77776 EXIT
021511,000115:
021512,000116: 26,2114 04616 TOBALL TC BANKCALL
021513,000117: 26,2115 54244 CADR BALLANGS # TO CONVERT ANGLES TO FDAI
021514,000118: 26,2116 32232 TOBALLA CAF V06N18
021515,000119: 26,2117 04616 TC BANKCALL
021516,000120: 26,2120 20563 CADR GOPERF2R # DISPLAY PLEASE PERFORM AUTO MANEUVER
021517,000121: 26,2121 02220 TC R61TEST
021518,000122: 26,2122 02126 TC REDOMANC # PROCEED
021519,000123: 26,2123 02153 TC ENDMANU1 # ENTER I.E. FINISHED WITH R60
![]() |
Page 487 |
021521,000125: 26,2124 02157 TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS
021522,000126: 26,2125 05155 TC ENDOFJOB
021523,000127:
021524,000128: 26,2126 34746 REDOMANC CAF 3AXISBIT
021525,000129: 26,2127 70101 MASK FLAGWRD5 # IS 3-AXIS FLAG SET
021526,000130: 26,2130 10000 CCS A
021527,000131: 26,2131 12137 TCF TOBALLC # YES
021528,000132: 26,2132 06036 TC INTPRET
021529,000133: 26,2133 77624 CALL
021530,000134: 26,2134 56016 VECPOINT # TO COMPUTE FINAL ANGLES
021531,000135: 26,2135 00322 STORE CPHI # STORE ANGLES
021532,000136: 26,2136 77776 EXIT
021533,000137:
021534,000138: 26,2137 04616 TOBALLC TC BANKCALL
021535,000139: 26,2140 54244 CADR BALLANGS # TO CONVERT ANGLES TO FDAI
021536,000140: 26,2141 02233 TC G+N,AUTO # CHECK AUTO MODE
021537,000141: 26,2142 10000 CCS A
021538,000142: 26,2143 12116 TCF TOBALLA # NOT AUTO, GO REREQUEST AUTO MANEUVER.
021539,000143:
021540,000144: 26,2144 32232 AUTOMANV CAF V06N18 # STATIC DISPLAY DURING AUTO MANEUVER
021541,000145: 26,2145 04616 TC BANKCALL # -
021542,000146: 26,2146 20327 CADR GODSPR # -
021543,000147: 26,2147 02157 TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS
021544,000148:
021545,000149: 26,2150 04616 STARTMNV TC BANKCALL # PERFORM MANEUVER VIA KALCMANU
021546,000150: 26,2151 17723 CADR GOMANUR
021547,000151:
021548,000152: 26,2152 12116 ENDMANUV TCF TOBALLA # FINISHED MANEUVER.
021549,000153: 26,2153 05516 ENDMANU1 TC DOWNFLAG # RESET 3-AXIS FLAG
021550,000154: 26,2154 00124 ADRES 3AXISFLG
021551,000155: 26,2155 31164 CAE TEMPR60 # -
021552,000156: 26,2156 04640 TC BANKJUMP # -
021553,000157:
021554,000158: 26,2157 40100 CHKLINUS CS FLAGWRD4
021555,000159: 26,2160 74740 MASK PDSPFBIT # IS PRIORITY DISPLAY FLAG SET?
021556,000160: 26,2161 10000 CCS A # -
021557,000161: 26,2162 00002 TC Q # NO - EXIT
021558,000162: 26,2163 30002 CA Q
021559,000163: 26,2164 54156 TS MPAC +2 # SAVE RETURN
021560,000164: 26,2165 46244 CS THREE # OBTAIN LOCATION FOR RESTART
021561,000165: 26,2166 60133 AD BUF2 # HOLDS Q OF LAST DISPLAY
021562,000166: 26,2167 55055 TS TBASE2
021563,000167:
021564,000168: 26,2170 05353 TC PHASCHNG
021565,000169: 26,2171 00132 OCT 00132
021566,000170:
021567,000171: 26,2172 34745 CAF BIT7
021568,000172: 26,2173 05464 TC LINUS # GO SET BITS FOR PRIORITY DISPLAY -
021569,000173: 26,2174 00156 TC MPAC +2
021570,000174:
![]() |
Page 488 |
021572,000176: 26,2175 37713 RELINUS CAF PRIO26 # RESTORE ORIGINAL PRIORITY
021573,000177: 26,2176 05146 TC PRIOCHNG
021574,000178:
021575,000179: 26,2177 34747 CAF TRACKBIT # DON'T CONTINUE R60 UNLESS TRACKFLAG ON.
021576,000180: 26,2200 70075 MASK FLAGWRD1
021577,000181: 26,2201 10000 CCS A
021578,000182: 26,2202 12215 TCF RER60
021579,000183:
021580,000184: 26,2203 34745 CAF RNDVZBIT # IS IT P20?
021581,000185: 26,2204 70074 MASK FLAGWRD0
021582,000186: 26,2205 10000 CCS A
021583,000187: 26,2206 02212 TC +4 # YES
021584,000188: 26,2207 05353 TC PHASCHNG # NO, MUST BE P25, SET 2.11 SPOT
021585,000189: 26,2210 40112 OCT 40112
021586,000190:
021587,000191: 26,2211 05155 TC ENDOFJOB
021588,000192:
021589,000193: 26,2212 05353 TC PHASCHNG # SET 2.7 SPOT FOR P20
021590,000194: 26,2213 40072 OCT 40072
021591,000195:
021592,000196: 26,2214 05155 TC ENDOFJOB
021593,000197:
021594,000198: 26,2215 05504 RER60 TC UPFLAG # SET PRIO DISPLAY FLAG AFTER RESTART
021595,000199: 26,2216 00077 ADRES PDSPFLAG
021596,000200:
021597,000201: 26,2217 01055 TC TBASE2
021598,000202:
021599,000203: 26,2220 31011 R61TEST CA MODREG # IF WE ARE IN P00 IT MUST BE V49 OR V89
021600,000204: 26,2221 00006 EXTEND
021601,000205: 26,2222 12153 BZF ENDMANU1 # THUS WE GO TO ENDEXT VIA USER
021602,000206:
021603,000207: 26,2223 30100 CA FLAGWRD4 # ARE WE IN R61 (P20 OR P25)
021604,000208: 26,2224 74740 MASK PDSPFBIT
021605,000209: 26,2225 00006 EXTEND
021606,000210: 26,2226 16001 BZF GOTOPOOH # NO
021607,000211: 26,2227 06022 TC GOTOV56 # YES
021608,000212:
021609,000213: 26,2230 20100 BIT14+7 OCT 20100 # -
021610,000214: 26,2231 00203 OCT203 OCT 203
021611,000215: 26,2232 01422 V06N18 VN 0618
021612,000216:
021613,000217: # SUBROUTINE TO CHECK FOR G+N CONTROL, AUTO STABILIZATION
021614,000218:
021615,000219: # RETURNS WITH C(A) = + IF NOT SET FOR G+N, AUTO
021616,000220: # RETURNS WITH C(A) = +0 IF SWITCHES ARE SET
021617,000221:
021618,000222: 26,2233 00006 G+N,AUTO EXTEND
021619,000223: 26,2234 00030 READ CHAN30
021620,000224: 26,2235 74742 MASK BIT10
021621,000225: 26,2236 10000 CCS A
021622,000226: 26,2237 00002 TC Q # NOT IN G+N C(A) = +
![]() |
Page 489 |
021624,000228: 26,2240 00006 ISITAUTO EXTEND # CHECK FOR AUTO MODE
021625,000229: 26,2241 00031 READ CHAN31
021626,000230: 26,2242 74736 MASK BIT14
021627,000231: 26,2243 00002 TC Q # (+) = NOT IN AUTO, (+0) = AOK
021628,000232:
![]() |
Page 490 |
021630,000234: # PROGRAM DESCRIPTION BALLANGS
021631,000235: # MOD NO. LOG SECTION R60,R62
021632,000236:
021633,000237: # WRITTEN BY RAMA M. AIYAWAR
021634,000238: # FUNCTIONAL DESCRIPTION
021635,000239:
021636,000240: # COMPUTES LM FDAI BALL DISPLAY ANGLES
021637,000241: # CALLING SEQUENCE
021638,000242:
021639,000243: # TC BALLANGS
021640,000244: # NORMAL EXIT MODE
021641,000245:
021642,000246: # TC BALLEXIT (SAVED Q)
021643,000247:
021644,000248: # ALARM OR EXIT MODE NIL
021645,000249: # SUBROUTINES CALLED
021646,000250: # CD*TR*G
021647,000251: # ARCTAN
021648,000252:
021649,000253: # INPUT
021650,000254:
021651,000255: # CPHI,CTHETA,CPSI ARE THE ANGLES CORRESPONDING TO AOG,AIG,AMG. THEY ARE
021652,000256: # SP,2S COMPLIMENT SCALED TO HALF REVOLUTION.
021653,000257: # OUTPUT
021654,000258:
021655,000259: # FDAIX, FDAIY, FDAIZ ARE THE REQUIRED BALL ANGLES SCALED TO HALF REVOLUTION
021656,000260: # SP,2S COMPLIMENT.
021657,000261: # THESE ANGLES WILL BE DISPLAYED AS DEGREES AND HUNDREDTHS, IN THE ORDER ROLL, PITCH, YAW, USING NOUNS 18 & 19.
021658,000262:
021659,000263: # ERASABLE INITIALIZATION REQUIRED
021660,000264:
021661,000265: # CPHI,CTHETA,CPSI EACH A SP REGISTER
021662,000266: # DEBRIS
021663,000267:
021664,000268: # A,L,Q,MPAC,SINCDU,COSCDU,PUSHLIST,BALLEXIT
021665,000269:
021666,000270: # NOMENCLATURE: CPHI, CTHETA, & CPSI REPRESENT THE OUTER, INNER, & MIDDLE GIMBAL ANGLES, RESPECTIVELY; OR
021667,000271: # EQUIVALENTLY, CDUX, CDUY, & CDUZ.
021668,000272:
021669,000273: # NOTE: ARCTAN CHECKS FOR OVERFLOW AND SHOULD BE ABLE TO HANDLE ANY SINGULARITIES.
021670,000274:
021671,000275: 26,2000 SETLOC BAWLANGS
021672,000276: 26,2000 BANK
021673,000277:
021674,000278: 26,2244 COUNT* $$/BALL
021675,000279: 26,2244 04645 BALLANGS TC MAKECADR
021676,000280: 26,2245 55342 TS BALLEXIT
021677,000281: 26,2246 30321 CA CPHI
![]() |
Page 491 |
021679,000283: 26,2247 54772 TS CDUSPOT +4
021680,000284: 26,2250 30322 CA CTHETA
021681,000285: 26,2251 54766 TS CDUSPOT
021682,000286: 26,2252 30323 CA CPSI
021683,000287: 26,2253 54770 TS CDUSPOT +2
021684,000288:
021685,000289: 26,2254 06036 TC INTPRET
021686,000290: 26,2255 45001 SETPD CALL
021687,000291: 26,2256 00001 0D
021688,000292: 26,2257 47447 CD*TR*G
021689,000293:
021690,000294: 26,2260 41345 DLOAD DMP
021691,000295: 26,2261 00743 SINCDUX # SIN (OGA)
021692,000296: 26,2262 00747 COSCDUZ # COS (MGA)
021693,000297:
021694,000298: 26,2263 57552 SL1 DCOMP # SCALE
021695,000299: 26,2264 65336 ARCSIN PDDL # YAW = ARCSIN(-SXCZ) INTO 0 PD
021696,000300: 26,2265 00741 SINCDUZ
021697,000301: 26,2266 14023 STODL SINTH # (SINTH = 18D IN PD)
021698,000302: 26,2267 00747 COSCDUZ
021699,000303: 26,2270 72405 DMP SL1 # RESCALE
021700,000304: 26,2271 00751 COSCDUX
021701,000305: 26,2272 34021 STCALL COSTH # (COSTH= 16D IN PD)
021702,000306: 26,2273 26510 ARCTAN
021703,000307: 26,2274 41325 PDDL DMP # ROLL = ARCTAN(SZ/CZCX) INTO 2 PD
021704,000308: 26,2275 00741 SINCDUZ
021705,000309: 26,2276 00743 SINCDUX
021706,000310: 26,2277 41512 SL2 PUSH # SXSZ INTO 4 PD
021707,000311: 26,2300 65205 DMP PDDL # SXSZCY INTO 4 PD
021708,000312: 26,2301 00745 COSCDUY
021709,000313: 26,2302 65205 DMP PDDL # SXSZSY INTO 6 PD
021710,000314: 26,2303 00737 SINCDUY
021711,000315: 26,2304 00751 COSCDUX
021712,000316: 26,2305 72405 DMP SL1 # CXCY
021713,000317: 26,2306 00745 COSCDUY
021714,000318: 26,2307 45425 DSU STADR # PULL UP FROM 6 PD
021715,000319: 26,2310 63756 STODL COSTH # COSTH = CXCY - SXSZSY
021716,000320: 26,2311 00737 SINCDUY
021717,000321: 26,2312 72405 DMP SL1
021718,000322: 26,2313 00751 COSCDUX # CXSY
021719,000323: 26,2314 45415 DAD STADR # PULL UP FROM 4 PD
021720,000324: 26,2315 43754 STCALL SINTH # SINTH = CXSY + SXSZCY
021721,000325: 26,2316 26510 ARCTAN # RETURNS WITH D(MPAC) = PITCH
021722,000326: 26,2317 55525 PDDL VDEF # PITCH INTO 2 PD, ROLL INTO MPAC FROM 2 PD
021723,000327: 26,2320 77634 RTB # VDEF MAKES V(MPAC) = ROLL, PITCH, YAW
021724,000328: 26,2321 21524 V1STO2S
021725,000329: 26,2322 02351 STORE FDAIX # MODE IS TP
021726,000330: 26,2323 77776 EXIT
021727,000331:
021728,000332: 26,2324 31342 ENDBALL CA BALLEXIT
021729,000333:
![]() |
Page 492 |
021731,000335: 26,2325 04640 TC BANKJUMP
021732,000336:
![]() |
Page 493 |
021734,000338: # PROGRAM DESCRIPTION - VECPOINT
021735,000339:
021736,000340: # THIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION. THE AXIS
021737,000341: # TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY
021738,000342: # BEGINNING WITH THE LOCATION CALLED SCAXIS. THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES.
021739,000343: # THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN
021740,000344: # SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM. THE COMPONENTS OF THIS
021741,000345: # VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES. WITH THIS INFORMATION VECPOINT COMPUTES A SET OF THREE GIMBAL
021742,000346: # ANGLES (2S COMPLEMENT) CORESPONDING TO THE CROSS-PRODUCT ROTATION BETWEEN SCAXIS AND POINTVSM AND STORES THEM
021743,000347: # IN T(MPAC) BEFORE RETURNING TO THE CALLER.
021744,000348: # THIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK. WHEN POINTING A VECTOR IN THE Y-Z PLANE,
021745,000349: # THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROBLEM BY ROTATING THE CROSS-
021746,000350: # PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL
021747,000351: # LOCK. IF THE AXIS TO BE POINTED IS MORE THAN 40.6 DEGREES BUT LESS THAN 60.5 DEG FROM THE +X (OR -X) AXIS,
021748,000352: # THE ADDITIONAL ROTATION TO AVOID GIMAL LOCK IS 35 DEGREES. IF THE AXIS IS MORE THAN 60.5 DEGEES FROM +X (OR -X)
021749,000353: # THE ADDITIONAL ROTATION IS 35 DEGREES. THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND
021750,000354: # STORED AS 2S COMPLIMENT ANGLES IN T(MPAC) BEFORE RETURNING TO THE CALLER.
021751,000355: # WHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT
021752,000356: # CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK. IN THIS CASE A PLATFORM REALIGNMENT WOULD BE
021753,000357: # REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION. AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION
021754,000358: # EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES.
021755,000359:
021756,000360: # CALLING SEQUENCE -
021757,000361: # 1) LOAD SCAXIS, POINTVSM
021758,000362: # 2) CALL
021759,000363: # VECPOINT
021760,000364:
021761,000365: # RETURNS WITH
021762,000366:
021763,000367: # 1) DESIRED OUTER GIMBAL ANGLE IN MPAC
021764,000368: # 2) DESIRED INNER GIMBAL ANGLE IN MPAC +1
021765,000369: # 3) DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2
021766,000370:
021767,000371: # ERASABLES USED -
021768,000372:
021769,000373: # 1) SCAXIS 6
021770,000374: # 2) POINTVSM 6
021771,000375: # 3) MIS 18
021772,000376: # 4) DEL 18
021773,000377: # 5) COF 6
021774,000378: # 6) VECQTEMP 1
021775,000379: # 7) ALL OF VAC AREA 43
021776,000380:
021777,000381: # TOTAL 99
021778,000382:
021779,000383: 27,2000 SETLOC VECPT
021780,000384: 27,2000 BANK
![]() |
Page 494 |
021782,000386: 27,2016 COUNT* $$/VECPT
021783,000387:
021784,000388: 27,2016 E6,1674 EBANK= BCDU
021785,000389:
021786,000390: 27,2016 40020 VECPOINT STQ BOV # SAVE RETURN ADDRESS
021787,000391: 27,2017 03323 VECQTEMP
021788,000392: 27,2020 56021 VECLEAR # AND CLEAR OVFIND
021789,000393: 27,2021 47164 VECLEAR AXC,2 RTB
021790,000394: 27,2022 03244 MIS # READ THE PRESENT CDU ANGLES AND
021791,000395: 27,2023 44403 READCDUK # STORE THEM IN PD25, 26, 27
021792,000396: 27,2024 34032 STCALL 25D
021793,000397: 27,2025 44410 CDUTODCM # S/C AXES TO STABLE MEMBER AXES (MIS)
021794,000398: 27,2026 61375 VLOAD VXM
021795,000399: 27,2027 03767 POINTVSM # RESOLVE THE POINTING DIRECTION VF INTO
021796,000400: 27,2030 03245 MIS # INITIAL S/C AXES (VF = POINTVSM)
021797,000401: 27,2031 77656 UNIT
021798,000402: 27,2032 00035 STORE 28D
021799,000403: # PD 28 29 30 31 32 33
021800,000404: 27,2033 53435 VXV UNIT # TAKE THE CROSS PRODUCT VF X VI
021801,000405: 27,2034 03761 SCAXIS # WHERE VI = SCAXIS
021802,000406: 27,2035 57400 BOV VCOMP
021803,000407: 27,2036 56146 PICKAXIS
021804,000408: 27,2037 17267 STODL COF # CHECK MAGNITUDE
021805,000409: 27,2040 00045 36D # OF CROSS PRODUCT
021806,000410: 27,2041 50025 DSU BMN # VECTOR, IF LESS
021807,000411: 27,2042 14367 DPB-14 # THAN B-14 ASSUME
021808,000412: 27,2043 56146 PICKAXIS # UNIT OPERATION
021809,000413: 27,2044 50375 VLOAD DOT # INVALID.
021810,000414: 27,2045 03761 SCAXIS
021811,000415: 27,2046 00035 28D
021812,000416: 27,2047 65552 SL1 ARCCOS
021813,000417: 27,2050 77624 COMPMATX CALL # NOW COMPUTE THE TRANSFORMATION FROM
021814,000418: 27,2051 44527 DELCOMP # FINAL S/C AXES TO INITIAL S/C AXES MFI
021815,000419: 27,2052 75160 AXC,1 AXC,2
021816,000420: 27,2053 03244 MIS # COMPUTE THE TRANSFORMATION FROM FINAL
021817,000421: 27,2054 02234 KEL # S/C AXES TO STABLE MEMBER AXES
021818,000422: 27,2055 77624 CALL # MFS = MIS MFI
021819,000423: 27,2056 44312 MXM3 # (IN PD LIST)
021820,000424:
021821,000425: 27,2057 51545 DLOAD ABS
021822,000426: 27,2060 00007 6 # MFS6 = SIN(CPSI) $2
021823,000427: 27,2061 50025 DSU BMN
021824,000428: 27,2062 14354 SINGIMLC # = SIN(59 DEGS) $2
021825,000429: 27,2063 56136 FINDGIMB # /CPSI/ LESS THAN 59 DEGS
021826,000430: # I.E. DESIRED ATTITUDE NOT IN GIMBAL LOCK
021827,000431:
021828,000432: 27,2064 51545 DLOAD ABS # CHECK TO SEE IF WE ARE POINTING
021829,000433: 27,2065 03761 SCAXIS # THE THRUST AXIS
021830,000434: 27,2066 51025 DSU BPL
021831,000435: 27,2067 14356 SINVEC1 # SIN 49.4 DEGS $2
![]() |
Page 495 |
021833,000437: 27,2070 56136 FINDGIMB # IF SO, WE ARE TRYING TO POINT IT INTO
021834,000438: 27,2071 77775 VLOAD # GIMBAL LOCK, ABORT COULD GO HERE
021835,000439: 27,2072 77626 STADR
021836,000440: 27,2073 50516 STOVL MIS +12D
021837,000441: 27,2074 77626 STADR # STORE MFS (IN PD LIST) IN MIS
021838,000442: 27,2075 50524 STOVL MIS +6
021839,000443: 27,2076 77626 STADR
021840,000444: 27,2077 50532 STOVL MIS
021841,000445: 27,2100 03253 MIS +6 # INNER GIMBAL AXIS IN FINAL S/C AXES
021842,000446: 27,2101 57444 BPL VCOMP # LOCATE THE IG AXIS DIRECTION CLOSEST TO
021843,000447: 27,2102 56103 IGSAMEX # FINAL X S/C AXIS
021844,000448:
021845,000449: 27,2103 50035 IGSAMEX VXV BMN # FIND THE SHORTEST WAY OF ROTATING THE
021846,000450: 27,2104 03761 SCAXIS # S/C OUT OF GIMBAL LOCK BY A ROTATION
021847,000451: 27,2105 56112 U=SCAXIS # ABOUT +- SCAXIS, I.E. IF (IG (SGN MFS3)
021848,000452: # X SCAXIS . XF) LESS THAN 0, U = SCAXIS
021849,000453: # OTHERWISE U = -SCAXIS
021850,000454:
021851,000455: 27,2106 57575 VLOAD VCOMP
021852,000456: 27,2107 03761 SCAXIS
021853,000457: 27,2110 37267 STCALL COF # ROTATE ABOUT -SCAXIS
021854,000458: 27,2111 56115 CHEKAXIS
021855,000459: 27,2112 77775 U=SCAXIS VLOAD
021856,000460: 27,2113 03761 SCAXIS
021857,000461: 27,2114 03267 STORE COF # ROTATE ABOUT + SCAXIS
021858,000462: 27,2115 51545 CHEKAXIS DLOAD ABS
021859,000463: 27,2116 03761 SCAXIS # SEE IF WE ARE POINTING THE AOT
021860,000464: 27,2117 51025 DSU BPL
021861,000465: 27,2120 14360 SINVEC2 # SIN 29.5 DEGS $2
021862,000466: 27,2121 56125 PICKANG1 # IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS
021863,000467: 27,2122 52145 DLOAD GOTO # IF NOT, MUST BE POINTING THE TRANSPONDER
021864,000468: 27,2123 14364 VECANG2 # OR SOME VECTOR IN THE Y, OR Z PLANE
021865,000469: 27,2124 56127 COMPMFSN # IN THIS CASE ROTATE 35 DEGS TO GET OUT
021866,000470: # OF GIMBAL LOCK (VECANG2 $360)
021867,000471: 27,2125 77745 PICKANG1 DLOAD
021868,000472: 27,2126 14362 VECANG1 # = 50 DEGS $360
021869,000473: 27,2127 77624 COMPMFSN CALL
021870,000474: 27,2130 44527 DELCOMP # COMPUTE THE ROTATION ABOUT SCAXIS TO
021871,000475: 27,2131 75160 AXC,1 AXC,2 # BRING MFS OUT OF GIMBAL LOCK
021872,000476: 27,2132 03244 MIS
021873,000477: 27,2133 02234 KEL
021874,000478: 27,2134 77624 CALL # COMPUTE THE NEW TRANSFORMATION FROM
021875,000479: 27,2135 44312 MXM3 # DESIRED S/C AXES TO STABLE MEMBER AXES
021876,000480: # WHICH WILL ALIGN VI WITH VF AND AVOID
021877,000481: # GIMBAL LOCK
021878,000482: 27,2136 45160 FINDGIMB AXC,1 CALL
021879,000483: 27,2137 00000 0 # EXTRACT THE COMMANDED CDU ANGLES FROM
021880,000484: 27,2140 44654 DCMTOCDU # THIS MATRIX
021881,000485: 27,2141 40234 RTB SETPD
021882,000486: 27,2142 21524 V1STO2S # CONVERT TO 2:S COMPLEMENT
![]() |
Page 496 |
021884,000488: 27,2143 00001 0
021885,000489: 27,2144 77650 GOTO
021886,000490: 27,2145 03323 VECQTEMP # RETURN TO CALLER
021887,000491:
021888,000492: 27,2146 50375 PICKAXIS VLOAD DOT # IF VF X VI = 0, FIND VF . VI
021889,000493: 27,2147 00035 28D
021890,000494: 27,2150 03761 SCAXIS
021891,000495: 27,2151 72240 BMN TLOAD
021892,000496: 27,2152 54326 ROT180
021893,000497: 27,2153 00032 25D
021894,000498: 27,2154 77650 GOTO # IF VF = VI, CDU DESIRED = PRESENT CDU
021895,000499: 27,2155 03323 VECQTEMP # PRESENT CDU ANGLES
021896,000500:
021897,000501: 35,2000 BANK 35
021898,000502: 26,2000 SETLOC MANUVER1
021899,000503: 26,2000 BANK
021900,000504: 26,2326 47375 ROT180 VLOAD VXV # IF VF, VI ANTIPARALLEL, 108 DEG ROTATION
021901,000505: 26,2327 03253 MIS +6 # IS REQUIRED. Y STABLE MEMBER AXIS IN
021902,000506: 26,2330 06422 HIDPHALF # INITIAL S/C AXES.
021903,000507: 26,2331 47256 UNIT VXV # FIND Y(SM) X X(I)
021904,000508: 26,2332 03761 SCAXIS # FIND UNIT(VI X UNIT(Y(SM) X X(I)))
021905,000509: 26,2333 40056 UNIT BOV # I.E. PICK A VECTOR IN THE PLANE OF X(I),
021906,000510: 26,2334 54350 PICKX # Y(SM) PERPENDICULAR TO VI
021907,000511: 26,2335 17267 STODL COF
021908,000512: 26,2336 00045 36D # CHECK MAGNITUDE
021909,000513: 26,2337 50025 DSU BMN # OF THIS VECTOR.
021910,000514: 26,2340 14367 DPB-14 # IF LESS THAN B-14,
021911,000515: 26,2341 54350 PICKX # PICK X-AXIS.
021912,000516: 26,2342 77775 VLOAD
021913,000517: 26,2343 03267 COF
021914,000518: 26,2344 17267 XROT STODL COF
021915,000519: 26,2345 06422 HIDPHALF
021916,000520: 26,2346 77650 GOTO
021917,000521: 26,2347 56050 COMPMATX
021918,000522: 26,2350 52175 PICKX VLOAD GOTO # PICK THE XAXIS IN THIS CASE
021919,000523: 26,2351 06422 HIDPHALF
021920,000524: 26,2352 54344 XROT
021921,000525: 26,2353 15555 35172 SINGIMLC 2DEC .4285836003 # = SIN(59) $2
021922,000526:
021923,000527: 26,2355 14113 36326 SINVEC1 2DEC .3796356537 # = SIN(49.4) $2
021924,000528:
021925,000529: 26,2357 07701 35703 SINVEC2 2DEC .2462117800 # = SIN(29.5) $2
021926,000530:
021927,000531: 26,2361 04343 21616 VECANG1 2DEC .1388888889 # = 50 DEGREES $360
021928,000532:
021929,000533: 26,2363 03070 34344 VECANG2 2DEC .09722222222 # = 35 DEGREES $360
021930,000534:
021931,000535: 26,2365 00000 1BITDP OCT 0 # KEEP THIS BEFORE DPB(-14) *********
021932,000536: 26,2366 00001 DPB-14 OCT 00001
021933,000537: 26,2367 00000 OCT 00000
021934,000538:
![]() |
Page 497 |
021936,000540: # ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49)
021937,000541:
021938,000542: 34,2000 BANK 34
021939,000543: 23,2000 SETLOC R62
021940,000544: 23,2000 BANK
021941,000545: 23,2065 E6,1674 EBANK= BCDU
021942,000546:
021943,000547: 23,2065 COUNT* $$/R62
021944,000548:
021945,000549: 23,2065 23,2065 R62DISP EQUALS R62FLASH
021946,000550:
021947,000551: 23,2065 35010 R62FLASH CAF V06N22 # FLASH V06N22 AND
021948,000552: 23,2066 04616 TC BANKCALL # ICDU ANGLES
021949,000553: 23,2067 20351 CADR GOFLASH
021950,000554: 23,2070 15472 TCF ENDEXT # TERMINATE
021951,000555: 23,2071 12073 TCF GOMOVE # PROCEED
021952,000556: 23,2072 12065 TCF R62FLASH # ENTER
021953,000557:
021954,000558: # ASTRONAUT MAY LOAD NEW ICDUS AT THIS
021955,000559: # POINT
021956,000560: 23,2073 05504 GOMOVE TC UPFLAG # SET FOR 3-AXIS MANEUVER
021957,000561: 23,2074 00124 ADRES 3AXISFLG
021958,000562:
021959,000563: 23,2075 04616 TC BANKCALL
021960,000564: 23,2076 54101 CADR R60LEM
021961,000565: 23,2077 15472 TCF ENDEXT # END R62
021962,000566:
End of include-file R60,R62.agc. Parent file is MAIN.agc