swh:1:snp:cac5fb5e02e08ee7616a46f7bfbaeee022e40e15
Tip revision: 52901838ab640b21ad17cecf2eff21bd2a65565b authored by Mike Stewart on 22 September 2019, 06:57:09 UTC
Luminary 173: final cleanup and removal of incompletion warnings
Luminary 173: final cleanup and removal of incompletion warnings
Tip revision: 5290183
TVCEXECUTIVE.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: TVCEXECUTIVE.agc
## Purpose: A section of Artemis revision 071.
## It is part of the reconstructed source code for the first
## release of the flight software for the Command Module's
## (CM) Apollo Guidance Computer (AGC) for Apollo 15 through
## 17. The code has been recreated from a copy of Artemis 072.
## It has been adapted such that the resulting bugger words
## exactly match those specified for Artemis 071 in NASA
## drawing 2021154-, which gives relatively high confidence
## that the reconstruction is correct.
## Reference: 950
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2019-08-14 MAS Created from Artemis 072.
## Page 950
# PROGRAM NAME.... TVCEXECUTIVE, CONSISTING OF TVCEXEC, NEEDLEUP, VARGAINS
# 1SHOTCHK, REPCHEK, CG.CORR, COPYCYCLES, ETC.
# LOG SECTION...TVCEXECUTIVE SUBROUTINE...DAPCSM
# MODIFIED BY SCHLUNDT 21 OCTOBER 1968
# MODIFIED BY BEALS TO ELIMINATE CSMMASS UPDATE LOGIC (NOW DONE IN S40.8)
# FUNCTIONAL DESCRIPTION....
#
# *A SELF-PERPETUATING WAITLIST TASK AT 1/2 SECOND INTERVALS WHICH:
# PREPARES THE ROLL DAP WITH OGA (CDUX)
# PREPARES THE ROLL FDAI NEEDLE (FLY-TO OGA ERROR)
# PREPARES THE ROLL PHASE PLANE OGAERR (FLY-FROM OGA ERROR)
# PREPARES THE TVC ROLLDAP TASK WAITLIST CALL (3 CS DELAY)
# UPDATES THE NEEDLES DISPLAY
# CALLS MASSPROP TO UPDATE INERTIA DATA
# UPDATES PITCH, YAW, AND ROLL DAP GAINS FROM MASSPROP DATA
# PERFORMS ONE-SHOT CORRECTION FOR TMC LOOP 0-3 SEC AFTER IGNITION
# PERFORMS REPETITIVE UPDATES FOR TMC LOOP AFTER THE ONE-SHOT CORR.
#
# CALLING SEQUENCE....
#
# *TVCEXEC CALLED AS A WAITLIST TASK, IN PARTICULAR BY TVCINIT4 AND BY
# ITSELF, BOTH AT 1/2 SECOND INTERVALS
#
# NORMAL EXIT MODE.... TASKOVER
#
# ALARM OR ABORT EXIT MODES.... NONE
#
# SUBROUTINES CALLED....NEEDLER, S40.15, MASSPROP, TASKOVER, IBNKCALL
#
# OTHER INTERFACES....
#
# *TVCRESTART PACKAGE FOR RESTARTS
# *PITCHDAP, YAWDAP FOR VARIABLE GAINS AND ENGINE TRIM ANGLES
# ERASABLE INITIALIZATION REQUIRED....
#
# *SEE TVCDAPON....TVCINIT4
# *VARK AND 1/CONACC (S40.15 OF TVCINITIALIZE)
# *PAD LOAD EREPFRAC
# *BITS 15,14 OF FLAGWRD6 (T5 BITS)
# *TVCEXPHS FOR RESTARTS
# *ENGINE-ON BIT (11.13) FOR RESTARTS
# *CDUX, OGAD
#
# OUTPUT....
#
# *ROLL DAP OGANOW, FDAI NEEDLE (AK). AND PHASE PLANE OGAERR
# *VARIABLE GAINS FOR PITCH/YAW AND ROLL TVC DAPS
# *SINGLE-SHOT AND REPETITIVE CORRECTIONS TO ENGINE TRIM ANGLES
# PACTOFF AND YACTOFF
# DEBRIS.... MUCH, BUT SHAREABLE WITH RCS/ENTRY, ALL IN EBANK6
## Page 951
SETLOC DAPROLL
BANK
EBANK= CNTR
COUNT* $$/TVCX
TVCEXEC CS FLAGWRD6 # CHECK FOR TERMINATION (BITS 15,14 READ
MASK DPCONFIG # 10 FROM TVCDAPON TO RCSDAPON
EXTEND
BZMF TVCEXFIN # TERMINATE
CAF .5SEC # W.L. CALL TO PERPETUATE TVCEXEC
TC TWIDDLE
ADRES TVCEXEC
ROLLPREP CAE CDUX # UPDATE ROLL LADDERS (NO NEED TO RESTART-
XCH OGANOW # PROTECT, SINCE ROLL DAPS RE-START)
XCH OGAPAST
CAE OGAD # PREPARE ROLL FDAI NEEDLE WITH FLY-TO
EXTEND # ERROR (COMMAND - MEASURED)
MSU OGANOW
TS AK # FLY-TO OGA ERROR, SC.AT B-1 REVS
EXTEND # PREPARE ROLL DAP PHASE PLANE OGAERR
MP -BIT14
TS OGAERR # PHASE-PLANE (FLY-FROM) OGAERROR,
# SC.AT B+0 REVS
CAF THREE # SET UP ROLL DAP TASK (ALLOW SOME TIME)
TC TWIDDLE
ADRES ROLLDAP
NEEDLEUP TC IBNKCALL # DO A NEEDLES UPDATE (RETURNS AFTER CADR)
CADR NEEDLER # (NEEDLES RESTARTS ITSELF)
VARGAINS CCS VCNTR # TEST FOR GAIN UPDATE TIME
TCF EXECCOPY # NOT YET
GAINCHNG TC IBNKCALL # UPDATE IXX, IAVG, IAVG/TLX
CADR FIXCW # MASSPROP ENTRY (ALREADY INITIALIZED)
TC IBNKCALL # UPDATE 1/CONACC, VARK
CADR S40.15 # (S40.15 IS IN TVCINITIALIZE)
CAF NINETEEN # RESET THE VARIABLE-GAIN UPDATE COUNTER
EXECCOPY TS VCNTR
1SHOTCHK CCS CNTR # CHECK TIME FOR ONE-SHOT OR REPCORR
TCF +4 # NOT YET
TCF 1SHOTOK # NOW
TCF REPCHEK # ONE-SHOT OVER, ON TO REPCORR
TCF 1SHOTOK # NOW (ONE-SHOT ONLY, NO REPCORR)
+4 TS CNTRTMP # COUNT DOWN
CAF FOUR # SET UP TVCEXPHS FOR ENTRY AT CNTRCOPY
## Page 952
TS TVCEXPHS
TCF CNTRCOPY
REPCHEK CAE REPFRAC # CHECK FOR REPETITIVE UPDATES
EXTEND
BZMF TVCEXFIN # NO, OVER-AND-OUT
TS TEMPDAP +1 # YES, SET UP CORRECTION FRACTION
CAF TWO # SET UP TVCEXPHS FOR ENTRY AT CORSETUP
TS TVCEXPHS
TCF CORSETUP
1SHOTOK CAF ENGONBIT
MASK FLAGWRD5
CCS A
TCF +2 # ONE-SHOT OK
TCF TVCEXFIN # NO, TERMINATE
INCR TVCEXPHS # (1)
TEMPSET CAF FCORFRAC # SET UP CORRECTION FRACTION
TS TEMPDAP +1
INCR TVCEXPHS # ENTRY FROM REPCHECK AT NEXT LOCATION (2)
CORSETUP CAE DAPDATR1 # CHECK FOR LEM-OFF/ON
MASK BIT13 # (NOTE, SHOWS LEM-OFF)
EXTEND
BZF +2 # LEM IS ON, PICK UP TEMPDAP+1
CAE TEMPDAP +1 # LEM IS OFF, PICK UP 2(TEMPDAP+1)
AD TEMPDAP +1
TS TEMPDAP # CG.CORR USES TEMPDAP
CAF NEGONE # SET UP FOR CNTR = -1 (ONE-SHOT DONE)
TS CNTRTMP # (COPYCYCLE AT .CNTRCOPY.)
CG.CORR EXTEND # PITCH TMC LOOP
DCA PDELOFF
DXCH PACTTMP
EXTEND
DCS PDELOFF
DDOUBL
DDOUBL
DXCH TTMP1
EXTEND
DCA DELPBAR
DDOUBL
DDOUBL
DAS TTMP1
EXTEND
DCA TTMP1
EXTEND
MP TEMPDAP
## Page 953
DAS PACTTMP
EXTEND # YAW TMC LOOP
DCA YDELOFF
DXCH YACTTMP
EXTEND
DCS YDELOFF
DDOUBL
DDOUBL
DXCH TTMP1
EXTEND
DCA DELYBAR
DDOUBL
DDOUBL
DAS TTMP1
EXTEND
DCA TTMP1
EXTEND
MP TEMPDAP
DAS YACTTMP
CORCOPY INCR TVCEXPHS # RESTART PROTECT THE COPYCYCLE (3)
EXTEND # TRIM-ESTIMATES, AND
DCA PACTTMP
TS PACTOFF # TRIMS
DXCH PDELOFF
EXTEND
DCA YACTTMP
TS YACTOFF
DXCH YDELOFF
INCR TVCEXPHS # ENTRY FROM 1SHOTCHK AT NEXT LOCATION (4)
CNTRCOPY CAE CNTRTMP # UPDATE CNTR (RESTARTS OK, FOLLOWS CPYCY)
TS CNTR
TVCEXFIN CAF ZERO # RESET TVCEXPHS
TS TVCEXPHS
TCF TASKOVER # TVCEXECUTIVE FINISHED
FCORFRAC = BIT13 # ONE-SHOT CORRECTION FRACTION