# Copyright: Public domain. # Filename: REENTRY_CONTROL.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: 844-882 # Mod history: 2009-05-08 RSB Adapted from the Colossus249/ file of the # same name, using Comanche055 page images. # 2009-05-23 RSB In a couple of 2OCT statements, removed the # space between the first and second octal words. # # 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
LAD
DMP DAD
Q21
Q22 STORE Q2 # Q2 = -1152 + 500 LAD
SSP SSP
GOTOADDR # SET SELECTOR FOR INITIAL PASS
INITROLL
POSEXIT
SCALEPOP # SET CM/POSE TO CONTINUE AT SCALEPOP
RTB
SERVNOUT # OMIT INITIAL DISPLAY, SINCE 1ST GUESSBAD
# CALCULATE THE INITIAL TARGET VECTOR: RTINIT, ALSO RTEAST, RTNORM AND RT. ALL ARE .5 UNIT AND IN # REFERENCE COORDINATES.
STARTEN1 STQ VLOAD
GOTOADDR
LAT(SPL) # TARGET COORDINATES
CLEAR CLEAR # DO CALL USING PAD RADIUS. WILL UNIT IT.
ERADFLAG # ANYWAY.
LUNAFLAG STODL LAT 3ZEROS
STODL LAT +4# SET ALT=0.
PIPTIME # ESTABLISH RTINIT AT TIME OF PRESENT # Page 846 # RN AND VN.
STCALL TIME/RTO # SAVE TIME BASE OF RTINIT.
LALOTORV # C(MPAC) =TIME (PIPTIME)
UNIT # ANSWER IN ALPHAV ALSO STODL RTINIT # .5 UNIT TARGET REF COORDS 500SEC # NOMINAL ENTRY TIME FOR P63 # TIME/RTO = PIPTIME, STILL.
STCALL DTEAROT # INITIALIZE EARROT
EARROT1 # GET RT
DOT SL1
UNITR # RT/2 IN MPAC
ACOS
STCALL THETAH # RANGE ANGLE /360
GOTOADDR # RETURN TO CALLER
REFAZE10 TC PHASCHNG OCT10035# SERVICER 5.3 RESTART AT REFAZE10
TC INTPRET
# JUMP TO PARTICULAR RE-ENTRY PHASE: #SEQUENCE
GOTO
GOTOADDR
# GOTOADDR CONTAINS THE ADDRESS OF THE ROLL COMMAND EQUATIONS TO THE CURRENT PHASE OF # RE-ENTRY. SEQUENCING IS AS FOLLOWS: # # INITROLL ADDRESS IS SET HERE INITIALLY. HOLDS INITIAL ROLL ATTITUDE UNTIL KAT IS EXCEEDED. THEN HOLDS NEW ROLL # ATTITUDE UNTIL VRTHRESH IS EXCEEDED. THEN BRANCHES TO # # HUNTEST THIS SECTION CHECKS TO SEE IF THE PREDICTED RANGE AT NOMINAL L/D FROM PRESENT CONDITIONS IS LESS # THAN THE DESIRED RANGE. # IF NOT --- A ROLL COMMAND IS GENERATED BY THE CONSTANT DRAG CONTROLLER. # IF SO --- CONTROL AND GOTOADDR ARE SET TO UPCONTRL. # USUALLY NO ITERATION IS INVOLVED EXCEPT IF THE RANGE DESIRED IS TOO LONG ON THE FIRST PASS THROUGH # HUNTEST. # # UPCONTRL CONTROLS ROLL DURING THE SUPER-CIRCULAR PHASE. UPCONTRL IS TERMINATED EITHER # (A) WHEN THE DRAG (AS MEASURED BY THE PIPAS) FALLS BELOW Q7, OR # (B) IF RDOT IS NEGATIVE AND REFERENCE VL EXCEEDS V. # IN CASE (A), GOTOADDR IS SET TO KEP2 AND IN CASE (B), TO PREDICT3 SKIPPING THE KEPLER PHASE OF # ENTRY. # # KEP2 GOTOADDR IS SET HERE DURING THE KEPLER PHASE TO MONITOR DRAG. THE SPACECRAFT IS INSTANTANEOUSLY # TRIMMED IN PITCH AND YAW TO THE COMPUTED RELATIVE VELOCITY. THE LAST COMPUTED ROLL ANGLE IS MAINTAINED. # WHEN THE MEASURED DRAG EXCEEDS Q7 +0.5, GOTOADDR IS SET TO # # PREDICT3 THIS CONTROLS THE FINAL SUB-ORBITAL PHASE. ROLL COMMANDS CEASE # WHEN V IS LESS THAN VQUIT . AN EXIT IS MADE TO # # P67.1 THE LAST COMPUTED ROLL ANGLE IS MAINTAINED. RATE DAMPING IS DONE IN PITCH AND YAW. PRESENT LATITUDE # AND LONGITUDE ARE COMPUTED FOR DISPLAY. # ENTRY IS TERMINATED WHEN DISKY RESPONSE IS MADE TO TO THIS FINAL FLASHING DISPLAY.
# Page 848 # PROCESS AVERAGE G OUTPUT...SCALE IT AND GET INPUT DATA
# * START TARGETING ...
EBANK= RTINIT
# TARGETNG IS CALLED BY P61, FROM GROUP 4. # TARGETNG IS CALLED BY ENTRY, FROM GROUP 5.
# ALL MM COME HERE.
TARGETNG BOFF VLOAD # ENTER WITH PROPER EB FROM CM/POSE(TEST)
RELVELSW # RELVELSW = 96D BIT9
GETVEL # WANT INERTIAL VEL. GO GET IT.
-VREL # NEW V IS RELATIVE, CONTINUE
VCOMP GOTO # (VREL) = (V) + KWE UNITR*UNITW
GETUNITV -1# - VREL WAS LEFT BY CM/POSE
GETVEL VLOAD VXSC# INERTIAL V WANTED VN# KVSCALE = (12800 / .3048) / 2VS
KVSCALE # KVSCALE = .81491944 STORE VEL # V/2 VS
GETUNITV UNIT STQ 60GENRET STODL UNITV 34D STORE VSQUARE # VSQ/4
VEL
DOT SL1 # RDOT= V.UNITR
UNITR STOVL RDOT # RDOT /2 VS
DELV # PIPA COUNTS IN PLATFORM COORDS.
ABVAL DMP
KASCALE
SL1 BZE
SETMIND
DSTORE STOVL D # ACCELERATION USED TO APPROX DRAG
VEL
VXV UNIT # UNI = UNIT(V*R) # Page 849
UNITR STORE UNI # .5 UNI REF COORDS.
BOFF DLOAD
RELVELSW
GETETA 3ZEROS
UPDATERT DSU DAD # PIPTIME-TIME/RTO =ELAPSED TIME SINCE # RTINIT WAS ESTABLISHED.
TIME/RTO
PIPTIME
STCALL DTEAROT # GET PREDICTED TARGET VECTOR RT
EARROT2
DOT SETPD # SINCE (RT) UNIT VECT, THIS IS 1/4 MAX
UNI # LATANG = RT.UNI 0 STOVL LATANG # LATANG = MAC LATANG / 4
RT
CLEAR
GONEBY # SHOW HAVE NOT GONE PAST TARGET.
VXV DOT # IF RT*UNITR.UNI NEG, GONEBY=1
UNITR # GONEPAST IS CONDITIONAL SW SET IN
UNI # FINAL PHASE.
BPL SET
+2
GONEBY # SHOW HAVE GONE PAST TARGET.
VLOAD
RT
GETANGLE DOT DSU # THETA = ARCCOS(RT.UNITR)
UNITR
NEAR1/4# TO IMPROVE ACCURACY, CALC RANGE BY
BPL DAD # TINYTHET IF HIGH ORDER PART OF
TINYTHET # ARCCOS ARGUMENT IS ZERO
NEAR1/4
SL1 ACOS
THETDONE STORE THETAH # THETAH/360 # HI WORD, LO BIT =1.32 NM=360 60/16384
BON DCOMP
GONEBY # =1 IF HAVE GONE PAST TARGET. # (SIGN MAY BECOME ERRATIC VERY NEAR # TARGET DUE TO LOSS OF PRECISION.)
+1 STODL RTGON67 # RANGE ERROR: NEG IF WILL FALL SHORT.
D
DSU BMN # Page 850
.05G
NO.05G
SET VLOAD
.05GSW
DELVREF PUSH DOT
UXA/2
SL1 DSQ
PDVL VSQ # EXCHANGE WITH PDL.
DSU DDV 0
BOV SQRT
NOLDCALC # OVFL LAST CLEARED IN EARROT2 ABOVE. STORE L/DCALC
NOLDCALC GOTO 60GENRET
NO.05G CLEAR GOTO # THIS WAY FOR DAP. (MAY INTERRUPT)
.05GSW # .05GSW = 102D B3
NOLDCALC # KEEP SINGLE EXIT FOR TARGETNG
# Page 851 # SUBROUTINES CALLED BY SCALEPOP (TARGETING):
BANK26 SETLOC REENTRY1 BANK
COUNT* $$/ENTRY
GETETA DLOAD DDV # D = D +D(-RDOT/HS -2D/V) DT/2 # DT/2 = 2/2 =1
RDOT
-HSCALED
PDDL DMP
D
-KSCALE
DDV DAD
V # -RDOT/HS FROM PDL.
DMP DAD
D
D STORE D
SUBETA DLOAD DSU # SWITCH FROM INERTIAL TO RELATIVE VEL.
V
VMIN
BPL SET
SUBETA2
RELVELSW
SUBETA2 DLOAD DMP
THETAH
KT1 # KT1 = KT
DDV GOTO
V # KT = RE(2 PI)/2 VS 16384 163.84/ 2 VSAT
UPDATERT
SETMIND DLOAD GOTO 1BITDP
DSTORE
# Page 852
TINYTHET DSU ABS # ENTER WITH X-.249 1BITDP +1# GET 1/4 - MPAC
SL SQRT # SCALE UP BEFORE SQRT 13D # HAS FACTOR FOR UP SCALING
DMP GOTO
KACOS
THETDONE
# Page 853 # * START INITIAL ROLL ...
BANK25 SETLOC REENTRY BANK
COUNT* $$/ENTRY
# MM = 63 , 64 ..
INITROLL BON BOFF # IF D- .05G NEG, GO TO LIMITL/D
INRLSW
INITRL1
.05GSW
LIMITL/D
# MM = 64, NOW # 3 # KA = KA1 LEQ + KA2 DLOAD DSQ
LEQ
DMP DDV
LEQ 1/KA1 # = 25 /(64 1.8)
DAD RTB
KA2 # = .2
P64 # ROLLC VI RDOT # XXX.XX DEG XXXXX. FPS XXXXX. FPS STORE KAT
DSU BMN
KALIM
+4 DLOAD
KALIM STORE KAT DLOAD DSU # IF V-VFINAL1 NEG, GO TO FINAL PHASE.
V
VFINAL1
CLEAR BPL # (CAN'T CLEAR INRLSW AFTER HERE: RESTARTS)
GONEPAST # GONEPAST WAS INITIALLY SET=1 TO FORCE # ROLLC TO REMAIN AS DEFINED BY HEADSUP # UNTIL START OF P64. (UNTIL D > .05G)
D0EQ
SSP GOTO
GOTOADDR
KEP2 # AND IDLE UNTIL D > 0.2 G. (NO P66 HERE)
INROLOUT # GO TO LIMITL/D AFTER SETTING INRLSW.
D0EQ DLOAD DMP # D0 = KA3 LEQ + KA4 # Page 854
LEQ
KA3
DAD
KA4 STORE D0 # D0/805
BDDV BOV
C001 # (-4/25 G) B-8
+1# CLEAR OVFIND, IF ON. STODL C/D0 # (-4/D0) B-8
LAD # IF V-VFINAL +K(RDOT/V)CUBED POS,L/D=-LAD STODL L/D
RDOT
DDV PUSH
V
DSQ DMP
DDV DSU 1/K44
VFINAL # 3 # V-VFINAL +(RDOT/V) / K44 OVFL $
DAD BOV
V
INROLOUT # GO TO LIMITL/D AFTER SETTING INRLSW.
BMN DLOAD
INROLOUT # GO TO LIMITL/D AFTER SETTING INRLSW.
LAD
DCOMP STORE L/D
# SET INRLSW AT END FOR RESTART PROTECTION
INROLOUT BOFSET # END OF PRE .05G PATH OF INITROLL.
INRLSW # SWITCH IS ZERO INITIALLY.
LIMITL/D # (GO TO)
KATEST DLOAD DSU # IF KAT - D POS, GO TO CONSTD
KAT
D # IF POS, OUT WITH COMMAND VIA LIMITL/D
BPL GOTO
LIMITL/D
CONSTD
INITRL1 DLOAD DAD # IF RDOT + VRCONT POS, GO TO HUNTEST
RDOT
VRCONT
BMN CALL# IF POSITIVE, FALL INTO HUNTEST.
KATEST
FOREHUNT # INITIALIZE HUNTEST.
# Page 855 # * START HUNT TEST .. # MM = 64
SSP # INITIALIZE HUNTEST ON FIRST PASS
GOTOADDR
HUNTEST # MUST GO AFTER FOREHUNT FOR RESTARTS.
# FOR TM, STORE RANGE COMPONENTS OVERLAPPING (SP)
VL
DMP DAD # ASP1 = Q2 + Q3 VL
Q3
Q2 STORE ASP1 # FINAL PHASE RANGE ASP1/2 PI
PDDL DSQ # ASP1 TO PDL 2.
V1 # 2 # ASPUP= -C12 LOG(V1 Q7/VBARS A0)/GAMMAL1
DMP DDV
Q7
VBARS
DDV CALL
A0
LOG # RETURN WITH -LOG IN MPAC
DMP DDV
C12
GAMMAL1 STORE ASPUP # UP PHASE RANGE ASPUP / 2 PI # Page 860
PDDL DMP # ASPUP TO PDL 4.
KC3 # KC3 = -4 VS VS / 2 PI 805 RE # ASPDWN = KC3 RDOT V / A0
RDOT
DMP DDV
V
A0
DDV PUSH# ASPDWN TO PDL 6.
LAD STODL ASPDWN # RANGE TO PULL OUT ASPDWN /2 PI
ASKEP # GET HI-WD AND STODL ASPS(TM) # SAVE HI-WORD OF ASP'S FOR TM.
ASP3
DAD DAD # ASPDWN FROM PDL 6. # ASPUP FROM PDL 4.
DAD DAD # ASP1 FROM PDL 2. # ASKEP FROM PDL 0.
DSU BOVB # CLEAR OVFIND.
THETAH
TCDANZIG STORE DIFF # DIFF = (ASP-THETAH) / 2 PI # ASP=ASKEP+ASP1+ASPUP+ASP3+ASPDWN = TOTAL RANGE
ABS DSU # IF ABS(THETAH-ASP) -25NM NEG, GO TO UPSY 25NM
BMN BON
GOTOUPSY
HIND
GETLEWD
DLOAD BPL
DIFF
DCONSTD # EVENTUALLY SETS MODE = HUNTEST.
GETDLEWD DLOAD DMP # DLEWD = DLEWD (DIFF/(DIFFOLD-DIFF))
DLEWD
DIFF
PDDL DSU
DIFFOLD
DIFF # Page 861
BDDV
LWDSTORE STADR STORE DLEWD
DAD BMN # IF LEWD+DLEWD NEG, DLEWD=-LEWD/2
LEWD
LEWDPTR
BOV
LEWDOVFL STORE LEWD
SIDETRAK EXIT
CA EBENTRY TSEBANK
CA PRIO16 # DROP GRP 5 RESTART PRIO TO 1 LESS THAN TS PHSPRDT5 # GRP 4.
TC PHASCHNG OCT00474# RESTART GRP 4 AT PRE-HUNT. # FORCE RESTART TO PICK UP IN GRP 4: # USE PRIO 17 FOR GRP 4 (< SERVICER PRIO) CA PRIO16 # CONTINUE GRP 5 AT LOWER PRIO THAN EITHER # GRP 4 OR SERVICER. TC PRIOCHNG
CAF ADENDEXT # SIDETRACK NEXT PASS UNTIL THIS ONE DONE. TS GOTOADDR # ONLY AFTER RESTART IS LEFT AFTER DETOUR.
TC INTPRET
DLOAD SET
DIFF
HIND STODL DIFFOLD # DIFFOLD / 2 PI
Q7F
STCALL Q7 # Q7 / 805 FPSS
HUNTEST # (GO TO)
LEWDOVFL DLOAD
NEARONE
STCALL LEWD
DCONSTD # (GO TO) ALSO WILL SET MODE = HUNTEST
LEWDPTR DLOAD SR1
LEWD
DCOMP GOTO
LWDSTORE
# Page 862 # NEGAMA IS PART OF HUNTEST ...
NEGAMA DMP DMP # ENTER WITH GAMMAL IN MPAC
VL 1/3RD
PDDL DMP # PUSH GAMMAL VL/3
LEWD 1/3RD
PDDL DAD # PUSH LEWD/3
AHOOKDV 1/24TH
DMP DMP # DEL VL = (GAMMAL VL/3)/(LEWD/3-DVL
DVL # (2/3 + AHOOKDV)(CH1 GS/DHOOK VL))
CH1
DDV DDV
DHOOK
VL
BDSU BDDV # LEWD/3 # GAMMAL VL /3
DAD
VL
STCALL VL # VL/2 VS
# Page 864 # * START UP CONTROL ... # MM = 65
GOTOUPSY RTB # END OF HUNTEST
P65 # HUNTEST USE OF GRP4 IS DISABLED BY P65 # USE FOR DISPLAY. # SET MODE = UPCONTRL. # RETURN FROM P65 DIRECTLY TO UPCONTRL # VIA THE GOTOADDR AT REFAZE10.
UPCONTRL DLOAD DSU # IF D-140 POS, NOSWITCH =1
D # (SUPPRESS LATERAL SWITCH)
C21
BMN SET
+2
NOSWITCH
DLOAD DSU # IF V-V1 POS, GO TO DOWN CONTROL.
V
V1
BPL DLOAD
DOWNCNTL
D
DSU BMN # IF D- Q7 NEG, GO TO KEP
Q7
KEP DLOAD BPL # IF RDOT NEG, DO VLTEST
RDOT
CONT1
VLTEST DLOAD DSU # IF V-VL-C18 NEG,EGSW=1,MODE=PREDICT3
V
VL
DSU BMN
C18
PREFINAL
CONT1 DLOAD# IF D-A0 POS, L/D = LAD, GO TO LIMITL/D
D
DSU BMN
A0
CONT3 DLOAD GOTO
LAD
STOREL/D
CONT3 DLOAD DMP # VREF=FACT1(1-SQRT(FACT2 D + ALP))
D
FACT2 # Page 865
DAD SQRT
ALP
BDSU DMP
BARELY1
FACT1 STORE VREF # VREF / 2VS
-1/KB2 # DELTA L/D INTO PDL
BOV ABS # NONLINEAR CIRCUIT FOR REDUCING HIGH GAIN
GOMAXL/D
DSU BMN
PT1/16
NEXT1
DMP DAD
POINT1
PT1/16
SIGN PUSH# ATTACH SIGN OF PUSH TO MPAC THEN PUSH
NEXT1 DLOAD SL4 # DELTA L/D FROM PDL.
DAD
LEWD
NEGTESTS BOV PUSH# L/D TO PDL FOR USE IN NEGTESTS.
GOMAXL/D STODL L/D # IF D-C20 POS, LATSW =0 # AND IF L/D NEG, L/D = 0.
D
DSU BMN
C20
LIMITL/D
CLEAR DLOAD
LATSW # =21D. ROLL OVER TOP, REGARDLESS. # L/D FROM PDL.
BPL DLOAD
LIMITL/D 3ZEROS
STCALL L/D
LIMITL/D # (GO TO)
# Page 867
DCONSTD DLOAD# TWO RANGER ENTRIES TO CONSTD HERE
DIFF # SAVE OLD VALUE OF DIFF FOR NEXT PASS. STODL DIFFOLD # DIFFOLD / 2 PI
Q7F STORE Q7
BECONSTD SSP RTB # A HUNTEST ENTRY INTO CONSTD.
GOTOADDR # RESET MODE TO HUNTEST
HUNTEST
KILLGRP4 # DEACTIVATE GRP4 FROM HUNTEST.
CONSTD BOVB
TCDANZIG # CLEAR OVF IND IF ON.
DLOAD DMP
LEQ
C/D0 # C/D0 = -4/D0 B-8
PDDL DMP # LEQ C/D0 INTO PDL 2HS # 2HS / 4 VS VS
D0
DDV DAD # RDOTREF = -2 HS D0/V
V
RDOT
DMP DAD
K2D # C/D0 LEQ + K2D(RDOT-RDOTREF) INTO PD
PDDL
D0 # D0 /805
CONSTD1 BDSU # ENTER WITH DREF IN MPAC
D
DMP DAD
K1D # K2D TERM FROM PUSH
SL GOTO 8D
NEGTESTS # (GO TO)
DOWNCNTL BOVB # INITIAL PART OF UPCONTROL.
TCDANZIG # CLEAR OVFIND, IF ON.
DLOAD SR
LAD 8D
PDDL DSU # RDTR = LAD(V1-V)
V
V1
DMP DAD
LAD # Page 868
RDOT
DMP DAD
K2D # PUSH UP LAD.
PDDL DSU # LAD + K2D(RDOT-RDTR) INTO PD
V1
V
DSQ DMP
LAD
DDV PDDL # (V1-V)SQ LAD/(2 C1 HS) INTO PD 2C1HS
V1
DSQ DDV
VSQUARE
BDDV DSU # DREF = (V/V1)SQ A0 - PD
A0 # PUSH UP HERE
GOTO # C(MPAC) = DREF
CONSTD1
# 2 2 # DREF = (V/V1) A0 -(V-V1) LAD/2 C1 HS # Page 869 # * START BALLISTIC PHASE ... # MM = 66 UPCONTRL ENTRY INTO KEP2.
KEP RTB SSP
P66 # DISPLAY TRIM GIMBAL ANGLE VALUES.
GOTOADDR # SET GOTOADDR TO KEPLER PHASE.
KEP2
# KEP2 CAN ALSO BE STARTED UP DIRECTLY FROM INITROLL # IN P64. PROGRAM WILL IDLE IN P64 UNTIL D EXCEEDS # .2 G BEFORE GOING ON TO P67.
KEP2 DLOAD DSU # IF Q7F+KDMIN -D NEG, GO TO FINAL PHASE.
Q7FKDMIN # (Q7F + KDMIN)/805
D
BMN TLOAD
PREFINAL # SET ROLLHOLD = ROLLC, IN CASE CMDAPMOD
ROLLC # = +1 EVER ENTERED.
BON TLOAD # IF D > .05G, KEEP PRESENT ROLL COMMAND.
.05GSW # IF D < .05G, SET ROLL COMMAND = 0.
+2 3ZEROS # SET ROLLC & ROLLHOLD =0.
+2 STCALL ROLLC # (SP ROLLHOLD FOLLOWS DP ROLLC)
P62.3# CALC DESIRED GIMBAL ANGLES AT PRESENT # RN, VN TO YIELD TRIM ATTITUDE. # AVAILABLE IN CPHI'S FOR N22. # Page 870 # START FINAL PHASE ... # MM = 67
PREFINAL SSP RTB
GOTOADDR # RESTART PROTECT: RESET GOTOADDR IF CAME
PREFINAL # FROM HUNTEST.
P67 # DISABLES GRP4. FINE IF FROM HUNTEST.BUT # MAY ALSO REMOVE RESTART PROTECTION OF # N69 (P65). # ROLLC XRNGERR DNRNGERR # XXX.XX DEG XXXX.X NM XXXX.X NM
SET SSP
EGSW
GOTOADDR
PREDICT3
PREDICT3 DLOAD DSU # IF V-VQUIT NEG, STOP STEERING
V
VQUIT
BMN EXIT
STEEROFF
CA EBENTRY # PRECAUTIONARY. TSEBANK
CA TWELVE
BACK TS JJ
CS V INDEX JJ AD VREFER # VREF - V, HIGHEST VREF AT END OF TABLE. CCS A # IF VREF-V POS LOOP BACK CCS JJ # DECREMENT JJ, JJ CANNOT BE ZERO TCF BACK AD ONE TS TEM1B # V-VREF IN TEM1B (MUST BE POSITIVE NUM)
INDEX JJ CS VREFER INDEX JJ AD VREFER +1# V(K+1) - V(K) (POS NUM) XCH TEM1B
ZL EXTEND
DV TEM1B TS GRAD # GRAD = (V-VREF)/(VK+1 - VK) (POS NUM
CAF FIVE
# Page 871
BACK2 TS MM CAF THIRTEEN ADS JJ INDEX A CS VREFER INDEX JJ AD VREFER +1# X(K+1) - X(K) EXTEND MP GRAD INDEX JJ AD VREFER INDEX MM TS FX # FX = AK + GRAD (AK+1 - AK) CCS MM TCF BACK2 XCH FX +1# ZERO FX +1 AND GET DREFR AD D EXTEND MP FX +5# F1 DXCH MPAC # MPAC = F1(D-DREF)
EXTEND
DCS RDOT # FORM RDOTREF - RDOT
DDOUBL
DDOUBL
DDOUBL # SCALE UP BY 8 FOR THIS PHASE. AD FX +3# RDOTREF EXTEND MP FX +4# F2 AD FX +2# RTOGO DAS MPAC # ADD F2(DADV1-DADVR) CA MPAC TS PREDANG # L/D = LOD + (THETA- PREDANG)/ Y TC INTPRET
SR3 DSU
THETAH
BON BOFF
GONEPAST
GONEGLAD
GONEBY
HAVDNRNG DLOAD SET # SET GONEPAST IF GONEBY SET & LATCH IN-PLACE
MAXRNG # DISPLAY = 9999.9 IF GONEBY
GONEPAST
STCALL DNRNGERR
GONEGLAD
HAVDNRNG STORE DNRNGERR # = (PREDANG - THETA) /360 # Page 872
DCOMP # FALL SHORT IF NEG, OVERSHOOT IF POS
BOVB DDV
TCDANZIG # CLEAR OVFIND IF ON.
FX # FX= DRANGE/D L/D = Y
SL BOV 5
GOMAXL/D
DAD BOV
LOD
GOMAXL/D
STCALL L/D
GLIMITER # (GO TO)
# GONEGLAD AND GOPOSMAX ENTRY POINTS FOR GLIMITER ...
GONEGLAD DLOAD# SET L/D = -LAD
GONEGLAD # (ANY NEGATIVE NUMBER WILL DO)
GOMAXL/D RTB DMP # L/D = LAD SIGN(MPAC)
SIGNMPAC
LAD STORE L/D # AND FALL INTO GLIMITER SECTION
GLIMITER DLOAD DSU # IF GMAX/2-D POS, GO TO LIMITL/D
GMAX/2
D
BPL DAD # IF GMAX -D NEG, GO TO GOPOSLAD
LIMITL/D
GMAX/2
BMN DMP
GOPOSLAD 2HS
PDDL DMP # 2HS(GMAX-D) INTO PD
LEQ 1/GMAX
DAD DMP
LAD
PDDL DDV # 2HS(GMAX-D) (LEQ/GMAX+LAD) INTO PD 2HSGMXSQ
VSQUARE
DAD SQRT # XLIM = SQRT(PD+(2HSGMAX/V)SQ)
DAD BPL # IF RDOT+XLIM POS, GO TO LIMITL/D
RDOT
LIMITL/D
GOPOSLAD DLOAD
LAD
STOREL/D STORE L/D
# Page 873
LIMITL/D DLOAD
L/D STODL L/D1
VSQUARE
BON # NO LATERAL CONTROL IF PAST TARGET
GONEPAST
L355
DMP DAD # Y= KLAT VSQUARE + LATBIAS
KLAT
LATBIAS # Y INTO PD
L350 PDDL ABS # IF ABS(L/D)-L/DCMINR NEG, GO TO L353
L/D
DSU BMN
L/DCMINR
L353 DLOAD SIGN # IF K2ROLL LATANG NEG, GO TO L357
LATANG
K2ROLL
BMN DLOAD
L357
SR1 PUSH# Y = Y/2
L353 DLOAD SIGN # IF LATANG SIGN(K2ROLL)-Y POS, SWITCH
LATANG
K2ROLL
DSU
BMN DLOAD
L355
K2ROLL
BONCLR DCOMP # IF NOSWITCH =1, K2ROLL= K2ROLL
NOSWITCH
L355 STORE K2ROLL # K2ROLL = -K2ROLL
L355 DLOAD DDV # ROLLC = ACOS( (L/D1) / LAD)
L/D1
LAD # MPAC SET TO +-1 IF OVERFLOW***
SR1 ACOS
SIGN CLEAR
K2ROLL
NOSWITCH STORE ROLLC
ENDEXIT EXIT
OVERNOUT CA BIT13 # ENTRYDSP =92D B13 MASK CM/FLAGS EXTEND BZF NODISKY # OMIT DISPLAY. # Page 874 CA ENTRYVN # ALL ENTRY DISPLAYS ARE DONE HERE. TC BANKCALL CADR REGODSPR # NO ABORT IF DISKY IN USE
NODISKY INHINT CCS NEWJOB # PROTECT READACCS GRP 5, IF SIDETRACKED. TC CHANG1
SERVNOUT TC POSTJUMP # ( COME HERE FROM P67.3 ) CADR SERVEXIT # AND END AVERAGEG JOB VIA ENDOFJOB.
# Page 875 # DISPLAY WHEN V IS LESS THAN VQUIT.
STEEROFF EXIT CA EBENTRY # PRECAUTIONARY. TSEBANK
CA PRIO16 # 2 LESS THAN NTRYPRIO. TC NOVAC EBANK= AOG # ANY EB HERE 2CADR P67.1# START UP REMAINDER OF P67
# RTOGO LAT LONG # XXXX.X NM XXX.XX DEG XXX.XX DEG
# Page 876 # TABLE USED FOR SUB-ORBITAL REFERENCE TRAJECTORY CONTROL.
VREFER DEC .019288# REFERENCE VELOCITY SCALED V/51532.3946 DEC .040809# 13 POINTS ARE STORED AS THE INDEPENDENT DEC .076107# VARIABLE AND THEN SIX 13 POINT FUNCTIONS DEC .122156# OF V ARE STORED CONSECUTIVELY DEC .165546 DEC .196012 DEC .271945 DEC .309533 DEC .356222 DEC .404192 DEC .448067 DEC .456023 DEC .67918# HIGHVELOCITY FOR SAFETY.
DEC -.010337# DRANGE/DA SCALED DRDA/(2700/805) DEC -.016550 DEC -.026935 DEC -.042039 DEC -.058974 DEC -.070721 DEC -.098538 DEC -.107482 DEC -.147762 DEC -.193289 DEC -.602557 DEC -.99999 DEC -.99999
DEC -.0478599 B-3# -DRANGE/DRDOT DEC -.0683663 B-3# SCALED ((2VS/8 2700) DR/DRDOT) DEC -.1343468 B-3 DEC -.2759846 B-3 DEC -.4731437 B-3 DEC -.6472087 B-3 DEC -1.171693 B-3 DEC -1.466382 B-3 DEC -1.905171 B-3 DEC -2.547990 B-3 DEC -4.151220 B-3 DEC -5.813617 B-3 DEC -5.813617 B-3
# Page 877 DEC -.0134001 B3 # RDOTREF SCALED (8 RDT/2VS) DEC -.013947 B3 DEC -.013462 B3 DEC -.011813 B3 DEC -.0095631 B3 DEC -.00806946 B3 DEC -.006828 B3 DEC -.00806946 B3 DEC -.0109791 B3 DEC -.0151498 B3 DEC -.0179817 B3 DEC -.0159061 B3 DEC -.0159061 B3
DEC .0008067# RANGE TO GO SCALED RTOGO/2700 DEC .0032963# 8.9 DEC .0081852# 22.1 DEC .017148 DEC .027926 DEC .037 DEC .063296 DEC .077889 DEC .098815 DEC .127519 DEC .186963 DEC .238148 DEC .294185185
DEC -.051099# -AREF/805 DEC -.074534 DEC -.101242 DEC -.116646 DEC -.122360 DEC -.127081 DEC -.147453 DEC -.155528 DEC -.149565 DEC -.118509 DEC -.034907 DEC -.007950 DEC -.007950
# Page 878 DEC .004491# DRANGE/D L/D SCALED Y/2700 DEC .008081 DEC .016030 DEC .035815 DEC .069422 DEC .104519 DEC .122 DEC .172407 DEC .252852 DEC .363148 DEC .512963 DEC .558519 DEC .558519# END OF STORED REFERENCE
# Page 879 # REENTRY CONSTANTS.
# DEFINED BY EQUALS
DEC15 = LOW4 #GAMMAL1 = 22D
MAXRNG 2OCT1663106755# DNRNGERR = 9999.9 IF GONEPAST=1
BANK26 SETLOC REENTRY1 BANK
COUNT* $$/ENTRY
BARELY1 = NEARONE # COMMON TO BOTH DISK,DANCE.DEFND IN TFF #1BITDP # COMMON TO BOTH DISK AND DANCE. DEFND IN VECPOINT.
1/12TH DEC .083333# DP 1/12 USES HI WORD IN 1/3 BELOW 1/3RD 2DEC .3333333333# DP 1/3
1/16TH = DP2(-4)
# BELOW: VS = VSAT = 25766.1973 FT/SEC
# RE = 21,202,900 FEET
LEWD1 2DEC .15
POINT1 2DEC .1
POINT2 2DEC .2# .2
DLEWD0 2DEC -.05# -.05
GMAX/22DEC .16# 8 GS / 2
3ZEROS EQUALS HI6ZEROS
NEAR1/42OCT0777700000# 1/4 LESS 1 BIT IN UPPER PART.
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.