Source Code
058713,000001: # Copyright: Public domain.
058714,000002: # Filename: INFLIGHT_ALIGNMENT_ROUTINES.agc
058715,000003: # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
058716,000004: # It is part of the source code for the Command Module's (CM)
058717,000005: # Apollo Guidance Computer (AGC), for Apollo 11.
058718,000006: # Assembler: yaYUL
058719,000007: # Contact: Ron Burkey <info@sandroid.org>.
058720,000008: # Website: www.ibiblio.org/apollo.
058721,000009: # Pages: 1355-1364
058722,000010: # Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
058723,000011: # same name, using Comanche055 page images.
058724,000012:
058725,000013: # This source code has been transcribed or otherwise adapted from digitized
058726,000014: # images of a hardcopy from the MIT Museum. The digitization was performed
058727,000015: # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
058728,000016: # thanks to both. The images (with suitable reduction in storage size and
058729,000017: # consequent reduction in image quality as well) are available online at
058730,000018: # www.ibiblio.org/apollo. If for some reason you find that the images are
058731,000019: # illegible, contact me at info@sandroid.org about getting access to the
058732,000020: # (much) higher-quality images which Paul actually created.
058733,000021:
058734,000022: # Notations on the hardcopy document read, in part:
058735,000023:
058736,000024: # Assemble revision 055 of AGC program Comanche by NASA
058737,000025: # 2021113-051. 10:28 APR. 1, 1969
058738,000026:
058739,000027: # This AGC program shall also be referred to as
058740,000028: # Colossus 2A
058741,000029:
058742,000030: # Page 1355
058743,000031: 22,3510 BANK 22
058744,000032: 23,2000 SETLOC INFLIGHT
058745,000033: 23,2000 BANK
058746,000034:
058747,000035: 23,3205 E5,1671 EBANK= XSM
058748,000036:
058749,000037: # CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
058750,000038:
058751,000039: # THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE
058752,000040: # HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.
058753,000041:
058754,000042: # THE OUTPUTS ARE THE THREE GYRO TORQUE ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,
058755,000043: # MGC, AND OGC RESPECTIVELY.
058756,000044:
058757,000045: 23,3205 COUNT 23/INFLT
058758,000046:
058759,000047: 23,3205 71220 CALCGTA ITA DLOAD # PUSHDOWN 00-03, 16D-27D, 34D-37D
058760,000048: 23,3206 00051 S2 # XDC = (XD1 XD2 XD3)
058761,000049: 23,3207 02714 XDC # YDC = (YD1 YD2 YD3)
058762,000050: 23,3210 65325 PDDL PDDL # ZDC = (ZD1 ZD2 ZD3)
058763,000051: 23,3211 15335 HI6ZEROS
058764,000052: 23,3212 02720 XDC +4
058765,000053: 23,3213 55476 DCOMP VDEF
058766,000054: 23,3214 77656 UNIT
058767,000055: 23,3215 14027 STODL ZPRIME # ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3)
058768,000056: 23,3216 00027 ZPRIME
058769,000057:
058770,000058: 23,3217 77742 SR1
058771,000059: 23,3220 14023 STODL SINTH # SIN(IGC) = ZP1
058772,000060: 23,3221 00033 ZPRIME +4
058773,000061: 23,3222 77742 SR1
058774,000062: 23,3223 34021 STCALL COSTH # COS(IGC) = ZP3
058775,000063: 23,3224 47256 ARCTRIG
058776,000064:
058777,000065: 23,3225 16762 STODL IGC # Y GYRO TORQUING ANGLE FRACTION OF REV.
058778,000066: 23,3226 02716 XDC +2
058779,000067: 23,3227 77742 SR1
058780,000068: 23,3230 14023 STODL SINTH # SIN(MGC) = XD2
058781,000069: 23,3231 00027 ZPRIME
058782,000070:
058783,000071: 23,3232 65205 DMP PDDL
058784,000072: 23,3233 02720 XDC +4 # PD00 = (ZP1)(XD3)
058785,000073: 23,3234 00033 ZPRIME +4
058786,000074:
058787,000075: 23,3235 45205 DMP DSU
058788,000076: 23,3236 02714 XDC # MPAC = (ZP3)(XD1)
058789,000077: 23,3237 77626 STADR
058790,000078: 23,3240 43756 STCALL COSTH # COS(MGC) = MPAC - PD00
058791,000079: 23,3241 47256 ARCTRIG
058792,000080: # Page 1356
058793,000081: 23,3242 26764 STOVL MGC # Z GYRO TORQUING ANGLE FRACTION OF REV.
058794,000082: 23,3243 00027 ZPRIME
058795,000083: 23,3244 77641 DOT
058796,000084: 23,3245 02730 ZDC
058797,000085: 23,3246 24021 STOVL COSTH # COS(OGC) = ZP . ZDC
058798,000086: 23,3247 00027 ZPRIME
058799,000087: 23,3250 77641 DOT
058800,000088: 23,3251 02722 YDC
058801,000089: 23,3252 34023 STCALL SINTH # SIN(OGC) = ZP . YDC
058802,000090: 23,3253 47256 ARCTRIG
058803,000091:
058804,000092: 23,3254 36760 STCALL OGC # X GYRO TORQUING ANGLE FRACTION OF REV.
058805,000093: 23,3255 00051 S2
058806,000094:
058807,000095: # Page 1357
058808,000096: # ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.
058809,000097:
058810,000098: # THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.
058811,000099:
058812,000100: # THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO
058813,000101: # AVAILABLE AT MPAC.
058814,000102:
058815,000103: 23,3256 51545 ARCTRIG DLOAD ABS # PUSHDOWN 16D-21D
058816,000104: 23,3257 00023 SINTH
058817,000105: 23,3260 50025 DSU BMN
058818,000106: 23,3261 07474 QTSN45 # ABS(SIN/4) - SIN(45)/4
058819,000107: 23,3262 47271 TRIG1 # IF (-45,45) OR (135,-135)
058820,000108:
058821,000109: 23,3263 72545 DLOAD SL1 # (45,135) OR (-135,-45)
058822,000110: 23,3264 00021 COSTH
058823,000111: 23,3265 75326 ACOS SIGN
058824,000112: 23,3266 00023 SINTH
058825,000113: 23,3267 00025 STORE THETA # X = ARCCOS(COS) WITH SIGN(SIN)
058826,000114: 23,3270 77616 RVQ
058827,000115:
058828,000116: 23,3271 72545 TRIG1 DLOAD SL1 # (-45,45) OR (135,-135)
058829,000117: 23,3272 00023 SINTH
058830,000118: 23,3273 77736 ASIN
058831,000119: 23,3274 14025 STODL THETA # X = ARCSIN(SIN) WITH SIGN(SIN)
058832,000120: 23,3275 00021 COSTH
058833,000121: 23,3276 77640 BMN
058834,000122: 23,3277 47302 TRIG2 # IF (135,-135)
058835,000123:
058836,000124: 23,3300 43545 DLOAD RVQ
058837,000125: 23,3301 00025 THETA # X = ARCSIN(SIN) (-45,45)
058838,000126:
058839,000127: 23,3302 75345 TRIG2 DLOAD SIGN # (135,-135)
058840,000128: 23,3303 15333 HIDPHALF
058841,000129: 23,3304 00023 SINTH
058842,000130: 23,3305 77625 DSU
058843,000131: 23,3306 00025 THETA
058844,000132: 23,3307 00025 STORE THETA # X = .5 WITH SIGN(SIN) - ARCSIN(SIN)
058845,000133: 23,3310 77616 RVQ # (+) - (+) OR (-) - (-)
058846,000134:
058847,000135: # Page 1358
058848,000136: # SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN
058849,000137: # COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED
058850,000138: # FLIGHT SUBROUTINES.
058851,000139:
058852,000140: # Page 1359
058853,000141: # CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
058854,000142:
058855,000143: # THE INPUTS ARE 1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT
058856,000144: # VECTORS ARE STORED AT XNB, YNB, AND ZNB. 2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME
058857,000145: # COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.
058858,000146:
058859,000147: # THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.
058860,000148:
058861,000149: 23,3311 77601 CALCGA SETPD # PUSHDOWN 00-05, 16D-21D, 34D-37D
058862,000150: 23,3312 00001 0
058863,000151: 23,3313 47375 VLOAD VXV
058864,000152: 23,3314 02714 XNB # XNB = OGA (OUTER GIMBAL AXIS)
058865,000153: 23,3315 02700 YSM # YSM = IGA (INNER GIMBAL AXIS)
058866,000154: 23,3316 41456 UNIT PUSH # PD0 = UNIT(OGA X IGA) = MGA
058867,000155:
058868,000156: 23,3317 44041 DOT ITA
058869,000157: 23,3320 02730 ZNB
058870,000158: 23,3321 00051 S2
058871,000159: 23,3322 24021 STOVL COSTH # COS(OG) = MGA . ZNB
058872,000160: 23,3323 00001 0
058873,000161: 23,3324 77641 DOT
058874,000162: 23,3325 02722 YNB
058875,000163: 23,3326 34023 STCALL SINTH # SIN(OG) = MGA . YNB
058876,000164: 23,3327 47256 ARCTRIG
058877,000165: 23,3330 26760 STOVL OGC
058878,000166: 23,3331 00001 0
058879,000167:
058880,000168: 23,3332 50235 VXV DOT # PROVISION FOR MG ANGLE OF 90 DEGREES
058881,000169: 23,3333 02714 XNB
058882,000170: 23,3334 02700 YSM
058883,000171: 23,3335 77752 SL1
058884,000172: 23,3336 24021 STOVL COSTH # COS(MG) = IGA . (MGA X OGA)
058885,000173: 23,3337 02700 YSM
058886,000174: 23,3340 77641 DOT
058887,000175: 23,3341 02714 XNB
058888,000176: 23,3342 34023 STCALL SINTH # SIN(MG) = IGA . OGA
058889,000177: 23,3343 47256 ARCTRIG
058890,000178: 23,3344 02764 STORE MGC
058891,000179:
058892,000180: 23,3345 45246 ABS DSU
058893,000181: 23,3346 07476 .166...
058894,000182: 23,3347 77644 BPL
058895,000183: 23,3350 47371 GIMLOCK1 # IF ANGLE GREATER THAN 60 DEGREES
058896,000184:
058897,000185: 23,3351 50375 CALCGA1 VLOAD DOT
058898,000186: 23,3352 02706 ZSM
058899,000187: 23,3353 00001 0
058900,000188: 23,3354 24021 STOVL COSTH # COS(IG) = ZSM . MGA
058901,000189: 23,3355 02672 XSM
058902,000190: # Page 1360
058903,000191: 23,3356 45441 DOT STADR
058904,000192: 23,3357 43754 STCALL SINTH # SIN(IG) = XSM . MGA
058905,000193: 23,3360 47256 ARCTRIG
058906,000194:
058907,000195: 23,3361 26762 STOVL IGC
058908,000196: 23,3362 02760 OGC
058909,000197: 23,3363 43034 RTB BONCLR
058910,000198: 23,3364 45552 V1STO2S
058911,000199: 23,3365 00200 CPHIFLAG
058912,000200: 23,3366 00051 S2
058913,000201: 23,3367 35156 STCALL THETAD
058914,000202: 23,3370 00051 S2
058915,000203:
058916,000204: 23,3371 77776 GIMLOCK1 EXIT
058917,000205: 23,3372 05650 TC ALARM
058918,000206: 23,3373 00401 OCT 00401
058919,000207: 23,3374 05546 TC UPFLAG # GIMBAL LOCK HAS OCCURRED
058920,000208: 23,3375 00056 ADRES GLOKFAIL
058921,000209:
058922,000210: 23,3376 06006 TC INTPRET
058923,000211: 23,3377 77650 GOTO
058924,000212: 23,3400 47351 CALCGA1
058925,000213:
058926,000214: # Page 1361
058927,000215: # AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.
058928,000216:
058929,000217: # THE INPUTS ARE 1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD. 2) THE STAR2 VECTOR
058930,000218: # REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6. 3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED
058931,000219: # AT LOCATION 6 OF THE VAC AREA. 4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF
058932,000220: # THE VAC AREA.
058933,000221:
058934,000222: # THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED
058935,000223: # AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.
058936,000224:
058937,000225: 23,3401 66370 AXISGEN AXT,1 SSP # PUSHDOWN 00-30D, 34D-37D
058938,000226: 23,3402 02743 STARAD +6
058939,000227: 23,3403 00051 S1
058940,000228: 23,3404 02727 STARAD -6
058941,000229:
058942,000230: 23,3405 77601 SETPD
058943,000231: 23,3406 00001 0
058944,000232: 23,3407 46773 AXISGEN1 VLOAD* VXV* # 06D UA = S1
058945,000233: 23,3410 02752 STARAD +12D,1 # STARAD +00D UB = S1
058946,000234: 23,3411 02760 STARAD +18D,1
058947,000235: 23,3412 77656 UNIT # 12D VA = UNIT(S1 X S2)
058948,000236: 23,3413 06760 STORE STARAD +18D,1 # STARAD +06D VB = UNIT(S1 X S2)
058949,000237: 23,3414 77773 VLOAD*
058950,000238: 23,3415 02752 STARAD +12D,1
058951,000239:
058952,000240: 23,3416 76433 VXV* VSL1
058953,000241: 23,3417 02760 STARAD +18D,1 # 18D WA = UA X VA
058954,000242: 23,3420 06766 STORE STARAD +24D,1 # STARAD +12D WB = UB X VB
058955,000243:
058956,000244: 23,3421 77700 TIX,1
058957,000245: 23,3422 47407 AXISGEN1
058958,000246:
058959,000247: 23,3423 66160 AXC,1 SXA,1
058960,000248: 23,3424 00006 6
058961,000249: 23,3425 00036 30D
058962,000250:
058963,000251: 23,3426 66370 AXT,1 SSP
058964,000252: 23,3427 00022 18D
058965,000253: 23,3430 00051 S1
058966,000254: 23,3431 00006 6
058967,000255:
058968,000256: 23,3432 66374 AXT,2 SSP
058969,000257: 23,3433 00006 6
058970,000258: 23,3434 00052 S2
058971,000259: 23,3435 00002 2
058972,000260:
058973,000261: 23,3436 76720 AXISGEN2 XCHX,1 VLOAD*
058974,000262: 23,3437 00036 30D # X1=-6 X2=+6 X1=-6 X2=+4 X1=-6 X2=+2
058975,000263: 23,3440 00001 0,1
058976,000264:
058977,000265: # Page 1362
058978,000266: 23,3441 62757 VXSC* PDVL* # J=(UA)(UB1) J=(UA)(UB2) J=(UA)(UB3)
058979,000267: 23,3442 75033 STARAD +6,2
058980,000268: 23,3443 00007 6,1
058981,000269: 23,3444 77757 VXSC*
058982,000270: 23,3445 75025 STARAD +12D,2
058983,000271: 23,3446 30031 STOVL* 24D # K=(VA)(VB1) J=(VA)(VB2) J=(VA)(VB3)
058984,000272: 23,3447 00015 12D,1
058985,000273:
058986,000274: 23,3450 53357 VXSC* VAD
058987,000275: 23,3451 75017 STARAD +18D,2 # L=(WA)(WB1) J=(WA)(WB2) J=(WA)(WB3)
058988,000276: 23,3452 76455 VAD VSL1
058989,000277: 23,3453 00031 24D
058990,000278: 23,3454 53520 XCHX,1 UNIT
058991,000279: 23,3455 00036 30D
058992,000280: 23,3456 06736 STORE XDC +18D,1 # XDC = L+J+K YDC = L+J+K ZDC = L+J+K
058993,000281:
058994,000282: 23,3457 77700 TIX,1
058995,000283: 23,3460 47461 AXISGEN3
058996,000284:
058997,000285: 23,3461 77704 AXISGEN3 TIX,2
058998,000286: 23,3462 47436 AXISGEN2
058999,000287:
059000,000288: 23,3463 77775 VLOAD
059001,000289: 23,3464 02714 XDC
059002,000290: 23,3465 26736 STOVL STARAD
059003,000291: 23,3466 02722 YDC
059004,000292: 23,3467 26744 STOVL STARAD +6
059005,000293: 23,3470 02730 ZDC
059006,000294: 23,3471 02752 STORE STARAD +12D
059007,000295:
059008,000296: 23,3472 77616 RVQ
059009,000297:
059010,000298: # Page 1363
059011,000299: 23,3473 05520 26075 QTSN45 2DEC .1768
059012,000300: 23,3475 05252 25253 .166... 2DEC .1666666667
059013,000301:
059014,000302: # Page 1364 (empty page)
059015,000303:
059016,000304:
End of include-file INFLIGHT_ALIGNMENT_ROUTINES.agc. Parent file is MAIN.agc