Apollo-11/Comanche055/TVCRESTARTS.s
2016-07-11 22:26:54 -05:00

273 lines
9.7 KiB
ArmAsm

# Copyright: Public domain.
# Filename: TVCRESTARTS.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: 956-960
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images.
# 2009-05-20 RSB Corrections: TCF -> BZF in one place.
# 2009-05-21 RSB In PHSCHK2, CS TVCPHASE corrected to
# CCS TVCPHASE and CCS 4 corrected to CCS A.
# Page 924 corrected to 961. CORCOPY +2
# corrected to CORCOPY +1.
#
# 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 956
# NAME....TVCRESTART PACKAGE, CONSISTING OF REDOTVC, ENABL1, 2, CMDSOUT, PHSCHK2, ETC.
# LOG SECTION....TVCRESTARTS SUBROUTINE....DAPCSM
# MODIFIED BY SCHLUNDT 21 OCTOBER 1968
#
# FUNCTIONAL DESCRIPTION....
#
# *RESTART-PROCESS THE TVC DAPS, INCLUDING PITCHDAP, YAWDAP,
# TVCEXECUTIVE, ROLLDAP, TVCINIT4, TVCDAPON, AND CSM/.M V46 SWTCHOVR.
#
# *TVC RESTARTS DESERVE SPECIAL CONSIDERATION IN SEVERAL AREAS.
# RESTART DOWN-TIME IS IMPORTANT BECAUSE OF THE TRANSIENTS INTRODUCED
# BY THE THRUST VECTOR RETURN TO THE ACTUATOR MECHANICAL NULLS
# FOLLOWING TVC- AND OPTICS-ERROR-COUNTER-DISENABLES (CHANNEL 12).
# TVC USES A MIXTURE OF WAITLIST, T5, T6, AND JOB CALLS. THERE IS
# FILTER MEMORY (UP TO 6TH ORDER) TO BE PROTECTED IF WILD TRANSIENTS
# ARE TO BE AVOIDED. COUNTERS ARE INVOLVED FOR ONE-SHOT
# CORRECTIONS AND GAIN UPDATES. THE GIMBAL TRIM ESTIMATORS AND THE
# BODY AXIS ATTITUDE ERROR INTEGRATORS INVOLVE DIGITAL SUMMATION.
# DIGITAL DIFFERENTIATORS ARE INVOLVED IN THE BODY AXIS RATE ESTIMA-
# TIONS AND IN THE OUTPUTTING OF ACTUATOR COMMANDS. THERE IS AN
# OFFSET-TRACKER-FILTER TO PROTECT. ETC., ETC.
#
# *THOSE QUANTITIES WHICH MUST BE PROTECTED ARE STORED IN TEMPORARY
# REGISTERS AS THEY ARE COMPUTED, FOR UPDATING THE REAL REGISTERS
# DURING COPYCYCLES.
#
# *THE SEVERAL COPYCYCLES ARE EACH PROTECTED BY PHASE POINTS AT THEIR
# BEGINNING AND AT THEIR TERMINATION. THE PHASE POINTS ARE SIMPLY
# "INCR" INSTRUCTIONS, EITHER "INCR TVCEXPHS" FOR COPYCYCLES
# IN THE TVCEXECUTIVE, OR "INCR TVCPHASE" FOR THE PITCH AND YAW
# COPYCYCLES. INDEXING ON EACH OF THESE POINTERS THEN PERMITS A
# RETURN TO THE APPROPRIATE RESTART POINTS.
#
# *IF A RESTART OCCURS DURING EITHER COPYCYCLE, THAT COPYCYCLE IS
# COMPLETED. THEN THE NORMAL TVCINIT4....DAPINIT....PITCHDAP STARTUP
# SEQUENCE IS CALLED UPON TO GET THINGS GOING AGAIN.
#
# *TVC-ENABLE AND OPTICS-ERROR-COUNTER ENABLE MUST BE SET ASAP
# (ALLOWING FOR PROCEDURAL DELAYS). THEN THE ENGINES ARE COMMANDED
# TO THE P,YACTOFF TRIM VALUES. THE DAPS ARE THEN READY TO GO ON THE
# AIR, WITH THE REGULAR STARTUP SEQUENCE, EITHER AT MRCLEAN FOR A
# COMPLETE INITIALIZATION OR AT TVCINIT4 FOR A PARTIAL INITIALIZATION.
#
# *FOR RESTARTS PRIOR TO THE SETTING OF THE T5 BITS AT DOTVCON THE
# PRE40.6 SECTION OF S40.6 TAKES CARE OF RE-ESTABLISHING TRIMS.
#
# *IF A RESTART OCCURS DURING THE TVCEXEC....TVCEXFIN SEQUENCE THE
# COMPUTATIONS WILL BE COMPLETED, STARTING AT THE APPROPRIATE RESTART
# POINT, AFTER THE DAPS ARE READY TO GO ON THE AIR.
#
# *IF A RESTART OCCURS PRIOR TO TVCINIT4 (TVCPHAS = -1) E.G. DURING
# THE EARLY DAP INITIALIZATION PHASE, THE DAP STARTUP SEQUENCE IS
# ENTERED AT MRCLEAN FOR A FULL INITIALIZATION.
#
# *FOR RESTARTS DURING CSM/LM V46 SWITCH-VER, TVCPHASE IS SET TO -2.
# AND THE RESTART LOGIC GOES BACK TO REDO SWITCH-OVER (AFTER THE
# NORMAL DAP RESTART SEQUENCE IS FOLLOWED.)
#
# *RESTARTS ARE NOT CRITICAL TO THE ROLL DAP PERFORMANCES HENCE THE
# ROLL DAP IS MERELY RESTARTED.
#
# *RESTARTS DURING A STROKE TEST (STROKER IS NON-ZERO) WILL CAUSE THE
# Page 957
# STROKE TEST TO BE TERMINATED. A NEW V68 ENTRY WILL BE REQUIRED
# TO GET IT GOING AGAIN (NO AUTOMATIC RESTART).
#
# *REDOTVC IS REACHED FOLLOWING ANY RESTART WHICH FINDS THE T5 BITS
# (BITS 15,14 OF FLAGWRD6) SET FOR TVC. DOTVCON TVCPHASE = -1
# AND TVC EXPHS = 0 JUST BEFORE SETTING THESE BITS, JUST BEFORE
# MAKING THE T5 CALL TO TVCDAPON. ON A NORMAL SHUTDOWN DOTVCRCS
# CALLS RCSDAPON, WHICH RESETS THE T5 BIT FOR RCS
#
# CALLING SEQUENCE....T5, IN PARTICULAR BY ELRSKIP OF FRESH START/RESTART
#
# NORMAL EXIT MODES....RESUME, NOQRSM, POSTJUMP (TO TVCINIT4 OR MRCLEAN)
#
# ALARM OR ABORT EXIT MODES....NONE
#
# SUBROUTINES CALLED....
#
# *PCOPY+1, YCOPY+1 (PITCH AND YAW COPYCYCLES)
# *ENABLE1,2, CMDSOUT (RE-ESTABLISH ACTUATOR TRIMS)
# *MRCLEAN OR TVCINIT4 (TVCDAP INITIALIZATIONS)
# *SWITCHOVR +5 (CSM/LM V46 SWITCH-OVER)
# *EXRSTRT AND TVCEXECUTIVE PHASE POINTS 1 THRU 6
# *WAITLIST, IBNKCALL, POSTJUMP, ISWCALL
#
# OTHER INTERFACES....DOTVCON AND RCSDAPON (T5 BITS), ELRSKIP (CALLS IT)
#
# ERASABLE INITIALIZATION REQUIRED....
#
# *T5 BITS (1,0), TVCPHASE (-2,-1,0,1,2,3), TVCEXPHS (1 THRU 6)
# *TVC DAP VARIABLES
# *OPERATIONS PERFORMED BY REDOTVC ARE BASED ON THE ASSUMPTION THAT
# THE TVC DAPS ARE RUNNING NORMALLY
#
# OUTPUT....
#
# *PITCH AND YAW TVC DAP COPYCYCLES COMPLETED IF INTERRUPTED
# *TVCEXECUTIVE COMPLETED IF INTERRUPTED
# *STROKE TEST TERMINATED IF INTERRUPTED
# *CSM/LM V46 SWITCH-OVER REPEATED IF INTERRUPTED
# *ACTUATOR TRIMS RE-ESTABLISHED (ACTUATORS BACK ON THE AIR)
# *TVC DAP INITIALIZATION AS REQUIRED
# *ALL TVC DAP OPERATIONS ON THE AIR
#
# DEBRIS....TVC TEMPORARIES IN EBANK6
#Page 958
BANK 16
SETLOC DAPROLL
BANK
EBANK= TVCPHASE
COUNT* $$/RSRT
REDOTVC LXCH BANKRUPT # TVC RESTART PACKAGE
EXTEND
QXCH QRUPT # ("TCR" IN "FINCOPY")
EXECPHS CCS TVCEXPHS # CHECK TVCEXECUTIVE PHASE
TCF +2 # MUST RESTART TVCEXECUTIVE
TCF TVCDAPHS # NO NEED TO RESTART TVCEXECUTIVE
CAF NINE # 9CS DELAY TO FORCE EXRSTRT TO OCCUR
TC WAITLIST # BEFORE PITCHDAP, AFTER CMDSOUT
EBANK= TVCEXPHS
2CADR EXRSTRT
TVCDAPHS CS OCT37776 # CHECK BITS 15 AND 1 OF TVCPHASE TO SEE
MASK TVCPHASE # DAP RESTART LOCATION (-1,1,2,3)
CCS A
TCF FINCOPY # FINISH THE COPYCYCLE FIRST
TCF ENABL1 # JUST PREPARE THE OUTCOUNTERS AND GO
CS TVCPHASE # TEST FOR TVCPHASE = -2
MASK BIT2 # (THIS INDICATES RESTART OCCURRED
EXTEND # DURING CSM/LM V46 SWITCH-OVER)
BZF TRIM/CMD # NO. TVCPHASE = -1. RSTRT WAS IN TVCINIT
ENABL1 CAF BIT8 # TVC ENABLE, FOLLOWED BY 40 MS (MIN) WAIT
AD BIT11 # SET BIT FOR OPTICS-DAC-ENABLE ALSO
EXTEND # (ENABL1 ENTERED FROM TVCDAPHS / FINCOPY)
WOR CHAN12
CAF TVCADDR # WAIT, CALLING ENABL2 (BBCON THERE)
TS T5LOC
CAF TVCADDR +4 # 60 MS (TVCEXADR)
TS TIME5
TCF RESUME
ENABL2 LXCH BANKRUPT # CONTINUE PREPARATION OF OUTCOUNTERS
CAF BIT2 # OPTICS ERROR CNTR ENABLE, 4MS MIN WAIT
EXTEND
WOR CHAN12
# Page 959
CAF TVCADDR +2 # WAIT, CALLING CMDSOUT (BBCON THERE)
TS T5LOC
CAF OCT37776 # 20MS
TS TIME5
TCF NOQRSM
CMDSOUT LXCH BANKRUPT # CONTNUE PREPARATION OF OUTCOUNTERS
EXTEND
QXCH QRUPT
CS ZERO # MOST RECENT ACTUATOR COMMANDS
AD PCMD # (AVOID +0)
TS TVCPITCH
CS ZERO
AD YCMD
TS TVCYAW
CAF PRIO6 # RELEASE THE COUNTERS (BITS 11,12)
EXTEND
WOR CHAN14
PHSCHK2 CCS TVCPHASE # CHECK TVCPHASE AGAIN
TCF CHKSTRK
TCF CHKSTRK
CCS A # A CONTAINS THE DIMINISHED ABSOLUTE OF
TC +3 # TVCPHASE (-2 BECOMES +1. -1 BECOMES +0)
TC POSTJUMP # REPEAT TVC INITIALIZATION
CADR MRCLEAN # (DO NOT RETURN)
+3 TC IBNKCALL # REPEAT CSM/LM V46 SWITCH-OVER
CADR SWICHOVR +5 # (RETURN TO CHECK FOR STROKE TEST)
CHKSTRK CCS STROKER # CHECK FOR STROKE TEST IN PROGRESS
TCF TSTINITJ # YES, KILL IT
TCF +2 # NO, PROCEED
TCF TSTINITJ # YES, KILL IT
+4 TC POSTJUMP # IF POSITIVE OR ZERO, RESTART AT
CADR TVCINIT4 # TVCINIT4 (ZEROS TVCPHASE, AND
# CALLS TVC DAPS VIA DAPINIT)
FINCOPY INDEX TVCPHASE # PICK UP THE APPROPRIATE COPYCYCLE
CAF TVCCADR
TCR ISWCALL # RE-ENTER THE COPYCYCLE, RETURN AT END
TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS
TRIM/CMD EXTEND # TVCDAPON INITIALIZATION NOT COMPLETED,
# Page 960
DCA PACTOFF # EG. P,YCMD MAY NOT BE SET. SET...
DXCH PCMD
TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS
TSTINITJ CAF ZERO # DISABLE STROKE TEST (-0 SHOWS PRIOR V68)
TS STROKER # (+0 MEANS NEW V68 REQUIRED FOR STARTUP)
TCF CHKSTRK +4
EXRSTRT INDEX TVCEXPHS # TVCEXECUTIVE RESTARTS....GO TO
CAF TVCEXADR # APPROPRIATE RESTART POINT
INDEX A
TCF 0
# Page 961
# TVC RESTART TABLES.... ORDER IS REQUIRED. HI-ORDER WORDS ONLY, OF 2CADRS, SINCE BBCON IS ALREADY THERE.
TVCADDR = TVCCADR # TABLE OF CADRS, UNUSED LOCS FOR GENADRS
TVCCADR GENADR ENABL2 # (FOR T5 CALL, UNUSED TABLE LOC)
+1 CADR PCOPY +1 # PITCH COPYCYCLE
+2 GENADR CMDSOUT # (FOR T5 CALL, UNUSED TABLE LOC)
+3 CADR YCOPY +1 # YAW COPYCYCLE
TVCEXADR OCT 37772 # (UNUSED TABLE LOC, FILL WITH 60MS, T5)
+1 GENADR EXECCOPY +1 # TVCEXECUTIVE RESTART POINTS (ORDERED)
+2 GENADR 1SHOTCHK
+3 GENADR TEMPSET
+4 GENADR CORSETUP
+5 GENADR CORCOPY +1
+6 GENADR CNTRCOPY