# Copyright: Public domain. # Filename: TIME_OF_FREE_FALL.agc # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. # It is part of the source code for the Command Module's (CM) # Apollo Guidance Computer (AGC), for Apollo 11. # Assembler: yaYUL # Contact: Ron Burkey <info@sandroid.org>. # Website: www.ibiblio.org/apollo. # Pages: 1373-1388 # Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting # from the Colossus249/ file of the same # name, using Comanche055 page images. # # This source code has been transcribed or otherwise adapted from digitized # images of a hardcopy from the MIT Museum. The digitization was performed # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many # thanks to both. The images (with suitable reduction in storage size and # consequent reduction in image quality as well) are available online at # www.ibiblio.org/apollo. If for some reason you find that the images are # illegible, contact me at info@sandroid.org about getting access to the # (much) higher-quality images which Paul actually created. # # Notations on the hardcopy document read, in part: # # Assemble revision 055 of AGC program Comanche by NASA # 2021113-051. 10:28 APR. 1, 1969 # # This AGC program shall also be referred to as # Colossus 2A
# Page 1373 # THE TFF SUBROUTINES MAY BE USED IN EITHER EARTH OR MOON CENTERED COORDINATES. THE TFF ROUTINES NEVER # KNOW WHICH ORIGIN APPLIES. IT IS THE USER WHO KNOWS, AND WHO SUPPLIES RONE, VONE AND 1/SQRT(MU) AT THE # APPROPRIATE SCALE LEVEL FOR THE PROPER PRIMARY BODY.
# ALL DATA PROVIDED TO AND RECEIVED FROM ANY TFF SUBROUTINE WILL BE AT ONE OF THE LEVELS ABOVE. IN ALL CASES, # THE FREE FALL TIME IS RETURNED IN CENTISECONDS AT (-28). PROGRAM TFF/CONIC WILL GENERATE VONE/RTMU AND # LEAVE IT IN VONE' AT (+10) IF EARTH ORIGIN AND (+9) IF MOON ORIGIN. # THE USER MUST STORE THE STATE VECTOR IN RONE, VONE AND MU IN THE FORM 1/SQRT(MU) IN TFF/RTMU # AT THE PROPER SCALE BEFORE CALLING TFF/CONIC. SINCE RONE, VONE ARE IN THE EXTENDED VERB STORAGE AREA, # THE USER MUST ALSO LOCK OUT THE EXTENDED VERBS, AND RELEASE THEM WHEN FINISHED. # PROGRAMS CALC/TFF AND CALC/TPER ASSUME THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT # RADIUS. THIS RESTRICTION CAN BE REMOVED BY A 15 W CODING CHANGE, BUT AT PRESENT IT IS NOT DEEMED NECESSARY. # # THE FOLLOWING ERASABLE QUANTITIES ARE USED BY THE TFF ROUTINES, AND ARE LOCATED IN THE PUSH LIST. #
# BELOW E: IS USED FOR EARTH ORIGIN SCALE # M: IS USED FOR MOON ORIGIN SCALE
#TFFSW = 119D # BIT1 0 = CALCTFF 1 = CALCTPER
TFFDELQ = 10D # Q2-Q1 E: (-16) M: (-15)
RMAG1 = 12D # ABVAL(RN) M E: (-29) M: (-27) #RPER = 14D # PERIGEE RADIUS M E: (-29) M: (-27)
TFFQ1 = 14D # R.V / SQRT(MUE) E: (-16) M: (-15) #SDELF/2 # SIN(THETA) /2
CDELF/2 = 14D # COS(THETA) /2 #RAPO = 16D # APOGEE RADIUS M E: (-29) M: (-27)
NRTERM = 16D # TERMINAL RADIUS M E: (-29+NR) # M: (-27+NR)
RTERM = 18D # TERMINAL RADIUS M E: (-29) M: (-27)
TFFVSQ = 20D # -(V SQUARED/MU) 1/M E: (20) M: (18)
TFF1/ALF = 22D # SEMI MAJ AXIS M E: (-22-2 NA) # M: (-20-2 NA)
TFFRTALF = 24D # SQRT(ALFA) E:(10+NA) M: (9+NA)
TFFALFA = 26D # ALFA 1/M E:(26-NR) M: (24-NR)
TFFNP = 28D # SEMI LATUS RECTUM M E: (-38+2 NR) # M: (-36+2 NR)
TFF/RTMU = 30D # 1/SQRT(MU) E: (17) M: (14)
NRMAG = 32D # PRESENT RADIUS M E: (-29+NR) # M: (-27+NR)
TFFX = 34D #
TFFTEM = 36D # TEMPORARY # Page 1374 # REGISTERS S1, S2 ARE UNTOUCHED BY ANY TFF SUBROUTINE # INDEX REGISTERS X1, X2 ARE USED BY ALL TFF SUBROUTINES. THEY ARE ESTAB- # LISHED IN TFF/CONIC AND MUST BE PRESERVED BETWEEN CALLS TO SUBSEQUENT # SUBROUTINES. # -NR C(X1) = NORM COUNT OF RMAG # -NA C(X2)= NORM COUNT OF SQRT(ABS(ALFA))
# Page 1375 # SUBROUTINE NAME: TFFCONIC DATE: 01.29.67 # MOD NO: 0 LOG SECTION: TIME OF FREE FALL # MOD BY: RR BAIRNSFATHER # MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67 # MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 ADD MOON MU. # MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES # FUNCTIONAL DESCRIPTION: THIS SUBROUTINE IS CALLED TO COMPUTE THOSE CONIC PARAMETERS REQUIRED BY THE TFF # SUBROUTINES AND TO ESTABLISH THEM IN THE PUSH LIST AREA. THE PARAMETERS ARE LISTED UNDER OUTPUT. # THE EQUATIONS ARE: # - - - # H = RN*VN ANGULAR MOMENTUM # - - # LCP = H.H / MU SEMI LATUS RECTUM # - - # ALFA = 2/RN - VN.VN / MU RECIPROCAL SEMI MAJ AXIS, SIGNED
# AND ALFA IS POS FOR ELLIPTIC ORBITS # 0 FOR PARABOLIC ORBITS # NEG FOR HYPERBOLIC ORBITS. # SUBROUTINE ALSO COMPUTES AND SAVES RMAG. # CALLING SEQUENCE: # TFFCONIC EXPECTS CALLER TO ENTER WITH CORRECT GRAVITATIONAL CONSTANT IN MPAC, IN THE FORM # 1/SQRT(MU). THE PROGRAM WILL SAVE IN TFF/RTMU . THE SCALE IS DETERMINED BY WHETHER EARTH OR MOON # ORIGIN IS USED. THE CALLER MUST LOCK OUT THE EXTENDED VERBS BEFORE PROVIDING STATE VECTOR IN RONE, # VONE AT PROPER SCALE. THE EXTENDED VERBS MUST BE RESTORED WHEN THE CALLER IS FINISHED USING THE # TFF ROUTINES. # ENTRY POINT TFFCONMU EXPECTS THAT TFF/RTMU IS ALREADY LOADED. # TO SPECIFY MU: DLOAD CALL # IF MU ALREADY STORED: CALL # YOURMU # 1/RTMU E:(17) M:(14) TFFCONMU # TFFCONIC # PUSHLOC = PDL+0, ARBITRARY IF LEQ 18D
# SUBROUTINES CALLED: NONE # NORMAL EXIT MODES: RVQ # ALARMS: NONE # OUTPUT: THE FOLLOWING ARE STORED IN THE PUSH LIST AREA. # RMAG1 E:(-29) M:(-27) M RN, PRESENT RADIUS LENGTH. # NRMAG E:(-29+NR) M RMAG, NORMALIZED # M:(-27+NR) # X1 -NR, NORM COUNT # TFFNP E:(-38+2NR) M LCP, SEMI LATUS RECTUM, WEIGHTED BY NR. FOR VGAMCALC # M:(-36+2NR) # TFF/RTMU E:(17) M:(14) 1/SQRT(MU) # TFFVSQ E:(20) M:(18) 1/M -(V SQ/MU): PRESENT VELOCITY,NORMLIZED. FOR VGAMCALC # TFFALFA E:(26-NR) 1/M ALFA, WEIGHTED BY NR # M:(24-NR) # TFFRTALF E:(10+NA) SQRT(ALFA), NORMALIZED # M:(9+NA) # Page 1376 # X2 -NA, NORM COUNT # TFF1/ALF E: (-22-2NA) SIGNED SEMI MAJ AXIS, WEIGHTED BY NA # M: (-20-2NA) # PUSHLOC AT PDL+0 # THE FOLLOWING IS STORED IN GENERAL ERASABLE # VONE' E:(10) M:(9) V/RT(MU), NORMALIZED VELOCITY # ERASABLE INITIALIZATION REQUIRED: # RONE E:(-29) M:(-27) M STATE VECTOR LEFT BY CALLER # VONE E:(-7) M:(-5) M/CS STATE VECTOR LEFT BY CALLER # TFF/RTMU E:(17) M:(14) 1/RT(CS SQ/M CUBE) IF ENTER VIA TFFCONMU. # DEBRIS: QPRET. PDL+0 ... PDL+3 #
BANK33 SETLOC TOF-FF BANK
COUNT* $$/TFF
TFFCONIC STORE TFF/RTMU # 1/SQRT(MU) E: (17) M: (14)
TFFCONMU VLOAD UNIT # COME HERE WITH TFFRTMU LOADED.
RONE # SAVED RN. M E: (-29) M: (-27)
PDDL # UR/2 TO PDL+0, +5 36D # MAGNITUDE STORE RMAG1 # M E:(-29) M:(-27)
VXSC VXV
NRMAG # E: (-29+NR) M: (-27+NR) # UR/2 FROM PDL
VSL1 VSQ # BEFORE: E:(-19+NR) M:(-18+NR) STODL TFFNP # LC P M E:(-38+2NR) M:(-36+2NR) # SAVE ALSO FOR VGAMCALC
TFF1/4
DDV PDVL # (2/RMAG) 1/M E:(26-NR) M:(24-NR)
NRMAG # RMAG M E:(-29+NR) M:(-27+NR)
VONE' # SAVED VN. E:(10) M:(9)
VSQ DCOMP # KEEP MPAC+2 HONEST FOR SQRT. STORE TFFVSQ # -(V SQ/MU) E:(20) M:(18) # SAVE FOR VGAMCALC
SR* DAD # Page 1377 0 -6,1# GET -VSQ/MU E:(26-NR) M:(24-NR) STADR # 2/RMAG FROM PDL+2 STORE TFFALFA # ALFA 1/M E:(26-NR) M:(24-NR)
SL* PUSH# TEMP SAVE ALFA E:(20) M:(18) 0 -6,1
ABS SQRT # E:(10) M:(9)
NORM
X2 # X2 = -NA STORE TFFRTALF # SQRT( ABS(ALFA) ) E:(10+NA) M:(9+NA)
DSQ SIGN # NOT SO ACCURATE, BUT OK # ALFA FROM PDL+2 E:(20) M:(18)
BZE BDDV # SET 1/ALFA =0, TO SHOW SMALL ALFA
+2
TFF1/4
+2STORE TFF1/ALF # 1/ALFA E:(-22-2 NA) M:(-20-2 NA)
DUMPCNIC RVQ # 39 W # Page 1378 # SUBROUTINE NAME: TFFRP/RA DATE: 01.17.67 # MOD NO: 0 LOG SECTION: TIME OF FREE FALL # MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67 # MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES # ALSO IMPROVE ACCURACY OF RAPO. # FUNCTIONAL DESCRIPTION: USED BY CALCTPER AND TFF DISPLAYS TO CALCULATE PERIGEE RADIUS AND ALSO # APOGEE RADIUS FOR A GENERAL CONIC. # PROGRAM GIVES PERIGEE RADIUS AS APOGEE RADIUS IS GIVEN BY # RP = P /(1+E) RA = (1+E) / ALFA # WHERE 2 # E = 1 - P ALFA # IF RA IS NEGATIVE OR SHOWS DIVIDE OVERFLOW, THEN RA = POSMAX BECAUSE # 1. APOGEE RADIUS IS NOT MEANINGFUL FOR HYPERBOLA # 2. APOGEE RADIUS IS NOT DEFINED FOR PARABOLA # 3. APOGEE RADIUS EXCEEDS THE SCALING FOR ELLIPSE. # THIS SUBROUTINE REQUIRED THE SIGNED RECIPROCAL SEMI MAJ AXIS, ALFA, AND SEMI LATUS RECTUM AS DATA. # CALLING SEQUENCE: CALL # TFFRP/RA # PUSHLOC = PDL+0, ARBITRARY IF LEQ 10D # C(MPAC) UNSPECIFIED
# SUBROUTINES CALLED: NONE # NORMAL EXIT MODE: RVQ # IF ELLIPSE, WITHIN NORMAL SCALING, RAPO IS CORRECT. # OTHERWISE, RAPO = POSMAX. # ALARMS: NONE # OUTPUT: STORED IN PUSH LIST AREA. SCALE OF OUTPUT AGREES WITH DATA SUPPLIED TO TFF/CONIC. # RPER E:(-29) M:(-27) M PERIGEE RADIUS DESTROYED BY CALCTFF/CALCTPER, TFFTRIG. # RAPO E:(-29) M:(-27) M APOGEE RADIUS WILL BE DESTROYED BY CALCTFF/CALCTPER # PUSHLOC AT PDL+0 # ERASABLE INITIALIZATION REQUIRED: # TFFALFA E:(26-NR) M 1/SEMI MAJ AXIS LEFT BY TFFCONIC # M:(24-NR) # TFFNP E: (-38+2NR) M LC P, SEMI LATUS RECTUM LEFT BY TFFCONIC # M: (-36+2NR) # X1 -NR, NORM COUNT OF RMAG LEFT BY TFFCONIC # X2 -NA, NORM COUNT OF ALFA LEFT BY TFFCONIC # DEBRIS: QPRET, PDL+0 ... PDL+1
TFFRP/RA DLOAD DMP
TFFALFA # ALFA 1/M E:(26-NR) M:(24-NR)
TFFNP # LC P M E:(-38+2NR) M:(-36+2NR)
SR* DCOMP # ALFA P (-12+NR) 0 -8D,1# ALFA P (-4)
DAD ABS # (DCOMP GIVES VALID TP RESULT FOR SQRT) # (ABS PROTECTS SQRT IF E IS VERY NEAR 0)
DP2(-4)
SQRT DAD # E SQ = (1- P ALFA) (-4)
TFF1/4 PUSH BDDV # (1+E) (-2) TO PDL+0
TFFNP # LCP M E:(-38+2NR) M:(-36+2NR)
SR* SR* # (DOES SR THEN SL TO AVOID OVFL) 0,1# X1=-NR 0 -7,1# (EFFECTIVE SL) STODL RPER # PERIGEE RADIUS M E:(-29) M:(-27) # (1+E) (-2) FROM PDL+0
DMP BOVB
TFF1/ALF # E:(-22-2NA) M:(-20-2NA)
TCDANZIG # CLEAR OVFIND, IF ON.
BZE SL*
MAXRA # SET POSMAX, IF ALFA=0 0 -5,2# -5+NA
SL* BOV 0,2
MAXRA # SET POSMAX IF OVFL.
BPL # CONTINUE WITH VALID RAPO.
+3
MAXRA DLOAD# RAPO CALC IS NOT VALID. SET RAPO =
NEARONE # POSMAX AS A TAG.
+3STORE RAPO # APOGEE RADIUS M E:(-29) M:(-27)
DUMPRPRA RVQ
# 30 W # Page 1380 # SUBROUTINE NAME: CALCTPER / CALCTFF DATE: 01.29.67 # MOD NO: 0 LOG SECTION: TIME OF FREE FALL # MOD BY: RR BAIRNSFATHER # MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 67 # MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 14 APR 67 # MOD BY: 3 MOD BY: RR BAIRNSFATHER DATE: 8 JUL 67 NEAR EARTH MUE AND NEG TFF (GONEPAST) # MOD BY: 4 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 ADD VARIABLE MU. # MOD BY: 5 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES # FUNCTIONAL DESCRIPTION: PROGRAM CALCULATES THE FREE-FALL TIME OF FLIGHT FROM PRESENT POSITION RN AND # VELOCITY VN TO A RADIUS LENGTH SPECIFIED BY RTERM , SUPPLIED BY THE USER. THE POSITION VECTOR # RN MAY BE ON EITHER SIDE OF THE CONIC, BUT RTERM IS CONSIDERED ON THE INBOUND SIDE. # THE EQUATIONS ARE
# WHERE, IF INBOUND # NUM = RTERM -RN LEQ +- 2 LCE/ALFA # DEN = Q2+Q1 LEQ +- 2 LCE/SQRT(ALFA)
# AND, IF OUTBOUND # NUM = Q2-Q1 LEQ +- 2 LCE/SQRT(ALFA) # DEN = 2 - ALFA (RTERM + RN) . LEQ +- 2 LCE
# IF ALFA ZZ < 1.0 (FOR ALL CONICS EXCEPT ELLIPSES HAVING ABS(DEL ECC ANOM) G 90 DEG)
# THEN X = ALFA Z Z # AND TFF = (RTERM +RN -2 ZZ T(X) ) Z/SQRT(MU)
# EXCEPT IF ALFA PNZ, AND IF TFF NEG, # THEN TFF = 2 PI /(ALFA SQRT(ALFA)) + TFF
# OR IF ALFA ZZ GEQ 1.0 (FOR ELLIPSES HAVING ABS(DEL ECC ANOM) GEQ 90 DEG)
# THEN X = 1/ALFA Z Z # AND TFF = (PI/SQRT(ALFA) -Q2 +Q1 +2(X T(X) -1) /ALFA Z) /ALFA SQRT(MU)
# WHERE T(X) IS A POLYNOMIAL APPROXIMATION TO THE SERIES # 2 3 2 # 1/3 -X/5 +X /7 -X /9... (X < 1.0)
# CALLING SEQUENCE: TIME TO RTERM TIME TO PERIGEE # CALL CALL # CALCTFF CALCTPER # C(MPAC) = TERMNL RAD M C(MPAC) = PERIGEE RAD M # FOR EITHER, E: (-29) M: (-27) # FOR EITHER, PUSHLOC = PDL+0 , ARBITRARY IF LEQ 8D. # Page 1381 # # SUBROUTINES CALLED: T(X), VIA RTB # NORMAL EXIT MODE: RVQ # HOWEVER, PROGRAM EXITS WITH ONE OF THE FOLLOWING VALUES FOR TFF (-28) CS IN MPAC. USER MUST STORE. # A. TFF = FLIGHT TIME. NORMAL CASE FOR POSITIVE FLIGHT TIME LESS THAN ONE ORBITAL PERIOD. # B. (THIS OPTION IS NO LONGER USED.) # C. TFF = POSMAX. THIS INDICATES THAT THE CONIC FROM THE PRESENT POSITION WILL NOT RETURN TO # THE SPECIFIED ALTITUDE. ALSO INDICATES OUTBOUND PARABOLA OR HYPERBOLA. # OUTPUT: C(MPAC) (-28) CS TIME OF FLIGHT, OR TIME TO PERIGEE # TFFX (0) X, LEFT FOR ENTRY DISPLAY TFF ROUTINES # NRTERM E: (-29+NR) M RTERM, WEIGHTED BY NR LEFT FOR ENTRY DISPLAY TFF ROUTINES # M: (-27+NR) # TFFTEM E: (-59+2NR) LCP Z Z SGN(SDELF) LEFT FOR ENTRY DISPLAY TFF ROUTINES # M: (-55+2NR) LCP /ALFA SGN(SDELF) LEFT FOR ENTRY DISPLAY TFF ROUTINES # NOTE: TFFTEM = PDL 36D AND WILL BE DESTROYED BY .:UNIT:. # RMAG1 E:(-29) M:(-27) PDL 12 NOT TOUCHED. # TFFQ1 E:(-16) M:(-15) PDL 14D # TFFDELQ E:(-16) M:(-15) PDL 10D # PUSHLOC AT PDL+0 # ERASABLE INITIALIZATION REQUIRED: # RONE E:(-29) M:(-27) M STATE VECTOR LEFT BY USER # VONE' E:(+10) M:(+9) VN/SQRT(NU) LEFT BY TFF/CONIC # RMAG1 E:(-29) M:(-27) PRESENT RADIUS, M LEFT BY TFFCONIC # C(MPAC) E:(-29) M:(-27) RTERM, TERMINAL RADIUS LENGTH, M LEFT BY USER # # THE FOLLOWING ARE STORED IN THE PUSH LIST AREA. # TFF/RTMU E:(17) M:(14) 1/SQRT(MU) LEFT BY TFFCONIC. # NRMAG E: (-29+NR) M RMAG, NORMALIZED LEFT BY TFFCONIC # M: (-27+NR) # X1 -NR, NORM COUNT LEFT BY TFFCONIC # TFFNP E: (-38+2NR) M LCP, SEMI LATUS RECTUM, WEIGHT NR LEFT BY TFFCONIC # M: (-36+2NR) # TFFALFA E: (26-NR) 1/M ALFA, WEIGHT NR LEFT BY TFFCONIC # M: (24-NR) # TFFRTALF E:(10+NA) SQRT(ALFA), NORMALIZED LEFT BY TFFCONIC # M:(9+NA) # X2 -NA, NORM COUNT LEFT BY TFFCONIC # TFF1/ALF E:(-22-2NA) SIGNED SEMIMAJ AXIS, WEIGHTED BY NA LEFT BY TFFCONIC # M:(-20-2NA) # DEBRIS: QPRET, PDL+0 ... PDL+3 # RTERM E:(-29) M:(-27) RTERM, TERMINAL RADIUS LENGTH # RAPO E:(-29) M:(-27) PDL 16D (=NRTERM) # RPER E:(-29) M:(-27) PDL 14D (=TFFQ1)
# Page 1382
CALCTPER SETGO # ENTER WITH RPER IN MPAC
TFFSW
+3
CALCTFF CLEAR # ENTER WITH RTERM IN MPAC
TFFSW
+3STORE RTERM # E: (-29) M: (-27)
SL* 0,1# X1=-NR STORE NRTERM # RTERM E: (-29+NR) M: (-27+NR)
DMP BDSU
TFFALFA # ALFA E:(26-NR) M:(24-NR)
TFF1/4 PUSH DMP # (2-ALFA RTERM) (-3) TO PDL+0
NRTERM # E: (-29+NR) M: (-27+NR)
PDDL SR* # RTERM(2-ALFA RTERM) TO PDL+2 # E: (-32+NR) M: (-30+NR)
TFFNP # LC P E:(-38+2NR) M:(-36+2NR) 0 -6,1# X1 = -NR
DCOMP DAD # DUE TO SHIFTS, KEEP PRECISION FOR SQRT # RTERM(2-ALFA RTERM) FROM PDL+2 # E: (-32+NR) M: (-30+NR)
SR* # LEAVE E: (-32) M: (-30) 0,1# X1 = -NR
BOFF DLOAD# CHECK TFF / TPER SWITCH
TFFSW
+2# IF TFF, CONTINUE
TFFZEROS # IF TPER, SET Q2 = 0
+2 BMN SQRT # E: (-16) M: (-15)
MAXTFF1 # NO FREE FALL CONIC TO RTERM FROM HERE # RESET PDL, SET TFF=POSMAX, AND EXIT.
DCOMP BOVB # RT IS ON INBOUND SIDE. ASSURE OVFIND=0
TCDANZIG # ANY PORT IN A STORM. STOVL TFFTEM # Q2 E: (-16) M: (-15)
VONE' # VN/SQRT(MU) E: (10) M: (9)
DOT SL3
RONE # SAVED RN. E: (-29) M: (-27) STORE TFFQ1 # Q1, SAVE FOR GONEPAST TEST. # E: (-16) M: (-15)
BMN BDSU
INBOUND # USE ALTERNATE Z
TFFTEM # Q2 E: (-16) M: (-15)
# OUTBOUND Z CALC CONTINUES HERE
STODL TFFX # NUM=Q2-Q1 E: (-16) M: (-15)
TFFALFA # ALFA E: (26-NR) M: (24-NR)
DMP BDSU # Page 1383
NRMAG # RMAG E: (-29+NR) M: (-27+NR) # (2-RTERM ALFA) (-3) FROM PDL+0
SAVEDEN PUSH ABS # DEN TO PDL+0 E: (-3) OR (-16) # M: (-3) OR (-15)
DAD BOV # INDETERMINANCY TEST
LIM(-22) # =1.0-B(-22)
TFFXTEST # GO IF DEN >/= B(-22) DLOAD PDDL # SET DEN=0 OTHERWISE
TFFZEROS # XCH ZERO WITH PDL+0 DLOAD DCOMP
TFFALFA # ALFA E: (26-NR) M:( 24-NR)
BMN DLOAD# FOR TPER: Z INDET AT DELE/2=0 AND 90.
TFFEL1 # ASSUME 90, AND LEAVE 0 IN PDL: 1/Z=D/N
# Z INDET. AT PERIGEE FOR PARAB OR HYPERB.
DUMPTFF1 RVQ # RETURN TFF =0
TFFXTEST DAD PDDL # (ABS(DEN) TO PDL+2)) E: (-3) OR (-16) # M: (-3) OR (-15)
DP(-22) # RESTORE ABS(DEN) TO MPAC
TFFX # NUM E:(-16) OR (-29) M:(-15) OR (-27)
DMP SR*
TFFRTALF # SQRT(ALFA) E:(10+NA) M:(9+NA) 0 -3,2# X2=-NA
DDV # C(MPAC) =NUM SQRT(ALFA) E:(-3) OR (-16) # M:(-3) OR (-15) # ABS(DEN) FROM PDL+2 E:(-3) OR (-16) # M:(-3) OR (-15) DLOAD BOV # (THE DLOAD IS SHARED WITH TFFELL)
TFFX # NUM E: (-16) OR (-29) M:(-15) OR (-27)
TFFELL # USE EQN FOR DELE GEQ 90, LEQ -90
# OTHERWISE, CONTINUE FOR GENERAL CONIC FOR TFF EQN
DDV STADR # DEN FROM PDL+0 E: (-3) OR (-16) # M: (-3) OR (-15) STORE TFFTEM # Z SAVE FOR SIGN OF SDELF. # Page 1384 # E: (-13) M: (-12) PUSH DSQ # Z TO PDL+0 PUSH DMP # Z SQ TO PDL+2 E: (-26) M: (-24)
TFFNP # LC P E: (-38+2NR) M: (-36+2NR)
SL SIGN 5
TFFTEM # AFFIX SIGN FOR SDELF (ENTRY DISPLAY) STODL TFFTEM # P ZSQ E: (-59+2NR) M: (-55+2NR) # (ARG IS USED IN TFF/TRIG) # ZSQ FROM PDL+2 E: (-26) M: (-24) PUSH DMP # RESTORE PUSH LOC
TFFALFA # ALFA E: (26-NR) M: (24-NR)
SL* 0,1# X1=-NR STORE TFFX # X
RTB DMP
T(X) # POLY # ZSQ FROM PDL+2 E: (-26) M: (-24)
SR2 BDSU # 2 ZSQ T(X) E: (-29) M: (-27)
RTERM # RTERM E: (-29) M: (-27)
DAD DMP
RMAG1 # E: (-29) M: (-27) # Z FROM PDL+0 E: (-13) M: (-12)
SR3 BPL # TFF SQRT(MU) E: (-45) M: (-42)
ENDTFF # (NO PUSH UP) PUSH SIGN # TFF SQRT(MU) TO PDL+0
TFFQ1 # Q1 FOR GONEPAST TEST
BPL DLOAD# GONE PAST ?
NEGTFF # YES. TFF < 0 .
TFF1/ALF # 1/ALFA E: (-22-2NA) M: (-20-2NA)
DCOMP BPL # ALFA > 0 ?
NEGTFF # NO. TFF IS NEGATIVE.
# CORRECT FOR ORBITAL PERIOD.
DCOMP # YES. CORRECT FOR ORB PERIOD.
DMP DDV
PI/16# 2 PI (-5)
TFFRTALF # SQRT(ALFA) E: (10+NA) M: (9+NA)
SL* SL* 0 -4,2# X2=-NA 0 -4,2
SL* DAD 0,2 # TFF SQRT(MU) FROM PDL+0 E:(-45) M:(-42)
ENDTFF DMP BOV # TFF SQRT(MU) IN MPAC E:(-45) M:(-42)
TFF/RTMU # E: (17) M: (14)
MAXTFF # SET POSMAX IN OVFL.
# TIME OF FLIGHT ELLIPSE WHEN DEL (ECCENTRIC ANOM) GEQ 90 AND LEQ -90.
# NUM FROM TFFX. E: (-16) OR (-29) # M: (-15) OR (-27)
TFFELL SL2 # NUM E:(-14) OR (-27) M:(-13) OR (-25)
BDDV PUSH# TEMP SAVE D/N IN PDL+0 # DEN FROM PDL+0 E:(-3)/( 16) M:(-3)/(-15) # N/D TO PDL+0 E: (11) M: (10)
TFFEL1 DLOAD DSU # (ENTER WITH D/N=0 IN PDL+0)
TFFTEM # Q2 E: (-16) M: (-15)
TFFQ1 # Q1 E: (-16) M: (-15) STODL TFFDELQ # Q2-Q1 E: (-16) M: (-15) # D/N FROM PDL+0 STADR STORE TFFTEM # D/N E: (11) M: (10)
DMP SL*
TFF1/ALF # 1/ALFA E: (-22-2NA) M: (-20-2NA) 0,2# 1/ALFA Z E: (-11-NA) M: (-10-NA) PUSH DMP # TO PDL+0
TFFTEM # 1/Z E: (11) M: (10)
SL* BOVB 0,2# X2= -NA
SIGNMPAC # IN CASE X= 1.0, CONTINUE STORE TFFX # X=1/ALFA ZSQ
RTB DMP
T(X) # POLY
TFFX
SR3 DSU
DP2(-3)
DMP PUSH# 2(X T(X)-1) /Z ALFA E:(-15-NA) # M:(-14-NA) # 1/ALFA Z FROM PDL+0 E:(-11-NA) # M:(-10-NA) DLOAD DMP # GET SIGN FOR SDELF
TFFTEM # 1/Z E: (11) M: (10)
RMAG1 # E: (-29) M: (-27)
SL2 DAD
TFFQ1 # Q1 E: (-16) M: (-15) STODL TFFTEM # (Q1+R 1/Z) =SGN OF SDELF E:(-16) M:(-15
TFFNP # LC P E: (-38+2NR) M: (-36+2NR)
DMP SL* # CALC FOR ARG FOR TFF/TRIG. # Page 1386
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 1,2# X2=-NA
SIGN SL*
TFFTEM # AFFIX SIGN FOR SDELF 0,2 STODL TFFTEM # P/ALFA E:(-59+2NR) M:(-55+2NR) # (ARG FOR USE IN TFF/TRIG)
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
SQRT DMP
PI/16# PI (-4)
DAD # 2(XT(X)-1)/Z ALFA FROM PDL E:(-15-NA) # M:(-14-NA)
SL* DSU 0 -1,2
TFFDELQ # Q2-Q1 E: (-16) M: (-15)
DMP SL*
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA) 0 -3,2
SL* GOTO 0 -4,2
ENDTFF # TFF SQRT(MU) IN MPAC E:(-45) M:(-42)
# Page 1387 # PROGRAM NAME: T(X) DATE: 01.17.67 # MOD NO: 0 LOG SECTION: TIME OF FREE FALL # MOD BY: RR BAIRNSFATHER # FUNCTIONAL DESCRIPTION: THE POLYNOMIAL T(X) IS USED BY TIME OF FLIGHT SUBROUTINES CALCTFF AND # CALCTPER TO APPROXIMATE THE SERIES # 2 3 # 1/3 -X/5 +X /7 -X /9 ...
# WHERE X = ALFA Z Z IF ALFA Z Z LEQ 1 # X = 1/(ALFA Z Z ) IF ALFA Z Z G 1
# ALSO X IS NEG FOR HYPERBOLIC ORBITS # X = 0 FOR PARABOLIC ORBITS # X IS POSITIVE FOR ELLIPTIC ORBITS # FOR FLIGHT 278, THE POLYNOMIAL T(X) IS FITTED OVER THE RANGE (0,+1) AND HAS A MAXIMUM # DEVIATION FROM THE SERIES OF 2 E-5 (T(X) IS A CHEBYCHEV TYPE FIT AND WAS OBTAINED USING # MAC PROGRAM AUTCURFIT294RRB AND IS VALID TO THE SAME TOLERANCE OVER THE RANGE (-.08,+1). ) # CALLING SEQUENCE: RTB # T(X) # C(MPAC) = X
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.