Source Code

039065,000001: # Copyright: Public domain. 039066,000002: # Filename: CM_BODY_ATTITUDE.agc 039067,000003: # Purpose: Part of the source code for Comanche, build 055. It 039068,000004: # is part of the source code for the Command Module's 039069,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11. 039070,000006: # Assembler: yaYUL 039071,000007: # Reference: pp. 883-889 039072,000008: # Contact: Ron Burkey <info@sandroid.org> 039073,000009: # Website: http://www.ibiblio.org/apollo. 039074,000010: # Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same 039075,000011: # name and Comanche 055 page images. 039076,000012: 039077,000013: # The contents of the "Comanche055" files, in general, are transcribed 039078,000014: # from scanned documents. 039079,000015: 039080,000016: # Assemble revision 055 of AGC program Comanche by NASA 039081,000017: # 2021113-051. April 1, 1969. 039082,000018: 039083,000019: # This AGC program shall also be referred to as Colossus 2A 039084,000020: 039085,000021: # Prepared by 039086,000022: # Massachusetts Institute of Technology 039087,000023: # 75 Cambridge Parkway 039088,000024: # Cambridge, Massachusetts 039089,000025: 039090,000026: # under NASA contract NAS 9-4065. 039091,000027: 039092,000028: # Refer directly to the online document mentioned above for further 039093,000029: # information. Please report any errors to info@sandroid.org. 039094,000030: 039095,000031: # Page 883 039096,000032: 35,3477 BANK 35 039097,000033: 039098,000034: 37,2000 SETLOC BODYATT 039099,000035: 37,2000 BANK 039100,000036: 039101,000037: 37,3470 COUNT 37/CMBAT 039102,000038: 039103,000039: # PDL 12D - 15D SAFE. 039104,000040: 039105,000041: # VALUE OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING READACCS. 039106,000042: 039107,000043: 37,3470 E7,1451 EBANK= RTINIT # LET INTERPRETER SET EB 039108,000044: 039109,000045: 37,3470 06006 CM/POSE TC INTPRET # COME HERE VIA AVEGEXIT. 039110,000046: 039111,000047: 37,3471 77201 SETPD VLOAD 039112,000048: 37,3472 00001 0 039113,000049: 37,3473 01177 VN # KVSCALE = (12800/ .3048) /2VS 039114,000050: 37,3474 63361 VXSC PDVL 039115,000051: 37,3475 37767 -KVSCALE # KVSCALE = .81491944 039116,000052: 37,3476 01714 UNITW # FULL UNIT VECTOR 039117,000053: 37,3477 74235 VXV VXSC # VREL = V - WE*R 039118,000054: 37,3500 01760 UNITR 039119,000055: 37,3501 15245 KWE 039120,000056: 37,3502 45455 VAD STADR 039121,000057: 37,3503 74251 STORE -VREL # SAVE FOR ENTRY GUIDANCE. REF COORDS 039122,000058: 039123,000059: 37,3504 72056 UNIT LXA,1 039124,000060: 37,3505 00044 36D # ABVAL( -VREL) TO X1 039125,000061: 37,3506 03542 STORE UXA/2 # -UVREL REF COORDS 039126,000062: 039127,000063: 37,3507 57435 VXV VCOMP 039128,000064: 37,3510 01760 UNITR # .5 UNIT REF COORDS 039129,000065: 37,3511 66256 UNIT SSP # THE FOLLOWING IS TO PROVIDE A STABLE 039130,000066: 37,3512 00051 S1 # UN FOR THE END OF THE TERMINAL PHASE. 039131,000067: 37,3513 00476 SPVQUIT DEC .019405 # 1000/ 2 VS 039132,000068: 37,3514 77300 TIX,1 VLOAD # IF V-VQUIT POS, BRANCH. 039133,000069: 37,3515 77517 CM/POSE2 # SAME UYA IN OLDUYA 039134,000070: 37,3516 03534 OLDUYA # OTHERWISE CONTINUE TO USE OLDUYA 039135,000071: 37,3517 03550 CM/POSE2 STORE UYA/2 # REF COORDS 039136,000072: 039137,000073: 37,3520 03534 STORE OLDUYA # RESTORE, OR SAVE AS CASE MAY BE. 039138,000074: 039139,000075: 37,3521 57435 VXV VCOMP 039140,000076: 37,3522 03542 UXA/2 # FINISH OBTAINING TRAJECTORY TRIAD. 039141,000077: 37,3523 77772 VSL1 039142,000078: 37,3524 03556 STORE UZA/2 # REF COORDS 039143,000079: # Page 884 039144,000080: 37,3525 77751 TLOAD # PICK UP CDUX, CDUY, CDUZ CORRESPONDING 039145,000081: 37,3526 03270 AOG/PIP # TO PIPUP TIME IN 2'S C AND SAVE. 039146,000082: 37,3527 14031 CM/TRIO STODL 24D 039147,000083: 37,3530 00032 25D # AIG/PIP 039148,000084: 039149,000085: 37,3531 41434 RTB PUSH # TO PDL0 039150,000086: 37,3532 45513 CDULOGIC 039151,000087: 37,3533 77746 COS 039152,000088: 37,3534 17564 STODL UBX/2 # CI /2 039153,000089: # AIG/PIP FROM PDL 0 039154,000090: 37,3535 57556 SIN DCOMP 039155,000091: 37,3536 17570 STODL UBX/2 +4 # -SI /2 039156,000092: 37,3537 00033 26D # AMG/PIP 039157,000093: 37,3540 41434 RTB PUSH # TO PDL 0 039158,000094: 37,3541 45513 CDULOGIC 039159,000095: 37,3542 65356 SIN PDDL # XCH PDL 0. SAVE SM /2 039160,000096: 37,3543 65346 COS PDDL # CM /2 TO PDL 2 039161,000097: 37,3544 00001 0 # SM /2 039162,000098: 37,3545 74276 DCOMP VXSC 039163,000099: 37,3546 03564 UBX/2 039164,000100: 37,3547 77772 VSL1 # NOISE WON'T OVFL 039165,000101: 37,3550 17572 STODL UBY/2 # =(-SMCI, NOISE, SMSI)/2 039166,000102: 37,3551 00003 2 # CM /2 REPLACES NOISE 039167,000103: 37,3552 17574 STODL UBY/2 +2 # UBY/2=(-SMCI, CM, SMSI)/2 039168,000104: 37,3553 00031 24D # AOG/PIP 039169,000105: 37,3554 41434 RTB PUSH # TO PDL 4 039170,000106: 37,3555 45513 CDULOGIC 039171,000107: 37,3556 65356 SIN PDDL # XCH PDL 4. SAVE SO /2 039172,000108: 37,3557 74346 COS VXSC # CO /2 039173,000109: 37,3560 03572 UBY/2 039174,000110: 37,3561 17572 STODL UBY/2 # UBY/2=(-COSMCI, COCM, COSMSI)/4 039175,000111: 37,3562 00005 4D # SO /2 039176,000112: 37,3563 57405 DMP DCOMP 039177,000113: 37,3564 03570 UBX/2 +4 # -SI /2 039178,000114: 37,3565 77615 DAD 039179,000115: 37,3566 03572 UBY/2 # INCREMENT BY (SOSI /4) 039180,000116: 37,3567 17572 STODL UBY/2 039181,000117: # SO /2 FROM PDL 4 039182,000118: 37,3570 43205 DMP DAD 039183,000119: 37,3571 03564 UBX/2 # CI /2 039184,000120: 37,3572 03576 UBY/2 +4 039185,000121: 37,3573 27576 STOVL UBY/2 +4 # YB/4 PLATFORM COORDS 039186,000122: 039187,000123: # YB = (-COSMCI + SOSI , COCM , COSMSI + SOCI ) 039188,000124: 039189,000125: 37,3574 03572 UBY/2 039190,000126: 37,3575 72505 VXM VSL2 039191,000127: 37,3576 01736 REFSMMAT # .5 UNIT 039192,000128: 37,3577 17572 STODL UBY/2 # YB/2 DONE REF COORDS 039193,000129: # Page 885 039194,000130: # CM /2 FROM PDL 2 039195,000131: 37,3600 76561 VXSC VSL1 039196,000132: 37,3601 03564 UBX/2 039197,000133: 37,3602 17564 STODL UBX/2 # =( CMCI, NOISE, -CMSI)/2 039198,000134: 37,3603 77626 STADR # SM /2 FROM PDL 0 039199,000135: 37,3604 50211 STOVL UBX/2 +2 # SM /2 REPLACES NOISE 039200,000136: 37,3605 03564 UBX/2 # XB/2 PLATFORM COORDS 039201,000137: 039202,000138: # XB = ( CMCI , SM , -CMSI ) 039203,000139: 039204,000140: 37,3606 76505 VXM VSL1 039205,000141: 37,3607 01736 REFSMMAT # .5 UNIT 039206,000142: 37,3610 03564 STORE UBX/2 # XB/2 DONE REF COORDS 039207,000143: 039208,000144: 37,3611 76435 VXV VSL1 039209,000145: 37,3612 03572 UBY/2 039210,000146: 37,3613 27600 STOVL UBZ/2 # ZB/2 DONE REF COORDS 039211,000147: 039212,000148: # EQUIVALENT TO 039213,000149: # ZB = ( SOSMCI + COSI , -SOCM , -SOSMSI + COCI ) 039214,000150: 039215,000151: 37,3614 03542 UXA/2 # -UVREL/2 = -UVA/2 039216,000152: 37,3615 53435 VXV UNIT # GET UNIT(-UVREL*UBY)/2 = UL/2 039217,000153: 37,3616 03572 UBY/2 # YB/2 039218,000154: 37,3617 50206 PUSH DOT # UL/2 TO PDL 0,5 039219,000155: 37,3620 03556 UZA/2 # UNA/2 039220,000156: 37,3621 24021 STOVL COSTH # COS(ROLL)/4 039221,000157: 37,3622 00001 0 # UL/2 039222,000158: 039223,000159: 37,3623 77641 DOT 039224,000160: 37,3624 03550 UYA/2 039225,000161: 37,3625 34023 STCALL SINTH # -SIN(ROLL)/4 039226,000162: 37,3626 47256 ARCTRIG 039227,000163: 37,3627 24007 STOVL 6D # -(ROLL/180) /2 039228,000164: 37,3630 03572 UBY/2 039229,000165: 37,3631 72441 DOT SL1 # -UVA.UBY = -SIN(BETA) 039230,000166: 37,3632 03542 UXA/2 # -UVREL/2 039231,000167: 37,3633 77736 ARCSIN 039232,000168: 37,3634 24010 STOVL 7D # -(BETA/180) /2 039233,000169: 37,3635 03564 UBX/2 # XB/2 039234,000170: 37,3636 77641 DOT # UL.UBX = -SIN(ALFA) 039235,000171: 37,3637 00001 0 # UL/2 039236,000172: 37,3640 24023 STOVL SINTH # -SIN(ALFA)/4 039237,000173: 37,3641 77641 DOT # UL/2 FROM PDL 0 039238,000174: 37,3642 03600 UBZ/2 039239,000175: 37,3643 34021 STCALL COSTH # COS(ALFA)/2 039240,000176: 37,3644 47256 ARCTRIG 039241,000177: 37,3645 24011 STOVL 8D # -(ALFA/180) /2 039242,000178: 37,3646 01760 UNITR # UR/2 REF COORDS 039243,000179: 37,3647 72441 DOT SL1 039244,000180: # Page 886 039245,000181: 37,3650 03556 UZA/2 # MORE ACCURATE AT LARGE ARG. 039246,000182: 37,3651 77726 ARCCOS 039247,000183: 37,3652 00013 STORE 10D # (-GAMA/180)/2 039248,000184: 039249,000185: 37,3653 77551 TLOAD EXIT # ANGLES IN MPAC IN THE ORDER 039250,000186: # -( (ROLL, BETA, ALFA) /180)/2 039251,000187: 37,3654 00007 6D # THESE VALUES CORRECT AT PIPUP TIME. 039252,000188: 039253,000189: # Page 887 039254,000190: # BASIC SUBROUTINE TO UPDATE ATTITUDE ANGLES 039255,000191: 039256,000192: 37,3655 E6,1661 EBANK= AOG 039257,000193: 039258,000194: 37,3655 35057 CM/ATUP CA EBAOG 039259,000195: 37,3656 54003 TS EBANK 039260,000196: 37,3657 50120 CMTR1 INDEX FIXLOC 039261,000197: 37,3660 40012 CS 10D # (GAMA/180)/2 039262,000198: 37,3661 57722 XCH GAMA 039263,000199: 37,3662 54001 TS L 039264,000200: 039265,000201: 37,3663 00004 INHINT 039266,000202: # MUST REMAIN INHINTED UNTIL UPDATE OF BODY 039267,000203: # ANGLES, SO THAT GAMDIFSW IS VALID FIRST PASS 039268,000204: # INDICATOR. 039269,000205: 039270,000206: 37,3664 40102 CS CM/FLAGS 039271,000207: 37,3665 75005 MASK BIT11 # GAMDIFSW=94D BIT11 INITLY=0 039272,000208: 37,3666 00006 EXTEND # DON'T CALC GAMA DOT UNTIL HAVE FORMD 039273,000209: # ONE DIFFERENCE. 039274,000210: 37,3667 13672 BZF DOGAMDOT # IS OK, GO ON. 039275,000211: 37,3670 26102 ADS CM/FLAGS # KNOW BIT IS 0 039276,000212: 37,3671 03705 TC NOGAMDOT # SET GAMDOT = 0 039277,000213: 039278,000214: 37,3672 40001 DOGAMDOT CS L 039279,000215: 37,3673 61722 AD GAMA # DEL GAMA/360= T GAMDOT/360 039280,000216: 37,3674 00006 EXTEND 039281,000217: 37,3675 73770 MP TCDU # TCDU = .1 SEC, T = 2 SEC. 039282,000218: 37,3676 55723 TS GAMDOT # GAMA DOT TCDU / 180 039283,000219: 039284,000220: 37,3677 00006 EXTEND # IGNORE GAMDOT IF LEQ .5 DEG/SEC 039285,000221: 37,3700 63702 BZMF +2 039286,000222: 37,3701 40000 COM 039287,000223: 37,3702 65022 AD FIVE 039288,000224: 37,3703 00006 EXTEND 039289,000225: 37,3704 63707 BZMF +3 # SET GAMDOT=+0 AS TAG IF TOO SMALL. 039290,000226: 039291,000227: 37,3705 35021 NOGAMDOT CA ZERO # COME HERE INHINTED 039292,000228: 37,3706 55723 TS GAMDOT 039293,000229: # FOR NOW LEAVE IN 2'S C 039294,000230: # UPDATE ANGLES BY CORRECTING EULER ANG 039295,000231: # FOR ACCRUED INCREMENT SINCE PIPUP 039296,000232: # R = R EUIL + R(NOW) - R(PIPUP) 039297,000233: 37,3707 40154 CS MPAC # GET (R EUL/180) /2 039298,000234: 37,3710 60000 DOUBLE # POSSIBLE OVERFLOW 039299,000235: 37,3711 03760 TC CORANGOV # CORRECT FOR OVFL IF ANY 039300,000236: 37,3712 00006 EXTEND 039301,000237: 37,3713 61672 SU ROLL/PIP # GET INCR SINCE PIPUP 039302,000238: 37,3714 61664 AD ROLL/180 # ONLY SINGLE OVFL POSSIBLE. 039303,000239: 37,3715 03760 TC CORANGOV # CORRECT FOR OVFL IF ANY 039304,000240: # Page 888 039305,000241: 37,3716 55770 TS TEMPROLL 039306,000242: 039307,000243: 37,3717 40156 CS MPAC +2 # GET (ALFA EUL/180) /2 039308,000244: 37,3720 60000 DOUBLE # SAME AS FOR ROLL. NEEDED FOR EXT ATM DAP 039309,000245: 37,3721 03760 TC CORANGOV # CORRECT FOR OVFL IF ANY 039310,000246: 37,3722 00006 EXTEND 039311,000247: 37,3723 61673 SU ALFA/PIP 039312,000248: 37,3724 61665 AD ALFA/180 039313,000249: 37,3725 03760 TC CORANGOV # CORRECT FOR OVFL IF ANY 039314,000250: 37,3726 55771 TS TEMPALFA 039315,000251: 039316,000252: 37,3727 40155 CS MPAC +1 # GET (BETA EUL/180) /2 039317,000253: 37,3730 60000 CMTR2 DOUBLE 039318,000254: 37,3731 00006 EXTEND 039319,000255: 37,3732 61674 SU BETA/PIP 039320,000256: 37,3733 61666 AD BETA/180 039321,000257: 37,3734 57772 XCH TEMPBETA # OVFL NOT EXPECTED. 039322,000258: 039323,000259: 37,3735 35051 CA EBANK3 039324,000260: 37,3736 54003 TS EBANK 039325,000261: 039326,000262: 37,3737 E3,1446 EBANK= PHSNAME5 039327,000263: 37,3737 00006 EXTEND 039328,000264: 37,3740 33772 DCA REPOSADR # THIS ASSUMES THAT THE TC PHASCHNG 039329,000265: 37,3741 53447 DXCH PHSNAME5 # IS NOT CHANGED IN OCT 10035 039330,000266: # SERVICER. 039331,000267: 039332,000268: 37,3742 35057 CA EBAOG 039333,000269: 37,3743 54003 TS EBANK 039334,000270: 039335,000271: 37,3744 E6,1661 EBANK= AOG 039336,000272: 37,3744 00006 REDOPOSE EXTEND # RE-STARTS COME HERE 039337,000273: 37,3745 31771 DCA TEMPROLL 039338,000274: 37,3746 53665 DXCH ROLL/180 039339,000275: 37,3747 31772 CA TEMPBETA 039340,000276: 37,3750 55666 TS BETA/180 039341,000277: 039342,000278: 37,3751 00003 RELINT 039343,000279: 039344,000280: 37,3752 06006 TC INTPRET # CAN'T TC DANZIG AFTER PHASCHNG. 039345,000281: 37,3753 51575 CM/POSE3 VLOAD ABVAL # RETURN FROM CM/ATUP. (RESTART) 039346,000282: 37,3754 01177 VN # 2(-7) M/CS 039347,000283: 37,3755 03723 STORE VMAGI # FOR DISPLAY ON CALL. 039348,000284: 039349,000285: 37,3756 77650 GOTO 039350,000286: 37,3757 03324 POSEXIT # ENDEXIT, STARTENT, OR SCALEPOP. 039351,000287: 039352,000288: 37,3760 54001 CORANGOV TS L 039353,000289: 37,3761 00002 TC Q 039354,000290: 37,3762 50000 INDEX A 039355,000291: # Page 889 039356,000292: 37,3763 35000 CA LIMITS 039357,000293: 37,3764 26001 ADS L 039358,000294: 37,3765 00002 TC Q # COSTS 2 MCT TO USE. SEE ANGOVCOR. 039359,000295: 039360,000296: 37,3766 45730 53410 -KVSCALE 2DEC -.81491944 # -12800/(2 VS .3048) 039361,000297: 039362,000298: 37,3770 03146 TCDU DEC .1 # TCDU = .1 SEC. 039363,000299: 039364,000300: 37,3771 E6,1661 EBANK= AOG 039365,000301: 37,3771 03744 76066 REPOSADR 2CADR REDOPOSE 039366,000302: End of include-file CM_BODY_ATTITUDE.agc. Parent file is MAIN.agc