Raw File
THROTTLE_CONTROL_ROUTINES.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    THROTTLE_CONTROL_ROUTINES.agc
## Purpose:     A log section of Zerlina 56, the final revision of
##              Don Eyles's offline development program for the variable 
##              guidance period servicer. It also includes a new P66 with LPD 
##              (Landing Point Designator) capability, based on an idea of John 
##              Young's. Neither of these advanced features were actually flown,
##              but Zerlina was also the birthplace of other big improvements to
##              Luminary including the terrain model and new (Luminary 1E)
##              analog display programs. Zerlina was branched off of Luminary 145,
##              and revision 56 includes all changes up to and including Luminary
##              183. It is therefore quite close to the Apollo 14 program,
##              Luminary 178, where not modified with new features.
## Reference:   pp. 779-783
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2017-07-28 MAS  Created from Luminary 210.
##              2017-08-19 MAS  Updated for Zerlina 56.
##              2017-08-24 MAS  Corrected some instructions related to storing to PIF.

## Page 779
# T  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  E
#  H  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  Y
#   R  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  L
#    O  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  E
#     T  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  S
                
                SETLOC  FTHROT
                BANK
                COUNT*  $$/THROT
                EBANK=  PIF

#     ENTER HERE FROM P66ROD WITH PIF IN A.

P66THROT        EXTEND
                QXCH    RTNHOLD
                TS      PIF
                TCF     DOITP66

#     ENTER HERE IN P63 AND P64.  FIRST COMPUTE FP (PRESENT THRUST) AND FC (DESIRED THRUST) IN OUTPUT BIT UNITS.

THROTTLE        CA      ABDELV          # COMPUTE PRESENT ACCELERATION IN UNITS OF
                EXTEND                  #   2(-4) M/CS/CS, SAVING SERVICER TROUBLE
                MP      /AF/CNST
                EXTEND
                QXCH    RTNHOLD
AFDUMP          TC      MASSMULT
                DXCH    FP              # FP = PRESENT THRUST
                EXTEND
                DCA     FWEIGHT
                DAS     FP
                DXCH    FP
                EXTEND
                MP      2SECS
                EXTEND
                DV      PGUIDE
                TS      FP

                EXTEND
                DCA     /AFC/
                TC      MASSMULT
                INHINT                  # PREVENT A DOWNRUPT
                TS      FC              # FC = THRUST DESIRED BY GUIDANCE
                DXCH    FCODD           # FCODD = WHAT IT IS GOING TO GET


                EXTEND
                DCA     PIPTIME
                DXCH    GTCTIME         # DOWNLINK TIME AGREEMENT
                RELINT
                
## Page 780
#     THIS LOGIC DETERMINES THE THROTTLING IN THE REGION 10% - 94%.   THE MANUAL THROTTLE, NOMINALLY SET AT
# MINIMUM BY THE ASTRONAUT, PROVIDES THE LOWER BOUND.   A STOP IN THE THROTTLE HARDWARE PROVIDES THE UPPER.

WHERETO         CA      EBANK5          # INITIALIZE L*WCR*T AND H*GHCR*T FROM
                TS      EBANK           #   PAD LOADED ERASABLES IN W-MATRIX
                EBANK=  LOWCRIT
                EXTEND
                DCA     LOWCRIT
                DXCH    L*WCR*T
                CA      EBANK7
                TS      EBANK
                EBANK=  PIF
                CS      ZERO            # INITIALIZE PIFPSET
                TS      PIFPSET
                CS      H*GHCR*T
                AD      FCOLD
                EXTEND
                BZMF    LOWFCOLD        # BRANCH IF FCOLD < OR = HIGHCRIT
                CS      L*WCR*T
                AD      FCODD
                EXTEND
                BZMF    FCOMPSET        # BRANCH IF FC < OR = LOWCRIT
                CA      FP              # SEE NOTE 1
                TCF     FLATOUT1

FCOMPSET        CS      FMAXODD         # SEE NOTE 2
                AD      FP
                TCF     FLATOUT2

LOWFCOLD        CS      H*GHCR*T
                AD      FCODD
                EXTEND
                BZMF    DOPIF           # BRANCH IF FC < OR = HIGHCRIT

                CA      FMAXPOS         # NO:   THROTTLE-UP
FLATOUT1        XCH     FCODD
                CA      FEXTRA
FLATOUT2        TS      PIFPSET

#                                         NOTE 1   FC IS SET EQUAL TO FP SO PIF WILL BE ZERO.   THIS IS DESIRABLE
#                                                  AS THERE IS ACTUALLY NO THROTTLE CHANGE.

#                                         NOTE 2   HERE, SINCE WE ARE ABOUT TO RETURN TO THE THROTTLEABLE REGION
#                                                  (BELOW 55%) THE QUANTITY -(FMAXODD - FP) IS COMPUTED AND PUT
#                                                  INTO PIFPSET TO COMPENSATE FOR THE DIFFERENCE BETWEEN THE
#                                                  NUMBER OF BITS CORRESPONDING TO FULL THROTTLE (FMAXODD) AND THE
#                                                  NUMBER CORRESPONDING TO ACTUAL THRUST (FP).   THUS THE TOTAL
#                                                  THROTTLE COMMAND PIF = FC - FP -(FMAXODD - FP) = FC - FMAXODD.

