Source Code
![]() |
These source-code files were obtained by digitally photographing
an Artemis 72 program listing from a private collection and then
modifying pre-existing Comanche 55 (Apollo 11) source files to
incorporate changes. Note that the page images
presented online are of reduced quality, and that additional images
may be available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 072 OF AGC PROGRAM ARTEMIS BY NASA 2021114-011 11:40 FEB. 26, 1971 THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS COLOSSUS 3 THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER OSR PROJECT 55-23890, SPONSORED BY THE MANNED SPACECRAFT CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE CHARLES STARK DRAPER LABORATORY, MASSACHUSETTS INSTITUTE OF TECHNOLOGY, CAMBRIDGE, MASS. |
057909,000002: # Copyright: Public domain.
057910,000003: # Filename: INFLIGHT_ALIGNMENT_ROUTINES.agc
057911,000004: # Purpose: Part of the source code for Artemis (i.e., Colossus 3),
057912,000005: # build 072. This is for the Command Module's (CM)
057913,000006: # Apollo Guidance Computer (AGC), we believe for
057914,000007: # Apollo 15-17.
057915,000008: # Assembler: yaYUL
057916,000009: # Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
057917,000010: # Website: www.ibiblio.org/apollo/index.html
057918,000011: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Artemis072/
057919,000012: # Mod history: 2009-08-20 JL Adapted from corresponding Comanche 055 file.
057920,000013: # 2010-02-20 RSB Un-##'d this header.
057921,000014:
057922,000015: # # Page 1354
057923,000016:
057924,000017: 23,2000 SETLOC INFLIGHT
057925,000018: 23,2000 BANK
057926,000019:
057927,000020: 23,3240 0002671 EBANK= XSM
057928,000021:
057929,000022: # CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
057930,000023:
057931,000024: # THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE
057932,000025: # HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.
057933,000026:
057934,000027: # THE OUTPUTS ARE THE THREE GYRO TORQUE ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,
057935,000028: # MGC, AND OGC RESPECTIVELY.
057936,000029:
057937,000030: 23,3240 COUNT* $$/INFLT
057938,000031: 23,3240 71220 CALCGTA ITA DLOAD # PUSHDOWN 00-03,16D-27D,34D-37D
057939,000032: 23,3241 00051 S2 # XDC = (XD1 XD2 XD3)
057940,000033: 23,3242 02714 XDC # YDC = (YD1 YD2 YD3)
057941,000034: 23,3243 65325 PDDL PDDL # ZDC = (ZD1 ZD2 ZD3)
057942,000035: 23,3244 15336 HI6ZEROS
057943,000036: 23,3245 02720 XDC +4
057944,000037: 23,3246 55476 DCOMP VDEF
057945,000038: 23,3247 77656 UNIT
057946,000039: 23,3250 14027 STODL ZPRIME # ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3)
057947,000040: 23,3251 00027 ZPRIME
057948,000041:
057949,000042: 23,3252 77742 SR1
057950,000043: 23,3253 14023 STODL SINTH # SIN(IGC) = ZP1
057951,000044: 23,3254 00033 ZPRIME +4
057952,000045: 23,3255 77742 SR1
057953,000046: 23,3256 34021 STCALL COSTH # COS(IGC) = ZP3
057954,000047: 23,3257 47311 ARCTRIG
057955,000048:
057956,000049: 23,3260 16762 STODL IGC # Y GYRO TORQUING ANGLE FRACTION OF REV.
057957,000050: 23,3261 02716 XDC +2
057958,000051: 23,3262 77742 SR1
057959,000052: 23,3263 14023 STODL SINTH # SIN(MGC) = XD2
057960,000053: 23,3264 00027 ZPRIME
057961,000054:
057962,000055: 23,3265 65205 DMP PDDL
057963,000056: 23,3266 02720 XDC +4 # PD00 = (ZP1)(XD3)
057964,000057: 23,3267 00033 ZPRIME +4
057965,000058:
057966,000059: 23,3270 45205 DMP DSU
057967,000060: 23,3271 02714 XDC # MPAC = (ZP3)(XD1)
057968,000061: 23,3272 77626 STADR
057969,000062: 23,3273 43756 STCALL COSTH # COS(MGC) = MPAC - PD00
057970,000063: 23,3274 47311 ARCTRIG
057971,000064: 23,3275 26764 STOVL MGC # Z GYRO TORQUING ANGLE FRACTION OF REV.
057972,000065: # # Page 1355
057973,000066: 23,3276 00027 ZPRIME
057974,000067: 23,3277 77641 DOT
057975,000068: 23,3300 02730 ZDC
057976,000069: 23,3301 24021 STOVL COSTH # COS(OGC) = ZP . ZDC
057977,000070: 23,3302 00027 ZPRIME
057978,000071: 23,3303 77641 DOT
057979,000072: 23,3304 02722 YDC
057980,000073: 23,3305 34023 STCALL SINTH # SIN(OGC) = ZP . YDC
057981,000074: 23,3306 47311 ARCTRIG
057982,000075:
057983,000076: 23,3307 36760 STCALL OGC # X GYRO TORQUING ANGLE FRACTION OF REV.
057984,000077: 23,3310 00051 S2
057985,000078:
057986,000079: # # Page 1356
057987,000080:
057988,000081: # ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.
057989,000082:
057990,000083: # THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.
057991,000084:
057992,000085: # THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO
057993,000086: # AVAILABLE AT MPAC.
057994,000087:
057995,000088: 23,3311 51545 ARCTRIG DLOAD ABS # PUSHDOWN 16D-21D
057996,000089: 23,3312 00023 SINTH
057997,000090: 23,3313 50025 DSU BMN
057998,000091: 23,3314 07525 QTSN45 # ABS(SIN/4) - SIN(45)/4
057999,000092: 23,3315 47324 TRIG1 # IF (-45,45) OR (135,-135)
058000,000093:
058001,000094: 23,3316 72545 DLOAD SL1 # (45,135) OR (-135,-45)
058002,000095: 23,3317 00021 COSTH
058003,000096: 23,3320 75326 ACOS SIGN
058004,000097: 23,3321 00023 SINTH
058005,000098: 23,3322 00025 STORE THETA # X = ARCCOS(COS) WITH SIGN(SIN)
058006,000099: 23,3323 77616 RVQ
058007,000100:
058008,000101: 23,3324 72545 TRIG1 DLOAD SL1 # (-45,45) OR (135,-135)
058009,000102: 23,3325 00023 SINTH
058010,000103: 23,3326 77736 ASIN
058011,000104: 23,3327 14025 STODL THETA # X = ARCSIN(SIN) WITH SIGN(SIN)
058012,000105: 23,3330 00021 COSTH
058013,000106: 23,3331 77640 BMN
058014,000107: 23,3332 47335 TRIG2 # IF (135,-135)
058015,000108:
058016,000109: 23,3333 43545 DLOAD RVQ
058017,000110: 23,3334 00025 THETA # X = ARCSIN(SIN) (-45,45)
058018,000111:
058019,000112: 23,3335 75345 TRIG2 DLOAD SIGN # (135,-135)
058020,000113: 23,3336 15334 HIDPHALF
058021,000114: 23,3337 00023 SINTH
058022,000115: 23,3340 77625 DSU
058023,000116: 23,3341 00025 THETA
058024,000117: 23,3342 00025 STORE THETA # X = .5 WITH SIGN(SIN) - ARCSIN(SIN)
058025,000118: 23,3343 77616 RVQ # (+) - (+) OR (-) - (-)
058026,000119:
058027,000120: # # Page 1357
058028,000121: # SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN
058029,000122: # COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED
058030,000123: # FLIGHT SUBROUTINES.
058031,000124:
058032,000125: # # Page 1358
058033,000126: # CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
058034,000127:
058035,000128: # THE INPUTS ARE 1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT
058036,000129: # VECTORS ARE STORED AT XNB, YNB, AND ZNB. 2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME
058037,000130: # COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.
058038,000131:
058039,000132: # THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.
058040,000133:
058041,000134: 23,3344 77601 CALCGA SETPD # PUSHDOWN 00-05, 16D-21D, 34D-37D
058042,000135: 23,3345 00001 0
058043,000136: 23,3346 47375 VLOAD VXV
058044,000137: 23,3347 02714 XNB # XNB = OGA (OUTER GIMBAL AXIS)
058045,000138: 23,3350 02700 YSM # YSM = IGA (INNER GIMBAL AXIS)
058046,000139: 23,3351 41456 UNIT PUSH # PD0 = UNIT(OGA X IGA) = MGA
058047,000140:
058048,000141: 23,3352 44041 DOT ITA
058049,000142: 23,3353 02730 ZNB
058050,000143: 23,3354 00051 S2
058051,000144: 23,3355 24021 STOVL COSTH # COS(OG) = MGA . ZNB
058052,000145: 23,3356 00001 0
058053,000146: 23,3357 77641 DOT
058054,000147: 23,3360 02722 YNB
058055,000148: 23,3361 34023 STCALL SINTH # SIN(OG) = MGA . YNB
058056,000149: 23,3362 47311 ARCTRIG
058057,000150: 23,3363 26760 STOVL OGC
058058,000151: 23,3364 00001 0
058059,000152:
058060,000153: 23,3365 50235 VXV DOT # PROVISION FOR MG ANGLE OF 90 DEGREES
058061,000154: 23,3366 02714 XNB
058062,000155: 23,3367 02700 YSM
058063,000156: 23,3370 77752 SL1
058064,000157: 23,3371 24021 STOVL COSTH # COS(MG) = IGA . (MGA X OGA)
058065,000158: 23,3372 02700 YSM
058066,000159: 23,3373 77641 DOT
058067,000160: 23,3374 02714 XNB
058068,000161: 23,3375 34023 STCALL SINTH # SIN(MG) = IGA . OGA
058069,000162: 23,3376 47311 ARCTRIG
058070,000163: 23,3377 02764 STORE MGC
058071,000164:
058072,000165: 23,3400 45246 ABS DSU
058073,000166: 23,3401 07527 .166...
058074,000167: 23,3402 77644 BPL
058075,000168: 23,3403 47422 GIMLOCK1 # IF ANGLE GREATER THAN 60 DEGREES
058076,000169:
058077,000170: 23,3404 50375 CALCGA1 VLOAD DOT
058078,000171: 23,3405 02706 ZSM
058079,000172: 23,3406 00001 0
058080,000173: 23,3407 24021 STOVL COSTH # COS(IG) = ZSM . MGA
058081,000174: 23,3410 02672 XSM
058082,000175: # # Page 1359
058083,000176: 23,3411 45441 DOT STADR
058084,000177: 23,3412 43754 STCALL SINTH # SIN(IG) = XSM . MGA
058085,000178: 23,3413 47311 ARCTRIG
058086,000179:
058087,000180: 23,3414 26762 STOVL IGC
058088,000181: 23,3415 02760 OGC
058089,000182: 23,3416 77634 RTB
058090,000183: 23,3417 45644 V1STO2S
058091,000184: 23,3420 35310 STCALL THETAD
058092,000185: 23,3421 00051 S2
058093,000186:
058094,000187: 23,3422 77776 GIMLOCK1 EXIT
058095,000188: 23,3423 05671 TC ALARM
058096,000189: 23,3424 00401 OCT 00401
058097,000190: 23,3425 05547 TC UPFLAG # GIMBAL LOCK HAS OCCURRED
058098,000191: 23,3426 00056 ADRES GLOKFAIL
058099,000192:
058100,000193: 23,3427 06006 TC INTPRET
058101,000194: 23,3430 77650 GOTO
058102,000195: 23,3431 47404 CALCGA1
058103,000196:
058104,000197: # # Page 1360
058105,000198:
058106,000199: # AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.
058107,000200:
058108,000201: # THE INPUTS ARE 1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD. 2) THE STAR2 VECTOR
058109,000202: # REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6. 3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED
058110,000203: # AT LOCATION 6 OF THE VAC AREA. 4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF
058111,000204: # THE VAC AREA.
058112,000205:
058113,000206: # THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED
058114,000207: # AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.
058115,000208:
058116,000209: 23,3432 66370 AXISGEN AXT,1 SSP # PUSHDOWN 00-30D,34D-37D
058117,000210: 23,3433 02743 STARAD +6
058118,000211: 23,3434 00051 S1
058119,000212: 23,3435 02727 STARAD -6
058120,000213:
058121,000214: 23,3436 77601 SETPD
058122,000215: 23,3437 00001 0
058123,000216: 23,3440 46773 AXISGEN1 VLOAD* VXV* # 06D UA = S1
058124,000217: 23,3441 02752 STARAD +12D,1 # STARAD +00D UB = S1
058125,000218: 23,3442 02760 STARAD +18D,1
058126,000219: 23,3443 77656 UNIT # 12D VA = UNIT(S1 X S2)
058127,000220: 23,3444 06760 STORE STARAD +18D,1 # STARAD +06D VB = UNIT(S1 X S2)
058128,000221: 23,3445 77773 VLOAD*
058129,000222: 23,3446 02752 STARAD +12D,1
058130,000223:
058131,000224: 23,3447 76433 VXV* VSL1
058132,000225: 23,3450 02760 STARAD +18D,1 # 18D WA = UA X VA
058133,000226: 23,3451 06766 STORE STARAD +24D,1 # STARAD +12D WB = UB X VB
058134,000227:
058135,000228: 23,3452 77700 TIX,1
058136,000229: 23,3453 47440 AXISGEN1
058137,000230:
058138,000231: 23,3454 66160 AXC,1 SXA,1
058139,000232: 23,3455 00006 6
058140,000233: 23,3456 00036 30D
058141,000234:
058142,000235: 23,3457 66370 AXT,1 SSP
058143,000236: 23,3460 00022 18D
058144,000237: 23,3461 00051 S1
058145,000238: 23,3462 00006 6
058146,000239:
058147,000240: 23,3463 66374 AXT,2 SSP
058148,000241: 23,3464 00006 6
058149,000242: 23,3465 00052 S2
058150,000243: 23,3466 00002 2
058151,000244:
058152,000245: 23,3467 76720 AXISGEN2 XCHX,1 VLOAD*
058153,000246: 23,3470 00036 30D # X1=-6 X2=+6 X1=-6 X2=+4 X1=-6 X2=+2
058154,000247: 23,3471 00001 0,1
058155,000248:
058156,000249: # # Page 1361
058157,000250: 23,3472 62757 VXSC* PDVL* # J=(UA)(UB1) J=(UA)(UB2) J=(UA)(UB3)
058158,000251: 23,3473 75033 STARAD +6,2
058159,000252: 23,3474 00007 6,1
058160,000253: 23,3475 77757 VXSC*
058161,000254: 23,3476 75025 STARAD +12D,2
058162,000255: 23,3477 30031 STOVL* 24D # K=(VA)(VB1) J=(VA)(VB2) J=(VA)(VB3)
058163,000256: 23,3500 00015 12D,1
058164,000257:
058165,000258: 23,3501 53357 VXSC* VAD
058166,000259: 23,3502 75017 STARAD +18D,2 # L=(WA)(WB1) J=(WA)(WB2) J=(WA)(WB3)
058167,000260: 23,3503 76455 VAD VSL1
058168,000261: 23,3504 00031 24D
058169,000262: 23,3505 53520 XCHX,1 UNIT
058170,000263: 23,3506 00036 30D
058171,000264: 23,3507 06736 STORE XDC +18D,1 # XDC = L+J+K YDC = L+J+K ZDC = L+J+K
058172,000265:
058173,000266: 23,3510 77700 TIX,1
058174,000267: 23,3511 47512 AXISGEN3
058175,000268:
058176,000269: 23,3512 77704 AXISGEN3 TIX,2
058177,000270: 23,3513 47467 AXISGEN2
058178,000271:
058179,000272: 23,3514 77775 VLOAD
058180,000273: 23,3515 02714 XDC
058181,000274: 23,3516 26736 STOVL STARAD
058182,000275: 23,3517 02722 YDC
058183,000276: 23,3520 26744 STOVL STARAD +6
058184,000277: 23,3521 02730 ZDC
058185,000278: 23,3522 02752 STORE STARAD +12D
058186,000279:
058187,000280: 23,3523 77616 RVQ
058188,000281:
058189,000282: # # Page 1362
058190,000283: 23,3524 05520 26075 QTSN45 2DEC .1768
058191,000284: 23,3526 05252 25253 .166... 2DEC .1666666667
058192,000285:
058193,000286: # # Page 1363 (empty page)
058194,000287:
058195,000288:
End of include-file INFLIGHT_ALIGNMENT_ROUTINES.agc. Parent file is MAIN.agc