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