Apollo-11/Comanche055/P11.agc

929 lines
21 KiB
Plaintext

# Copyright: Public domain.
# Filename: P11.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 533-550
# Mod history: 2009-05-13 HG Started adapting from the Colossus249/ file
# of the same name, using Comanche055 page
# images 0533.jpg - 0550.jpg.
# 2009-05-20 RSB Corrections: ERTHALT -> EARTHALT,
# STATSW -> SATSW.
# 2009-05-23 RSB At end of RESCALES, corrected TC 0 to TC Q.
# Added an SBANK= prior to a 2CADR.
# 2010-08-24 JL Fixed page numbers. Added missing comment character on p537.
#
# 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 533
# EARTH ORBIT INSERTION MONITOR PROGRAM
# *************************************
# PROGRAM DESCRIPTION -P11-
# MOD NO. 1
# MOD BY ELIASSEN
# FUNCTIONAL DESCRIPTION
# P11 IS INITIATED BY
# A) GYROCOMPASS PRG P02 WHEN LIFTOFF DISCRETE IS RECEIVED OR
# B) BACKUP THRU VERB 75 ENTER
# PROGRAM WILL
# 1. ZERO CMC CLOCK AT LIFTOFF (OR UPON RECEIPT OF BACKUP)
# 2. UPDATE TEPHEM TO TIME CMC CLOCK WAS ZEROED
# 3. INITIATE SERVICER AT PREREAD1
# 4. CHANGE MAJOR MODE TO 11
# 5. CLEAR DSKY IN CASE OF V 75
# 6. STORE LIFTOFF IMU-CDU ANGLES FOR ATT. ERROR DISPLAY
# 7. TERMINATE GYROCOMPASSING - -
# 8. COMPUTE INITIAL VECTORS RN, VN - - -
# 9. COMPUTE REFSMMAT FOR PRELAUNCH ALIGNMENT WHERE U ,U ,U ARE
# - - X Y Z
# U =(UNIT(-R) LOCAL VERTICAL AT TIME OF LIFTOFF
# Z
# - - -
# U =UNIT(A), A=HOR VECTOR AT LAUNCH AZIMUTH
# X
# - - -
# U =U * U
# U Z X
# 10. SET REFSMMAT KNOWN FLAG
# 11. SET AVGEXIT IN SERVICER TO VHHDOT TO
# COMPUTE AND DISPLAY NOUN 62 EVERY 2 SECONDS
# R1 V1 - INERTIAL VELOCITY MAGNITUDE IN FPS
# R2 HDOT - RATE OF CHANGE OF VEHICLE VEL IN FPS
# R3 H - VEHICLE ALTITUDE ABOVE PAD IN NM
# 12. DISPLAY BODY AXES ATT. ERRORS ON FDAI NEEDLES
#
# A) FROM L.O. TO RPSTART (APPROX. 0 TO +10SECS AFTER L.O.)
# DESIRED ATTITUDE IS AS STORED AT L.O.
# B) FROM RPSTART TO POLYSTOP(APPROX.+10 TO +133SECS AFTER LO)
# DESIRED ATTITUDE IS SPECIFIED BY CMC PITCH AND ROLL
# POLYNOMIALS DURING SATURN ROLLOUT AND PITCHOVER
# Page 534
# THE DISPLAY IS RUN AS LOW PRIORITY JOB APPROX.
# EVERY 1/2 SEC OR LESS AND IS DISABLED UPON OVFLO OF TIME1
# SUBROUTINES CALLED
# 2PHSCHNG BANKCALL CALCGRA CDUTRIG CLEANDSP DANZIG
# DELAYJOB EARTHR ENDOFJOB FINDVAC IBNKCALL
# INTPRET LALOTORV NEEDLER NEWMODEX PHASCHNG
# POSTJUMP POWRSERS PREREAD1 REGODSPR S11.1
# SERVEXIT TASKOVER TCDANZIG V1STO2S WAITLIST
# ASTRONAUT REQUESTS (IF ALTITUDE ABOVE 300,000 FT)
#
# DSKY -
# MONITOR DISPLAY OF TIME TO PERIGEE R1 HOURS
# R2 MINUTES
# DSKY -
# MONITOR DISPLAY OF R1 APOGEE ALTITUDE IN NAUTICAL MILES
# R2 PERIGEE ALTITUDE IN NAUTICAL MILES
# R3 TFF IN MINUTES/SECS
# IF ASTRONAUT HAS REQUESTED ANY OF THESE DISPLAYS HE MUST
# HIT PROCEED TO RETURN TO NORMAL NOUN 62 DISPLAY.
# NORMAL EXIT MODE
# ASTRONAUT VERB 37 ENTER 00 ENTER
# ALARM MODES - NONE
# ABORT EXIT MODES -
# OUTPUT
# TLIFTOFF (DP) TEPHEM (TP)
# REFSMMAT
# DSKY DISPLAY
# FDAI DISPLAY
# ERASABLE INITIALIZATION
# AZO, AXO, -AYO
# LATITUDE
# PADLONG
# TEPHEM
# PGNCSALT
# POLYNUM THRU POLYNUM +14D)
# RPSTART
# POLYSTOP
# FLAGS SET OR RESET
# Page 535
# SET REFSMFLG
# SET DVMON IDLE FLAG
# CLEAR ERADFLAG
# DEBRIS
# LIFTTEMP
# POLYNUM THRU POLYNUM +7
# SPOLYARG
# BODY1, BODY2, BODY3
# VMAG2, ALTI, HDOT
# CENTRALS, CORE SET AND VAC AREAS
COUNT 34/P11
BITS5-6 = SUPER011
BANK 42
SETLOC P11ONE
BANK
EBANK= TEPHEM
P11 CA EBANK3
TS EBANK
EXTEND
DCA REP11S # DIRECT RESTARTS TO REP11
DXCH -PHASE3
CS ZERO
ZL
TS LIFTTEMP
DXCH -PHASE5 # INACTIVE GROUP 5, PRELAUNCH PROTECTION
P11+7 EXTEND
DCA REP11SA
DXCH TLIFTOFF
EXTEND
DCA TIME2
DXCH LIFTTEMP # FOR RESTARTS
CA ZERO
ZL
DXCH TIME2
REP11A-2 DXCH TLIFTOFF
REP11A-1 DXCH -PHASE3 # RESET PHASE
REP11A INHINT
EXTEND
DCA TEPHEM +1
DXCH TEPHEM1 +1
CA TEPHEM
# Page 536
XCH TEPHEM1
EXTEND
DCA TLIFTOFF
DAS TEPHEM1 +1
ADS TEPHEM1 # CORRECTFOR OVERFLOW
TC PHASCHNG
OCT 05023
OCT 22000
INHINT
EXTEND
DCA TEPHEM1
DXCH TEPHEM
CA TEPHEM1 +2
XCH TEPHEM +2
CAF EBDVCNT
TS EBANK
EBANK= DVCNTR
TC IBNKCALL
CADR PREREAD1 # ZERO PIPS AND INITIALIZE AVERAGEG
TC PHASCHNG
OCT 05023 # CONTINUE HERE ON RESTART
OCT 22000
CAF .5SEC # START ATT ERROR DISPLAY
TC WAITLIST # IN .5 SEC
EBANK= BODY3
2CADR ATERTASK
TC NEWMODEX # DISPLAY MM 11
MM 11
TC UPFLAG
ADRES NODOP01
CA POWDNCOD # SWITCH TO POWERED FLIGHT DOWNLIST
TS DNLSTCOD
TC BANKCALL
CADR CLEANDSP # CLEAR DSKY IN CASE OF V75
TC 2PHSCHNG
OCT 40514 # PROTECT ATERTASK
OCT 00073
CAF EBQPLACE
# Page 537
TS EBANK
EBANK= QPLACES
CA P11XIT # SET EXIT FROM PROUT IN EARTHR
TS QPLACES
TC INTPRET
VLOAD MXV
THETAN
XSM
VSL1 VAD
ERCOMP
STODL ERCOMP
TLIFTOFF
SSP GOTO
S2
CADR PROUT # RETURN FROM EARTHR
EARTHR +3
MATRXJOB ZL # STORE DP GIMBAL ANGLES FOR ATTITUDE
CA CDUX # ERROR DISPLAY AFTER LIFTOFF
DXCH OGC
ZL
CA CDUY
DXCH IGC
ZL
CA CDUZ
DXCH MGC
TC INTPRET # -
VLOAD VSR1 # SCALE OGC B-1
OGC
STORE OGC
SSP # ZERO RTX2
RTX2 # FOR
0 # EARTH
DLOAD PDDL
PGNCSALT # ALTITUDE OF PGNCS
PADLONG # LONGITUDE
PDDL VDEF
LATITUDE # GEODETIC LATITUDE
STODL LAT # LAT,LONG,ALT ARE CONSECUTIVE
HI6ZEROS # TIME = 0
CLEAR CALL
ERADFLAG
LALOTORV # CONVERT TO POSITION VECTOR IN REF.COORDS
STCALL RN1 # -
GETDOWN # RETURN WITH VECTOR FOR DOWN DIRECTION
VCOMP UNIT
STOVL REFSMMAT +12D # UNITZ = UNIT(GRAV)
RN1
VXV VXSC
# Page 538
UNITW # SCALED AT 1
-ERTHRAT # V = EARTHRATE X R
VSL4 # SCALE TO 2(7) M/CS
STOVL VN1
REFSMMAT +12D
VXV UNIT
UNITW # (REF3 X UNITW) = EAST
PUSH VXV
REFSMMAT +12D # (EAST X REF3) = -SOUTH
UNIT PDDL
LAUNCHAZ # COS(AZ)*SOUTH
COS VXSC
STADR
STODL REFSMMAT # TEMPORARY STORAGE
LAUNCHAZ
SIN VXSC # SIN(AZ)*EAST
VAD UNIT # SIN(AZ)*EAST - COS(AZ)*SOUTH = REF1
REFSMMAT
STORE REFSMMAT
VXV UNIT # (REF1 X REF3) = -REF3
REFSMMAT +12D
VCOMP
STORE REFSMMAT +6
DLOAD DSU
DPHALF # 1/2 REV
LAUNCHAZ
DAD PDDL
AZIMUTH
SATRLRT # SET SATRLRT = -SATRLRT IF
SIGN STADR # (1/2REV -LAVNCHAZ +AZIMUTH) IS NEGATIVE
STORE SATRLRT # FOR ROLL CALC IN FDAI ATT. ERROR DISPLAY
SET EXIT
REFSMFLG # SET REFSMMAT KNOWN FLAG
TC PHASCHNG
OCT 04023
EXTEND
DCA P11SCADR
DXCH AVGEXIT # SET AVGEXIT
CA PRIO31 # 2 SECONDS AT 2(+8)
TS 1/PIPADT
EBANK= RCSFLAGS
CA EBANK6
TS EBANK
INHINT
# Page 539
CS ZERO
TS TBASE5 # RESTART READACCS 2 SECONDS AFTER LIFTOFF
CS TIME1
AD 2SECS # DO READACCS 2 SECONDS AFTER LIFTOFF
CCS A # CHECK TO INSURE DT IS POSITIVE
TCF +3 # TIME POSITIVE
TCF +2 # CANNOT GET HERE
CA ZERO # TIME NEGATIVE - SET TO 1
AD ONE # RESTORE TIME - OR MAKE POSITIVE
TC WAITLIST
EBANK= AOG
2CADR READACCS
TC 2PHSCHNG
OCT 00003 # TURN OFF GROUP 3
OCT 00025 # PROTECT NORMLIZE AND READACCS
TC POSTJUMP
CADR NORMLIZE # DO NORMLIZE AND ENDOFJOB
EBANK= TEPHEM
REP11 INHINT
CCS PHASE5
TC ENDOFJOB
CCS LIFTTEMP
TCF +4
TCF +3
TCF +2
TCF P11+7
CS TLIFTOFF
EXTEND
BZMF ENDREP11
CCS TIME2 # **TIME2 MUST BE NON-ZERO AT LIFTOFF**
TCF REP11A -5 # T2,T1 NOT YET ZEROED, GO AND DO IT
EXTEND # T2,T1 ZEROED, SET TLIFTOFF
DCA LIFTTEMP
TCF REP11A-2
ENDREP11 EXTEND
DCA REP11SA
TCF REP11A-1
# Page 540
REP11S 2OCT 7776600011
REP11SA 2OCT 7776400013
P11XIT GENADR P11OUT
-ERTHRAT 2DEC* -7.292115138 E-7 B18* # - EARTH RATE AT 2(18)
EBANK= BODY3
P11SCADR 2CADR VHHDOT
POWDNCOD EQUALS THREE
EBANK= BODY3
# VHHDOT IS EXECUTED EVERY 2 SECONDS TO DISPLAY ON DSKY
# VI INERTIAL VELOCITY MAGNITUDE
# HDOT RATE OF CHANGE OF ALT ABOVE L PAD RADIUS
# H ALTITUDE ABOVE L PAD RADIUS
VHHDOT TC INTPRET
CALL # LOAD VMAGI, ALTI,
S11.1 # HDOT FOR DISPLAY
EXIT
TC PHASCHNG
OCT 00035
CAF V06N62 # DISPLAY IN R1 R2 R3
TC BANKCALL # VI HDOT H
CADR REGODSP
ATERTASK CAF PRIO1 # ESTABLISH JOB TO DISPLAY ATT ERRORS
TC FINDVAC # COMES HERE AT L.O. + .33 SEC
EBANK= BODY3
2CADR ATERJOB
CS RCSFLAGS # SET BIT3 FOR
MASK BIT3 # NEEDLER
ADS RCSFLAGS # INITIALIZATION PASS
TC IBNKCALL # AND GO
CADR NEEDLER # DO IT
CA BIT1 # SET SW
TS SATSW # FOR DISPLAY
TC TASKOVER
GETDOWN STQ SETPD
INCORPEX
0D
DLOAD
HI6ZEROS
# Page 541
STODL 6D
DPHALF
STCALL 8D
LALOTORV +5
# THIS SECTION PROVIDES ATTITUDE ERROR DISPLAYS TO THE FDAI DURING SONE BOOST
# COMPUTE DESIRED PITCH W.R.T. PAD LOCAL VERTICAL AT LIFTOFF
# 2 3 4 5 6
# PITCH = A0+A1T+A2T +A3T +A4T +A5T +A6T
# SCALED TO 32 REVS. -14
# IF TL = TIME IN SECS FROM L.O., THEN T = 100(TL-RPSTART)2
# WHERE TL GE RPSTART
# TL LE (-POLYSTOP + RPSTART)
# COMPUTE DESIRED ROLL WHERE ROLL EQUALS ANGLE FROM
# LAUNCHAZ TO -Z(S/C) AS SEEN FROM X(S/C).
# ROLL = LAUNCHAZ-AZIMUTH-.5 +SATRLRT*T IN REV
# SATRLRT = RATE OF ROLL IN REV/CENTI-SEC
# T,IN CENTI-SEC,IS DEFINED AS ABOVE,INCLUSIVE OF TIME RESTRICTIONS
# FOR SIMPLICITY, LET P = 2*PI*PITCH
# R = 2*PI*ROLL
# CONSTRUCT THE TRANSFORMATION MATRIX, TSMV, GIVING DESIRED S/C AXES IN
# TERMS OF SM COORDINATES. LET THE RESULTING ROWS EQUAL THE VECTORS XDC,
# YDC,AND ZDC.
# * ( SIN(P) 0 -COS(P) ) (XDC)
# TSMV = (-SIN(R)*COS(P) -COS(R) -SIN(R)*SIN(P)) = (YDC)
# (-COS(R)*COS(P) SIN(R) -COS(R)*SIN(P)) (ZDC)
# XDC,YDC,ZDC ARE USED AS INPUT TO CALCGTA FOR THE EXTRACTION OF THE
# EULER SET OF ANGLES WHICH WILL BRING THE SM INTO THE DESIRED
# ORIENTATION. THIS EULER SET, OGC, IGC, AND MGC, MAY BE IDENTIFIED
# AS THE DESIRED CDU ANGLES.
# (XDC) (OGC)
# (YDC) ---) CALCGTA ---) (IGC)
# (ZDC) (MGC)
# -
# DEFINE THE VECTOR DELTACDU.
# - (OGC) (CDUX)
# DELTACDU = (IGC) - (CDUY)
# (MGC) (CDUZ)
# - - * -
# COMPUTE ATTITUDE ERRORS, A, WHERE A = TGSC*DELTACDU
#
# * (1 SIN(CDUZ) 0 ) THE GIMBAL ANGLES
# Page 542
# TGSC = (0 COS(CDUX)*COS(CDUZ) SIN(CDUX)) = TO SPACECRAFT AXES
# (0 -SIN(CDUX)*COS(CDUZ) COS(CDUX)) CONVERSION MATRIX
# -
# THE ATTITUDE ERRORS, A, ARE STORED ONE HALF SINGLE PRECISION IN
# THE REGISTERS AK, AK1, AK2 AS INPUT TO NEEDLER, THE FDAI ATTITUDE
# ERROR DISPLAY ROUTINE.
ATERJOB CAE FLAGWRD6 # CHECK FLAGWRD6
MASK OCT60000 # BITS 14, 15
EXTEND
BZF +2 # OK - CONTINUE
TC ENDOFJOB # SATURN STICK ON - KILL JOB
CAF BIT10 # CHECK IF S/C CONTROL
EXTEND # OF SATURN PANEL
RAND CHAN30 # SWITCH IS ON
EXTEND
BZF STRSAT # IT IS - GO STEER
CCS SATSW # IT IS NOT - WAS IT ON LAST CYCLE
TC ATTDISP # NO - CONTINUE
TC ATRESET # YES - REINITIALIZE NEEDLER
TC ATRESET # YES - REINITIALIZE NEEDLER
ATTDISP CS RPSTART # PITCH/ROLL START TIME
AD TIME1
EXTEND
BZMF NOPOLY # IF MINUS THEN ATTITUDE HOLD
TS MPAC # MPAC=TIME1-RPSTART
TS SPOLYARG # SAVE FOR USE IN ROLL CALCULATION
AD POLYSTOP # NEG PITCHOVER TIME IN CSECS
EXTEND
BZMF +2
TC NOPOLY # GO TO ATTITUDE HOLD
CA TIME2
EXTEND
BZMF +2
TC NOPOLY # GO TO ATTITUDE HOLD
CAE POLYNUM
TS L
CAF COEFPOLY # EVALUATE PITCH POLYNOMIAL
TC POWRSERS # SCALED TO 32 REVOLUTIONS
CA ZERO # RETURN WITH PITCH(32REV)
TS MODE # STORED MPAC, MPAC +1
TC INTPRET
SETPD SL # 32(PITCH(32REV))=PITCH(REV)
0
5
PUSH # LET P(RAD)=2*PI*PITCH(REV)
GOTO
ATTDISP1 # AROUND SETLOC
# Page 543
# *
# CONSTRUCT SM TO S/C MATRIX, TSMV
SETLOC P11TWO
BANK # 36 IN COL., 34 IN DISK
COUNT 36/P11
ATTDISP1 COS DCOMP
STODL 14D # -.5*COS(P)
SIN
STODL 10D # .5*SIN(P)
ZEROVECS
STORE 12D # 0
# EVALUATE ROLL = LAUNCHAZ-AZIMUTH-.5+SATRLRT*T
SLOAD DMP
SPOLYARG # TIME1 - RSPSTART ,CSECS B-14.
SATRLRT
SL DSU
14D
DPHALF
DAD DSU # ASSUMING X(SM) ALONG LAUNCH AZIMUTH,
LAUNCHAZ # LAUNCHAZ = ANGLE FROM NORTH TO X(SM).
AZIMUTH # AZIMUTH = -ANGLE FROM NORTH TO Z(S/C)
RTB # DETERMINE IF ROLLOUT
RLTST # IS COMPLETED
ATTDISPR PUSH COS # CONTINUE COMPUTING TSMV
PUSH # LET R(RAD) = 2*PI*ROLL(REV)
DMP SL1
14D
STODL 22D # -.5*COS(R)*COS(P)
DCOMP
STORE 18D # -.5*COS(R)
DMP SL1
10D
STODL 26D # -.5*COS(R)*SIN(P)
SIN PUSH
STORE 24D # .5*SIN(R)
DMP SL1
14D
STODL 16D # -.5*SIN(R)*COS(P)
DCOMP
DMP SL1
10D
STOVL 20D # -.5*SIN(R)*SIN(P)
10D
# FROM TSMV FIND THE HALF UNIT VECTORS XDC,YDC,ZDC = INPUT TO CALCGTA
# Page 544
UNIT
STOVL XDC # XDC = .5*UNIT(SIN(P),0,-COS(P))
16D
UNIT
STOVL YDC # YDC = .5*UNIT(-SIN(R)*COS(P),-COS(R),
22D # -SIN(R)*SIN(P))
UNIT
STCALL ZDC # ZDC = .5*UNIT(-COS(R)*COS(P),SIN(R),
CALCGTA # -COS(R)*SIN(P))
# CALL CALCGTA TO COMPUTE DESIRED SM ORIENTATION OGC,IGC,AND MGC
# - - -
# FIND DIFFERENCE VECTOR DELTACDU = OGC-CDUX
# ENTER HERE IF ATTITUDE HOLD
NOPOLYM VLOAD PUSH # OGC IGC
OGC # CHANGE IGC TO MGC FOR COMPATIBILITY
PUSH CALL # MGC OGC
CDUTRIG # WITH Y,Z,X ORDER OF CDUSPOT
VLOAD RTB # - DPHI OGC-CDUX ,PD4
2 # DELTACDU = DTHETA = IGC-CDUY , 0
V1STO2S # DPSI MGC-CDUZ , 2
STOVL BOOSTEMP
ZEROVECS
STOVL 0
CDUSPOT
RTB RTB
V1STO2S
DELSTOR
STODL 10D
SINCDUZ
DMP SL1
0
DAD SR2 # CHANGE SCALE OF AK TO 2REVS
4
GOTO
ATTDISP2
SETLOC P11ONE
BANK
COUNT 34/P11
ATTDISP2 STODL 16D # 16D, .5(DPHI + DTHETA*SIN(CDUZ))
COSCDUZ
DMP PUSH
0
DMP SL1
COSCDUX
PDDL DMP
# Page 545
SINCDUX
2
DAD SL1
STADR
STODL 17D # 17D, .5(DTHETA*COS(CDUX)*COS(CDUZ)
DMP SL1 # +DPSI*SIN(CDUX))
SINCDUX
PDDL DMP
COSCDUX
2
DSU SL1
STADR
STORE 18D # 18D, .5(-DTHETA*SIN(CDUX)*COS(CDUZ)
TLOAD # +DPSI*COS(CDUX))
16D
STORE AK # STORE ATTITUDE ERRORS IN AK,AK1,AK2
EXIT
CA SATSW
CCS A # CHK TAKEOVER STATUS
TC SATOUT # POS - DISPLAY ONLY
TC AKLOAD # 0 STORE BIAS
STEERSAT TC INTPRET # NEG STEER L/V
TLOAD TAD
BIASAK
AK
STORE AK # AKS = AKS - STORED BIAS
EXIT
CA AK
TC RESCALES
TS AK
CA AK1
TC RESCALES
TS AK1
CA AK2
TC RESCALES
TS AK2
# DISPLAY ATTITUDE ERRORS ON FDAI VIA NEEDLER
SATOUT TC BANKCALL
CADR NEEDLER
ATERSET CAF OCT31 # DELAY .25 SEC
TC BANKCALL # EXECUTION + DELAY =.56SEC APPROX
CADR DELAYJOB
TC ATERJOB # END OF ATT ERROR DISPLAY CYCLE
AKLOAD CS AK # STORE AKS
TS BIASAK # INTO BIAS
CS AK1 # COMPLEMENTED
TS BIASAK +1
# Page 546
CS AK2
TS BIASAK +2
CS BIT1 # SET SW
TS SATSW # TO STEER
TC STEERSAT # GO STEER
STRSAT CA SATSW # CHECK IF NEEDLER
EXTEND # HAS BEEN INITIALIZED
BZMF ATTDISP # YES - CONTINUE
ATRESET CS RCSFLAGS # NO - SET
MASK BIT3 # INITIALIZATION SW
ADS RCSFLAGS # FOR NEEDLER
TC BANKCALL # AND GO
CADR NEEDLER # DO IT
CAF REVCNT # OCT 6
TC BANKCALL # DELAY JOB
CADR DELAYJOB # 60 MS -WAIT TILL IMUERRCNTR ZEROED
CCS SATSW # CHECK SW STATUS
TC TAKEON # POS STEER INIT.
TC +1 # 0 RETURN TO DISPLAY
CA BIT1 # NEG RETURN TO DISPLAY
TS SATSW # SW = DISPLAY ON
CS BIT9 # DISABLE
EXTEND # SIVB
WAND CHAN12 # TAKEOVER
TC SATOUT # DISPLAY
TAKEON CAF BIT9 # ENABLE
EXTEND # SIVB
WOR CHAN12 # TAKEOVER
CA ZERO # INDICATE NEEDLER
TS SATSW # WAS INITIALIZED
TC SATOUT
S11.1 VLOAD ABVAL
VN
STOVL VMAGI # VI SCALED 2(7) IN METERS/CSEC
RN
UNIT DOT
VN
SL1
STODL HDOT
RPAD
BOF VLOAD
AMOONFLG
EARTHALT
RLS
ABVAL SR2
EARTHALT BDSU
36D
STORE ALTI
RVQ
DELSTOR CA BOOSTEMP
# Page 547
EXTEND # STORE DELTACDU INTO PDL 0,2,4
MSU MPAC
INDEX FIXLOC
TS 0
CA BOOSTEMP +1
EXTEND
MSU MPAC +1
INDEX FIXLOC
TS 2
CA BOOSTEMP +2
EXTEND
MSU MPAC +2
INDEX FIXLOC
TS 4
TCF DANZIG
RLTST CA MPAC # DETERMINE IF ROLLOUT
EXTEND # IS COMPLETED
MP SATRLRT +1
EXTEND
BZMF DANZIG # UNLIKE SIGNS STILL ROLLING
EXTEND # ROLLOUT COMPLETED
DCA MBDYTCTL +2 # ZERO OUT ROLL CONTRIBUTION
DXCH MPAC
TC DANZIG
NOPOLY TC INTPRET # COMES HERE IF
SETPD GOTO # ATTITUDE HOLD
0
NOPOLYM
COEFPOLY ADRES POLYLOC
V06N62 VN 0662
RESCALES EXTEND # RESCALE AK S FOR
MP SATSCALE # NEW HARDWARE
DDOUBL # SCALING FOR
DDOUBL # STEERING
TC Q # SATURN
# SATURN TAKEOVER FUNCTION
# ************************
# PROGRAM DESCRIPTION
# MOD NUMBER 1
# MOD BY ELIASSEN
# FUNCTIONAL DESCRIPTION
# DURING THE COASTING PHASE OF SIVB ATTACHED, THE
# ASTRONAUT MAY REQUEST SATURN TAKEOVER THROUGH
# EXTENDED VERB 46 (BITS 13,14 OF DAPDATR1 SET ).
# THE CMC REGARDS RHC COMMANDS AS BODY-AXES RATE
# COMMANDS AND IT TRANSMITS THESE TO SATURN AS DC
# Page 548
# VOLTAGES. THE VALUE OF THE CONSTANT RATE COMMAND
# IS 0.5 DEG/SEC. AN ABSENCE OF RHC ACTIVITY RE-
# SULTS IN A ZERO RATE COMMAND.
# THE FDAI ERROR NEEDLES WILL INDICATE THE VALUE
# OF THE RATE COMMAND.
# CALLING SEQUENCE
#
# DAPFIG +9D TC POSTJUMP
# CADR SATSTKON
# SUBROUTINES CALLED
# ENDEXT
# IBNKCALL
# STICKCHK
# NEEDLER
# T5RUPT
# RESUME
# ASTRONAUT REQUESTS
# ENTRY - VERB 46 ENTER
# (CONDITION - BITS 13, 14 OF DAPDATR1 SET)
#
# EXIT - VERB 48 ENTER (FLASH V06N46)
# VERB 21 ENTER AXXXX ENTER WHERE A=0 OR 1
# VERB 34 ENTER
# VERB 46 ENTER
# NORMAL EXIT MODE
# VERB 46 ENTER (SEE ASTRONAUT ABOVE)
# ALARM OR ABORT EXIT MODES
# NONE
# OUTPUT
# SATURN RATES IN CDUXCMD, CDUYCMD, CDUZCMD
# ERASABLE INITIALIZATION
# DAPDATR1 (BITS 13,14 MUST BE SET)
# DEBRIS
# CENTRALS
# Page 549
# CDUXCMD, CDUYCMD, CDUZCMD
BANK 43
SETLOC EXTVERBS
BANK
COUNT 23/STTKE
SATSTKON EXTEND
DCA 2REDOSAT
INHINT
DXCH T5LOC
CAF POSMAX
TS TIME5
CS FLAGWRD6 # TURN ON BITS 15,14 OF
MASK RELTAB11 # FLAGWRD6
ADS FLAGWRD6 # SATSTICK CONTROL OF T5
TC IBNKCALL # ZERO JET CHANNELS IN 14 MS AND THEN
CADR ZEROJET # LEAVE THE T6 CLOCK DISABLED
RELINT
TC GOPIN # EXIT THUS BECAUSE WE CAME VIA V46
EBANK= BODY3
2REDOSAT 2CADR REDOSAT
SBANK= LOWSUPER
BANK 32
SETLOC P11FOUR
BANK
REDOSAT LXCH BANKRUPT # ALSO COMES HERE FOR RESTARTS
EXTEND
QXCH QRUPT
CS RCSFLAGS # TURN ON BIT3 OF RCSFLAGX
MASK BIT3 # FOR
ADS RCSFLAGS # NEEDLER INITIALIZATION
TC IBNKCALL
CADR NEEDLER # DISABLE IMU ERR COUNTERS ETC.
CAF BIT9 # SIVB
EXTEND # TAKEOVER
WOR CHAN12 # ENABLE
EXTEND # SET UP T5 CYCLE
DCA 2SATSTCK
DXCH T5LOC
CAF 100MST5 # IN 100 MSECS
TS TIME5
TCF RESUME # END OF SATURN STICK INITIALIZATION
# THIS SECTION IS EXECUTED EVERY 100 MSECS
# Page 550
SATSTICK LXCH BANKRUPT
EXTEND
QXCH QRUPT
CAF 2SATSTCK # SET UP RUPT
TS T5LOC # LO ORDER LOC SET
CAF 100MST5 # 100 MSECS
TS TIME5
CAF STIKBITS
EXTEND
RXOR CHAN31 # CHECK IF MAN ROT BITS SAME
MASK STIKBITS
TC IBNKCALL # SET RATE INDICES
CADR STICKCHK # FOR PITCH YAW AND ROLL
INDEX RMANNDX # SET SATURN RATES
CA SATRATE
TS AK # ROLL
INDEX PMANNDX
CA SATRATE
TS AK1 # PITCH
INDEX YMANNDX
CA SATRATE
TS AK2 # YAW
TC IBNKCALL # FOR SATURN INTERFACE AND FDAI DISPLAY
CADR NEEDLER
TCF RESUME # END OF SATURN STICK CONTROL
STIKBITS OCT 00077
100MST5 DEC 16374
EBANK= BODY3
2SATSTCK 2CADR SATSTICK