DOPIF           CS      FP              # COMPUTE PIF AND LIMIT IT TO 4096 BITS
## Page 781
                AD      FCODD           #   SO FWEIGHT COMPUTATION CAN'T OVERFLOW
                TS      L
                CAF     BIT13
                TC      BANKCALL
                CADR    LIMITSUB

DOIT            TS      PIF
                AD      PIFPSET         # ADD IN PIFPSET, WITHOUT CHANGING PIF
DOITP66         XCH     PIFPSET         # STASH IT IN PIFPSET FOR A MOMENT
                CAF     BIT10           # DOES PGNCS HAVE CONTROL?
                EXTEND
                RAND    CHAN30
                CCS     A
                TCF     ZILCH           # NO:   AGS, DARN IT, ZERO AUTO-THROTTLE
                CA      PIFPSET         # YES:  RETRIEVE OUTPUT AND PRESS ON
THROTOUT        TS      PSEUDO55
                TS      THRUST
                CAF     BIT4
                EXTEND
                WOR     CHAN14

#     SINCE /AF/ IS NOT AN INSTANTANEOUS ACCELERATION, BUT RATHER AN "AVERAGE" OF THE ACCELERATION LEVELS DURING
# THE PRECEEDING PIPA INTERVAL, AND SINCE FP IS COMPUTED DIRECTLY FROM /AF/, FP IN ORDER TO CORRESPOND TO THE
# ACTUAL THRUST LEVEL AT THE END OF THE INTERVAL MUST BE WEIGHTED BY

#                                   PIF(PPROCESS + TL)     PIF /PIF/
#                         FWEIGHT = ------------------ + -------------
#                                         PGUID          2 PGUID FRATE

# WHERE PPROCESS IS THE TIME BETWEEN PIPA READING AND THE START OF THROTTLING, PGUID IS THE GUIDANCE PERIOD, AND
# FRATE IS THE THROTTLING RATE (32 UNITS PER CENTISECOND).  PGUID IS EITHER 1 OR 2 SECONDS. THE "TL" IN THE
# FIRST TERM REPRESENTS THE ENGINE'S RESPONSE LAG.   HERE FWEIGHT IS COMPUTED FOR USE NEXT PASS.

                CAF     8SECS
                TS      Q
                EXTEND
                MP      BIT5
                LXCH    BUF  +1
                CS      GTCTIME  +1     # TIME AT LAST PIPA READING.
                AD      TIME1
## "AD THROTLAG" below is surrounded by drawn-in parentheses.
                AD      THROTLAG        # COMPENSATE FOR ENGINE RESPONSE LAG
                MASK    LOW9            # MAKE SURE SMALL AND POSITIVE
                ZL
                EXTEND
                DV      Q
                EXTEND
                MP      PIF
                DDOUBL
                DDOUBL
                DXCH    FWEIGHT1
## Page 782
                CCS     PIF
                AD      ONE
                TCF     +2
                AD      ONE
                EXTEND
                MP      PIF
                EXTEND
                DV      BUF +1
                ADS     FWEIGHT1
#     COMPUTE DESIRED THRUST FOR DISPLAY AS A PERCENTAGE OF 10500 POUNDS.

                CA      FC
                EXTEND
                MP      100/3727
                TS      THRDISP         # FOR DISPLAY IN  N92

THDUMP          TC      RTNHOLD


#     FLATOUT THROTTLES UP THE DESCENT ENGINE, AND IS CALLED AS A BASIC SUBROUTINE.

FLATOUT         CAF     BIT13           # 4096 PULSES
WHATOUT         TS      PIFPSET         # USE PIFPSET SO FWEIGHT WILL BE ZERO
                CS      ZERO
                TS      FCOLD
                EXTEND
                QXCH    RTNHOLD
                TCF     DOIT


#     DO WHAT HAS TO BE DONE WHEN AGS HAS CONTROL.

ZILCH           CS      ZERO            # COME HERE WHEN IN AGS TO ZERO THE AUTO-
                TS      PIF             #   THROTTLE.  FIRST SET PIF AND FC SO THE
                TS      FC              #   FWEIGHT AND N92 DISPLAY COMPUTATIONS
                CS      FEXTRA          #   WILL COME OUT RIGHTER.  THEN GRAB A
                TCF     THROTOUT        #   BATCH OF NEG BITS AND RETURN.

#     MASSMULT SCALES ACCELERATION, ARRIVING IN A AND L IN UNITS OF 2(-4) M/CS/CS, TO FORCE IN PULSE UNITS.

MASSMULT        DXCH    MPAC
 +1             EXTEND
                QXCH    BUF
                TC      DMP
                ADRES   MASS
                TC      DMP             # LEAVES PROPERLY SCALED FORCE IM MPAC
                ADRES   SCALEFAC
                TC      TPAGREE
                CA      MPAC
                EXTEND
## Page 783
                BZF     +3
                CAF     POSMAX
                TC      BUF
                DXCH    MPAC +1
                TC      BUF


#           CONSTANTS:-

FEXTRA          =       BIT13           # FEXT        +5.13309020 E+4

/AF/CNST        DEC     .13107

100/3727        DEC     .02683

8SECS           DEC     +800

# *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
#  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
#   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *

#   *  *  *  *  *  *  *  *  *  *  *  *  *
back to top