Source Code

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