Apollo-11/Comanche055/P61-P67.s

1227 lines
34 KiB
ArmAsm
Raw Normal View History

2016-07-07 08:47:26 +00:00
# Copyright: Public domain.
# Filename: P61-P67.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 789-818
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same
# name and Comanche 055 page images.
# 2009-05-20 RSB Corrections: V06N68 -> V06N74, added missing
# definition of V06N74, in several
# interpreter operands fixed stuff like
# N-M,1 to N -M,1
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# Prepared by
# Massachussets Institute of Technology
# 75 Cambridge Parkway
# Cambridge, Massachusetts
#
# under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information. Please report any errors to info@sandroid.org.
# Page 789
# PROGRAM: P61
# MOD NO.: 0 MAR. 13, 1967
# MOD BY: R. HIRSCHKOP
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 22 JUN 67 RESTARTS
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 17 JAN 68 COLOSSUS GSOP CHANGES
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 8 MAY 68 DELETE CMSM MANEUVER (PCR 50)
# FUNCTION: TO CALCULATE AND DISPLAY EMS INITIALIZATION DATA
# CALLING SEQUENCE: BY V37
# EXIT: TO P62
# SUBROUTINE CALLS: S61.1, S61.3, GOFLASH, FLAGUP, R02BOTH
# ERASABLE INITIALIZATION:
# EMSALT (-29) M .05G ALTITUDE ABOVE FISCHER ELLIPSOID PAD LOADED.
# ALFAPAD /180 HYPERSONIC CM TRIM ANGLE OF ATTACK PAD LOADED
# OUTPUT: THE FOLLOWING REGISTERS ARE WRITTEN IN FOR USE BY DISPLAYS
# GMAX 100 GMAX (-14) G,S MAXIMUM ACCELERATION
# VPRED (-7) M/CS PREDICTED VELOCITY AT 400K FT
# GAMMAEI (GAMMA/360 PREDICTED GAMMA AT 400K FT
# RTGO THETAH/360 RANGE ANGLE TO SPLASH FROM EMSALT EMSALT IS PAD LOADED
# VIO (-7) M/CS INERTIAL VELOCITY AT EMSALT EMSALT IS PAD LOADED
# TTE (-28) CS TIME TO EMSALT EMSALT IS PAD LOADED
# LAT(SPL) /360 TARGET LOCATION LEFT BY DSKY
# LNG(SPL) /360 TARGET LOCATION LEFT BY DSKY
# HEADSUP (0) +1 = LIFT DOWN, -1 = LIFT UP LEFT BY DSKY
# DEBRIS: SEE SUBROUTINES.
BANK 26
SETLOC P60S
BANK
EBANK= AOG
COUNT* $$/P61
P61 CA BIT14 # EXTENDED VERB SHOULD BE FREE THIS CLOSE
TS EXTVBACT # TO V37
# LOCK OUT EXTENDED VERBS SO CAN USE TFF
# ROUTINES. EXT VERB ERASE IS USED
CS ONE # REMOVE IF HEADSUP EVER ON UPLINK DATA
TS HEADSUP # PRELOAD
TC S61.1 # CHECK STATE VECTOR AND IMU ORIENTATION
# RV 50GENRET. DOES PHASCHNG, GROUP 4.
CA V06N61 # LAT(SPL) LNG(SPL) HEADSUP
# XXX.XX DEG XXX.XX DEG XXXXX.
TC BANKCALL
CADR GOFLASHR
TC GOTOP00H
# Page 790
TC P61.4
TC -5
P61.3 TC PHASCHNG
OCT 00014
TC ENDOFJOB
P61.4 ZL
CCS HEADSUP # C(HEADSUP)= +1/-1
CA BIT14 # IF HEADSUP POS,ROLLC =180 DEG.(LIFT DWN)
NOOP # IF HEADSUP NEG,ROLLC =0 (LIFT UP)
DXCH ROLLC # ROLLC IS USED BY S62.3: GIM ANG AT .05G
TC INTPRET
NEWRNVN DLOAD
PIPTIME # SAVE TIME OF RN,VN TO DETERMINE IF AN
STCALL MM # UPDATE HAS OCCURRED.
STARTEN1 # INITIALIZE
VLOAD
RN
STORE RONE
UNIT
STOVL URONE
VN
STORE VONE
VXV UNIT
URONE
STORE UNI
DUMPP61 DLOAD DSU
MM # INITIAL VALUE OF PIPTIME
PIPTIME
BMN CALRB
NEWRNVN # UPDATED... GO TRY AGAIN
S61.2 # GET DISPLAY DATA FOR N60 AND N63
# AND RETURN IN BASIC, BELOW.
P61.1 TC CLEARMRK
CA V06N60 # GMAX VPRED GAMMAEI
# XXX.XX G XXXXX. FPS XXX.XX DEG
TC BANKCALL
CADR GOFLASH
TC GOTOP00H
TC P61.2 # PROCEED
TC -5
P61.2 TC INTPRET # CORRECT TTE FOR TIME LAPSE DURING
# ABOVE DISPLAY.
RTB DSU
LOADTIME # CURRENT TIME.
# Page 791
MM # PIPTIME FOR RONE & VONE.
DAD
TTE1 # NEGATIVE OF FREE FALL TIME.
STORE TTE # DECREMENTED
EXIT
CA V06N63 # RTGO VIO TTE
# XXXX.X NM XXXXX. FPS XXBXX M,S
TC BANKCALL
CADR GOFLASH
TC GOTOP00H
TC +2
TC P61.2 # REDO
# .... THEN FALL INTO P62
# Page 792
# PROGRAM: P62
# MOD NO.: 0 MAR. 13, 1967
# MOD BY: R. HIRSCHKOP
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 22 JUN 67 RESTARTS.
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 17 JAN 68 COLOSSUS GSOP CHANGES.
# MOD NO: 4 MOD BY: RR BAIRNSFATHER DATE: 8 MAY 68 MOVE START OF DESIRED GIMBAL CALC.
# FUNCTION: 1) TO NOTIFY CREW WHEN GNC SYSTEM IS PREPARED FOR CM/SM SEPARATION.
# 2) TO ORIENT THE CM TO THE CORRECT ATTITUDE FOR ATMOSPHERIC ENTRY.
# CALLING SEQUENCE: BY V37 OR DIRECTLY FROM P61
# EXIT: TO P63
# ERASABLE INITIALIZATION:
# ALFAPAD LEFT BY PAD LOAD
# LADPAD LEFT BY PAD LOAD
# LODPAD LEFT BY PAD LOAD
# LAT(SPL) (MAY BE CHANGED BELOW) LEFT BY DSKY, VIA P61
# LNG(SPL) (MAY BE CHANGED BELOW) LEFT BY DSKY, VIA P61
# HEADSUP (MAY BE CHANGED BELOW) LEFT BY DSKY, VIA P61
# SUBROUTINE CALLS: NEWMODEX, S61.1, CM/DAPIC, CM/DAPON, R02BOTH, GOPERF1, GOFLASH, GODSPR.
COUNT* $$/P62
TC NEWMODEX # MODE CHANGE IF CAME FROM P61.
MM 62 # MODE CHANGE AUTOMATIC VIA V 37.
CA ONE
TS DNLSTCOD
P62 TC S61.1 # CHECK STATE VECTOR AND IMU ORIENTATION.
TC INTPRET
SSP RTB
POSEXIT
P62.3 # CALCULATE DESIRED .05G GIMBAL ANGLES.
# WITHOUT DISPLAY.
CM/DAPIC # START CM/POSE AND BODY RATE CALC
# DOES 2PHSCHNG, OCT 40116, OCT 05024, OCT 13000.
# CM/DAPIC SETS EBANK = EBAOG
# AND RETURNS IN BASIC TO P62.2.
P62.2 EXTEND
DCA POSECADR # CONTINUE WITH CM/POSE AFTER AV G.
DXCH AVEGEXIT
CAF OCT41 # REQUEST SEPARATION
TC BANKCALL
CADR GOPERF1R
TC GOTOP00H
TC +3 # PROCEED
# Page 793
# NOTE: NODOFLAG WILL BE SET IN CM/DAPON. ***
TC -5 # ENTER
TC P61.3 # FOR PHASCHNG AND ENDOFJOB
+3 TC POSTJUMP
CADR CM/DAPON # DISABLE RCS DAP, ENABLE ENTRY DAP AND
# DO ATTITUDE HOLD.
# WILL IDLE UNTIL CM/POSE DOES ONE UPDATE.
# CM/DAPON DOES NO PHASCHNG.
P62.1 CA V06N61 # LAT(SPL) LNG(SPL) HEADSUP
# XXX.XX DEG XXX.XX DEG 0000X.
# TERMINATE ATTITUDE HOLD. SET UP COMMANDS:
# ROLLC, ALFACOM, BETACOM. BEGIN MANEUVER TO
# ENTRY ATTITUDE.
TC BANKCALL
CADR GOFLASH
TC -3
TC +2
TC -5
TC PHASCHNG
OCT 04024 # USE ENTRYVN FOR DISPLAY BELOW.
# EBANK WAS SET IN CM/DAPON TO EBAOG
CCS HEADSUP # C(HEADSUP) = +/- 1
CA BIT14 # IF HEADSUP POS, ROLLC=180 DEG (LIFT DWN)
NOOP # IF HEADSUP NEG, ROLLC=0 DEG (LIFT UP)
TS ROLLC
CA ALFAPAD # NOMINAL ALFATRIM PAD LOADED, NEG. NO.
ZL
DXCH ALFACOM # SET ALFACOM = ALFA TRIM, BETACOM=0
CA ONE # PERMITS EXDAP2 TO CHANGE FLAG TO +0
TS P63FLAG # AS INDICATOR. STARTS UP P63.
CA V06N22 # SET UP DISPLAY FOR CDU DESIRED VALUES
TS ENTRYVN # FROM ENTRY ATTITUDE CALC, THAT IS
# ALREADY GOING.
TC UPFLAG # TURN ON ENTRY DISPLAY
ADRES ENTRYDSP # ENTRYDSP = 92D BIT 13 FLAG 6
SKIP
# Page 794
CS CMDAPMOD # GO DIRECTLY TO P63 IF BODY ATTITUDE
MASK ONE # IS SUCH THAT THE DELAY TASK: WAKEP62
EXTEND # WILL BE OMITTED.
BZF P63.1 # DISABLE GRP 4, GO TO ENDOFJOB.
# (I.E., CONTINUE IF CMDAPMOD = -1, OR +0)
TC P63
# PUT JOB TO SLEEP UNTIL VEHICLE MANEUVER HAS
# REDUCED ALFA TO +/-45 DEG. CONSIDER REMAINING
# 65 DEG (25 DEG IF ALFA NEG) TO ALFA TRIM TO
# OCCUR AT 3 DEG/SEC, AND TERMINATE P62 AT THAT
# TIME.
# TASK WAKEP62 IS CALLED FROM ENTRY DAP.
WAKEP62 CA PRIO13
TC NOVAC
EBANK= AOG
2CADR P63
TC TASKOVER
# EACH 2 SEC, CALCULATE GIMBAL ANGLES FOR ENTRY CON-
# DITIONS THAT WILL HOLD IF REORIENTATION WERE MADE
# AT PRESENT RN, VN. COME HERE FROM CM/POSE AND ALSO
# IN KEPLER PHASE OF ENTRY.
P62.3 SSP GOTO # SET RETURN ADDRESS SO THAT ROUTINE
QPRET # GOES DIRECTLY TO ENTRY GUIDANCE EXIT
ENDEXIT # THAT DOES ENTRY DISPLAY, GRP 5.
S62.3 # PUT DESIRED CDU VALUES IN CPHI'S FOR
# N22 DISPLAY.
# Page 795
# P63
# PROGRAM: P63
# MOD NO: 0 MAR. 13, 1967
# MOD BY: R. HIRSCHKOP
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 22 JUN 67 RESTARTS
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 14 JUL 67 REVISED RESTARTS
# FUNCTION: 1) TO INITIALIZE THE ENTRY EQUATIONS.
# 2) TO CONTINUE TO HOLD THE CM TO THE CORRECT ATTITUDE WITH RESPECT TO THE ATMOSPHERE FOR
# THE ONSET OF ENTRY DECELERATION. ROLL ANGLE IS LIFT UP/DOWN AS SPECIFIED BY HEADSUP.
# 3) TO SENSE .05G.
# CALLING SEQUENCE: DIRECTLY FROM P62
# EXIT: TO ENDOFJOB
# SUBROUTINE CALLS: NEWMODEX, GODSPR
COUNT* $$/P63
P63 TC NEWMODEX
MM 63
# ARRIVE WITH EBANK = AOG.
CA ENTCADR # CONTINUE AT STARTENT AFTER CM/POSE.
# AT END OF STATEMENT, CHANGE ADDRESS IN GOTOADDR
# TO CONTINUE AT SCALEPOP THEREAFTER.
TS POSEXIT
CA V06N64 # G VI R TO SPLSH
# XXX.XX G XXXX. FPS XXXX.X NM
TS ENTRYVN # FOR DISPLAY CALL IN OVERNOUT
CS ONE # IN CASE FLAG IS LEFT AT +1 BY DAP. THE
TS P63FLAG # -1 ASSURES THAT EXO-ATM DAP WILL NOT
# CALL P63 OUT OF SEQUENCE IN P66.
TC PHASCHNG # THIS IS REQUIRED TO PRESERVE CLEANDSP
OCT 00004 # RETURN IN EVENT OF AN EXTENDED VERB
TC BANKCALL # FLUSH 'N22' DISPLAY, IF ON, (OMIT
CADR CLEANDSP # DISPLAY DURING 'STARTENT' PASS.)
P63.1 TC PHASCHNG
OCT 00004 # DISABLE. DISPLAY RESTARTED VIA ENTRY.
TC ENDOFJOB
V06N60 VN 0660
V06N61 VN 0661
V06N63 VN 0663
# Page 796
V06N64 VN 0664
ENTCADR CADR STARTENT
EBANK= RTINIT # TO CARRY OVER INTO ENTRY STEERING.
POSECADR 2CADR CM/POSE
# Page 797
# PROGRAM: P64
# MOD NO: 1 SEPT. 19, 1967
# MOD BY: R. HIRSCHKOP
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 8 MAY 68 REVISED COMMENTS FOR COLOSSUS
# FUNCTION: 1. TO START ENTRY GUIDANCE AT .05G SELECTING ROLL ATTITUDE, CONSTANT DRAG LEVEL, AND
2016-07-08 10:45:31 +00:00
# DRAG THRESHOLD, KA, WHICH ARE KEYED TO THE .05G POINT.
2016-07-07 08:47:26 +00:00
# 2. SELECT FINAL PHASE P67 IF V < 27000 FPS WHEN .2G OCCURS.
# 3. ITERATE FOR UP-CONTROL SOLUTION P65 IF V > 27000 FPS AND IF ALTITUDE RATE AND DRAG
# LEVEL CONDITIONS ARE SATISFIED. ENTER P65 WHEN CONSTANT DRAG CONTROLLER HAS BROUGHT RANGE
# AS PREDICTED TO WITHIN 25 NM OF DESIRED RANGE.
# 4. SELECT FINAL PHASE P67 IF NO UP-CONTROL SOLUTION EXISTS WITH VL > 18000 FPS.
# CALLING SEQUENCE: BY RTB FROM REENTRY CONTROL
# EXIT: BACK TO REENTRY CONTROL.
# SUBROUTINE CALLS: NEWMODEX
BANK 25
SETLOC P60S1
BANK
# THIS DISPLAY IS CALLED EACH PASS THROUGH STEERING. RESTART PROTECTION IS VIA STEERING.
COUNT* $$/P64
P64 TC NEWMODEX # ENTER VIA RTB WHEN .05G IS EXCEEDED.
MM 64
CA V06N74 # ROLLC VI D
# XXX.XX DEG XXXXX. FPS XXX.XX G
TS ENTRYVN # DISPLAY VIA OVERNOUT.
TC DANZIG # ... AND CONTINUE IN INITROLL ...
V06N74 VN 0674
# Page 798
# PROGRAM: P65
# MOD NO: 0 MOD BY: RR BAIRNSFATHER DATE: 17 JAN 68 COLOSSUS GSOP ADDITION.
# FUNCTION: TO CONTINUE ENTRY GUIDANCE, USING THE UP-CONTROL PHASE TO STEER TO A CONTROLLED EXIT
# CONDITION. THIS PHASE TERMINATES A) IF D < Q7 FPSS, GOTO TO P66.
# B) IF RDOT NEG, AND IF V < VL +500 FPS, GO TO P67.
# CALLING SEQUENCE: BY RTB FROM REENTRY CONTROL
# EXIT: BACK TO REENTRY CONTROL, OR TO ENDOFJOB.
# SUBROUTINE CALLS: NEWMODEX
COUNT* $$/P65
P65 TC NEWMODEX # ENTER VIA RTB WHEN RANGE < 25 N M OF
MM 65 # TARGET.
CA PRIO13
TC NOVAC
EBANK= ENTRYVN
2CADR P65.1
TC 2PHSCHNG # 2 PHASE CHG REQUIRED TO PREVENT RE-
OCT 00554 # STARTING FLASHING DISPLAY TWICE.
OCT 10035 # 4.55 SPOT AND SERVICER, HERE.
TC INTPRET
SSP RTB
GOTOADDR # CHANGE ENTRY MODE TO UPCONTRL.
UPCONTRL
REFAZE10 # GO HERE TO REESTABLISH ENTRY SEQUENCER.
# AND CONTINUE AT UPCONTRL...
P65.1 TC DOWNFLAG
ADRES ENTRYDSP # ENTRYDSP = 92D BIT 13 FLAG 6
CA V16N69 # ROLLC DL (Q7) VL
TC BANKCALL # XXX.XX DEG XXX.XX G XXXXX. FPS
CADR GOFLASHR
TC -3 # NODOFLAG IS SET ...
TC +3
TC -5
TC P61.3 # EST. GRP 4 FOR DISPLAY AND DO ENDOFJOB
# IF PROCEED, CONTINUE
TC UPFLAG
ADRES ENTRYDSP # ENTRYDSP = 92D BIT 13 FLAG 6
TC P63.1 # DISABLE GRP 4, START UP ENTRY DISPLAY
# N06V68 VIA OVERNOUT, AS USED IN P64
V16N69 VN 1669
# Page 799
# PROGRAM: P66
# MOD NO: 0 MOD BY: RR BAIRNSFATHER DATE: 17 JAN 68 COLOSSUS GSOP ADDITIONS
# FUNCTION: KEEP CM ATTITUDE IN TRIM TO THE RELATIVE VELOCITY VECTOR. ENTRY GUIDANCE STOPS GENERATING
# ROLL COMMANDS UNTIL DRAG BUILDS UP TO Q7+0.5 FPSS.
# CALLING SEQUENCE: VIA RTB FROM REENTRY CONTROL.
# EXIT: BACK TO REENTRY CONTROL.
# SUBROUTINE CALLS: NEWMODEX
COUNT* $$/P66
P66 TC NEWMODEX # ENTER VIA RTB WHEN D < Q7 FPSS
MM 66
CA V06N22 # OGA IGA MGA
# XXX.XX DEG XXX.XX DEG XXX.XX DEG
TC P66END # IN CASE CAME FROM P65, GO TO DISABLE GRP 4,
# AND SET ENTRYDSP TO DO DISPLAY VIA
# OVERNOUT.
# ... AND CONTINUE AT KEP2
# Page 800
# PROGRAM: P67
# MOD NO: 0 MAR. 16, 1967
# MOD BY: R. HIRSCHKOP
# FUNCTION: TO TERMINATE STEERING WHEN THE CM VELOCITY WRT EARTH = 1000 FT/SEC
# CALLING SEQUENCE:
# EXIT: TO P00H
# SUBROUTINE CALLS: GOFLASH
# THIS DISPLAY IS CALLED EACH PASS THROUGH STEERING. RESTART PROTECTION IS VIA STEERING.
COUNT* $$/P67
P67 TC NEWMODEX # ENTER VIA RTB
MM 67
CA V06N66 # ROLLC XRNGERR DNRNGERR
# XXX.XX DEG XXXX.X NM XXXX.X NM
P66END TS ENTRYVN # DISPLAY VIA OVERNOUT.
TC UPFLAG # (IN CASE CAME FROM P65. ENTRY DISPLAY
ADRES ENTRYDSP # WILL FLUSH FLASHING DISP. IF STILL ON)
# BIT 13 FLAG 6
KILLGRP4 TC PHASCHNG # DISABLE GRP4, IN CASE CAME FROM HUNTEST.
OCT 00004 # (COME TO KILLGRP4 VIA RTB, RET TO CALLER)
TC DANZIG # ... AND CONTINUE AT PREDICT3 ...
V06N66 VN 0666
BANK 26
SETLOC P60S2
BANK
P67.1 CA V16N67 # RTOGO LAT LONG
# XXXX.X NM XXX.XX DEG XXX.XX DEG
TC BANKCALL
CADR GOFLASH
TC +3 # EFFECTIVE GOTOP00H
TC +2
TC P67.1 # REDO
CS THREE # TURN OFF ENTRY DAP
INHINT
MASK CM/FLAGS # CM/DSTBY, GAMDIFSW
TS CM/FLAGS
RELINT
EXTEND
DCA SERVCAD2
# Page 801
DXCH AVEGEXIT
TCF GOTOP00H
# Page 802
P67.2 VLOAD CLEAR # CALC PRESENT LAT, LONG, ALT.
RN
ERADFLAG # USE PAD RAD FOR ALT. (NOT SEEN ANYWAY)
STODL ALPHAV
PIPTIME # USE TIME OF RN
CLEAR CALL
LUNAFLAG
LAT-LONG
P67.3 RTB # ENTRY EXIT THAT OMITS DISPLAY.
SERVNOUT
V16N67 VN 1667
OCT41 = 33DEC
SERVCAD2 = SERVCAD1
# Page 803
# SUBROUTINE NAME: S61.1
# MOD NO: 0 DATE: 21 FEB 67
# MOD BY: RR BAIRNSFATHER LOG SECTION: P61-P67
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 22 JUN 67 RESTARTS.
#
# FUNCTIONAL DESCRIPTION: CALLED BY BOTH P61 AND P62
# FIRST, TEST TO SEE IF AVERAGEG IS ON. IF NOT, UPDATE THE STATE VECTOR TO PRESENT TIME + TOLERANCE
# AND TURN ON AVERAGEG AT THAT TIME, AND CONTINUE. OTHERWISE CONTINUE: SEE IF IMU Y AXIS IS
# WITHIN 30 DEG OF VAR. IF YES, EXIT SUBROUTINE S61.1. IF SO, SEE IF -Y AXIS OF IMU IS WITHIN
# 30 DEG OF VAR. IF YES, DISPLAY ALARM: 01427 IMU REVERSED.
# IF NO, DISPLAY ALARM: 01426 IMU UNSATISFACTORY.
# IN EITHER OF THESE LAST 2 CASES, WAIT 10 SEC AND THEN EXIT SUBROUTINE S61.1.
#
# REMARK: THERE WILL BE A SHORT 10 SEC DELAY IF AN ALARM EXIT IS TAKEN. THE DELAY FOR INTEGRATION IS
# AS SHORT AS CAN BE MADE, BUT IS ARBITRARY SINCE IT DEPENDS ON THE AGE OF THE STATE VECTOR.
#
# CALLING SEQUENCE: CALL
# S61.1
#
# C(MPAC) UNSPECIFIED
# PUSHLOC UNSPECIFIED
#
# SUBROUTINES CALLED: LOADTIME, CSMPREC, TPAGTREE,
# WAITLIST, JOBSLEEP, JOBWAKE, PREREAD, ALARM, GODSPR, BANKCALL, DELAYJOB
#
# NORMAL EXIT MODES: RVQ
#
# ALARMS: 01426 IMU UNSATISFACTORY
# 01427 IMU REVERSED
#
# OUTPUT: POSSIBLE ALARMS
# POSSIBLY TDEC1, RATT, VATT, RN, VN
#
# ERASABLE INITIALIZATION REQUIRED:
# AVEGFLAG AVERAGEG ON OR OFF LEFT BY SERVICER
# PIPTIME (-28) CS TIME OF PIPA UPDATE LEFT BY READACCS
# RN (-29) M STATE VECTOR LEFT BY AVERAGEG
# VN (-7) M/CS STATE VECTOR LEFT BY AVERAGEG
# REFSMMAT (-1) .5 REF TO SM MATRIX LEFT BY LAST IMU ALIGNMENT
#
# DEBRIS: QPRET
# POSSIBLY PIPTIME1, RATT, VATT, TDEC1, RN1, VN1, QTEMP, X1 IF UPDATED
# PUSH LIST LOCS USED BY CSMPREC
EBANK= AOG # FOR 60GENRET, S61DT
BANK 26
SETLOC P60S3
BANK
COUNT* $$/S61.1
S61.1 EXTEND
QXCH 60GENRET # SAVE RET ADDR IN EB 6
TC BANKCALL
CADR R02BOTH
TC INTPRET
# Page 804
BON CALRB
AVEGFLAG # IS AVERAGEG ON
S61.1A # YES
MIDTOAV2 # GET FUTURE STATE VECTOR SOON AS CAN
CA MPAC +1 # RETURN INHINTED ***
TS S61DT # FOR RESTART.
TC WAITLIST
EBANK= DVCNTR
2CADR S61.1C
TC PHASCHNG
OCT 40434
TC ENDOFJOB
S61.1C CA PRIO13
TC FINDVAC
EBANK= AOG
2CADR S61.1A -1
EXTEND
DCA SERVCAD1 # HE WHO START AVERAGEG MUST SERVICE
DXCH AVEGEXIT # THE EXIT.
TC 2PHSCHNG
OCT 00454
OCT 00415
CA EBENTRY # SET EB= 7 FOR PREREAD.
TS EBANK
TC POSTJUMP
CADR PREREAD # PREREAD DOES TC TASKOVER.
TC INTPRET
S61.1A BOVB VLOAD
TCDANZIG # TURN OFF OVFIND, IF ON
VN # VN (-7) M/CS
VXV MXV
RN # RN (-29) M
REFSMMAT # .5 UNIT MATRIX
UNIT DLOAD
MPAC +3 # GET COS(THETA)/2
BMN DAD
S61.1B # DO TEST ON -YSM
C(30)LIM # = 1.0 -.5 COS(30)
BOVB RTB
RETRN1
RETRN3
# Page 805
S61.1B DCOMP DAD
C(30)LIM # = 1.0 - .5 COS(30)
BOVB EXIT
RETRN2
RETRN3 TC ALARM
OCT 01426 # IMU UNSATISFACTORY
TC RETRN2 +2
RETRN2 TC ALARM
OCT 01427 # IMU REVERSED
+2 CAF V05N09
TC BANKCALL
CADR GODSPR # DO DISPLAY
CA 10SECS
TC BANKCALL
CADR DELAYJOB
RETRN1 TC 60GENRET
EBANK= DVCNTR
SERVCAD1 2CADR SERVEXIT
C(30)LIM 2DEC .566985 # = 1.0 - .5 COS(30)
10SECS DEC 1000 # 1000 CS
60SECDP 2DEC 6000 B-28 # 6000 CS
# Page 806
# PROGRAM NAME: S61.2 DATE: 14 FEB 67
# MOD NO: 1 LOG SECTION: P61-P67
# MOD BY: NORTH / BAIRNSFATHER
# MOD NO: 2 MOD BY: NORTH/BAIRNSFATHER DATE: 11 MAY 67 ADD 2ND ITER FOR ERAD AT 400K FT.
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 VARIABLE MU ADDED.
# MOD NO: 4 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 DIFFERENT EARTH/MOON SCALES IN TFF'S
#
# FUNCTIONAL DESCRIPTION: CALLED IN P61. PROVIDES DISPLAYS FOR NOUNS N60 AND N63 .
# PROGRAM CALCULATES ENTRY DISPLAY OF MAXIMUM ACCELERATION EXPECTED (GMAX) AND ALSO THE EXPECTED
# INERTIAL VELOCITY (VPRED) AND ENTRY ANGLE (GAMMAEI) THAT WILL OBTAIN AT 400K FT ABOVE THE FISCHER
# ELLIPSOID. PROGRAM ALSO CALCULATES A SECOND DISPLAY RELATIVE TO THE EMSALT ABOVE FISCHER ELLIPSOID
# AND CONSISTS OF RANGE TO SPLASH FOM NOW (RTGO) , PREDICTED INERTIAL VELOCITY (VIO) , AND THE TIME TO
# GO FROM NOW (TTE) .
#
# CALLING SEQUENCE: CALL
# S61.2
# C(MPAC) UNSPECIFIED
# PUSHLOC WILL BE SET TO ZERO.
#
# SUBROUTINES CALLED: TFFCONIC, CALCTFF, TFF/TRIG, FISHCALC, GETERAD, VGAMCALC
#
# NORMAL EXIT MODES: RTB, P61.1
#
# ALARMS: NONE
#
# OUTPUT: THE FOLLOWING REGISTERS ARE WRITTEN IN FOR USE BY DISPLAYS
# GMAX 100 GMAX (-14) G,S MAXIMUM ACCELERATION
# VPRED (-7) M/CS PREDICTED VELOCITY AT 400K FT
# GAMMAEI GAMMA/360 PREDICTED GAMMA AT 400K FT
# FOR TM, DP(GAMMAEI) = (GAMMAEI, RTGO) / 360
# RTGO THETAH/360 RANGE ANGLE TO SPLASH FROM EMSALT EMSALT IS PAD LOADED.
# VIO (-7) M/CS INTERTIAL VELOCITY AT EMSALT EMSALT IS PAD LOADED.
# TTE (-28) CS TIME TO EMSALT EMSALT IS PAD LOADED.
# PUSHLOC = 0
# CONIC PARAMETERS STORED IN VAC AREA (SEE TFF SUBROUTINES)
#
# ERASABLE INITIALIZATION REQUIRED:
# RONE (-29) M STATE VECTOR LEFT BY USER
# VONE (-7) M/CS STATE VECTOR LEFT BY USER
# URONE UR/2 LEFT BY USER
# UNI (-1) UNIT NORMAL V*R LEFT BY ENTRY / P61
# THETAH THETAH/360 RANGE ANGLE LEFT BY ENTRY / P61
# UNITW (0) UNIT POLAR VECTOR LEFT BY PAD LOAD
# EMSALT (-29) M EMS INTERFACE ALTITUDE LEFT BY PAD LOAD
# ORBITAL REENTRY: 284843 FT., LUNAR REENTRY: 297431 FT.
#
# DEBRIS: QPRET,
# ALL PDL LOCATIONS ABOVE 12D, INCLUDING X1,X2,S1,S2
# ALSO PDL+0 ... PDL+5, WHERE INITIAL PUSHLOC = PDL
# Page 807
# THE FOLLOWING PUSH LIST LOCATIONS HAVE BEEN RESERVED FOR TFF ROUTINES AND ARE REPEATED HERE FOR CONVENIENCE.
# OF COURSE FOR S61.2 USAGE, EARTH ORIGIN SCALING IS USED.
#
# BELOW E: IS USED FOR EARTH ORIGIN SCALE
# M: IS USED FOR MOON ORIGIN SCALE
#
# RTERM = 18D TERMINAL RADIUS M E: (-29) M: (-27)
# NRTERM = 16D TERMINAL RADIUS M E: (-29+NR)
# M: (-27+NR)
# RMAG1 = 12D PRESENT RADIUS M E: (-29) M: (-27)
# NRMAG = 32D PRESENT RADIUS M E: (-29+NR)
# M: (-27+NR)
# SDELF/2 SIN(THETA) / 2
# CDELF/2 = 14D COS(THETA) / 2
# TFFX = 34D X, ARGUMENT OF SERIES T(X)
# TFFTEM = 36D ARG FOR TRANSFER ANGLE CALCULATION
# TFFNP = 28D LC P M E: (-38+2NR) M: (-36+2NR)
# TFF/RTMU= 30D 1/SQRT(MU) E: (17) M: (14)
# TFFVSQ = 20D -(VN.VN/MU) 1/M E: (20) M: (18)
# Page 808
BANK 34
SETLOC P60S2
BANK
COUNT* $$/S61.2
# PDL LEFT AT ZERO BY TARGETING
S61.2 DLOAD DSU
EMSALT
290KFT
BPL DLOAD
LUNENT
1/RTMU # ESTABLISH MU FOR ORBITAL ENTRIES
CALLCON CALL
TFFCONIC # FILL VAC AREA WITH CONIC PARAMETERS
DLOAD CALL
RTRIAL # 1ST GUESS AT TERMINAL RADIUS (-29)
CALCTFF # SAVES MPAC IN RTERM (18D)
CALL # CALC SDELF/2, CDELF/2
TFF/TRIG # RETURN WITH S(THETA) IN MPAC
CALL # GET FISCHER RADIUS (-29) M
FISHCALC # ANS IN MPAC AND IN ERADM
DAD CALL
EMSALT
CALCTFF # SAVES MPAC IN RTERM (18D)
DCOMP # NEGATIVE AS IN COUNTDOWN
STORE TTE1 # DECR TTE FROM BASB TTE1. (RESTART)
# DNLIST AND DSKY WILL USE TTE.
STCALL TTE # LET MISS CONTRL DECR BY ELAPSED TIME
# TTE= TIME FROM NOW TO EMSALT +FISCHER
TFF/TRIG # S(THETA) IN MPAC ON RETURNING
# AND THETA= RANGE FROM NOW TO EMSALT
CALL
FISHCALC
CALL
VRCALC
CALL
DISPTARG
CALL
DISPTARG
STCALL RTGO
# Page 809
VGAMCALC
DMP # MPAC = GAMMA
# PDL0 HAS VGAM.
BDDV DAD
VEMSCON # -HS D 180/PI (-14)
0 # VGAM FROM PDL0
STODL VIO # PREDICTED VELOCITY AT EMSALT.
# GAMMA AND VGAM AT 300K FT ARE REQUIRED BY GMAX
# ALGORITHM.
ERADM # EARTH RADIUS FROM GETERAD (-29) M
# = FISCHER RADIUS (-29)
DAD
300KFT # M (-29)
STCALL RTERM # TERMINAL RADIUS M (-29)
PREVGAM # VGAMCALC WITH NEW RTERM
# VBAR = (V(FPS) - 36KF/S) / 20 F/S
# GMAX = (4/(1 + 4.8 VBARSQ))(GAM - 6.05 - 2.4 VBARSQ) - 10(L/D - .3) + 10 ASSUME L/D = 0.3, BANK =0.
# GMAXCALC
PDDL DSU # GAM TO PDL2
0 # VGAM IS IN PDL0 (-7)
36KFT/S # (-7) M/CS
DDV DSQ
20KFT/S # (-6) M/CS
STORE 0 # VBARSQ (-2) TO PDL0
DMP DAD
KR1
# GAM, POS DOWN, FROM PDL2
DAD DMP
-6.05DEG
KR2
PDDL # XCH PDL+0 FOR VBARSQ (-2)
DDV DAD
KR4
DP2(-4)
BDDV
# NUM FROM PDL+0
DAD BPL
KR3
+3
DLOAD
HI6ZEROS
STODL GMAX # 100 GMAX (-14)
# Page 810
# DISPLAY USES GMAX AS SP, SO LO WORD IS WRITTEN OVER BY VPRED.
ERADM # = FISCHER RADIUS (-29) M
DAD CALL # 2 ND ITERATION FOR FISCHER RADIUS
400KFT
CALCTFF # ESTABLISH TRANSFER ANGLE DATA.
CALL
TFF/TRIG # GET SIN, COS DELF
CALL
FISHCALC # GET CORRESPONDING FISCHER RADIUS.
DAD LXA,2 # SAVE HI-WORD FOR DOWNLIST.
400KFT # M (-29)
RTGO # (RANGE ANGLE FROM EMSALT) / 360
STCALL RTERM
PREVGAM # VGAMCALC WITH NEW RTERM
DCOMP SXA,2 # HI-WORD OF EACH ON DOWNLIST.
MPAC +1
STODL GAMMAEI # CONIC GAMMA/360 AT 400K FT. (HI-WORD)
# CONIC RTGO/360 FROM EMSALT (LOW-WORD)
# FOR TM, DP(GAMMAEI) = (GAMMA, RTGO) / 360
# VGAM FROM PDL+0 (-7)
STADR
STORE VPRED # CONIC VELOCITY AT 400K FT
RTB
P61.1
# PDL BACK TO ZERO.
LUNENT DLOAD GOTO
1/RTMUE # ESTABLISH MU FOR LUNAR TYPE ENTRIES
CALLCON
290KFT 2DEC 88392.0 B-29
KTETA1 2DEC* .421844723 E2 B-14* # 110 2PI/16384(163.84)
36KFT/S 2DEC 109.728 B-7 # (-7) M/CS = 36 KFT/S (-7)
20KFT/S 2DEC 121.92 B-7 # (-6) M/CS = 2 20KFT/S (-7)
KR1 2DEC -.026666667 # = -2.4 4 / 360
-6.05DEG 2DEC -.016805556 # = -6.05 / 360
KR2 2DEC .54931641 # = (360/4) 100 (-14) = 9000 B-14
KR3 2DEC 1000 B-14 # = 100 (10.0) (-14) G,S
# Page 811
# ASSUMES L/D = 0.3, BANK =0.
RTRIAL 2DEC 6460097.18 B-29 # RPAD +264643 FT =21 194 545 FT
# RPAD DEFINED AS 20 909 901.57 FT =6 373 336 M
400KFT 2DEC 121920 B-29 # METERS
# 300KFT 2DEC 91440 B-29 # (-29) M
# EMSALT 2DEC 86759.2 B-29 # 284643 FT (-29) M (ORBITAL REENTRY)
# EMSALT 2DEC 90657 B-29 # 297431 FT (-29) M (LUNAR REENTRY)
KR4 2DEC .833333333
300KFT EQUALS MINPERE
VEMSCON 2DEC -.0389676 B-14 # = -HS D / 2 PI (-14) M SQ / CS SQ
# = -16369 .05G 32.2 .3048 .3048/2 PI (-14)
# Page 812
# SUBROUTINE NAME: FISHCALC (USED BY S61.2) DATE: 01.21.67
# MOD NO: 0 LOG SECTION: P61-P67
# MOD BY: MORTH / BAIRNSFATHER
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 MAY 67 INCLUDE GETERAD CALL
#
# FUNCTIONAL DESCRIPTION: GIVEN THE PRESENT POSITION, UNITR, CALCULATE A NEW UNITR THAT IS ROTATED THROUGH
# TRANSFER ANGLE, THETA, ALONG THE TRAJECTORY. THEN CALCULATE SIN(LAT) AND USE TO OBTAIN FISCHER RADIUS.
# SINCE FISHCALC USED UNI (LEFT BY ENTRY) EARTH SCALING IS ASSUMED. (WILL IMPROVE FOR SUITABLE TENNANT)
#
# CALLING SEQUENCE: CALL
# FISHCALC
# ENTER WITH .5 SIN(THETA) IN MPAC.
# PUSHLOC IS AT PDL+0, AN ARBITRARY BASE VALUE IF LEQ 8D
#
# SUBROUTINES CALLED: GET ERAD
#
# NORMAL EXIT MODE: RVQ
#
# EXIT MODES: NONE
#
# OUTPUT: ERADM (-29) M IN MPAC ON RETURNING
# NEW UNIT VECTOR NOT SAVED.
# SIN(LAT) NOT SAVED.
# PUSHLOC AT PDL+0
#
# ERASABLE INITIALIZATION REQUIRED:
# SDELF/2 =SIN(THETA) / 2, IN MPAC LEFT BY TFF/TRIG
# CDELF/2 =COS(THETA) / 2, STORED IN PDL 14D LEFT BY TFF/TRIG
# RONE (-29) M LEFT BY USER
# VONE (-7) M/CS LEFT BY USER
# URONE UR/2 LEFT BY USER
# UNI .5 UNIT(V*R) LEFT BY ENTRY / P61
# UNITW UNIT NORTH POLE LEFT BY PAD LOAD
#
# DEBRIS: QPRET, PDL+0 ... PDL+5
# _ _ _
FISHCALC PDVL VXV # URPR = UR CDELF + UHOR SDELF
URONE
UNI
VXSC VSL1
# SIN(THETA) / 2 FROM PDL+0
PDVL VXSC # TO PDL+0, +5
URONE
CDELF/2 # COS(THETA) / 2
VAD STADR
STORE URH # FOR USE IN RTGO FROM EMS DISPLAY
DOT SL1
UNITW # PULL UNIT VECTOR UNIT NORTH
STORE ALPHAV +4 # = .5 SIN(LAT)
DUMPFISH GOTO
GETERAD # SAVES FISCHER RAD (-29) M IN ERADM AND
# IN MPAC. RETURNS TO CALLER VIO QPRET.
# Page 813
# SUBROUTINE NAME: VGAMCALC (USED BY S61.2) DATE: 01.21.67
# MOD NO: 0 LOG SECTION: P61-P67
# MOD BY: MORTH / BAIRNSFATHER
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 VARIABLE MU ADDED.
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALE
#
2016-07-08 10:45:31 +00:00
# FUNCTIONAL DESCRIPTION: EARTH CENTERED VIS VIVA CALCULATION OF TERMINAL VELOCITY AND GAMMA (REL TO
2016-07-07 08:47:26 +00:00
# HORIZONTAL) GIVEN THE SCALAR QUANTITIES: PRESENT RADIUS AND VELOCITY AND THE TERMINAL RADIUS.
# THE USER MUST APPEND PROPER SIGN TO GAMMA, SINCE IT IS CALCULATED AS A POSITIVE NUMBER.
# THE EQUATIONS ARE
#
# VGAM = SQRT(VN VN/MU + 2(RN-RTERM)/(RN RTERM) ) RTMU
#
# COSGAM = H / RTERM VGAM = SQRT (LCP) / (RTERM VGAM/RTMU)
#
# VGAMCALC ASSUMES THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT RADIUS. BOTH CALCTFF AND CALCTPER
# MAKE THIS ASSUMPTION.
#
# CALLING SEQUENCE: CALL STCALL RTERM
# VGAMCALC PREVGAM
# PUSHLOC AT PDL+0, ARBITRARY IF LEQ 12D
# C(MPAC) UNSPECIFIED C(MPAC)=NEW RTERM
#
# SUBROUTINES CALLED: NONE
#
# NORMAL EXIT MODE: RVQ
#
# ALARMS: NONE
#
# OUTPUT: GAMMA / 360 IN MPAC, POSITIVE NUMBER
# VGAM E: (-7) M: (-5) M/CS IN PDL+0
# PUSHLOC AT PDL+2
#
# ERASABLE INITIALIZATION REQD:
# TFF/RTMU E: (17) M: (14) 1/SQRT(MU) LEFT BY TFFCONIC
# RMAG1 E: (-29) M: (-27) M PRESENT RADIUS LENGTH LEFT BY TFFCONIC
# NRMAG E: (-29+NR) M NORM LENGTH OF PRESENT POSITION LEFT BY TFFCONIC
# M: (-27+NR)
# RTERM E: (-29) M: (-27) M TERMINAL RADIUS LENGTH LEFT BY CALCTFF
# NRTERM E: (-29+NR) M NORM LENGTH OF TERMINAL RADIUS LEFT BY CALCTFF
# M: (-27+NR)
# TFFVSQ E: (20) M: (18) 1/M -(V SQ/MU): PRESENT VELOCITY, NORM LEFT BY TFFCONIC
# TFFNP E: (-38+2NR) M LCP, SEMI-LATUS RECTUM, WEIGHT NR LEFT BY TFFCONIC
# M: (-36+2NR)
#
# DEBRIS: QPRET, PDL+0 ... PDL+3
# RTERM, NRTERM IF PREVGAM ENTERED.
# Page 814
PREVGAM SL* # ENTER WITH NEW RTERM IN MPAC
# E: (-29) M: (-27)
0,1 # X1 = -NR
STORE NRTERM # RTERM M E: (-29+NR) M: (-27+NR)
VGAMCALC DLOAD DMP
NRMAG # RMAG M E: (-29+NR) M: (-27+NR)
NRTERM # RTERM M E: (-29+NR) M: (-27+NR)
PDDL DSU # RMAG RTERM M E: (-58+2NR) M: (-54+2NR)
NRMAG # RMAG M E: (-29+NR) M: (-27+NR)
NRTERM # RTERM M E: (-29+NR) M: (-27+NR)
SL* DDV # 2(RN-RTERM) E: (-30+NR) M: (-28+NR)
0 -8D,1 # (-8+NR)
# PUSH UP PRODUCT.
DSU
TFFVSQ # -(V SQ/MU) E: (20) M: (18)
SQRT PUSH # SAVE VGAM/RT(MU) FOR NOW. E: (10) M: (9)
DDV PDDL # XCH PDL+0, LEAVING VGAM FOR OUTPUT.
# VGAM TO PDL M/CS E: (-7) M: (-2)
TFF/RTMU # E: (17) M: (14)
DMP PDDL # RTERM VGAM/RTMU E: (-19+NR) M: (-18+NR)
NRTERM # RTERM M E: (-29+NR) M: (-27+NR)
TFFNP # LC P =H.H/MU M E: (-38+2NR) M: (-36+2NR)
SQRT DDV # E: (-19+NR) M: (-18+NR)
# PUSH UP DEN E: (-19+NR) M: (-18+NR)
# USE DDV OVFL AS LIMITER (|COS| <1.0)
SR1 ACOS
DUMPVGAM RVQ
# CALLER MUST SUPPLY OWN SIGN ...
# 22W 27MS
# Page 815
# SUBROUTINE NAME: TFF/TRIG (USED BY S61.2) DATE: 01.17.67
# MOD NO: 0 LOG SECTION: P61-P67
# MOD BY: RR BAIRNSFATHER
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 14 APR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALE
#
# FUNCTIONAL DESCRIPTION: USED BY ENTRY DISPLAY TO CALCULATE SIN(THETA), COS(THETA) FROM DATA LEFT IN
# PDL BY TFF SUBROUTINES. THE EQNS ARE
#
# COS(THETA) = 1-2 ABS(ARG) / (RN RTERM (1+X) )
# 2
# SIN(THETA) = SGN(ARG) SQRT(1-COS (THETA) )
#
# WHERE THETA = TRANSFER ANGLE
# AND ARG = P Z ABS(Z) IF ALFA ZZ LEQ 1
# ARG = (P / ALFA) SGN(Q1 + R 1/Z) IF ALFA Z Z G 1
# AND ARG HAS BEEN AFFIXED WITH THE SIGN OF SIN(THETA)
#
# CALLING SEQUENCE: CALL
# TFF/TRIG
# PUSHLOC AT PDL+0, ARBITRARY IF NOT EQ 14D
# C(MPAC) UNSPECIFIED
#
# SUBROUTINES CALLED: NONE
#
# NORMAL EXIT MODES: RVQ
#
# ALARMS: NONE
#
# OUTPUT: C(MPAC) = .5 SIN(THETA)
# CDELF/2 = .5 COS(THETA) (IN PDL 14D)
# PUSHLOC AT PDL+0
#
# ERASABLE INITIALIZATION REQUIRED:
# TFFX X LEFT BY CALCTFF OR CALCTPER
# TFFTEM E: (-59+2NR) ARG LEFT BY CALCTFF OR CALCTPER
# M: (-55+2NR) WHERE ARG = LCF ZZ SGN(DELF) OR ARG = LCP/ALFA SGN(DELF)
# NRTERM E: (-29+NR) M NORM LENGTH OF TERMINAL RADIUS LEFT BY CALCTFF OR CALCTPER
# M: (-27+NR)
# NRMAG E: (-29+NR) M NORM LENGTH OF PRESENT POSITION LEFT BY TFFCONIC
# M: (-27+NR)
#
# DEBRIS: QPRET, CDELF/2
BANK 27
SETLOC P60S5
BANK
TFF/TRIG DLOAD SR1
TFFX
DAD DMP
HIDPHALF
NRMAG # RMAG M E: (-29+NR) M: (-27+NR)
DMP BDDV
NRTERM # RTERM M E: (-29+NR) M: (-27+NR)
TFFTEM # P ZSQ OR P/ALFA E: (-59+2NR) M: (-55+2NR)
ABS BDSU # THE SIGN IS FOR SDELF.
HIDPHALF
STORE CDELF/2 # .5 COS(THETA)
DSQ DCOMP # KEEP HONEST FOR SQRT.
# Page 816
DAD SQRT
HIDP1/4
DUMPTRIG SIGN RVQ
TFFTEM # AFFIX SIGN(DELE/2)
# RETURN WITH .5 SIN(THETA) IN MPAC
# 16W 15MS
DISPTARG STQ # C(MPAC = TRGO ESTIMATE
60GENRET
DMP DSU
KTETA1
TTE1
STCALL DTEAROT
EARROT2
CALL
VRCALC
GOTO
60GENRET
VRCALC VLOAD DOT
URH
RT
SL2 ACOS
RVQ
# END OF PROGRAM S61.2
# Page 817
# PROGRAM DESCRIPTION S62.3 DATE 10JAN67
# MOD NO 1: LOG SECTION P60-P67
# MOD BY ZELDIN
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 15 MAY 67 CHANGED TO REF COORDS.
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 17 JAN 68 ALFAPAD CHANGES MADE.
#
# FUNCTIONAL DESCRIPTION
#
# COMPUTE DESIRED GIMBAL ANGLES FOR ENTRY ATTITUDE
# THE FOLLOWING TRAJECTORY TRIAD IS AVAILABLE IN MEMORY AND IS COMPUTED EACH 2 SECONDS BY CM/POSE IN
# REFERENCE COORDINATES (V = VELOCITY RELATIVE TO EARTH):
#
# UXA = -UNIT(V)
# UYA = UNIT(V*R)
# UZA = UXA*UYA
#
# GENERATE A DESIRED BODY TRIAD FOR TRIMMED FLIGHT WITH RESPECT TO THE RELATIVE VELOCITY VECTOR, USING
# ROLL COMMAND AND TRIM ANGLE OF ATTACK:
#
# UXD = UNIT(UYD*UXA) SIN(ALFATRIM) + UXA COS(ALFATRIM)
# UYD = UYA COS(ROLLC) + UZA SIN(ROLLC)
# UZD = UXD * UYD
#
# USE THE DESIRED SET (IN REFERENCE COORDS) AND REFSMMAT TO CALL CALCGA AND OBTAIN GIMBAL ANGLES
# IN 2S, C IN MPAC, +2 AND THETAD, +2.
#
# CALLING SEQUENCE
#
# L CALL
# L+1 S62.3
#
# NORMAL EXIT MODE
#
# RETURN VIA QPRET DIRECTLY FROM CALCGA.
#
# SUBROUTINES CALLED
#
# CALCGA
#
# ALARM OR ABORT MODES
#
# NONE
#
# ERASABLE INITIALIZATION REQUIRED
#
# ROLLC ROLL COMMAND DP 1'S COMP AT 1REV
# ALFAPAD SP 1'S C / 180 LEFT BY PAD LOAD ALFATRIM IS NEGATIVE.
# UXA/2 REF COORDS LEFT BY CM/POSE
# UYA/2 REF COORDS LEFT BY CM/POSE
# UZA/2 REF COORDS LEFT BY CM/POSE
#
# OUTPUT
#
# CPHI GIMBAL ANGLES (O,I,M) 2'S COMP TP (O,I,M)/180
#
# DEBRIS
#
# QTEMP, QPRET, PUSHLIST
BANK 10
SETLOC P60S4
BANK
# Page 818
COUNT* $$/S62.3
S62.3 SETPD SLOAD
0
ALFAPAD # ALFATRIM / 180, ALFA IS NEG.
SR1 PUSH
COS PDDL # XCH PDL, COS TO PDL0
SIN PDDL # SIN TO PDL2
ROLLC
COS VXSC
UYA/2 # REF COORDS
PDDL SIN # PUSH VECTOR INTO PDL4...9
ROLLC
VXSC VAD
UZA/2 # REF COORDS
# VECTOR FROM PDL4...9
VSL1
STORE YNB # = UYD REF COORDS
VXV VSL1
UXA/2 # REF COORDS
VXSC PDDL
# SIN TRIM FROM PDL2
# XCH PDL0 FOR COS TRIM
VXSC VAD
UXA/2 # REF COORDS
# FROM PDL0
VSL1
STORE XNB # X SC AXIS (.5 UNIT) REF COORDS
VXV VSL1
YNB
STOVL ZNB # Z SC IN REF COOR. SCALED AT 2
REFSMMAT
STOVL XSM
REFSMMAT +6
STOVL YSM
REFSMMAT +12D
STORE ZSM
CLEAR GOTO
CPHIFLAG # CAUSE CALCGA TO STORE ANS IN TP CPHI
CALCGA
# CALCGA WILL RETURN TO ORIGINAL CALLER
# VIA QPRET WITH 2'S COMP. ANGLES IN CPHI