Source Code

057904,000001: # Copyright: Public domain. 057905,000002: # Filename: TIME_OF_FREE_FALL.agc 057906,000003: # Purpose: Part of the source code for Colossus, build 249. 057907,000004: # It is part of the source code for the Command Module's (CM) 057908,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 057909,000006: # Assembler: yaYUL 057910,000007: # Reference: Begins on p. 1363 of 1701.pdf. 057911,000008: # Contact: Ron Burkey <info@sandroid.org>. 057912,000009: # Website: www.ibiblio.org/apollo. 057913,000010: # Mod history: 08/30/04 RSB. Began adapting from corresponding Luminary131 file. 057914,000011: 057915,000012: # The contents of the "Colossus249" files, in general, are transcribed 057916,000013: # from a scanned document obtained from MIT's website, 057917,000014: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 057918,000015: # document read, in part: 057919,000016: 057920,000017: # Assemble revision 249 of AGC program Colossus by NASA 057921,000018: # 2021111-041. October 28, 1968. 057922,000019: 057923,000020: # This AGC program shall also be referred to as 057924,000021: # Colossus 1A 057925,000022: 057926,000023: # Prepared by 057927,000024: # Massachussets Institute of Technology 057928,000025: # 75 Cambridge Parkway 057929,000026: # Cambridge, Massachusetts 057930,000027: # under NASA contract NAS 9-4065. 057931,000028: 057932,000029: # Refer directly to the online document mentioned above for further information. 057933,000030: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 057934,000031: 057935,000032: # In some cases, where the source code for Luminary 131 overlaps that of 057936,000033: # Colossus 249, this code is instead copied from the corresponding Luminary 131 057937,000034: # source file, and then is proofed to incorporate any changes. 057938,000035: 057939,000036: # Page 1363 057940,000037: # THE TFF SUBROUTINES MAY BE USED IN EITHER EARTH OR MOON CENTERED COORDINATES. THE TFF ROUTINES NEVER 057941,000038: # KNOW WHICH ORIGIN APPLIES. IT IS THE USER WHO KNOWS, AND WHO SUPPLIES RONE, VONE, AND 1/SQRT(MU) AT THE 057942,000039: # APPROPIRATE SCALE LEVEL FOR THE PROPER PRIMARY BODY. 057943,000040: 057944,000041: # EARTH ORIGIN POSITION -29 METERS 057945,000042: # VELOCITY -7 METERS/CENTISECOND 057946,000043: # 1/SQRT(MU) +17 SQRT(CS SQ/METERS CUBED) 057947,000044: 057948,000045: # MOON ORIGIN POSITION -27 METERS 057949,000046: # VELOCITY -5 METERS/CENTISECONDS 057950,000047: # 1/SQRT(MU) +14 SQRT(CS SQ/METERS CUBED) 057951,000048: 057952,000049: # ALL DATA PROVIDED TO AND RECEIVED FROM ANY TFF SUBROUTINE WILL BE AT ONE OF THE LEVELS ABOVE. IN ALL CASES, 057953,000050: # THE FREE FALL TIME IS RETURNED IN CENTISECONDS AT (-28). PROGRAM TFF/CONIC WILL GENERATE VONE/RTMU AND 057954,000051: # LEAVE IT IN VONE' AT (+10) IF EARTH ORIGIN AND (+9) IF MOON ORIGIN. 057955,000052: 057956,000053: # THE USER MUST STORE THE STATE VECTOR IN RONE, VONE, AND MU IN THE FORM 1/SQRT(MU) IN TFF/RTMU 057957,000054: # AT THE PROPER SCALE BEFORE CALLING TFF/CONIC. SINCE RONE, VONE ARE IN THE EXTENDED VERB STORAGE AREA, 057958,000055: # THE USER MUST ALSO LOCK OUT THE EXTENDED VERBS, AND RELEASE THEM WHEN FINISHED. 057959,000056: 057960,000057: # PROGRAMS CALC/TFF AND CALC/TPER ASSUME THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT 057961,000058: # RADIUS. THIS RESTRICTION CAN BE REMOVED BY A 15 W CODING CHANGE, BUT AT PRESENT IT IS NOT DEEMED NECESSARY. 057962,000059: 057963,000060: # THE FOLLOWING ERASABLE QUANTITIES ARE USED BY THE TFF ROUTINES, AND ARE LOCATED IN THE PUSH LIST. 057964,000061: 057965,000062: # BELOW E: IS USED FOR EARTH ORIGIN SCALE 057966,000063: # M: IS USED FOR MOON ORIGIN SCALE 057967,000064: 057968,000065: # TFFSW = 119D # BIT1 0 = CALCTFF 1 = CALCTPER 057969,000066: 23,3725 TFFDELQ = 10D # Q2-Q1 E: (-16) M: (-15) 057970,000067: 23,3725 RMAG1 = 12D # ABVAL(RN) M E: (-29) M: (-27) 057971,000068: # RPER = 14D # PERIGEE RADIUS M E: (-29) M: (-27) 057972,000069: 23,3725 TFFQ1 = 14D # R.V / SQRT(MUE) E: (-16) M: (-15) 057973,000070: # SDELF/2 # SIN(THETA) /2 057974,000071: 23,3725 CDELF/2 = 14D # COS(THETA) /2 057975,000072: # RAPO = 16D # APOGEE RADIUS M E: (-29) M: (-27) 057976,000073: 23,3725 NRTERM = 16D # TERMINAL RADIUS M E: (-29+NR) 057977,000074: # M: (-27+NR) 057978,000075: 23,3725 RTERM = 18D # TERMINAL RADIUS M E: (-29) M: (-27) 057979,000076: 23,3725 TFFVSQ = 20D # -(V SQUARED/MU) 1/M E: (20) M: (18) 057980,000077: 23,3725 TFF1/ALF = 22D # SEMI MAJ AXIS M E: (-22-2 NA) 057981,000078: # M: (-20-2 NA) 057982,000079: 23,3725 TFFRTALF = 24D # SQRT(ALFA) E:(10+NA) M: (9+NA) 057983,000080: 23,3725 TFFALFA = 26D # ALFA 1/M E:(26-NR) M: (24-NR) 057984,000081: 23,3725 TFFNP = 28D # SEMI LATUS RECTUM M E: (-38+2 NR) 057985,000082: # M: (-36+2 NR) 057986,000083: 23,3725 TFF/RTMU = 30D # 1/SQRT(MU) E: (17) M: (14) 057987,000084: 23,3725 NRMAG = 32D # PRESENT RADIUS M E: (-29+NR) 057988,000085: # M: (-27+NR) 057989,000086: 23,3725 TFFX = 34D 057990,000087: 23,3725 TFFTEM = 36D # TEMPORARY 057991,000088: # Page 1364 057992,000089: # REGISTERS S1, S2 ARE UNTOUCED BY ANY TFF SUBROUTINE 057993,000090: # INDEX REGISTERS X1, X2 ARE USED BY ALL TFF SUBROUTINES. THEY ARE ESTAB- 057994,000091: # LISHED IN TFF/CONIC AND MUST BE PRESERVED BETWEEN CALLS TO SUBSEQUENT 057995,000092: # SUBROUTINES. 057996,000093: # -NR C(X1) = NORM COUNT OF RMAG 057997,000094: # -NA C(X2) = NORM COUNT OF SQRT(ABS(ALFA)) 057998,000095: 057999,000096: # Page 1365 058000,000097: # SUBROUTINE NAME: TFFCONIC DATE: 01.29.67 058001,000098: # MOD NO: 0 LOG SECTION: TIME OF FREE FALL 058002,000099: # MOD BY: RR BAIRNSFATHER 058003,000100: # MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67 058004,000101: # MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 ADD MOON MU. 058005,000102: # MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES 058006,000103: 058007,000104: # FUNCTIONAL DESCRIPTION: THIS SUBROUTINE IS CALLED TO COMPUTE THOSE CONIC PARAMETERS REQUIRED BY THE TFF 058008,000105: # SUBROUTINES AND TO ESTABLISH THEM IN THE PUSH LIST AREA. THE PARAMETERS ARE LISTED UNDER OUTPUT. 058009,000106: # THE EQUATIONS ARE: 058010,000107: # _ __ __ 058011,000108: # H = RN*VN ANGULAR MOMENTUM 058012,000109: # _ _ 058013,000110: # LCP = H.H / MU SEMI LATUS RECTUM 058014,000111: # __ __ 058015,000112: # ALFA = 2/RN - VN.VN / MU RECIPROCAL SEMI-MAJOR AXIS, SIGNED 058016,000113: 058017,000114: # AND ALFA IS POS FOR ELLIPTIC ORBITS 058018,000115: # 0 FOR PARABOLIC ORBITS 058019,000116: # NEG FOR HYPERBOLIC ORBITS 058020,000117: # SUBROUTINE ALSO COMPUTES AND SAVES RMAG. 058021,000118: 058022,000119: # CALLING SEQUENCE: 058023,000120: # TFFCONIC EXPECTS CALLER TO ENTER WITH CORRECT GRAVITATIONAL CONSTANT IN MPAC, IN THE FORM 058024,000121: # 1/SQRT(MU). THE PROGRAM WILL SAVE IN TFF/RTMU. THE SCALE IS DETERMINED BY WHETHER EARTH OR MOON 058025,000122: # ORIGIN IS USED. THE CALLER MUST LOCK OUT THE EXTENDED VERBS BEFORE PROVIDING STATE VECTOR IN RONE, 058026,000123: # VONE AT PROPER SCALE. THE EXTENDED VERBS MUST BE RESTORED WHEN THE CALLER IS FINISHED USING THE 058027,000124: # TFF ROUTINES. 058028,000125: 058029,000126: # ENTRY POINT TFFCONMU EXPECTS THAT TFF/RTMU IS ALREADY LOADED. 058030,000127: 058031,000128: # TO SPECIFY MU: DLOAD CALL # IF MU ALREADY STORED: CALL 058032,000129: # YOURMU # 1/RTMU E:(17) M:(14) TFFCONMU 058033,000130: # TFFCONIC 058034,000131: # PUSHLOC = PDL+0, ARBITRARY IF LEQ 18D 058035,000132: 058036,000133: # SUBROUTINES CALLED: NONE 058037,000134: 058038,000135: # NORMAL EXIT MODES: RVQ 058039,000136: 058040,000137: # ALARMS: NONE 058041,000138: 058042,000139: # OUTPUT: THE FOLLOWING ARE STORED IN THE PUSH LIST AREA. 058043,000140: # RMAG1 E:(-29) M:(-27) M RN, PRESENT RADIUS LENGTH. 058044,000141: # NRMAG E:(-29+NR) M RMAG, NORMALIZED 058045,000142: # M:(-27+NR) 058046,000143: # X1 -NR, NORM COUNT 058047,000144: # TFFNP E:(-38+2NR) M LCP, SEMI LATUS RECTUM, WEIGHTED BY NR. FOR VGAMCALC. 058048,000145: # M:(-36+2NR) 058049,000146: # TFF/RTMU E:(17) M:(14) 1/SQRT(MU) 058050,000147: # TFFVSQ E:(20) M:(18) 1/M -(V SQ/MU): PRESENT VELOCITY, NORMALIZED. FOR VGAMCALC 058051,000148: # TFFALFA E:(26-NR) 1/M ALFA, WEIGHTED BY NR 058052,000149: # M:(24-NR) 058053,000150: # TFFRTALF E:(10+NA) SQRT(ALFA), NORMALIZED 058054,000151: # M:(9+NA) 058055,000152: # Page 1366 058056,000153: # X2 -NA, NORMCOUNT 058057,000154: # TFF1/ALF E:(-22-2NA) SIGNED SEMI-MAJOR AXIS, WEIGHTED BY NA 058058,000155: # M:(-20-2NA) 058059,000156: # PUSHLOC AT PDL+0 058060,000157: 058061,000158: # THE FOLLOWING IS STORED IN GENERAL ERASABLE 058062,000159: # VONE' E:(10) M:(9) V/RT(MU), NORMALIZED VELOCITY 058063,000160: 058064,000161: # ERASABLE INITIALIZATION REQUIRED: 058065,000162: # RONE E:(-29) M:(-27) M STATE VECTOR LEFT BY CALLER 058066,000163: # VONE E:(-7) M:(-5) M/CS STATE VECTOR LEFT BY CALLER 058067,000164: # TFF/RTMU E:(17) M:(14) 1/RT(CS SQ/M CUBE) IF ENTER VIA TFFCONMU. 058068,000165: 058069,000166: # DEBRIS: QPRET PDL+0 ... PDL+3 058070,000167: 058071,000168: 33,3772 BANK 33 058072,000169: 27,2000 SETLOC TOF-FF 058073,000170: 27,2000 BANK 058074,000171: 058075,000172: 27,2750 COUNT* $$/TFF 058076,000173: 058077,000174: 27,2750 00037 TFFCONIC STORE TFF/RTMU # 1/SQRT(MU) E:(17) M:(14) 058078,000175: 058079,000176: 27,2751 53575 TFFCONMU VLOAD UNIT # COME HERE WITH TFFRTMU LOADED. 058080,000177: 27,2752 02327 RONE # SAVED RN. M E:(-29) M:(-27) 058081,000178: 27,2753 77725 PDDL # UR/2 TO PDL+0, +5 058082,000179: 27,2754 00045 36D # MAGNITUDE 058083,000180: 27,2755 00015 STORE RMAG1 # M E:(-29) M:(-27) 058084,000181: 058085,000182: 27,2756 77701 NORM 058086,000183: 27,2757 00047 X1 # -NR 058087,000184: 27,2760 24041 STOVL NRMAG # RMAG M E:(-29+NR) M:(-27+NR) 058088,000185: 27,2761 02335 VONE # SAVED VN. M/CS E:(-7) M:(-5) 058089,000186: 27,2762 77761 VXSC 058090,000187: 27,2763 00037 TFF/RTMU # E:(17) M:(14) 058091,000188: 27,2764 02372 STORE VONE' # VN/SQRT(MU) E:(10) M:(9) 058092,000189: 058093,000190: 27,2765 47361 VXSC VXV 058094,000191: 27,2766 00041 NRMAG # E:(-29+NR) M:(-27+NR) 058095,000192: # UR/2 FROM PDL 058096,000193: 27,2767 47572 VSL1 VSQ # BEFORE: E:(-19+NR) M:(-18+NR) 058097,000194: 27,2770 14035 STODL TFFNP # LC P M E:(-38+2NR) M:(-36+2NR) 058098,000195: # SAVE ALSO FOR VGAMCALC 058099,000196: 27,2771 15322 TFF1/4 058100,000197: 27,2772 63271 DDV PDVL # (2/RMAG) 1/M E:(26-NR) M:(24-NR) 058101,000198: 27,2773 00041 NRMAG # RMAG M E:(-29+NR) M:(-27+NR) 058102,000199: 27,2774 02372 VONE' # SAVED VN. E:(10) M:(9) 058103,000200: 27,2775 57436 VSQ DCOMP # KEEP MPAC+2 HONEST FOR SQRT. 058104,000201: 27,2776 00025 STORE TFFVSQ # -(V SQ/MU) E:(20) M:(18) 058105,000202: # SAVE FOR VGAMCALC 058106,000203: 27,2777 43257 SR* DAD 058107,000204: # Page 1367 058108,000205: 27,3000 20573 0 -6,1 # GET -VSQ/MU E:(26-NR) M:(24-NR) 058109,000206: 27,3001 77626 STADR 058110,000207: # 2/RMAG FROM PDL+2 058111,000208: 27,3002 77744 STORE TFFALFA # ALFA 1/M E:(26-NR) M:(24-NR) 058112,000209: 27,3003 41457 SL* PUSH # TEMP SAVE ALFA E:(20) M:(18) 058113,000210: 27,3004 20173 0 -6,1 058114,000211: 27,3005 75446 ABS SQRT # E:(10) M:(9) 058115,000212: 27,3006 77701 NORM 058116,000213: 27,3007 00050 X2 # X2 = -NA 058117,000214: 27,3010 00031 STORE TFFRTALF # SQRT( ABS(ALFA) ) E:(10+NA) M:(9+NA) 058118,000215: 27,3011 75316 DSQ SIGN # NOT SO ACCURATE, BUT OK 058119,000216: # ALFA FROM PDL+2 E:(20) M:(18) 058120,000217: 27,3012 55254 BZE BDDV # SET 1/ALFA =0, TO SHOW SMALL ALFA 058121,000218: 27,3013 57015 +2 058122,000219: 27,3014 15322 TFF1/4 058123,000220: 27,3015 00027 +2 STORE TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 058124,000221: 27,3016 77616 DUMPCNIC RVQ 058125,000222: # 39 W 058126,000223: # Page 1368 058127,000224: # SUBROUTINE NAME: TFFRP/RA DATE: 01.17.67 058128,000225: # MOD NO: 0 LOG SECTION: TIME OF FREE FALL 058129,000226: # MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67 058130,000227: # MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES 058131,000228: # ALSO IMPROVE ACCURACY OF RAPO. 058132,000229: 058133,000230: # FUNCTIONAL DESCRIPTION: USED BY CALCTPER AND TFF DISPLAYS TO CALCULATE PERIGEE RADIUS AND ALSO 058134,000231: # APOGEE RADIUS FOR A GENERAL CONIC. 058135,000232: # PROGRAM GIVES PERIGEE RADIUS AS APOGEE RADIUS IS GIVEN BY 058136,000233: # RP = P/(1+E) RA = (1+E) / ALFA 058137,000234: # WHERE 2 058138,000235: # E = 1 - P ALFA 058139,000236: # IF RA IS NEGATIVE OR SHOWS DIVIDE OVERFLOW, THEN RA = POSMAX BECAUSE 058140,000237: # 1. APOGEE RADIUS IS NOT MEANINGFUL FOR HYPERBOLA 058141,000238: # 2. APOGEE RADIUS IS NOT DEFINED FOR PARABOLA 058142,000239: # 3. APOGEE RADIUS EXCEEDS THE SCALING FOR ELLIPSE. 058143,000240: 058144,000241: # THIS SUBROUTINE REQUIRED THE SIGNED RECIPROCAL SEMI-MAJOR AXIS, ALFA, AND SEMI-LATUS RECTUM AS DATA. 058145,000242: 058146,000243: # CALLING SEQUENCE: CALL 058147,000244: # TFFRP/RA 058148,000245: # PUSHLOC = PDL+0, ARBITRARY IF LEQ 10D 058149,000246: # C(MPAC) UNSPECIFIED 058150,000247: 058151,000248: # SUBROUTINES CALLED: NONE 058152,000249: 058153,000250: # NORMAL EXIT MODE: RVQ 058154,000251: # IF ELLIPSE, WITHIN NORMAL SCALING, RAPO IS CORRECT. 058155,000252: # OTHERWISE, RAPO = POSMAX. 058156,000253: 058157,000254: # ALARMS: NONE 058158,000255: 058159,000256: # OUTPUT: STORED IN PUSH LIST AREA. SCALE OF OUTPUT AGREES WITH DATA SUPPLIED TO TFF/CONIC. 058160,000257: # RPER E:(-29) M:(-27) M PERIGEE RADIUS DESTROYED BY CALCTFF/CALCTPER, TFFTRIG. 058161,000258: # RAPO E:(-29) M:(-27) M APOGEE RADIUS WILL BE DESTROYED BY CALCTFF/CALCTPER 058162,000259: # PUSHLOC AT PDL+0 058163,000260: 058164,000261: # ERASABLE INITIALIZATION REQUIRED: 058165,000262: # TFFALFA E:(26-NR) M 1/SEMI-MAJOR AXIS LEFT BY TFFCONIC 058166,000263: # M:(24-NR) 058167,000264: # TFFNP E:(-38+2NR) M LC P, SEMI LATUS RECTUM LEFT BY TFFCONIC 058168,000265: # M:(-36+2NR) 058169,000266: # X1 -NR, NORM COUNT OF RMAG LEFT BY TFFCONIC 058170,000267: # X2 -NA, NORM COUNT OF ALFA LEFT BY TFFCONIC 058171,000268: 058172,000269: # DEBRIS: QPRET, PDL+0 ... PDL+1 058173,000270: 058174,000271: # Page 1369 058175,000272: 27,3017 RAPO = 16D # APOGEE RADIUS M E:(-29) M:(-27) 058176,000273: 27,3017 RPER = 14D # PERIGEE RADIUS M E:(-29) M:(-27) 058177,000274: 058178,000275: 27,3017 41345 TFFRP/RA DLOAD DMP 058179,000276: 27,3020 00033 TFFALFA # ALFA 1/M E:(26-NR) M:(24-NR) 058180,000277: 27,3021 00035 TFFNP # LC P M E:(-38+2NR) M:(-36+2NR) 058181,000278: 27,3022 57457 SR* DCOMP # ALFA P (-12+NR) 058182,000279: 27,3023 20571 0 -8D,1 # ALFA P (-4) 058183,000280: 27,3024 51415 DAD ABS # (DCOMP GIVES VALID TP RESULT FOR SQRT) 058184,000281: # (ABS PROTECTS SQRT IF E IS VERY NEAR 0) 058185,000282: 27,3025 17357 DP2(-4) 058186,000283: 27,3026 43366 SQRT DAD # E SQ = (1- P ALFA) (-4) 058187,000284: 27,3027 15322 TFF1/4 058188,000285: 27,3030 55206 PUSH BDDV # (1+E) (-2) TO PDL+0 058189,000286: 27,3031 00035 TFFNP # LCP M E:(-38+2NR) M:(-36+2NR) 058190,000287: 27,3032 53657 SR* SR* # (DOES SR THEN SL TO AVOID OVFL) 058191,000288: 27,3033 20601 0,1 # X1=-NR 058192,000289: 27,3034 20572 0 -7,1 # (EFFECTIVE SL) 058193,000290: 27,3035 14017 STODL RPER # PERIGEE RADIUS M E:(-29) M:(-27) 058194,000291: # (1+E) (-2) FROM PDL+0 058195,000292: 27,3036 41005 DMP BOVB 058196,000293: 27,3037 00027 TFF1/ALF # E:(-22-2NA) M:(-20-2NA) 058197,000294: 27,3040 57343 TCDANZIG # CLEAR OVFIND, IF ON. 058198,000295: 27,3041 53654 BZE SL* 058199,000296: 27,3042 57051 MAXRA # SET POSMAX IF ALFA=0 058200,000297: 27,3043 57603 0 -5,2 # -5+NA 058201,000298: 27,3044 40057 SL* BOV 058202,000299: 27,3045 57576 0,2 058203,000300: 27,3046 57051 MAXRA # SET POSMAX IF OVFL. 058204,000301: 27,3047 77644 BPL # CONTINUE WITH VALID RAPO. 058205,000302: 27,3050 57053 +3 058206,000303: 27,3051 77745 MAXRA DLOAD # RAPO CALC IS NOT VALID. SET RAPO = 058207,000304: 27,3052 17363 NEARONE # POSMAX AS A TAG. 058208,000305: 27,3053 00021 +3 STORE RAPO # APOGEE RADIUS M E:(-29) M:(-27) 058209,000306: 27,3054 77616 DUMPRPRA RVQ 058210,000307: # 30 W 058211,000308: # Page 1370 058212,000309: # SUBROUTINE NAME: CALCTPER / CALCTFF DATE: 01.29.67 058213,000310: # MOD NO: 0 LOG SECTION: TIME OF FREE FALL 058214,000311: # MOD BY: RR BAIRNSFATHER 058215,000312: # MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 67 058216,000313: # MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 14 APR 67 058217,000314: # MOD BY: 3 MOD BY: RR BAIRNSFATHER DATE: 8 JUL 67 NEAR EARTH MUE AND NEG TFF (GONEPAST) 058218,000315: # MOD BY: 4 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 ADD VARIABLE MU. 058219,000316: # MOD BY: 5 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES 058220,000317: 058221,000318: # FUNCTIONAL DESCRIPTION: PROGRAM CALCULATES THE FREE-FALL TIME OF FLIGHT FROM PRESENT POSITION RN AND 058222,000319: # VELOCITY VN TO A RADIUS LENGTH SPECIFIED BY RTERM, SUPPLIED BY THE USER. THE POSITION VECTOR 058223,000320: # RN MAY BE ON EITHER SIDE OF THE CONIC, BUT RTERM IS CONSIDERED ON THE INBOUND SIDE. 058224,000321: # THE EQUATIONS ARE: 058225,000322: 058226,000323: # Q2 = -SQRT(RTERM (2-RTERM ALFA) - LCP) (INBOUND SIDE) LEQ +- LCE/SQRT(ALFA) 058227,000324: # __ __ 058228,000325: # Q1 = RN.VN / SQRT(MU) LEQ +- LCE/SQRT(ALFA) 058229,000326: 058230,000327: # Z = NUM / DEN LEQ +- 1/SQRT(ALFA) 058231,000328: 058232,000329: # WHERE, IF INBOUND 058233,000330: # NUM = RTERM -RN LEQ +- 2 LCE/ALFA 058234,000331: # DEN = Q2+Q1 LEQ +- 2 LCE/SQRT(ALFA) 058235,000332: 058236,000333: # AND, IF OUTBOUND 058237,000334: # NUM = Q2-Q1 LEQ +- 2 LCE/SQRT(ALFA) 058238,000335: # DEN = 2 - ALFA (RTERM + RN). LEQ +- 2 LCE 058239,000336: 058240,000337: # IF ALFA ZZ < 1.0 (FOR ALL CONICS EXCEPT ELLIPSES HAVING ABS(DEL ECC ANOM) G 90 DEG) 058241,000338: # THEN X = ALFA Z Z 058242,000339: # AND TFF = (RTERM +RN -2 ZZ T(X) ) Z/SQRT(MU) 058243,000340: # EXCEPT IF ALFA PNZ, AND IF TFF NEG, 058244,000341: # THEN TFF = 2 PI /(ALFA SQRT(ALFA)) + TFF 058245,000342: # OR IF ALFA ZZ GEQ 1.0 (FOR ELLIPSES HAVING ABS(DEL ECC ANOM) GEQ 90 DEG) 058246,000343: # THEN X = 1/ALFA Z Z 058247,000344: # AND TFF = (PI/SQRT(ALFA) -Q2 +Q1 +2(X T(X) -1) /ALFA Z) /ALFA SQRT(MU) 058248,000345: # WHERE T(X) IS A POLYNOMIAL APPROXIMATION TO THE SERIES 058249,000346: # 2 3 2 058250,000347: # 1/3 - X/5 + X /7 - X /8 ... (X < 1.0) 058251,000348: 058252,000349: # CALLING SEQUENC: TIME TO RTERM TIME TO PERIGEE 058253,000350: # CALL CALL 058254,000351: # CALCTFF CALCTPER 058255,000352: # C(MPAC) = TERMNL RAD M C(MPAC) = PERIGEE RAD M 058256,000353: # FOR EITHER, E:(-29) M:(-27) 058257,000354: # FOR EITHER, PUSHLOC = PDL+0, ARBITRARY IF LEQ 8D. 058258,000355: # Page 1371 058259,000356: 058260,000357: # SUBROUTINES CALLED: T(X), VIA RTB 058261,000358: 058262,000359: # NORMAL EXIT MODE: RVQ 058263,000360: # HOWEVER, PROGRAM EXITS WITH ONE OF THE FOLLOWING VALUES FOR TFF (-28) CS IN MPAC. USER MUST STORE. 058264,000361: # A. TFF = FLIGHT TIME. NORMAL CASE FOR POSITIVE FLIGHT TIME LESS THAN ONE ORBITAL PERIOD. 058265,000362: # B. (THIS OPTION IS NO LONGER USED.) 058266,000363: # C. TFF = POSMAX. THIS INDICATES THAT THE CONIC FROM THE PRESENT POSITION WILL NOT RETURN TO 058267,000364: # THE SPECIFIED ALTITUDE. ALSO INDICATES OUTBOUND PARABOLA OR HYPERBOLA. 058268,000365: 058269,000366: # OUTPUT: C(MPAC) (-28) CS TIME OF FLIGHT, OR TIME TO PERIGEE 058270,000367: # TFFX (0) X LEFT FOR ENTRY DISPLAY TFF ROUTINES 058271,000368: # NRTERM E:(-29+NR) M RTERM, WEIGHTED BY NR LEFT FOR ENTRY DISPLAY TFF ROUTINES 058272,000369: # M:(-27+NR) 058273,000370: # TFFTEM E:(-59+2NR) LCP Z Z SGN(SDELF) LEFT FOR ENTRY DISPLAY TFF ROUTINES 058274,000371: # M:(-55+2NR) LCP /ALFA SGN(SDELF) LEFT FOR ENTRY DISPLAY TFF ROUTINES 058275,000372: # NOTE: TFFTEM = PDL 36D AND WILL BE DESTROYED BY .:UNIT:. 058276,000373: # RMAG1 E:(-29) M:(-27) PDL 12 NOT TOUCHED. 058277,000374: # TFFQ1 E:(-16) M:(-15) PDL 14D 058278,000375: # TFFDELQ E:(-16) M:(-15) PDL 10D 058279,000376: # PUSHLOC AT PDL+0 058280,000377: 058281,000378: # ERASABLE INITIALIZATION REQUIRED: 058282,000379: # RONE E:(-29) M:(-27) M STATE VECTOR LEFT BY USER 058283,000380: # VONE' E:(+10) M:(+9) VN/SQRT(NU) LEFT BY TFF/CONIC 058284,000381: # RMAG1 E:(-29) M:(-27) PRESENT RADIUS, M LEFT BY TFFCONIC 058285,000382: # C(MPAC) E:(-29) M:(-27) RTERM, TERMINAL RADIUS LENGTH, M LEFT BY USER 058286,000383: 058287,000384: # THE FOLLOWING ARE STORED IN THE PUSH LIST AREA. 058288,000385: # TFF/RTMU E:(17) M:(14) 1/SQRT(MU) LEFT BY TFFCONIC. 058289,000386: # NRMAG E:(-29+NR) M RMAG, NORMALIZED LEFT BY TFFCONIC 058290,000387: # M:(-27+NR) 058291,000388: # X1 -NR, NORM COUNT LEFT BY TFFCONIC 058292,000389: # TFFNP E:(-38+2NR) M LCP, SEMI LATUS RECTUM, WEIGHT NR LEFT BY TFFCONIC 058293,000390: # M:(-36+2N4) 058294,000391: # TFFALFA E:(26-NR) 1/M ALFA, WEIGHT NR LEFT BY TFFCONIC 058295,000392: # M:(24-NR) 058296,000393: # TFFRTALF E:(10+NA) SQRT(ALFA), NORMALIZED LEFT BY TFFCONIC 058297,000394: # M:(9+NA) 058298,000395: # X2 -NA, NORMCOUNT LEFT BY TFFCONIC 058299,000396: # TFF1/ALF E:(-22-2NA) SIGNED SEMI-MAJOR AXIS, WEIGHTED BY NA LEFT BY TFFCONIC 058300,000397: # M:(-20-2NA) 058301,000398: 058302,000399: # DEBRIS: QPRET, PDL+0 ... PDL+3 058303,000400: # RTERM E:(-29) M(-27) RTERM, TERMINAL RADIUS LENGTH 058304,000401: # RAPO E:(-29) M(-27) PDL 16D (=NRTERM) 058305,000402: # RPER E:(-29) M(-27) PDL 14D (=TFFQ1) 058306,000403: 058307,000404: # Page 1372 058308,000405: 27,3055 77614 CALCTPER SETGO # ENTER WITH RPER IN MPAC 058309,000406: 27,3056 03436 TFFSW 058310,000407: 27,3057 57062 +3 058311,000408: 27,3060 77614 CALCTFF CLEAR # ENTER WITH RTERM IN MPAC 058312,000409: 27,3061 03676 TFFSW 058313,000410: 27,3062 00023 +3 STORE RTERM # E:(-29) M:(-27) 058314,000411: 27,3063 77657 SL* 058315,000412: 27,3064 20201 0,1 # X1=-NR 058316,000413: 27,3065 00021 STORE NRTERM # RTERM E:(-29+NR) M:(-27+NR) 058317,000414: 27,3066 44205 DMP BDSU 058318,000415: 27,3067 00033 TFFALFA # ALFA E:(26-NR) M:(24-NR) 058319,000416: 27,3070 15322 TFF1/4 058320,000417: 27,3071 41206 PUSH DMP # (2-ALFA RTERM) (-3) TO PDL+0 058321,000418: 27,3072 00021 NRTERM # E:(-29+NR) M:(-27+NR) 058322,000419: 27,3073 53725 PDDL SR* # RTERM(2-ALFA RTERM) TO PDL+2 058323,000420: # E:(-32+NR) M:(-30+NR) 058324,000421: 27,3074 00035 TFFNP # LC P E:(-38+2NR) M:(-36+2NR) 058325,000422: 27,3075 20573 0 -6,1 # X1 = -NR 058326,000423: 27,3076 43276 DCOMP DAD # DUE TO SHIFTS, KEEP PRECISION FOR SQRT 058327,000424: # RTERM(2-ALFA RTERM) FROM PDL +2 058328,000425: # E:(-32+NR) M:(-30+NR) 058329,000426: 27,3077 77657 SR* # LEAVE E:(-32) M:(-30) 058330,000427: 27,3100 20601 0,1 # X1 = -NR 058331,000428: 27,3101 71214 BOFF DLOAD # CHECK TFF /TPER SWITCH 058332,000429: 27,3102 03756 TFFSW 058333,000430: 27,3103 57105 +2 # IF TFF, CONTINUE 058334,000431: 27,3104 15332 TFFZEROS # IF TPER, SET Q2 = 0 058335,000432: 27,3105 75440 +2 BMN SQRT # E:(-16) M:(-15) 058336,000433: 27,3106 57240 MAXTFF1 # NO FREE FALL CONIC TO RTERM FROM HERE 058337,000434: # RESET PDL, SET TFF=POSMAX, AND EXIT. 058338,000435: 058339,000436: 27,3107 41076 DCOMP BOVB # RT IS ON INBOUND SIDE. ASSURE OVFIND=0 058340,000437: 27,3110 57343 TCDANZIG # ANY PORT IN A STORM. 058341,000438: 27,3111 24045 STOVL TFFTEM # Q2 E:(-16) M:(-15) 058342,000439: 27,3112 02372 VONE' # VN/SQRT(MU) E:(10) M:(9) 058343,000440: 27,3113 52441 DOT SL3 058344,000441: 27,3114 02327 RONE # SAVED RN. E:(-29) M:(-27) 058345,000442: 27,3115 00017 STORE TFFQ1 # Q1, SAVE FOR GONEPAST TEST. 058346,000443: # E:(-16) M:(-15) 058347,000444: 27,3116 44240 BMN BDSU 058348,000445: 27,3117 57140 INBOUND # USE ALTERNATE Z 058349,000446: 27,3120 00045 TFFTEM # Q2 E:(-16) M:(-15) 058350,000447: 058351,000448: # OUTBOUND Z CALC CONTINUES HERE 058352,000449: 058353,000450: 27,3121 14043 STODL TFFX # NUM=Q2-Q1 E:(-16) M:(-15) 058354,000451: 27,3122 00033 TFFALFA # ALFA E:(26-NR) M:(24-NR) 058355,000452: 27,3123 44205 DMP BDSU 058356,000453: # Page 1373 058357,000454: 27,3124 00041 NRMAG # RMAG E:(-29+NR) M:(-27+NR) 058358,000455: # (2-RTERM ALFA) (-3) FROM PDL+0 058359,000456: 27,3125 51406 SAVEDEN PUSH ABS # DEN TO PDL+0 E:(-3) OR (-16) 058360,000457: # M:(-3) OR (-15) 058361,000458: 27,3126 40015 DAD BOV # INDETERMINANCY TEST 058362,000459: 27,3127 17351 LIM(-22) # =1.0-B(-22) 058363,000460: 27,3130 57151 TFFXTEST # GO IF DEN >/= B(-22) 058364,000461: 27,3131 65345 DLOAD PDDL # SET DEN=0 OTHERWISE 058365,000462: 27,3132 15332 TFFZEROS 058366,000463: # XCH ZERO WITH PDL+0 058367,000464: 27,3133 57545 DLOAD DCOMP 058368,000465: 27,3134 00033 TFFALFA # ALFA E:(26-NR) M:(24-NR) 058369,000466: 27,3135 71240 BMN DLOAD # FOR TPER: Z INDET AT DELE/2=0 AND 90. 058370,000467: 27,3136 57245 TFFEL1 # ASSUME 90, AND LEAVE 0 IN PDL: 1/Z=D/N 058371,000468: 058372,000469: # Z INDET. AT PERIGEE FOR PARAB OR HYPERB. 058373,000470: 27,3137 77616 DUMPTFF1 RVQ # RETURN TFF =0 058374,000471: 058375,000472: # INBOUND Z CALC CONTINUES HERE 058376,000473: 058377,000474: 27,3140 77745 INBOUND DLOAD # RESET PDL+0 058378,000475: 27,3141 45345 DLOAD DSU # ALTERNATE Z CALC 058379,000476: 27,3142 00023 RTERM # E:(-29) M:(-27) 058380,000477: 27,3143 00015 RMAG1 # E:(-29) M:(-27) 058381,000478: 27,3144 14043 STODL TFFX # NUM=RTERM-RN E:(-29) M:(-27) 058382,000479: 27,3145 00045 TFFTEM # Q2 E:(-16) M:(-15) 058383,000480: 27,3146 52015 DAD GOTO 058384,000481: 27,3147 00017 TFFQ1 # Q1 E:(-16) M:(-15) 058385,000482: 27,3150 57125 SAVEDEN # DEN = Q2+Q1 E:(-16) M:(-15) 058386,000483: 058387,000484: 27,3151 65215 TFFXTEST DAD PDDL # (ABS(DEN) TO PDL+2) E:(-3) OR (-16) 058388,000485: # M:(-3) OR (-15) 058389,000486: 27,3152 17353 DP(-22) # RESTORE ABS(DEN) TO MPAC 058390,000487: 27,3153 00043 TFFX # NUM E:(-16) OR (-29) M:(-15) OR (-27) 058391,000488: 27,3154 53605 DMP SR* 058392,000489: 27,3155 00031 TFFRTALF # SQRT(ALFA) E:(10+NA) M:(9+NA) 058393,000490: 27,3156 57201 0 -3,2 # X2=-NA 058394,000491: 27,3157 77671 DDV # C(MPAC) =NUM SQRT(ALFA) E:(-3) OR (-16) 058395,000492: # M:(-3) OR (-15) 058396,000493: # ABS(DEN) FROM PDL+2 E:(-3) OR (-16) 058397,000494: # M:(-3) OR (-15) 058398,000495: 27,3160 40145 DLOAD BOV # (THE DLOAD IS SHARED WITH TFFELL) 058399,000496: 27,3161 00043 TFFX # NUM E:(-16) OR (-29) M:(-15) OR (-27) 058400,000497: 27,3162 57243 TFFELL # USE EQN FOR DELE GEQ 90, LEQ -90 058401,000498: 058402,000499: # OTHERWISE, CONTINUE FOR GENERAL CONIC FOR TFF EQN 058403,000500: 058404,000501: 27,3163 45471 DDV STADR 058405,000502: # DEN FROM PDL+0 E:(-3) OR (-16) 058406,000503: # M:(-3) OR (-15) 058407,000504: 27,3164 77732 STORE TFFTEM # Z SAVE FOR SIGN OF SDELF. 058408,000505: # Page 1374 058409,000506: # E:(-13) M:(-12) 058410,000507: 27,3165 63406 PUSH DSQ # Z TO PDL+0 058411,000508: 27,3166 41206 PUSH DMP # Z SQ TO PDL+2 E:(-26) M:(-24) 058412,000509: 27,3167 00035 TFFNP # LC P E:(-38+2NR) M:(-36+NR) 058413,000510: 27,3170 75261 SL SIGN 058414,000511: 27,3171 20206 5 058415,000512: 27,3172 00045 TFFTEM # AFFIX SIGN FOR SDELF (ENTRY DISPLAY) 058416,000513: 27,3173 14045 STODL TFFTEM # P ZSQ E:(-59+2NR) M:(-55+2NR) 058417,000514: # (ARG IS USED IN TFF/TRIG) 058418,000515: # ZSQ FROM PDL+2 E:(-26) M:(-24) 058419,000516: 27,3174 41206 PUSH DMP # RESTORE PUSH LOC 058420,000517: 27,3175 00033 TFFALFA # ALFA E:(26-NR) M:(24-NR) 058421,000518: 27,3176 77657 SL* 058422,000519: 27,3177 20201 0,1 # X1=-NR 058423,000520: 27,3200 00043 STORE TFFX # X 058424,000521: 27,3201 41234 RTB DMP 058425,000522: 27,3202 57325 T(X) # POLY 058426,000523: # ZSQ FROM PDL+2 E:(-26) M:(-24) 058427,000524: 27,3203 44302 SR2 BDSU # 2 ZSQ T(X) E:(-29) M:(-27) 058428,000525: 27,3204 00023 RTERM # RTERM E:(-29) M:(-27) 058429,000526: 27,3205 41215 DAD DMP 058430,000527: 27,3206 00015 RMAG1 # E:(-29) M:(-27) 058431,000528: # Z FROM PDL+0 E:(-13) M:(-12) 058432,000529: 27,3207 51042 SR3 BPL # TFF SQRT(MU) E:(-45) M:(-42) 058433,000530: 27,3210 57231 ENDTFF # (NO PUSH UP) 058434,000531: 27,3211 75206 PUSH SIGN # TFF SQRT(MU) TO PDL+0 058435,000532: 27,3212 00017 TFFQ1 # Q1 FOR GONEPAST TEST 058436,000533: 27,3213 71244 BPL DLOAD # GONE PAST ? 058437,000534: 27,3214 57235 NEGTFF # YES. TFF < 0. 058438,000535: 27,3215 00027 TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 058439,000536: 27,3216 51076 DCOMP BPL # ALFA > 0 ? 058440,000537: 27,3217 57235 NEGTFF # NO. TFF IS NEGATIVE. 058441,000538: 058442,000539: # CORRECT FOR ORBITAL PERIOD. 058443,000540: 058444,000541: 27,3220 77676 DCOMP # YES. CORRECT FOR ORB PERIOD. 058445,000542: 27,3221 56205 DMP DDV 058446,000543: 27,3222 17347 PI/16 # 2 PI (-5) 058447,000544: 27,3223 00031 TFFRTALF # SQRT(ALFA) E:(10+NA) M:(9+NA) 058448,000545: 27,3224 53657 SL* SL* 058449,000546: 27,3225 57602 0 -4,2 # X2=-NA 058450,000547: 27,3226 57602 0 -4,2 058451,000548: 27,3227 43257 SL* DAD 058452,000549: 27,3230 57576 0,2 058453,000550: # TFF SQRT(MU) FROM PDL+0 E:(-45) M:(-42) 058454,000551: 27,3231 40005 ENDTFF DMP BOV # TFF SQRT(MU) IN MPAC E:(-45) M:(-42) 058455,000552: 27,3232 00037 TFF/RTMU # E:(17) M:(14) 058456,000553: 27,3233 57241 MAXTFF # SET POSMAX IN OVFL. 058457,000554: 058458,000555: 27,3234 77616 DUMPTFF2 RVQ # RETURN TFF (-28) CS IN MPAC. 058459,000556: 058460,000557: # Page 1375 058461,000558: 27,3235 77745 NEGTFF DLOAD 058462,000559: # TFF SQRT(MU) FROM PDL+0, NEGATIVE. 058463,000560: 27,3236 77650 GOTO 058464,000561: 27,3237 57231 ENDTFF 058465,000562: 058466,000563: 27,3240 77745 MAXTFF1 DLOAD # RESET PDL 058467,000564: 27,3241 43545 MAXTFF DLOAD RVQ 058468,000565: 27,3242 17363 NEARONE 058469,000566: 058470,000567: # TIME OF FLIGHT ELLIPSE WHEN DEL (ECCENTRIC ANOM) GEQ 90 AND LEQ -90. 058471,000568: 058472,000569: # NUM FROM TFFX. E:(-16) OR (-29) 058473,000570: # M:(-15) OR (-27) 058474,000571: 27,3243 77712 TFFELL SL2 # NUM E:(-14) OR (-27) M:(-13) OR (-25) 058475,000572: 27,3244 41465 BDDV PUSH # TEMP SAVE D/N IN PDL+0 058476,000573: # DEN FROM PDL+0 E:(-3)/(-16) M:(-3)/(-15) 058477,000574: # N/D TO PDL+0 E:(11) M:(10) 058478,000575: 27,3245 45345 TFFEL1 DLOAD DSU # (ENTER WITH D/N=0 IN PDL+0) 058479,000576: 27,3246 00045 TFFTEM # Q2 E:(-16) M:(-15) 058480,000577: 27,3247 00017 TFFQ1 # Q1 E:(-16) M:(-15) 058481,000578: 27,3250 14013 STODL TFFDELQ # Q2-Q1 E:(-16) M:(-15) 058482,000579: # D/N FROM PDL+0 058483,000580: 27,3251 77626 STADR 058484,000581: 27,3252 77732 STORE TFFTEM # D/N E:(11) M:(10) 058485,000582: 27,3253 53605 DMP SL* 058486,000583: 27,3254 00027 TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 058487,000584: 27,3255 57576 0,2 # 1/ALFA Z E:(-11-NA) M:(-10-NA) 058488,000585: 27,3256 41206 PUSH DMP # TO PDL+0 058489,000586: 27,3257 00045 TFFTEM # 1/Z E:(11) M:(10 058490,000587: 27,3260 41057 SL* BOVB 058491,000588: 27,3261 57576 0,2 # X2= -NA 058492,000589: 27,3262 45707 SIGNMPAC # IN CASE X= 1.0, CONTINUE 058493,000590: 27,3263 00043 STORE TFFX # X=1/ALFA ZSQ 058494,000591: 27,3264 41234 RTB DMP 058495,000592: 27,3265 57325 T(X) # POLY 058496,000593: 27,3266 00043 TFFX 058497,000594: 27,3267 45242 SR3 DSU 058498,000595: 27,3270 17355 DP2(-3) 058499,000596: 27,3271 41405 DMP PUSH # 2(X T(X)-1) /Z ALFA E:(-15-NA) 058500,000597: # M:(-14-NA) 058501,000598: # 1/ALFA Z FROM PDL+0 E:(-11-NA) 058502,000599: # M:(-10-NA) 058503,000600: 27,3272 41345 DLOAD DMP # GET SIGN FOR SDELF 058504,000601: 27,3273 00045 TFFTEM # 1/Z E:(11) M:(10) 058505,000602: 27,3274 00015 RMAG1 # E:(-29) M:(-27) 058506,000603: 27,3275 43312 SL2 DAD 058507,000604: 27,3276 00017 TFFQ1 # Q1 E:(-16) M:(-15) 058508,000605: 27,3277 14045 STODL TFFTEM # (Q1+R 1/Z) =SGN OF SDELF E:(-16) M:(-15) 058509,000606: 27,3300 00035 TFFNP # LC P E:(-38+2NR) M:(-36+2NR) 058510,000607: 27,3301 53605 DMP SL* # CALC FOR ARG FOR TFF/TRIG. 058511,000608: # Page 1376 058512,000609: 27,3302 00027 TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 058513,000610: 27,3303 57575 1,2 # X2=-NA 058514,000611: 27,3304 53765 SIGN SL* 058515,000612: 27,3305 00045 TFFTEM # AFFIX SIGN FOR SDELF 058516,000613: 27,3306 57576 0,2 058517,000614: 27,3307 14045 STODL TFFTEM # P/ALFA E:(-59+2NR) M:(-55+2NR) 058518,000615: # (ARG FOR USE IN TFF/TRIG) 058519,000616: 27,3310 00027 TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 058520,000617: 27,3311 41366 SQRT DMP 058521,000618: 27,3312 17347 PI/16 # PI (-4) 058522,000619: 27,3313 77615 DAD 058523,000620: # 2(XT(X)-1)/Z ALFA FROM PDL E:(-15-NA) 058524,000621: # M:(-14-NA) 058525,000622: 27,3314 45257 SL* DSU 058526,000623: 27,3315 57577 0 -1,2 058527,000624: 27,3316 00013 TFFDELQ # Q2-Q1 E:(-16) M:(-15) 058528,000625: 27,3317 53605 DMP SL* 058529,000626: 27,3320 00027 TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 058530,000627: 27,3321 57601 0 -3,2 058531,000628: 27,3322 52057 SL* GOTO 058532,000629: 27,3323 57602 0 -4,2 058533,000630: 27,3324 57231 ENDTFF # TFF SQRT(MU) IN MPAC E:(-145) M:(-42) 058534,000631: 058535,000632: # Page 1377 058536,000633: # PROGRAM NAME: T(X) DATE: 01.17.67 058537,000634: # MOD NO: 0 LOG SECTION: TIME OF FREE FALL 058538,000635: # MOD BY: RR BAIRNSFATHER 058539,000636: 058540,000637: # FUNCTIONAL DESCRIPTION: THE POLYNOMIAL T(X) IS USED BY TIME OF FLIGHT SUBROUTINES CALCTFF AND 058541,000638: # CALCTPER TO APPROXIMATE THE SERIES 058542,000639: # 2 3 058543,000640: # 1/3 -X/5 +X /7 -X /9 ... 058544,000641: 058545,000642: # WHERE X = ALFA Z Z IF ALFA Z Z LEQ 1 058546,000643: # X = 1/(ALFA Z Z) IF ALFA Z Z G 1 058547,000644: 058548,000645: # ALSO X IS NEG FOR HYPERBOLIC ORBITS 058549,000646: # X = 0 FOR PARABOLIC ORBITS 058550,000647: # X IS POSITIVE FOR ELLIPTIC ORBITS 058551,000648: 058552,000649: # FOR FLIGHT 278, THE POLYNOMIAL T(X) IS FITTED OVER THE RANGE (0,+1) AND HAS A MAXIMUM 058553,000650: # DEVIATION FROM THE SERIES OF 2 E-5. (T(X) IS A CHEBYCHEV TYPE FIT AND WAS OBTAINED USING 058554,000651: # MAX PROGRAM AUTOCURFIT294RRB AND IS VALID TO THE SAME TOLERANCE OVER THE RANGE (-.08,+1).) 058555,000652: 058556,000653: # CALLING SEQUENCE: RTB 058557,000654: # T(X) 058558,000655: # C(MPAC) = X 058559,000656: 058560,000657: # SUBROUTINE CALLED: NONE 058561,000658: 058562,000659: # NORMAL EXIT MODE: TC TANZIG 058563,000660: 058564,000661: # ALARMS: NONE 058565,000662: 058566,000663: # OUTPUT: C(MPAC) = T(X) 058567,000664: 058568,000665: # ERASABLE INITIALIZATION REQUIRED: 058569,000666: # C(MPAC) = X 058570,000667: 058571,000668: # DEBRIS: NONE 058572,000669: 058573,000670: 27,3325 07171 T(X) TC POLY 058574,000671: 27,3326 00004 DEC 4 B-14 # N-1 058575,000672: 27,3327 12525 12525 2DEC 3.333333333 E-1 058576,000673: 27,3331 71463 57703 2DEC* -1.999819135 E-1* 058577,000674: 27,3333 04423 17645 2DEC* 1.418148467 E-1* 058578,000675: 27,3335 74604 43667 2DEC* -1.01310997 E-1* 058579,000676: 27,3337 01626 37256 2DEC* 5.609004986 E-2* 058580,000677: 27,3341 77404 52071 2DEC* -1.536156925 E-2* 058581,000678: 058582,000679: 27,3343 06030 ENDT(X) TC DANZIG 058583,000680: 058584,000681: 27,3344 27,3343 TCDANZIG = ENDT(X) 058585,000682: 058586,000683: # Page 1378 058587,000684: # TFF CONSTANTS 058588,000685: 058589,000686: 32,3755 BANK 32 058590,000687: 058591,000688: 27,2000 SETLOC TOF-FF1 058592,000689: 27,2000 BANK 058593,000690: 058594,000691: # # NOTE: ADJUSTED MUE FOR NEAR EARTH TRAJ. 058595,000692: # MUE = 3.990815471 E10 # M CUBE/CS SQ 058596,000693: # RTMUE = 1.997702549 E5 B-18 # MODIFIED EARTH MU 058597,000694: 058598,000695: 27,3344 24775 30424 1/RTMU 2DEC* .5005750271 E-5 B17* # MODIFIED EARTH MU 058599,000696: 058600,000697: # # NOTE: ADJUSTED MUE FOR NEAR EARTH TRAJ. 058601,000698: # MUM = 4.902778 E8 # M CUBE/CS SQ 058602,000699: # RTMUM 2DEC* 2.21422176 E4 B-18* 058603,000700: 27,3346 06220 37553 PI/16 2DEC 3.141592653 B-4 058604,000701: 27,3350 37777 37700 LIM(-22) 2OCT 3777737700 # 1.0 -B(-22) 058605,000702: 27,3352 00000 00100 DP(-22) 2OCT 0000000100 # B(-22) 058606,000703: 27,3354 04000 00000 DP2(-3) 2DEC 1 B-3 058607,000704: 27,3356 02000 00000 DP2(-4) 2DEC 1 B-4 # 1/16 058608,000705: 058609,000706: # RPAD1 2DEC 6373338 B-29 # M (-29) = 20909901.57 FT 058610,000707: 27,3360 22,3310 RPAD1 = RPAD 058611,000708: 058612,000709: 27,3360 00305 11205 R300K 2DEC 6464778 B-29 # (-29) M 058613,000710: 27,3362 37777 37777 NEARONE 2DEC .999999999 058614,000711: 27,3364 26,3331 TFFZEROS EQUALS HI6ZEROS 058615,000712: 27,3364 26,3321 TFF1/4 EQUALS HIDP1/4 058616,000713: 058617,000714: 058618,000715: End of include-file TIME_OF_FREE_FALL.agc. Parent file is MAIN.agc