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