Source Code
046916,000001: # Copyright: Public domain.
046917,000002: # Filename: PLANETARY_INERTIAL_ORIENTATION.agc
046918,000003: # Purpose: A section of Luminary 1C, revision 131.
046919,000004: # It is part of the source code for the Lunar Module's (LM)
046920,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
046921,000006: # This file is intended to be a faithful transcription, except
046922,000007: # that the code format has been changed to conform to the
046923,000008: # requirements of the yaYUL assembler rather than the
046924,000009: # original YUL assembler.
046925,000010: # Reference: pp. 1139-1147 of 1729.pdf.
046926,000011: # Contact: Ron Burkey <info@sandroid.org>.
046927,000012: # Website: www.ibiblio.org/apollo/index.html
046928,000013: # Mod history: 06/01/03 RSB. Began transcribing.
046929,000014: # 05/14/05 RSB Corrected website reference above.
046930,000015:
046931,000016: # Page 1139
046932,000017: # PLANETARY INERTIAL ORIENTATION
046933,000018:
046934,000019: # ***** RP-TO-R SUBROUTINE *****
046935,000020: # SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM, EITHER
046936,000021: # EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN BASIC REF. SYSTEM)
046937,000022: # R = MT(T) * (RP + LP X RP) MT = M MATRIX TRANSPOSE
046938,000023:
046939,000024: # CALLING SEQUENCE
046940,000025: # L CALL
046941,000026: # L+1 RP-TO-R
046942,000027:
046943,000028: # SUBROUTINES USED
046944,000029: # EARTHMX, MOONMX, EARTHL
046945,000030:
046946,000031: # ITEMS AVAILABLE FROM LAUNCH DATA
046947,000032: # 504M = THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL, EXPRESSED
046948,000033: # IN THE MOON-FIXED COORD. SYSTEM RADIANS B0
046949,000034:
046950,000035: # ITEMS NECESSARY FOR SUBR. USED (SEE DESCRIPTION OF SUBR.)
046951,000036:
046952,000037: # INPUT
046953,000038: # MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
046954,000039: # 0-5D = RP VECTOR
046955,000040: # 6-7D = TIME
046956,000041:
046957,000042: # OUTPUT
046958,000043: # MPAC = R VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON
046959,000044:
046960,000045: 26,2000 SETLOC PLANTIN1
046961,000046: 26,2000 BANK
046962,000047:
046963,000048: 26,3716 COUNT* $$/LUROT
046964,000049:
046965,000050: 26,3716 46020 RP-TO-R STQ BHIZ
046966,000051: 26,3717 00050 RPREXIT
046967,000052: 26,3720 55733 RPTORA
046968,000053: 26,3721 77624 CALL # COMPUTE M MATRIX FOR MOON
046969,000054: 26,3722 51730 MOONMX # LP=LM FOR MOON RADIANS B0
046970,000055: 26,3723 77775 VLOAD
046971,000056: 26,3724 02013 504LM
046972,000057: 26,3725 53235 RPTORB VXV VAD
046973,000058: 26,3726 00001 504RPR
046974,000059: 26,3727 00001 504RPR
046975,000060: 26,3730 52105 VXM GOTO
046976,000061: 26,3731 00025 MMATRIX # MPAC=R=MT(T)*(RP+LPXRP)
046977,000062: 26,3732 51716 RPRPXXXX # RESET PUSHLOC TO 0 BEFORE EXITING
046978,000063: 26,3733 77624 RPTORA CALL # EARTH COMPUTATIONS
046979,000064: 26,3734 55743 EARTHMX # M MATRIX B-1
046980,000065: 26,3735 77624 CALL
046981,000066: 26,3736 15761 EARTHL # L VECTOR RADIANS B0
046982,000067: 26,3737 76521 MXV VSL1 # LP=M(T)*L RAD B-0
046983,000068: 26,3740 00025 MMATRIX
046984,000069: # Page 1140
046985,000070: 26,3741 77650 GOTO
046986,000071: 26,3742 55725 RPTORB
046987,000072: 24,2000 SETLOC PLANTIN
046988,000073: 24,2000 BANK
046989,000074: 24,3700 COUNT* $$/LUROT
046990,000075:
046991,000076: # Page 1141
046992,000077: # ***** R-TO-RP SUBROUTINE *****
046993,000078: # SUBROUTINE TO CONVERT R (VECTOR IN REFERENCE COORD. SYSTEM) TO RP
046994,000079: # (VECTOR IN PLANETARY COORD SYSTEM) EITHER EARTH-FIXED OR MOON-FIXED
046995,000080: # RP = M(T) * (R - L X R)
046996,000081:
046997,000082: # CALLING SEQUENCE
046998,000083: # L CALL
046999,000084: # L+1 R-TO-RP
047000,000085:
047001,000086: # SUBROUTINES USED
047002,000087: # EARTHMX, MOONMX, EARTHL
047003,000088:
047004,000089: # INPUT
047005,000090: # MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
047006,000091: # 0-5D = R VECTOR
047007,000092: # 6-7D = TIME
047008,000093:
047009,000094: # ITEMS AVAILABLE FROM LAUNCH DATA
047010,000095: # 504LM = THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL, EXPRESSED
047011,000096: # IN THE MOON-FIXED COORD. SYSTEM RADIANS B0
047012,000097:
047013,000098: # ITEMS NECESSARY FOR SUBROUTINES USED (SEE DESCRIPTION OF SUBR.)
047014,000099:
047015,000100: # OUTPUT
047016,000101: # MPAC = RP VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON
047017,000102:
047018,000103: 24,3700 46020 R-TO-RP STQ BHIZ
047019,000104: 24,3701 00050 RPREXIT
047020,000105: 24,3702 51722 RTORPA
047021,000106: 24,3703 77624 CALL
047022,000107: 24,3704 51730 MOONMX
047023,000108: 24,3705 61375 VLOAD VXM
047024,000109: 24,3706 02013 504LM # LP=LM
047025,000110: 24,3707 00025 MMATRIX
047026,000111: 24,3710 77772 VSL1 # L = MT(T)*LP RADIANS B0
047027,000112: 24,3711 51235 RTORPB VXV BVSU
047028,000113: 24,3712 00001 504RPR
047029,000114: 24,3713 00001 504RPR
047030,000115: 24,3714 77721 MXV # M(T)*(R-LXR) B-2
047031,000116: 24,3715 00025 MMATRIX
047032,000117: 24,3716 40372 RPRPXXXX VSL1 SETPD
047033,000118: 24,3717 00001 0D
047034,000119: 24,3720 77650 GOTO
047035,000120: 24,3721 00050 RPREXIT
047036,000121: 24,3722 77624 RTORPA CALL # EARTH COMPUTATIONS
047037,000122: 24,3723 55743 EARTHMX
047038,000123: 24,3724 77624 CALL
047039,000124: 24,3725 15761 EARTHL
047040,000125: 24,3726 77650 GOTO # MPAC=L=(-AX,-AY,0) RAD B-0
047041,000126: 24,3727 51711 RTORPB
047042,000127:
047043,000128: # Page 1142
047044,000129: # ***** MOONMX SUBROUTINE *****
047045,000130: # SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE MOON
047046,000131:
047047,000132: # CALLING SEQUENCE
047048,000133: # L CALL
047049,000134: # L+1 MOONMX
047050,000135:
047051,000136: # SUBROUTINES USED
047052,000137: # NEWANGLE
047053,000138:
047054,000139: # INPUT
047055,000140: # 6-7D = TIME
047056,000141:
047057,000142: # ITEMS AVAILABLE FROM LAUNCH DATA
047058,000143: # BSUBO, BDOT
047059,000144: # TIMSUBO, NODIO, NODDOT, FSUBO, FDOT
047060,000145: # COSI = COS(I) B-1
047061,000146: # SINI = SIN(I) B-1
047062,000147: # I IS THE ANGLE BETWEEN THE MEAN LUNAR EQUATORIAL PLANE AND THE
047063,000148: # PLANE OF THE ECLIPTIC (1 DEGREE 32.1 MINUTES)
047064,000149:
047065,000150: # OUTPUT
047066,000151: # MMATRIX = 3X3 M MATRIX B-1 (STORED IN VAC AREA)
047067,000152:
047068,000153: 24,3730 40220 MOONMX STQ SETPD
047069,000154: 24,3731 00051 EARTHMXX
047070,000155: 24,3732 00011 8D
047071,000156: 24,3733 77770 AXT,1 # B REQUIRES SL 0, SL 5 IN NEWANGLE
047072,000157: 24,3734 00005 5
047073,000158: 24,3735 65345 DLOAD PDDL # PD 10D 8-9D=BSUBO
047074,000159: 24,3736 14017 BSUBO # 10-11D=BDOT
047075,000160: 24,3737 14011 BDOT
047076,000161: 24,3740 45006 PUSH CALL # PD 12D
047077,000162: 24,3741 53732 NEWANGLE # EXIT WITH PD 8D AND MPAC= B REVS B0
047078,000163: 24,3742 71406 PUSH COS # PD 10D
047079,000164: 24,3743 14041 STODL COB # PD 8D COS(B) B-1
047080,000165: 24,3744 77756 SIN # SIN(B) B-1
047081,000166: 24,3745 14043 STODL SOB # SETUP INPUT FOR NEWANGLE
047082,000167: 24,3746 14015 FSUBO # 8-9D=FSUBO
047083,000168: 24,3747 41525 PDDL PUSH # PD 10D THEN 12D 10-11D=FDOT
047084,000169: 24,3750 14007 FDOT
047085,000170: 24,3751 45170 AXT,1 CALL # F REQUIRES SL 1, SL 6 IN NEWANGLE.
047086,000171: 24,3752 00004 4
047087,000172: 24,3753 53732 NEWANGLE # EXIT WITH PD 8D AND MPAC= F REVS B0
047088,000173: 24,3754 14027 STODL AVECTR +2 # SAVE F TEMP
047089,000174: 24,3755 14013 NODIO # 8-9D=NODIO
047090,000175: 24,3756 41525 PDDL PUSH # PD 10D THEN 12D 10-11D=NODDOT
047091,000176: 24,3757 14005 NODDOT # MPAC=5
047092,000177: 24,3760 45170 AXT,1 CALL # NODE REQUIRES SL 0, SL 5 IN NEWANGLE
047093,000178: 24,3761 00005 5
047094,000179: 24,3762 53732 NEWANGLE # EXIT WITH PD 8D AND MPAC= NODI REVS B0
047095,000180: # Page 1143
047096,000181: 24,3763 71406 PUSH COS # PD 10D 8-9D= NODI REVS B0
047097,000182: 24,3764 77606 PUSH # PD 12D 10-11D= COS(NODI) B-1
047098,000183: 24,3765 00025 STORE AVECTR
047099,000184: 24,3766 76405 DMP SL1R
047100,000185: 24,3767 00041 COB # COS(NODI) B-1
047101,000186: 24,3770 14035 STODL BVECTR +2 # PD 10D 20-25D=AVECTR=COB*SIN(NODI)
047102,000187: 24,3771 76405 DMP SL1R # SOB*SIN(NODI)
047103,000188: 24,3772 00043 SOB
047104,000189: 24,3773 14037 STODL BVECTR +4 # PD 8D
047105,000190: 24,3774 41556 SIN PUSH # -SIN(NODI) B-1
047106,000191: 24,3775 52076 DCOMP GOTO # 26-31D=BVECTR=COV*COS(NODI)
047107,000192: 24,3776 53653 MOONMXA
047108,000193:
047109,000194: 25,3653 BANK 25
047110,000195: 25,2000 SETLOC PLANTIN3
047111,000196: 25,2000 BANK
047112,000197: 25,3653 COUNT* $$/LUROT
047113,000198:
047114,000199: 25,3653 14033 MOONMXA STODL BVECTR # PD 8D SOB*COS(NODI)
047115,000200: 25,3654 00027 AVECTR +2 # MOVE F FROM TEMP LOC. TO 504F
047116,000201: 25,3655 14007 STODL 504F
047117,000202: 25,3656 76405 DMP SL1R
047118,000203: 25,3657 00041 COB
047119,000204: 25,3660 14027 STODL AVECTR +2
047120,000205: 25,3661 00011 SINNODI # 8-9D=SIN(NODI) B-1
047121,000206: 25,3662 76405 DMP SL1R
047122,000207: 25,3663 00043 SOB
047123,000208: 25,3664 14031 STODL AVECTR +4 # 0
047124,000209: 25,3665 06524 HI6ZEROS # 8-13D= CVECTR= -SOB B-1
047125,000210: 25,3666 57525 PDDL DCOMP # PD 10D COB
047126,000211: 25,3667 00043 SOB
047127,000212: 25,3670 63325 PDDL PDVL # PD 12D THEN PD 14D
047128,000213: 25,3671 00041 COB
047129,000214: 25,3672 00033 BVECTR
047130,000215: 25,3673 63361 VXSC PDVL # PD 20D BVECTR*SINI B-2
047131,000216: 25,3674 14003 SINI
047132,000217: 25,3675 00011 CVECTR
047133,000218: 25,3676 53361 VXSC VAD # PD 14D CVECTR*COSI B-2
047134,000219: 25,3677 14001 COSI
047135,000220: 25,3700 77772 VSL1
047136,000221: 25,3701 24041 STOVL MMATRIX +12D # PD 8D M2=BVECTR*SINI+CVECTR*COSI B-1
047137,000222: 25,3702 63361 VXSC PDVL # PD 14D
047138,000223: 25,3703 14003 SINI # CVECTR*SINI B-2
047139,000224: 25,3704 00033 BVECTR
047140,000225: 25,3705 52361 VXSC VSU # PD 8D BVECTR*COSI B-2
047141,000226: 25,3706 14001 COSI
047142,000227: 25,3707 65372 VSL1 PDDL # PD 14D
047143,000228: 25,3710 00007 504F # 8-13D=DVECTR=BVECTR*COSI-CVECTR*SINI B-1
047144,000229: 25,3711 74346 COS VXSC
047145,000230: 25,3712 00011 DVECTR
047146,000231: 25,3713 73525 PDDL SIN # PD 20D 14-19D= DVECTR*COSF B-2
047147,000232: # Page 1144
047148,000233: 25,3714 00007 504F
047149,000234: 25,3715 52361 VXSC VSU # PD 14D AVECTR*SINF B-2
047150,000235: 25,3716 00025 AVECTR
047151,000236: 25,3717 77772 VSL1
047152,000237: 25,3720 14033 STODL MMATRIX +6 # M1= AVECTR*SINF-DVECTR*COSF B-1
047153,000238: 25,3721 00007 504F
047154,000239: 25,3722 74356 SIN VXSC # PD 8D
047155,000240: 25,3723 71525 PDDL COS # PD 14D 8-13D=DVECTR*SINF B-2
047156,000241: 25,3724 00007 504F
047157,000242: 25,3725 53361 VXSC VAD # PD 8D AVECTR*COSF B-2
047158,000243: 25,3726 00025 AVECTR
047159,000244: 25,3727 57572 VSL1 VCOMP
047160,000245: 25,3730 34025 STCALL MMATRIX # M0= -(AVECTR*COSF+DVECTR*SINF) B-1
047161,000246: 25,3731 00051 EARTHMXX
047162,000247:
047163,000248: # COMPUTE X=X0+(XDOT)(T+T0)
047164,000249: # 8-9D= X0 (REVS B-0), PUSHLOC SET AT 12D
047165,000250: # 10-11D=XDOT (REVS/CSEC) SCALED B+23 FOR WEARTH,B+28 FOR NODDOT AND BDOT
047166,000251: # AND B+27 FOR FDOT
047167,000252: # X1=DIFFERENCE IN 23 AND SCALING OF XDOT, =0 FOR WEARTH, 5 FOR NDDOT AND
047168,000253: # BDOT AND 4 FOR FDOT
047169,000254: # 6-7D=T (CSEC B-28), TIMSUBO= (CSEC B-42 TRIPLE PREC.)
047170,000255:
047171,000256: 25,3732 54345 NEWANGLE DLOAD SR # ENTER PD 12D
047172,000257: 25,3733 00007 6D
047173,000258: 25,3734 20617 14D
047174,000259: 25,3735 72371 TAD TLOAD # CHANGE MODE TO TP
047175,000260: 25,3736 01707 TIMSUBO
047176,000261: 25,3737 00155 MPAC
047177,000262: 25,3740 14017 STODL TIMSUBM # T+T0 CSEC B-42
047178,000263: 25,3741 00020 TIMSUBM +1
047179,000264: 25,3742 77605 DMP # PD 10D MULT BY XDOT IN 10-11D
047180,000265: 25,3743 43257 SL* DAD # PD 8D ADD X0 IN 8-9D AFTER SHIFTING
047181,000266: 25,3744 20206 5,1 # SUCH THAT SCALING IS B-0
047182,000267: 25,3745 67206 PUSH SLOAD # PD 10D SAVE PARTIAL (X0+XDOT*T) IN 8-9D
047183,000268: 25,3746 00017 TIMSUBM
047184,000269: 25,3747 41261 SL DMP
047185,000270: 25,3750 20212 9D
047186,000271: 25,3751 00013 10D # XDOT
047187,000272: 25,3752 43257 SL* DAD # PD 8D SHIFT SUCH THAT THIS PART OF X
047188,000273: 25,3753 20213 10D,1 # IS SCALED REVS/CSEC B-0
047189,000274: 25,3754 77600 BOV # TURN OFF OVERFLOW IF SET BY SHIFT
047190,000275: 25,3755 53756 +1 # INSTRUCTION BEFORE EXITING.
047191,000276: 25,3756 77616 RVQ # MPAC=X= X0+(XDOT)(T+T0) REVS B0
047192,000277:
047193,000278: # Page 1145
047194,000279: # ***** EARTHMX SUBROUTINE *****
047195,000280: # SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE EARTH
047196,000281:
047197,000282: # CALLING SEQUENCE
047198,000283: # L CALL
047199,000284: # L+1 EARTHMX
047200,000285:
047201,000286: # SUBROUTINE USED
047202,000287: # NEWANGLE
047203,000288:
047204,000289: # INPUT
047205,000290: # INPUT AVAILABLE FROM LAUNCH DATA AZC REVS B-0
047206,000291: # TEPHEM CSEC B-42
047207,000292: # 6-7D= TIME CSEC B-28
047208,000293:
047209,000294: # OUTPUT
047210,000295: # MMATRIX= 3X3 M MATRIX B-1 (STORED IN VAC AREA)
047211,000296:
047212,000297: 26,3743 BANK 26
047213,000298: 26,2000 SETLOC PLANTIN1
047214,000299: 26,2000 BANK
047215,000300: 26,3743 COUNT* $$/LUROT
047216,000301:
047217,000302: 26,3743 40220 EARTHMX STQ SETPD # SET 8-9D=AZO
047218,000303: 26,3744 00051 EARTHMXX
047219,000304: 26,3745 00011 8D # 10-11D=WEARTH
047220,000305: 26,3746 77770 AXT,1 # FOR SL 5, AND SL 10 IN NEWANGLE
047221,000306: 26,3747 00000 0
047222,000307: 26,3750 65345 DLOAD PDDL # LEAVING PD SET AT 12D FOR NEWANGLE
047223,000308: 26,3751 01712 AZO
047224,000309: 26,3752 14021 WEARTH
047225,000310: 26,3753 45006 PUSH CALL
047226,000311: 26,3754 53732 NEWANGLE
047227,000312: 26,3755 41401 SETPD PUSH # 18-19D=504AZ
047228,000313: 26,3756 00023 18D # COS(AZ) SIN(AZ) 0
047229,000314: 26,3757 65346 COS PDDL # 20-37D= MMATRIX= -SIN(AZ) COS(AZ) 0 B-1
047230,000315: 26,3760 00023 504AZ # 0 0 1
047231,000316: 26,3761 65356 SIN PDDL
047232,000317: 26,3762 06524 HI6ZEROS
047233,000318: 26,3763 73525 PDDL SIN
047234,000319: 26,3764 00023 504AZ
047235,000320: 26,3765 65276 DCOMP PDDL
047236,000321: 26,3766 00023 504AZ
047237,000322: 26,3767 63346 COS PDVL
047238,000323: 26,3770 06524 HI6ZEROS
047239,000324: 26,3771 41525 PDDL PUSH
047240,000325: 26,3772 06522 HIDPHALF
047241,000326: 26,3773 77650 GOTO
047242,000327: 26,3774 00051 EARTHMXX
047243,000328:
047244,000329: # Page 1146
047245,000330: # ***** EARTH SUBROUTINE *****
047246,000331: # SUBROUTINE TO COMPUTE L VECTOR FOR EARTH
047247,000332:
047248,000333: # CALLING SEQUENCE
047249,000334: # L CALL
047250,000335: # L+1 EARTHL
047251,000336:
047252,000337: # INPUT
047253,000338: # AXO,AYO SET AT LAUNCH TIME WITH AYO IMMEDIATELY FOLLOWING AXO IN CORE
047254,000339:
047255,000340: # OUTPUT
047256,000341: # -AX
047257,000342: # MPAC= -AY RADIANS B-0
047258,000343: # 0
047259,000344:
047260,000345: 06,3761 BANK 06
047261,000346: 06,2000 SETLOC EARTHLOC
047262,000347: 06,2000 BANK
047263,000348: 06,3761 COUNT* $$/LUROT
047264,000349:
047265,000350: 06,3761 57545 EARTHL DLOAD DCOMP
047266,000351: 06,3762 01716 AXO
047267,000352: 06,3763 14017 STODL 504LPL
047268,000353: 06,3764 01714 -AYO
047269,000354: 06,3765 14021 STODL 504LPL +2
047270,000355: 06,3766 24007 LO6ZEROS
047271,000356: 06,3767 24023 STOVL 504LPL +4
047272,000357: 06,3770 00017 504LPL
047273,000358: 06,3771 77616 RVQ
047274,000359:
047275,000360: # Page 1147
047276,000361: # CONSTANTS AND ERASABLE ASSIGNMENTS
047277,000362:
047278,000363: 06,3772 12,2004 1B1 = DP1/2 # 1 SCALED B-1
047279,000364: 06,3772 0000050 RPREXIT = S1 # R-TO-RP AND RP-TO-R SUBR EXIT
047280,000365: 06,3772 0000051 EARTHMXX = S2 # EARTHMX, MOONMX SUBR. EXITS
047281,000366: 06,3772 504RPR = 0D # 6 REGS R OR RP VECTOR
047282,000367: 06,3772 SINNODI = 8D # 2 SIN(NODI)
047283,000368: 06,3772 DVECTR = 8D # 6 D VECTOR MOON
047284,000369: 06,3772 CVECTR = 8D # 6 C VECTR MOON
047285,000370: 06,3772 504AZ = 18D # 2 AZ
047286,000371: 06,3772 TIMSUBM = 14D # 3 TIME SUB M (MOON) T+10 IN GETAZ
047287,000372: 06,3772 504LPL = 14D # 6 L OR LP VECTOR
047288,000373: 06,3772 AVECTR = 20D # 6 A VECTOR (MOON)
047289,000374: 06,3772 BVECTR = 26D # 6 B VECTOR (MOON)
047290,000375: 06,3772 MMATRIX = 20D # 18 M MATRIX
047291,000376: 06,3772 COB = 32D # 2 COS(B) B-1
047292,000377: 06,3772 SOB = 34D # 2 SIN(B) B-1
047293,000378: 06,3772 504F = 6D # 2 F(MOON)
047294,000379:
End of include-file PLANETARY_INERTIAL_ORIENTATION.agc. Parent file is MAIN.agc