# Copyright: Public domain. # Filename: TPI_SEARCH.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: 551-561 # Mod history: 2009-05-15 RSB Adapted from the Colossus249/ file of the # same name, using Comanche055 page images. # 2009-05-20 RSB Corrections: On p. 551, "SETLOC P17S" -> P17S1. # # 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 551 # TPI SEARCH
# PROGRAM DESCRIPTION S17.1 AND S17.2
# FUNCTIONAL DESCRIPTION
# THE TPI SEARCH ROUTINE DETERMINES THE MINIMUM TOTAL VELOCITY TRANSFER TRAJECTORY FROM A GIVEN TPI # MANEUVER TIME WITHIN THE CONSTRAINT OF A SAFE PERICENTER. THIS VELOCITY IS THE SUM OF THE IMPULSIVE VELOCITIES # FOR THE TPI AND TPF MANEUVERS. # THE S17.1 ROUTINE EXTRAPOLATES THE STATE VECTORS OF BOTH VEHICLES TO THE TPI TIME AND COMPUTES THE # RELATIVE PHASE ANGLE BETWEEN THE VEHICLES, THE ALTITUDE DIFFERENCE(I.E. THE MAGNITUDE DIFFERENCE OF THE # POSITION VECTORS) AND SELECTS A SEARCH SECTOR BASED ON THE SIGN OF THE ALTITUDE DIFFERENCE. # THE S17.2 ROUTINE FURTHER DEFINES THE SEARCH SECTOR BY COMPUTING ANGULAR LIMITS AND USES THE TIME THETA # SUBROUTINE TO COMPUTE THE SEARCH START AND END TIMES. THE SEARCH IS THEN MADE IN AN ITERATIVE LOOP USING THE # LAMBERT SUBROUTINE TO COMPUTE THE VELOCITIES REQUIRED AT TPI TIME AND AT TPF TIME. EXIT FROM THE SEARCH LOOP # IS MADE WHEN SOLUTION CRITERIA ARE MET (NORMAL EXIT) OR AS SOON AS IT IS EVIDENT THAT NO SOLUTION EXISTS IN # THE SECTOR SEARCHED.
# CALLING SEQUENCE
# BOTH ROUTINES ARE CALLED IN INTERPRETIVE CODE AND RETURN VIA QPRET. S17.1 HAS ONLY A NORMAL EXIT. # S17.2 RETURNS VIA QPRET FOR NORMAL EXIT AND TO ALARUMS FOR ERROR EXIT. # SUBROUTINES CALLED # # CSMCONIC # LEMCONIC # TIMETHET # INITVEL
BANK36 SETLOC P17S1 BANK
COUNT36/TPI
EBANK= RACT3
# **** TEMPORARY ****
HPE 2DEC157420.0 B-29# EARTH'S MIN. PERICENTER ALTITUDE 85 N.M.
HPL 2DEC10668.0213 B-29# MOON:S MIN. PERICENTER ALTITUDE 35000FT
CDSEC 2DEC40000
CLSEC 2DEC15000
PIINVERS 2DEC .3183098862
SEC1THET 2DEC .1944444444
# Page 552
SEC2THET 2DEC .9166666667
MANYFEET 2DEC -1.0 B-2
LIMVEL 2DEC .6096 E-2 B-7# 2FPS
DFTMOON 2DEC .1524 E3 B-29# 500 FEET
DP-.0022DEC0.002
SETLOC P17S BANK
S17.1 STQ DLOAD
NORMEX
TTPI
STCALL TDEC1 # ADVANCE PASSIVE VEHICLE TO TPI
LEMCONIC CALL
LEMSTORE DLOAD
TTPI
STCALL TDEC1 # ADVANCE ACTIVE VEHICLE TO TPI
CSMCONIC CALL
CSMSTORE
VLOAD
RACT3
ABVAL PDVL # /RA/ 0D PL 2D
RPASS3
UNIT PDDL # UNIT RP 0D PL 6D
BDSU SET 36D # /RP/ -/RA/
KFLAG # OFF = +
BMN CLEAR
+2
KFLAG # ON = - STOVL DELHITE 0D
VXV UNIT
VPASS3 STOVL E2 # ALMOST IT SAVE FOR 17.2
RACT3 PUSH VPROJ
E2
VSL2 BVSU# RPA
UNIT DOT 0D
SL1 ACOS
PDVL
VXV DOT # Page 553
RACT3
E2
PDDL SIGN STADR STODL THETZERO # CENTRAL ANGLE
X1
STCALL XRS # SAVE INDICES FOR FURTHER USE
NORMEX # += ACTIVE AHEAD -= ACTIVE BEHIND
S17.2 STQ VLOAD # COMPUTE SEARCH SECTOR LIMITS
QTEMP
RACT3
UNIT DOT
E2
ABS SQRT
SL1 DAD
DP-.002# ADD .002 RADIANS TO IT
BON DCOMP # GIVES CORRECT SINE, COSINE MUST BE
KFLAG # COMP. ADD .5 FOR ANGLE
+1 # PHI(0)=180-(-(THETAZERO +K5IT)), PHI(I)=180-(-THETAZERO+K2IT)) # SIN(180-ALPHA)=SIN(ALPHA) ETC
DMP SETPD
PIINVERS # REVOLUTIONARY HERES TWO IT 0D PUSH DSU
THETZERO STORE IT # PHI(I) , -(THETZERO + K2IT)
PDDL PUSH
SR1 DAD
DAD PUSH# PHI(0) , -(THETZERO + K5IT)
SIN SET
RVSW STODL SNTH
COS BMN
+2
DCOMP STODL CSTH
XRS STOVL X1
RPASS3
VSR* 0,2 STOVL RVEC
VPASS3
VSR* 0,2
STCALL VVEC
TIMETHET DLOAD# SAVE START TIME AND GET END TIME
T # Page 554 STORE TF STODL TFO
IT PUSH SIN STODL SNTH
COS BMN
+2
DCOMP STORE CSTH
LXA,1CALL
XRS
TIMETHET # INITIALIZE LOOP DLOAD CLEAR
T
ITSWICH STODL TFI # SAVE TIME FOR LOOP TEST
DPPOSMAX STODL DELVEE
MANYFEET STODL HP
SEC1THET # 70 DEGREES
BON DLOAD
KFLAG
+2
SEC2THET # 330 DEGREES
STCALL THETL
CONCAUL
BIS DLOAD SR1
CSTH STODL COSTH
SNTH
SR1
STCALL SINTH # GET 4 QUADRANT THETA
ARCTRIG
BPL DAD
+2
DPPOSMAX # PUT THETA BETWEEN 0,1
BDSU PDDL
THETL
TF
DSU SIGN # FAST TIMES
TFI
BMN
RNGETEST # TIME MUST HAVE A STOP # ADVANCE PASSIVE FOR TARGET VECTOR
CONCAUL DLOAD
TTPI
DAD BON
TF # Page 555
AVFLAG
ADVCSM
STCALL TDEC1
LEMCONIC
GOTO
JUNCT3
ADVCSM STCALL TDEC1
CSMCONIC # SAVE BACK VALUES OF HP AND DELVEE
JUNCT3 VLOAD
VATT STOVL VPASS4
RATT STORE RPASS4 STODL RTARG
TF STODL DELLT4
HP STODL HPO
DELVEE STODL DELVEO # PREPARE FOR LAMBERT
TTPI STODL INTIME
XRS STODL RTX1
HI6ZEROS
SETPD PDDL 0D
EPSFOUR
PDVL
RACT3 STOVL RINIT
VACT3
STCALL VINIT
INITVEL # COMPUTE H ET CETERA
VLOAD VSU
VTPRIME
VPASS4
ABVAL PUSH STOVL RELDELV # /V2-VP(TPI+TF)/
DELVEET3 # V1-VA
ABVAL # /V1-VA/ STORE MAGVTPI
DAD STADR STODL DELVEE
XRS STOVL X1
VIPRIME # Page 556
VSR* 0,2 STOVL VVEC
RACT3
VSR* 0,2
STCALL RVEC
PERIAPO
LXA,2DLOAD
XRS +1
SL* 0,2 STORE HP # ITSWICH DENOTES INTERPOLATION--SOLUTION ACCEPTANCE IS FORCED
BON DLOAD
ITSWICH
ENDEN
HPERMIN
DSU BMN
HP
HALFSAFE
PDDL DSU # WAS PERICENTER ALT SAFE
HPERMIN
HPO
BMN DSU # (HPLIM-HPO)-(HPLIM-HP)=HP-HPO
INTERP # SOLUTION AT HAND
BMN DLOAD
ALARUMS # IT'S GETTING WORSE - SOUND THE ALARM
CDSEC
JUNCT1 BOFF DCOMP # OFF IS PLUS ON IS MINUS
KFLAG
+1 STORE DELTEE
JUNCT2 DLOAD DAD
DELTEE
TF
STCALL TF
BIS # RECYCLE
INTERP SET DSU # HP-HPO
ITSWICH
NORM PDDL
X1
DFTMOON
DAD DSU
HPERMIN
HP
NORM SR1
X2
XSU,2 DDV
X1 # Page 557
DMP SR*
DELTEE 0 -1,2
STCALL DELTEE
JUNCT2
HALFSAFE PDDL DSU # SAVE HP-HPLIM FOR POSSIBLE
DELVEE
DELVEO # SAVE THIS TOO PUSH ABS
DSU BMN
LIMVEL # 2 FT PS
ENDEN DLOAD DSU
HPERMIN
HPO
PDDL
BMN DLOAD
LRGRDVO
BPL DLOAD
INTERP
DELTEE
SR1 DCOMP
STCALL DELTEE
JUNCT2
LRGRDVO DLOAD
BMN DLOAD
JUNCT2
CLSEC
GOTO
JUNCT1 # TIME RAN OUT ASSUME SOLUTION IF SAVE PERICENTER
RNGETEST DLOAD DSU
HP
HPERMIN
BMN DLOAD
ALARUMS
TF
DSU
DELTEE STORE TF # TIME OF SOLUTION
ENDEN VLOAD
VTPRIME
DOT PDDL # SG2 WITH MAGNITUDE
RPASS4
RELDELV
SIGN STADR# NOW SIGN(RELDELV)=SIGN(SG2)
STCALL RELDELV
TRANSANG # COMPUTE OMEGA T , CENTRAL ANGLE
VLOAD DOT
RACT3 # Page 558
VIPRIME # SG1
SIGN BPL # IF POSITIVE THEN SG1 = SG2 OTHERWISE
RELDELV
USEKAY # SIGN(SG2-SG1)=SIGN(SG2)=SIGN(RELDELV) SLOAD DCOMP
DECTWO
SIGN BPL
RELDELV
NEXUS
DCOMP GOTO
USEKAY +4
USEKAY SLOAD BON
DECTWO
KFLAG
NEXUS
DSU
P21ONENN
NEXUS STODL NN1
HP
STCALL POSTTPI
QTEMP BANK07 SETLOC XANG BANK COUNT07/XANG
# CENTRAL ANGLE SUBROUTINE # THIS SUBROUTINE COMPUTES THE CENTRAL ANGLE OF TRAVEL OF THE # PASSIVE VEHICLE DURING THE TRANSFER.
TRANSANG STQ SETPD
SUBEXIT 0
LXA,1 LXA,2
XRS
XRS +1
VLOAD VSR*
VPASS4 0,2 STODL* VVEC
MUTABLE +2,1
PDVL VSR* # SQRT MU (+18 OR +15) 00D
RPASS4 0,2
ABVAL PDDL* # MAGNITUDE OF R (+29 OR +27) 02D
MUTABLE,1
PDVL VSQ # 1/MU (+34 OR +28) 04D
VVEC
NORM DMPR # PUSH LIST AT 02D
X1 # Page 559
DMP SRR* 02D 0 -3,1
BDSU # R V**/MU (+6)
D1/32
NORM PDDL
X1 # (2 - R V**/MU) (+6-N)
SR1R DDV # MAGNITUDE OF R (+30 OR +28)
SL* PUSH# R/(2 - R V**/MU) (+29 OR +27)02D 0 -5,1
SR1 SQRT
DMP
NORM PDDL # ASUBP*** 00D
X1
SR1 DDV
DMP SL*
TF 0,1
PDDL NORM 2PISC
X1
PDDL DDV
SL* 0 -3,1# CENTANG = (SQRT(MU/ASUP***)TF)
STCALL CENTANG # IN REVOLUTIONS B-0
SUBEXIT BANK35 SETLOC P17S1 BANK COUNT35/P17
# TPI SEARCH DISPLAY ROUTNE
P17 TC AVFLAGA # AVFLAG = CSM , SET TRACK + UPDATE FLAGS TC P17.1
P77 TC AVFLAGP # AVFLAG = LEM , SET TRACK + UPDATE FLAGS
P17.1TC P20FLGON # SET UPDATE FLAG CAF V06N37 # DISPLAY TTPI TIME TC VNPOOH TC INTPRET
CLEAR CALL
UPDATFLG
S17.1# UPDATE STATE VECTORS TO TTPI
SET AXT,1
UPDATFLG DEC2# DELTA H = 2 K POSITIVE , KFLAG OFF
BOFF AXT,1
KFLAG
+2 DEC1# DELTA H = 1 K NEGATIVE , KFLAG ON # Page 560
SXA,1EXIT
OPTION2 CAF V06N72 # DISPLAY PHI , DELTA H , SEARCH OPTION K TC VNCOMP17 TC INTPRET
CLEAR SET
UPDATFLG
KFLAG SLOAD DSU
OPTION2 # RESET KFLAG ON FOR OPTION =1
P21ONENN # OFF FOR OPTION =2
BHIZ CLEAR
+2
KFLAG SLOAD BHIZ
XRS +1
+4 DLOAD GOTO
HPL
P17.2 DLOAD
HPE
P17.2 STCALL HPERMIN
S17.2
SET EXIT
UPDATFLG
P17.3CAF V06N58 # DISPLAY DELTA VTPI , DELTA VTPF , AND H TC VNCOMP17 CAF V06N55 # DISPLAY PERICENTER CODE AND CENTRAL ANG. TC BANKCALL CADR GOFLASHR TC GOTOPOOH # TERMINATE PROGRAM TC GOTOPOOH # END PROGRAM TC P17.1# RECYCLE WITH NEW TTPI OR SEARCH OPTION CAF TWO # BLANK R2 TC BLANKET TCF ENDOFJOB EBANK= RTRN
VNCOMP17 EXTEND QXCH QSAVED TS VERBNOUN CA VERBNOUN
TCR BANKCALL CADR GOFLASH TC -3# TERMINATE ILLEGAL REDISPLAY TC QSAVED # PROCEED CS MPAC # RECYCLE WITH NEW TPI TIME AD BIT6 # OR PROCEED WITH NEW SEARCH OPTION EXTEND # Page 561 BZF P17.1 TC VNCOMP17 +3
ALARUMS SET EXIT
UPDATFLG TC ALARM OCT00124# NO SAFE PERICENTER IN THIS SECTOR CAF V05N09 TC VNCOMP17 TC GOTOPOOH # PROCEED ILLEGAL TERMINATE PROGRAM
V06N72 VN0672
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-12)
¤
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.