Source Code

053082,000001: # Copyright: Public domain. 053083,000002: # Filename: INFLIGHT_ALIGNMENT_ROUTINES.agc 053084,000003: # Purpose: Part of the source code for Luminary 1A build 099. 053085,000004: # It is part of the source code for the Lunar Module's (LM) 053086,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 053087,000006: # Assembler: yaYUL 053088,000007: # Contact: Ron Burkey <info@sandroid.org>. 053089,000008: # Website: www.ibiblio.org/apollo. 053090,000009: # Pages: 1249-1258 053091,000010: # Mod history: 2009-05-26 RSB Adapted from the corresponding 053092,000011: # Luminary131 file, using page 053093,000012: # images from Luminary 1A. 053094,000013: 053095,000014: # This source code has been transcribed or otherwise adapted from 053096,000015: # digitized images of a hardcopy from the MIT Museum. The digitization 053097,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 053098,000017: # the Museum. Many thanks to both. The images (with suitable reduction 053099,000018: # in storage size and consequent reduction in image quality as well) are 053100,000019: # available online at www.ibiblio.org/apollo. If for some reason you 053101,000020: # find that the images are illegible, contact me at info@sandroid.org 053102,000021: # about getting access to the (much) higher-quality images which Paul 053103,000022: # actually created. 053104,000023: 053105,000024: # Notations on the hardcopy document read, in part: 053106,000025: 053107,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 053108,000027: # 16:27 JULY 14, 1969 053109,000028: 053110,000029: # Page 1249 053111,000030: 22,3773 BANK 22 053112,000031: 23,2000 SETLOC INFLIGHT 053113,000032: 23,2000 BANK 053114,000033: 053115,000034: 23,3247 E5,1642 EBANK= XSM 053116,000035: 053117,000036: # CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION. 053118,000037: 053119,000038: # THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE 053120,000039: # HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC. 053121,000040: 053122,000041: # THE OUTPUTS ARE THE THREE GYRO TORQUE ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC, 053123,000042: # MGC, AND OGC RESPECTIVELY. 053124,000043: 053125,000044: 23,3247 COUNT* $$/INFLT 053126,000045: 23,3247 71220 CALCGTA ITA DLOAD # PUSHDOWN 00-03, 16D-27D, 34D-37D 053127,000046: 23,3250 00051 S2 # XDC = (XD1 XD2 XD3) 053128,000047: 23,3251 02665 XDC # YDC = (YD1 YD2 YD3) 053129,000048: 23,3252 65325 PDDL PDDL # ZDC = (ZD1 ZD2 ZD3) 053130,000049: 23,3253 06522 HI6ZEROS 053131,000050: 23,3254 02671 XDC +4 053132,000051: 23,3255 55476 DCOMP VDEF 053133,000052: 23,3256 77656 UNIT 053134,000053: 23,3257 14027 STODL ZPRIME # ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3) 053135,000054: 23,3260 00027 ZPRIME 053136,000055: 053137,000056: 23,3261 77742 SR1 053138,000057: 23,3262 14023 STODL SINTH # SIN(IGC) = ZP1 053139,000058: 23,3263 00033 ZPRIME +4 053140,000059: 23,3264 77742 SR1 053141,000060: 23,3265 34021 STCALL COSTH # COS(IGC) = ZP3 053142,000061: 23,3266 47320 ARCTRIG 053143,000062: 053144,000063: 23,3267 16742 STODL IGC # Y GYRO TORQUING ANGLE FRACTION OF REV. 053145,000064: 23,3270 02667 XDC +2 053146,000065: 23,3271 77742 SR1 053147,000066: 23,3272 14023 STODL SINTH # SIN(MGC) = XD2 053148,000067: 23,3273 00027 ZPRIME 053149,000068: 053150,000069: 23,3274 65205 DMP PDDL 053151,000070: 23,3275 02671 XDC +4 # PD00 = (ZP1)(XD3) 053152,000071: 23,3276 00033 ZPRIME +4 053153,000072: 053154,000073: 23,3277 45205 DMP DSU 053155,000074: 23,3300 02665 XDC # MPAC = (ZP3)(XD1) 053156,000075: 23,3301 77626 STADR 053157,000076: 23,3302 43756 STCALL COSTH # COS(MGC) = MPAC - PD00 053158,000077: 23,3303 47320 ARCTRIG 053159,000078: # Page 1250 053160,000079: 23,3304 26744 STOVL MGC # Z GYRO TORQUING ANGLE FRACTION OF REV. 053161,000080: 23,3305 00027 ZPRIME 053162,000081: 23,3306 77641 DOT 053163,000082: 23,3307 02701 ZDC 053164,000083: 23,3310 24021 STOVL COSTH # COS(OGC) = ZP . ZDC 053165,000084: 23,3311 00027 ZPRIME 053166,000085: 23,3312 77641 DOT 053167,000086: 23,3313 02673 YDC 053168,000087: 23,3314 34023 STCALL SINTH # SIN(OGC) = ZP . YDC 053169,000088: 23,3315 47320 ARCTRIG 053170,000089: 053171,000090: 23,3316 36740 STCALL OGC # X GYRO TORQUING ANGLE FRACTION OF REV. 053172,000091: 23,3317 00051 S2 053173,000092: 053174,000093: # Page 1251 053175,000094: # ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE. 053176,000095: 053177,000096: # THE INPUTS ARE SIN/4 AND COS/4 STORED UP AT SINTH AND COSTH. 053178,000097: 053179,000098: # THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO 053180,000099: # AVAILABLE AT MPAC. 053181,000100: 053182,000101: 23,3320 51545 ARCTRIG DLOAD ABS # PUSHDOWN 16D-21D 053183,000102: 23,3321 00023 SINTH 053184,000103: 23,3322 50025 DSU BMN 053185,000104: 23,3323 07534 QTSN45 # ABS(SIN/4) - SIN(45)/4 053186,000105: 23,3324 47333 TRIG1 # IF (-45,45) OR (135,-135) 053187,000106: 053188,000107: 23,3325 72545 DLOAD SL1 # (45,135) OR (-135,-45) 053189,000108: 23,3326 00021 COSTH 053190,000109: 23,3327 75326 ACOS SIGN 053191,000110: 23,3330 00023 SINTH 053192,000111: 23,3331 00025 STORE THETA # X = ARCCOS(COS) WITH SIGN(SIN) 053193,000112: 23,3332 77616 RVQ 053194,000113: 053195,000114: 23,3333 72545 TRIG1 DLOAD SL1 # (-45,45) OR (135,-135) 053196,000115: 23,3334 00023 SINTH 053197,000116: 23,3335 77736 ASIN 053198,000117: 23,3336 14025 STODL THETA # X = ARCSIN(SIN) WITH SIGN(SIN) 053199,000118: 23,3337 00021 COSTH 053200,000119: 23,3340 77640 BMN 053201,000120: 23,3341 47344 TRIG2 # IF (135,-135) 053202,000121: 053203,000122: 23,3342 43545 DLOAD RVQ 053204,000123: 23,3343 00025 THETA # X = ARCSIN(SIN) (-45,45) 053205,000124: 053206,000125: 23,3344 75345 TRIG2 DLOAD SIGN # (135,-135) 053207,000126: 23,3345 06520 HIDPHALF 053208,000127: 23,3346 00023 SINTH 053209,000128: 23,3347 77625 DSU 053210,000129: 23,3350 00025 THETA 053211,000130: 23,3351 00025 STORE THETA # X = .5 WITH SIGN(SIN) - ARCSIN(SIN) 053212,000131: 23,3352 77616 RVQ # (+) - (+) OR (-) - (-) 053213,000132: 053214,000133: # Page 1252 053215,000134: # SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN 053216,000135: # COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED 053217,000136: # FLIGHT SUBROUTINES. 053218,000137: 053219,000138: # Page 1253 053220,000139: # CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION. 053221,000140: 053222,000141: # THE INPUTS ARE 1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT 053223,000142: # VECTORS ARE STORED AT XNB, YNB, AND ZNB. 2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME 053224,000143: # COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM. 053225,000144: 053226,000145: # THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2. 053227,000146: 053228,000147: 23,3353 77601 CALCGA SETPD # PUSHDOWN 00-05, 16D-21D, 34D-37D 053229,000148: 23,3354 00001 0 053230,000149: 23,3355 47375 VLOAD VXV 053231,000150: 23,3356 02665 XNB # XNB = OGA (OUTER GIMBAL AXIS) 053232,000151: 23,3357 02651 YSM # YSM = IGA (INNER GIMBAL AXIS) 053233,000152: 23,3360 41456 UNIT PUSH # PD0 = UNIT(OGA X IGA) = MGA 053234,000153: 053235,000154: 23,3361 44041 DOT ITA 053236,000155: 23,3362 02701 ZNB 053237,000156: 23,3363 00051 S2 053238,000157: 23,3364 24021 STOVL COSTH # COS(OG) = MGA . ZNB 053239,000158: 23,3365 00001 0 053240,000159: 23,3366 77641 DOT 053241,000160: 23,3367 02673 YNB 053242,000161: 23,3370 34023 STCALL SINTH # SIN(OG) = MGA . YNB 053243,000162: 23,3371 47320 ARCTRIG 053244,000163: 23,3372 26740 STOVL OGC 053245,000164: 23,3373 00001 0 053246,000165: 053247,000166: 23,3374 50235 VXV DOT # PROVISION FOR MG ANGLE OF 90 DEGREES 053248,000167: 23,3375 02665 XNB 053249,000168: 23,3376 02651 YSM 053250,000169: 23,3377 77752 SL1 053251,000170: 23,3400 24021 STOVL COSTH # COS(MG) = IGA . (MGA X OGA) 053252,000171: 23,3401 02651 YSM 053253,000172: 23,3402 77641 DOT 053254,000173: 23,3403 02665 XNB 053255,000174: 23,3404 34023 STCALL SINTH # SIN(MG) = IGA . OGA 053256,000175: 23,3405 47320 ARCTRIG 053257,000176: 23,3406 02744 STORE MGC 053258,000177: 053259,000178: 23,3407 45246 ABS DSU 053260,000179: 23,3410 07536 .166... 053261,000180: 23,3411 77644 BPL 053262,000181: 23,3412 47431 GIMLOCK1 # IF ANGLE GREATER THAN 60 DEGREES 053263,000182: 053264,000183: 23,3413 50375 CALCGA1 VLOAD DOT 053265,000184: 23,3414 02657 ZSM 053266,000185: 23,3415 00001 0 053267,000186: 23,3416 24021 STOVL COSTH # COS(IG) = ZSM . MGA 053268,000187: 23,3417 02643 XSM 053269,000188: # Page 1254 053270,000189: 23,3420 45441 DOT STADR 053271,000190: 23,3421 43754 STCALL SINTH # SIN(IG) = XSM . MGA 053272,000191: 23,3422 47320 ARCTRIG 053273,000192: 053274,000193: 23,3423 26742 STOVL IGC 053275,000194: 23,3424 02740 OGC 053276,000195: 23,3425 77634 RTB 053277,000196: 23,3426 21620 V1STO2S 053278,000197: 23,3427 34322 STCALL THETAD 053279,000198: 23,3430 00051 S2 053280,000199: 053281,000200: 23,3431 77776 GIMLOCK1 EXIT 053282,000201: 23,3432 05567 TC ALARM 053283,000202: 23,3433 00401 OCT 00401 053284,000203: 23,3434 05504 TC UPFLAG # GIMBAL LOCK HAS OCCURRED 053285,000204: 23,3435 00056 ADRES GLOKFAIL 053286,000205: 053287,000206: 23,3436 06037 TC INTPRET 053288,000207: 23,3437 77650 GOTO 053289,000208: 23,3440 47413 CALCGA1 053290,000209: 053291,000210: # Page 1255 053292,000211: # AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM. 053293,000212: 053294,000213: # THE INPUTS ARE 1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD. 2) THE STAR2 VECTOR 053295,000214: # REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6. 3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED 053296,000215: # AT LOCATION 6 OF THE VAC AREA. 4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF 053297,000216: # THE VAC AREA. 053298,000217: 053299,000218: # THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED 053300,000219: # AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D. 053301,000220: 053302,000221: 23,3441 66370 AXISGEN AXT,1 SSP # PUSHDOWN 00-30D, 34D-37D 053303,000222: 23,3442 02714 STARAD +6 053304,000223: 23,3443 00051 S1 053305,000224: 23,3444 02700 STARAD -6 053306,000225: 053307,000226: 23,3445 77601 SETPD 053308,000227: 23,3446 00001 0 053309,000228: 23,3447 46773 AXISGEN1 VLOAD* VXV* # 06D UA = S1 053310,000229: 23,3450 02723 STARAD +12D,1 # STARAD +00D UB = S1 053311,000230: 23,3451 02731 STARAD +18D,1 053312,000231: 23,3452 77656 UNIT # 12D VA = UNIT(S1 X S2) 053313,000232: 23,3453 06731 STORE STARAD +18D,1 # STARAD +06D VB = UNIT(S1 X S2) 053314,000233: 23,3454 77773 VLOAD* 053315,000234: 23,3455 02723 STARAD +12D,1 053316,000235: 053317,000236: 23,3456 76433 VXV* VSL1 053318,000237: 23,3457 02731 STARAD +18D,1 # 18D WA = UA X VA 053319,000238: 23,3460 06737 STORE STARAD +24D,1 # STARAD +12D WB = UB X VB 053320,000239: 053321,000240: 23,3461 77700 TIX,1 053322,000241: 23,3462 47447 AXISGEN1 053323,000242: 053324,000243: 23,3463 66160 AXC,1 SXA,1 053325,000244: 23,3464 00006 6 053326,000245: 23,3465 00036 30D 053327,000246: 053328,000247: 23,3466 66370 AXT,1 SSP 053329,000248: 23,3467 00022 18D 053330,000249: 23,3470 00051 S1 053331,000250: 23,3471 00006 6 053332,000251: 053333,000252: 23,3472 66374 AXT,2 SSP 053334,000253: 23,3473 00006 6 053335,000254: 23,3474 00052 S2 053336,000255: 23,3475 00002 2 053337,000256: 053338,000257: 23,3476 76720 AXISGEN2 XCHX,1 VLOAD* 053339,000258: 23,3477 00036 30D # X1=-6 X2=+6 X1=-6 X2=+4 X1=-6 X2=+2 053340,000259: 23,3500 00001 0,1 053341,000260: 053342,000261: # Page 1256 053343,000262: 23,3501 62757 VXSC* PDVL* # J=(UA)(UB1) J=(UA)(UB2) J=(UA)(UB3) 053344,000263: 23,3502 75062 STARAD +6,2 053345,000264: 23,3503 00007 6,1 053346,000265: 23,3504 77757 VXSC* 053347,000266: 23,3505 75054 STARAD +12D,2 053348,000267: 23,3506 30031 STOVL* 24D # K=(VA)(VB1) J=(VA)(VB2) J=(VA)(VB3) 053349,000268: 23,3507 00015 12D,1 053350,000269: 053351,000270: 23,3510 53357 VXSC* VAD 053352,000271: 23,3511 75046 STARAD +18D,2 # L=(WA)(WB1) J=(WA)(WB2) J=(WA)(WB3) 053353,000272: 23,3512 76455 VAD VSL1 053354,000273: 23,3513 00031 24D 053355,000274: 23,3514 53520 XCHX,1 UNIT 053356,000275: 23,3515 00036 30D 053357,000276: 23,3516 06707 STORE XDC +18D,1 # XDC = L+J+K YDC = L+J+K ZDC = L+J+K 053358,000277: 053359,000278: 23,3517 77700 TIX,1 053360,000279: 23,3520 47521 AXISGEN3 053361,000280: 053362,000281: 23,3521 77704 AXISGEN3 TIX,2 053363,000282: 23,3522 47476 AXISGEN2 053364,000283: 053365,000284: 23,3523 77775 VLOAD 053366,000285: 23,3524 02665 XDC 053367,000286: 23,3525 26707 STOVL STARAD 053368,000287: 23,3526 02673 YDC 053369,000288: 23,3527 26715 STOVL STARAD +6 053370,000289: 23,3530 02701 ZDC 053371,000290: 23,3531 02723 STORE STARAD +12D 053372,000291: 053373,000292: 23,3532 77616 RVQ 053374,000293: 053375,000294: # Page 1257 053376,000295: 23,3533 05520 26075 QTSN45 2DEC .1768 053377,000296: 053378,000297: 23,3535 05252 25253 .166... 2DEC .1666666667 053379,000298: 053380,000299: # Page 1258 (empty page) 053381,000300: End of include-file INFLIGHT_ALIGNMENT_ROUTINES.agc. Parent file is MAIN.agc