https://github.com/virtualagc/virtualagc
Revision 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC, committed by Ron Burkey on 07 August 2022, 15:04:04 UTC
assembly listings from yaASM and yaLEMAP. Added some debugging messages
to 'make install'.  Tweaked debugging messages that VirtualAGC embeds in
'simulate'.  Verified buildability in Mint 21, 20, 19, 17, and verified
buildability using clang in Mint 17.
1 parent 6bb1acc
Raw File
Tip revision: 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Tip revision: 078c79d
SERVICER.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    SERVICER.agc
## Purpose:     A section of Luminary revision 173.
##              It is part of the reconstructed source code for the second
##              (unflown) release of the flight software for the Lunar
##              Module's (LM) Apollo Guidance Computer (AGC) for Apollo 14.
##              The code has been recreated from a reconstructed copy of
##              Luminary 178, as well as Luminary memo 167 (revision 1).
##              It has been adapted such that the resulting bugger words
##              exactly match those specified for Luminary 173 in NASA
##              drawing 2021152N, which gives relatively high confidence
##              that the reconstruction is correct.
## Reference:   pp. 850-889
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2019-09-18 MAS  Created from Luminary 178.
##              2019-09-21 MAS  Replaced calculation of VBIAS in NORMLIZE
##                              with calculation of UHYP, and moved NORMLIZE
##                              back to bank 23. Replaced implementation of
##                              COPYCYC1 with that from Luminary 131. Removed
##                              definitions of GSCALE1 and BIASFACT. Changed
##                              MUNRVG to match 131, except with the addition
##                              of a call to SGNAGREE. Changed VELUPDAT to
##                              add DELVS instead of subtract VSURFACE.

## Page 860
                BANK    37
                SETLOC  SERV1
                BANK

                EBANK=  DVCNTR
# *************************************   PREREAD   **************************************************************


                COUNT*  $$/SERV

PREREAD         CAF     SEVEN           # 5.7 SPOT TO SKIP LASTBIAS AFTER
                TC      GNUFAZE5        # RESTART.
                CAF     PRIO21
                TC      NOVAC
                EBANK=  NBDX
                2CADR   LASTBIAS        # DO LAST GYRO COMPENSATION IN FREE FALL

BIBIBIAS        TC      PIPASR +3       # CLEAR + READ PIPS LAST TIME IN FREE FALL
                                        # DO NOT DESTROY VALUE OF PIPTIME1

                CS      FLAGWRD7
                MASK    SUPER011        # SET V37FLAG AND AVEGFLAG (BITS 5 AND 6
                ADS     FLAGWRD7        #    OF FLAGWRD7)

                CS      DRFTBIT
                MASK    FLAGWRD2        # START POWERED FLITE GYRO COMPENSATION
                TS      FLAGWRD2        # BY T3RUPT

                CAF     FOUR            # NO LONGER NEEDED
                TS      PIPAGE

                CAF     PRIO22          # INITIALIZE NAVIGATED STATE VECTOR(SM COO
                TC      FINDVAC         # RD) FROM MIDTOAVE OUTPUTS PRIOR TO FIRST
                EBANK=  DVCNTR          # AVERAGE G.
                2CADR   NORMLIZE


                CA      TWO             # 5.2SPOT FOR REREADAC AND NORMLIZE
GOREADAX        TC      GNUTFAZ5
                CA      2SECS           # WAIT TWO SECONDS FOR READACCS
                TC      VARDELAY

## Page 861
# *************************************   READACCS   *************************************************************
READACCS        CS      OCT37771        # THIS PIECE OF CODING ATTEMPTS TO
                AD      TIME5           # SYNCHRONIZE READACCS WITH THE DIGITAL
                CCS     A               # AUTOPILOT SO THAT A PAXIS RUPT WILL
                CS      ONE             # OCCUR APPROXIMATELY 70 MILLISECONDS
                TCF     +2              # FOLLOWING THE READACCS RUPT.  THE 70 MS
                CA      ONE             # OFFSET WAS CHOSEN SO THAT THE PAXIS
 +2             ADS     TIME5           # RUPT WOULD NOT OCCUR SIMULTANEOUSLY
                                        # WITH ANY OF THE 8 SUBSEQUENT R10,R11
                                        # INTERRUPTS -- THUS MINIMIZING THE POSS-
                                        # IBILITY OF LOSING DOWNRUPTS.

                TC      PIPASR          # READ THE PIPAS AND THEN ZERO THEM.

PIPSDONE        CA      FIVE
                TC      GNUFAZE5
REDO5.5         CAF     ONE             # SHOWS THAT PIPAREAD HAD NOT STARTED
                TS      PIPAGE          # SO THAT RESTART BEGINS AT READACCS.

                CA      PRIO20
                TC      FINDVAC
                EBANK=  DVCNTR
                2CADR   SERVICER        # SET UP SERVICER JOB

                CA      BIT9
                EXTEND
                WOR     DSALMOUT        # TURN ON TEST CONNECTOR OUTBIT,AVE G ON.

                CA      FLAGWRD7        # WAS AVERAGE G ASKED TO BE TERMINATED?
                MASK    AVEGFBIT
                EXTEND
                BZF     AVEGOUT         # YES: SET UP FINAL EXIT.

                CA      FLAGWRD6        # NO: IS THIS P6X OR P12?
                MASK    MUNFLBIT
                EXTEND
                BZF     MAKEACCS        # NO: BYPASS LR READ AND DISPLAYS

                CS      FLGWRD11        # YES: DOES SOMEONE WANT TO BYPASS LR UPDT
                MASK    LRBYBIT
                EXTEND
                BZF     R10CALL         # YES: BYPASS LR READINGS

                CA      1.75SEC         # CALL R12 0.25 SEC PRIOR TO NEXT READACCS
                TC      WAITLIST        # VELOCITY LANDING RADAR READINGS ARE CENT
                EBANK=  VSELECT         # ERED AROUND PIPTIME. 2 VELOCITY AND 1 AL
                2CADR   R12READ         # TITUDE READINGS BEFORE PIPTIME,3 V AFTER

## Page 862
R10CALL         CCS     PHASE2
                TCF     MAKEACCS        # PHASE 2 ACTIVATED - AVOID MULTIPLE R10.

                CAF     SEVEN           # SET PIPCTR FOR 4X/SEC RATE.
                TS      PIPCTR

                CS      TIME1           # SET TBASE2 .05 SECONDS IN THE PAST.
                AD      FIVE
                AD      NEG1/2
                AD      NEG1/2
                XCH     TBASE2

                CAF     DEC17           # 2.21SPOT FOR R10,R11
                TS      L
                COM
                DXCH    -PHASE2

                CAF     OCT24           # FIRST R10,R11 IN .200 SECONDS.
                TC      WAITLIST
                EBANK=  UNIT/R/
                2CADR   R10,R11


MAKEACCS        CA      FOUR
                TCF     GOREADAX        # DO PHASE CHANGE AND RECALL READACCS


AVEGOUT         EXTEND
                DCA     AVOUTCAD        # SET UP FINAL SERVICER EXIT
                DXCH    AVGEXIT

                CA      FOUR            # SET 5.4 SPOT FOR REREADAC AND SERVICER
                TC      GNUTFAZ5        # IF REREADAC IS CALLED, IT WILL EXIT
                TC      TASKOVER        # END TASK WITHOUT CALLING READACCS


GNUTFAZ5        TS      L               # SAVE INPUT IN L
                CS      TIME1
                TS      TBASE5          # SET TBASE5
                TCF     +2

GNUFAZE5        TS      L               # SAVE INPUT IN L
                CS      L               # -PHASE IN A, PHASE IN L
                DXCH    -PHASE5         # SET -PHASE5,PHASE5
                TC      Q


                EBANK=  DVCNTR
AVOUTCAD        2CADR   AVGEND

## Page 863
1.75SEC         DEC     175
OCT37771        OCT     37771

                BANK    33
                SETLOC  SERVICES
                BANK

                COUNT*  $$/SERV

## Page 864
# *************************************   SERVICER   *************************************************************
#

SERVICER        TC      PHASCHNG        # RESTART REREADAC + SERVICER
                OCT     16035
                OCT     20000
                EBANK=  DVCNTR
                2CADR   GETABVAL

                CAF     PRIO31          # INITIALIZE 1/PIPADT IN CASE RESTART HAS
                TS      1/PIPADT        # CAUSED LASTBIAS TO BE SKIPPED.


                TC      BANKCALL        # PIPA COMPENSATION CALL
                CADR    1/PIPA

GETABVAL        TC      INTPRET
                VLOAD   ABVAL
                        DELV
                EXIT
                CA      MPAC
                TS      ABDELV          # ABDELV = CM/SEC*2(-14).
                EXTEND
                MP      KPIP
                DXCH    ABDVCONV        # ABDVCONV = M/CS *2(-5).
                EXTEND
                DCA     MASS
                DXCH    MASS1           # NO MASS MONITOR ON SURFACE.

MASSMON         CS      FLAGWRD8        # ARE WE ON THE SURFACE?
                MASK    SURFFBIT
                EXTEND
                BZF     MOONSPOT        # YES:  BYPASS MASS MESS

                CA      FLGWRD10        # NO:   WHICH VEX SHOULD BE USED?
                MASK    APSFLBIT
                CCS     A
                EXTEND                  # IF EXTEND IS EXECUTED, APSVEX --> A,
                DCA     APSVEX          #   OTHERWISE DPSVEX --> A
                TS      Q

                EXTEND
                DCA     ABDVCONV
                EXTEND
                DV      Q               # WHERE APPROPRIATE VEX RESIDES
                EXTEND
                MP      MASS
                DAS     MASS1

MOONSPOT        CA      KPIP1           # TP MPAC = ABDELV AT 2(14) CM/SEC
## Page 865
                TC      SHORTMP         # MULTIPLY BY KPIP1 TO GET

                DXCH    MPAC            # ABDELV AT 2(7) M/CS
                DAS     DVTOTAL         # UPDATE DVTOTAL FOR DISPLAY

                TC      TMPTOSPT        # CDUS AT PIPTIME LOADED INTO CDUSPOT CELL
                TC      BANKCALL        # SINES AND COSINES OF CDUSPOT.
                CADR    QUICTRIG

                CAF     XNBPIPAD
                TC      BANKCALL        # COMPUTE BOD-TO-SM MATRIX (XNB),AND
                CADR    FLESHPOT        # STORE INTO XNBPIPAD.

                TC      INTPRET
AVERAGEG        BON     CALL
                        MUNFLAG         # COMPUTE LM & CM STATE VECTORS IN LUNAR G
                        RVBOTH          # ,DO R12 , DO COPYCYCL1, RETURN AT COPYCL
                        CALCRVG         # UPDATE LM STATE VECTOR.
                EXIT
GOSERV          TC      QUIKFAZ5

COPYCYCL        TC      COPYCYC         # RN1,VN1,MASS1 => RN,VN,MASS.

#               CA      ZERO            A IS ZERO ON RETURN FROM COPYCYC
                TS      PIPATMPX        # STILL UNDER INHINT
                TS      PIPATMPY
                TS      PIPATMPZ

                CS      STEERBIT        # CLEAR STEERSW PRIOR TO DVMON.
                MASK    FLAGWRD2
                TS      FLAGWRD2

                CAF     IDLEFBIT        # IS DV MONITOR TO BE TURNED ON?
                MASK    FLAGWRD7
                CCS     A
                TCF     NODVMON1        # NO: SET AUXFLAG TO 0

                CS      FLAGWRD6        # ALLOW ANOTHER PASS WITHOUT DVMON?
                MASK    AUXFLBIT
                CCS     A
                TCF     NODVMON2        # YES: SET AUXFLAG TO 0

## Page 866
DVMON           CS      DVTHRUSH        # SUFFICIENT THRUST TO STEER WITH?
                AD      ABDELV
                EXTEND
                BZMF    LOTHRUST        # NO: THRUST TOO LO, DECREMENT DVCNTR

                CS      FLAGWRD2        # YES: SET STEERSW TO ALLOW GUIDANCE.
                MASK    STEERBIT
                ADS     FLAGWRD2

DVCNTSET        CAF     ONE             # ALLOW TWO PASSES MAXIMUM NOW THAT
                TS      DVCNTR          # THRUST HAS BEEN DETECTED.

                CA      FLGWRD10        # IS APSFLAG SET?
                MASK    APSFLBIT
                CCS     A
                TCF     USEJETS         # YES: USE RCS TO STEER ASCENT STAGE.

                CA      BIT9            # NO: PITCH GIMBAL FAILURE?
                EXTEND
                RAND    CHAN32
                EXTEND
                BZF     USEJETS         # YES: USE RCS TO STEER DESCENT STAGE.

USEGTS          CS      USEQRJTS        # NO: USE GTS TO STEER DESCENT STAGE.
                MASK    DAPBOOLS
                TS      DAPBOOLS
                TCF     SERVOUT

NODVMON1        CS      AUXFLBIT        # SET AUXFLAG TO 0.
                MASK    FLAGWRD6
                TS      FLAGWRD6
                TCF     USEJETS
NODVMON2        CS      FLAGWRD6        # SET AUXFLAG TO 1.
                MASK    AUXFLBIT
                ADS     FLAGWRD6
                TCF     USEJETS

LOTHRUST        TC      QUIKFAZ5
                CCS     DVCNTR          # TWO PASSES OF LO THRUST?
                TCF     DECCNTR         # NO: DECREMENT DVCNTR.

                CCS     PHASE4          # COMFAIL JOB ACTIVE?
                TCF     SERVOUT         # YES   WON'T NEED ANOTHER.

                TC      PHASCHNG        # 4.37SPOT FOR COMFAIL.
                OCT     00374

                CAF     PRIO25
                TC      NOVAC
                EBANK=  WHICH
## Page 867
                2CADR   COMFAIL         # ESTABLISH JOB COMFAIL FOR

                TCF     SERVOUT         # THRUST FAIL LOGIC.

DECCNTR         TS      DVCNTR1
                TC      QUIKFAZ5
                CA      DVCNTR1
                TS      DVCNTR
                INHINT
                TC      IBNKCALL        # IF THRUST IS LOW, NO STEERING IS DONE
                CADR    STOPRATE        # AND THE DESIRED RATES ARE SET TO ZERO.
USEJETS         CS      DAPBOOLS
                MASK    USEQRJTS
                ADS     DAPBOOLS        # TELL DAP TO USE RCS TO STEER.

SERVOUT         RELINT
                TC      BANKCALL        # COMPUTE VEHICLE MOMENTS OF INERTIA.
                CADR    1/ACCS

                CA      PRIORITY
                MASK    LOW9
                TS      PUSHLOC
                ZL
                DXCH    FIXLOC          # FIXLOC AND OVFIND

                TC      QUIKFAZ5
                CS      PIPTIME +1
                AD      TIME1
                AD      HALF
                AD      HALF
                XCH     SERVDURN        # SERVICER DURATION FOR DOWNLINK
                EXTEND                  # EXIT TO SELECTED ROUTINE WHETHER THERE
                DCA     AVGEXIT         # IS THRUST OR NOT.  THE STATE OF STEERSW
                DXCH    Z               # WILL CONVEY THIS INFORMATION.

XNBPIPAD        ECADR   XNBPIP

                BANK    32
                SETLOC  SERV2
                BANK
                COUNT*  $$/SERV

AVGEND          CA      PIPTIME +1      # FINAL AVERAGE G EXIT,AVEGFLAG SET.
                TS      1/PIPADT        # SET UP COASTING FLIGHT GYRO COMPENSATION

                TC      UPFLAG          # SET DRIFT FLAG, TERMINATE POWERED FLITE
                ADRES   DRIFTFLG        # GYRO COMPENSATION.
## The above two instructions are circled.

                TC      BANKCALL
                CADR    PIPFREE

## Page 868
                CS      BIT9
                EXTEND
                WAND    DSALMOUT        # TELL WORLD THAT AVERAGEG IS NOW OFF.

                TC      2PHSCHNG
                OCT     5               # GROUP 5 OFF
                OCT     05022           # GROUP 2 ON
                OCT     20000

                TC      INTPRET
                CLEAR
                        SWANDISP        # SHUT OFF R10 WHEN SERVICER ENDS.
                CLEAR   CALL            # RESET MUNFLAG.
                        MUNFLAG
                        AVETOMID        # BRING CM STATE VECTOR UP TO PIPTIME.
                CLEAR   EXIT
                        V37FLAG

AVERTRN         TC      POSTJUMP
                CADR    V37RET          # GO TO V37 LOGIC.

OUTGOAVE        =       AVERTRN
DVCNTR1         =       MASS1

## Page 869
# SERVIDLE IS ENTERED AFTER A POODOO SOFTWARE RESTART. SERVICER CONTINUES,BUT GUIDANCE AND R12 ( IF RUNNING) ARE
# TERMINATED. ABORTS MONITOR CONTINUES TO RUN.

                SETLOC  SERV3
                BANK
                COUNT*  $$/SERV

SERVIDLE        EXTEND                  # DISCONNECT SERVICER FROM ALL GUIDANCE
                DCA     SVEXTADR
                DXCH    AVGEXIT

                CS      FLAGWRD7        # DISCONNECT THE DELTA-V MONITOR
                MASK    IDLEFBIT
                ADS     FLAGWRD7

                CAF     LRBYBIT         # TERMINATE R12 IF RUNNING.
                TS      FLGWRD11

                EXTEND
                DCA     NEG0
                DXCH    -PHASE1

                CA      FLAGWRD6        # DO NOT TURN OFF PHASE 2 IF MUNFLAG SET.
                MASK    MUNFLBIT
                CCS     A
                TCF     +4

                EXTEND
                DCA     NEG0
                DXCH    -PHASE2

 +4             EXTEND
                DCA     NEG0
                DXCH    -PHASE3

                EXTEND
                DCA     NEG0
                DXCH    -PHASE6

                CAF     OCT33           # 4.33SPOT FOR GOPOOFIX
                TS      L
                COM
                DXCH    -PHASE4

                TCF     WHIMPER         # PERFORM A SOFTWARE RESTART AND PROCEED
                                        # TO GOTOPOOH WHILE SERVICER CONTINUES TO
                                        # RUN, ALBEIT IN A GROUND STATE WHERE
                                        # ONLY STATE-VECTOR DEPENDENT FUNCTIONS
                                        # ARE MAINTAINED.

## Page 870
                EBANK=  DVCNTR
SVEXTADR        2CADR   SERVEXIT



                BANK    32
                SETLOC  SERV
                BANK
                COUNT*  $$/SERV

SERVEXIT        TC      PHASCHNG
                OCT     00035

                TCF     ENDOFJOB

                BANK    23
                SETLOC  NORMLIZ
                BANK

                COUNT*  $$/SERV

## Page 871
# NORMLIZE AND COPYCYCL

NORMLIZE        TC      INTPRET
                VLOAD   BOFF
                        RN1
                        MUNFLAG
                        NORMLIZ1        # DO NOT USE LUNAR LANDING AVERAGE G
                VSL6    MXV
                        REFSMMAT
                STCALL  R               # LM POS VECTOR IN SM COORD AT 2(+24)M.
                        MUNGRAV         # USE LUNAR LANDING AVERAGE G ROUTINE.
                VLOAD   VSL1
                        VN1
                MXV
                        REFSMMAT
                STOVL   V
                        V(CSM)
                VXV     UNIT
                        R(CSM)
                STORE   UHYP
ASCSPOT         EXIT
                EXTEND                  # MAKE SURE GOUP 2 IS OFF.
                DCA     NEG0
                DXCH    -PHASE2

                TC      POSTJUMP
                CADR    NORMLIZ2

                BANK    33
                SETLOC  SERVICES
                BANK
                COUNT*  $$/SERV

NORMLIZ1        CALL
                        CALCGRAV
                EXIT

NORMLIZ2        CA      EIGHTEEN
                TC      COPYCYC +1      # DO NOT COPY MASS IN NORMLIZE
                TC      ENDOFJOB

# COPYCYC PLACES NEWLY NAVIGATED STATE VECTORS AND MASS INTO DOWNLIST REG

COPYCYC         CA      OCT24           # DEC 20
## Page 872
 +1             INHINT
 +2             MASK    NEG1            # REDUCE BY 1 IF ODD
                TS      ITEMP1
                EXTEND
                INDEX   ITEMP1
                DCA     RN1
                INDEX   ITEMP1
                DXCH    RN
                CCS     ITEMP1
                TCF     COPYCYC +2
                TC      Q               # RETURN UNDER INHINT


EIGHTEEN        DEC     18

## Page 873
# ******************* PIPA READER ********************

#                 MOD NO. 00  BY D. LICKLY  DEC.9 1966


# FUNCTIONAL DESCRIPTION
#    SUBROUTINE TO READ PIPA COUNTERS, TRYING TO BE VERY CAREFUL SO THAT IT WILL BE RESTARTABLE.
#    PIPA READINGS ARE STORED IN THE VECTOR DELV. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS THE PIPA READING,
#    RESTARTS BEGIN AT REREADAC.


#    AT THE END OF THE PIPA READER THE CDUS ARE READ AND STORED AS A
# VECTOR IN CDUTEMP.  THE HIGH ORDER PART OF EACH COMPONENT CONTAINS
# THE CDU READING IN 2S COMP IN THE ORDER CDUX,Y,Z.  THE THRUST
# VECTOR ESTIMATOR IN FINDCDUD REQUIRES THE CDUS BE READ AT PIPTIME.

# CALLING SEQUENCE AND EXIT

#    CALL VIA TC, ISWCALL, ETC.

#    EXIT IS VIA Q.


#

# INPUT

#    INPUT IS THROUGH THE COUNTERS PIPAX, PIPAY, PIPAZ, AND TIME2.


# OUTPUT

#    HIGH ORDER COMPONENTS OF THE VECTOR DELV CONTAIN THE PIPA READINGS.
#    PIPTIME CONTAINS TIME OF PIPA READING.


# DEBRIS (ERASABLE LOCATIONS DESTROYED BY PROGRAM)

#          TEMX   TEMY   TEMZ   PIPAGE


                BANK    37
                SETLOC  SERV1
                BANK

                COUNT*  $$/SERV

PIPASR          EXTEND
## Page 874
                DCA     TIME2
                DXCH    PIPTIME1        # CURRENT TIME  POSITIVE VALUE
 +3             CS      ZERO            # INITIALIZE THESE AT NEG. ZERO.
                TS      TEMX
                TS      TEMY
                TS      TEMZ

                CA      ZERO
                TS      DELVZ
                TS      DELVZ +1
                TS      DELVY
                TS      DELVY +1
                TS      DELVX +1
                TS      PIPAGE          # SHOW PIPA READING IN PROGRESS

REPIP1          EXTEND
                DCS     PIPAX           # X AND Y PIPS READ
                DXCH    TEMX
                DXCH    PIPAX           # PIPAS SET TO NEG ZERO AS READ.
                TS      DELVX
                LXCH    DELVY

REPIP3          CS      PIPAZ           # REPEAT PROCESS FOR Z PIP
                XCH     TEMZ
                XCH     PIPAZ
DODELVZ         TS      DELVZ

REPIP4          EXTEND                  # COMPUTE GUIDANCE PERIOD
                DCA     PIPTIME1
                DXCH    PGUIDE
                EXTEND
                DCS     PIPTIME
                DAS     PGUIDE

                CA      CDUX            # READ CDUS INTO HIGH ORDER CDUTEMPS
                TS      CDUTEMPX
                CA      CDUY
                TS      CDUTEMPY
                CA      CDUZ
                TS      CDUTEMPZ
                CA      DELVX
                TS      PIPATMPX
                CA      DELVY
                TS      PIPATMPY
                CA      DELVZ
                TS      PIPATMPZ

                TC      Q
## In the margins above there are some doodles of something I can't quite make out. Possibly satellites.

## Page 875
REREADAC        CCS     PIPAGE
                TCF     READACCS        # PIP READING NOT STARTED. GO TO BEGINNING

                CAF     DONEADR         # SET UP RETURN FROM PIPASR
                TS      Q

                CCS     DELVZ
                TCF     REPIP4          # Z DONE, GO DO CDUS
                TCF     +3              # Z NOT DONE, CHECK Y.
                TCF     REPIP4
                TCF     REPIP4

                ZL
                CCS     DELVY
                TCF     +3
                TCF     CHKTEMX         # Y NOT DONE, CHECK X.
                TCF     +1
                LXCH    PIPAZ           # Y DONE, ZERO Z PIP.

                CCS     TEMZ
                CS      TEMZ            # TEMZ NOT = -0, CONTAINS -PIPAZ VALUE.
                TCF     DODELVZ
                TCF     -2
                LXCH    DELVZ           # TEMZ = -0, L HAS ZPIP VALUE.
                TCF     REPIP4

CHKTEMX         CCS     TEMX            # HAS THIS CHANGED
                CS      TEMX            # YES
                TCF     +3              # YES
                TCF     -2              # YES
                TCF     REPIP1          # NO
                TS      DELVX

                CS      TEMY
                TS      DELVY

                CS      ZERO            # ZERO X AND Y PIPS
                DXCH    PIPAX           # L STILL ZERO FROM ABOVE

                TCF     REPIP3

DONEADR         GENADR  PIPSDONE

## Page 876
                BANK    33
                SETLOC  SERVICES
                BANK

                COUNT*  $$/SERV

TMPTOSPT        CA      CDUTEMPY        # THIS SUBROUTINE, CALLED BY AN RTB FROM
                TS      CDUSPOTY        # INTERPRETIVE, LOADS THE CDUS CORRESPON-
                CA      CDUTEMPZ        # DING TO PIPTIME INTO THE CDUSPOT VECTOR.
                TS      CDUSPOTZ
                CA      CDUTEMPX
                TS      CDUSPOTX
                TC      Q

                BANK    33
                SETLOC  SERVICES
                BANK

                COUNT* $$/SERV

# HIGATASK IS ENTERED APPROXIMATELY 6 SECS PRIOR TO HIGATE DURING THE
# DESCENT PHASE.  HIGATASK SETS THE HIGATE FLAG (BIT11) AND THE LR INHIBIT
# FLAG (BIT10) IN LRSTAT.  THE HIGATJOB IS SET UP TO REPOSITION THE LR
# ANTENNA FROM POSITION 1 TO POSITION 2.  IF THE REPOSITIONING IS
# SUCCESSFUL THE ALT BEAM AND VELOCITY BEAMS ARE TRANSFORMED TO THE NEW
# ORIENTATION IN NB COORDINATES AND STORED IN ERASABLE.

HIGATASK        TC      PHASCHNG
                OCT     51

                CA      PRIO32
                TC      FINDVAC
                EBANK=  HMEAS
                2CADR   HIGATJOB

                CS      FLGWRD11
                MASK    PRIO3
                ADS     FLGWRD11
                TCF     CONTSERV +1

## Page 877
#    MUNRETRN IS THE RETURN LOC FROM SPECIAL AVE G ROUTINE (MUNRVG)

MUNRETRN        EXIT

                CS      FLGWRD11
                MASK    LRBYBIT
                EXTEND
                BZF     COPYCYC1        # BYPASS LR LOGIC IF BIT15 IS SET.

                CS      FLGWRD11        # CHECK IF AT 30000 FT
                MASK    XORFLBIT
                EXTEND
                BZF     LROFF?

30KCHK          EXTEND
                DCA     1-30KFT
                DAS     MPAC            # HCALC IS STILL IN MPAC FROM RVBOTH

                CCS     A
                TCF     R12             # ALTITUDE > 30KFT
                TC      UPFLAG          # ALTITUDE < 30KFT SET X-AXIS OVERRIDE
                ADRES   XOVINFLG
                TC      UPFLAG
                ADRES   XORFLG

LROFF?          CA      HCALC
                EXTEND                  # IF HIGH ORDER PART ZERO, H < 3000 FT,
                BZF     +2              #   SO MAKE CUTOFF TEST
                TCF     R12
                CS      HCALC +1
                AD      HLROFF
                EXTEND
                BZMF    R12             # IF H < HLROFF, RESET LR PERMIT FLAG
                TC      DOWNFLAG
                ADRES   LRINH

R12             CS      FLGWRD11
                MASK    NOLRRBIT
                EXTEND
                BZF     CONTSERV

POSTST          CA      BITS6+7         # TEST LANDING RADAR POSITION DISCRETES
                EXTEND
                RAND    CHAN33
                EXTEND
                MP      BIT10           # SHIFT BITS 6+7 TO BITS 1+2

                INDEX   A
                TCF     +1
                TCF     511?            # A = 0 - BOTH DISCRETES PRESENT
## Page 878
                TCF     POSCHNG?        # A = 1 - POSITION 2
                TCF     POSCHNG?        # A = 2 - POSITION 1
511?            CCS     511CTR          # IF CONDITION PERSISTS FOR FIVE
                TCF     ST511CTR        # CONSECUTIVE PASSES,ISSUE 511 ALARM
                TC      ALARM
                OCT     511
                CS      ZERO            # SET CTR TO -0 TO BYPASS ALARM
ST511CTR        TS      511CTR
                TCF     CONTSERV
POSCHNG?        TS      L
                CA      FOUR            # SET 511CTR TO RE-ENABLE 511 ALARM
                TS      511CTR
                LXCH    LRPOS           # UPDATE LRPOS
                CS      LRPOS           # COMPARE OLD AND NEW POSITIONS
                AD      L
                EXTEND                  # IF OLDPOS = NEWPOS,
                BZF     UPDATCHK        # TRY TO UPDATE WITH LR DATA

CONTSERV        INHINT
                CS      BITS4-7
                MASK    FLGWRD11        # CLEAR LR MEASUREMENT MADE DISCRETES.
                TS      FLGWRD11

## Page 879
COPYCYC1        TC      QUIKFAZ5

                TC      INTPRET         # INTPRET DOES A RELINT.
                VLOAD   ABVAL           # MPAC = ABVAL( NEW SM. POSITION VECTOR )
                        R1S
                PUSH    DSU             #                               (2)
                        /LAND/
                STORE   HCALC           # NEW HCALC*2(24)M.
                STORE   HCALC1
                DMPR    RTB
                        ALTCONV
                        SGNAGREE
                STOVL   ALTBITS         # ALTITUDE FOR R10 IN BIT UNITS.
                        UNIT/R/
                VXV     UNIT
                        UHYP
                STOVL   UHZP            # DOWNRANGE HALF-UNIT VECTOR FOR R10.
                        R1S
                VXM     VSR4
                        REFSMMAT
                STOVL   RN1             # TEMP. REF. POSITION VECTOR*2(29)M.
                        V1S
                VXM     VSL1
                        REFSMMAT
                STOVL   VN1             # TEMP. REF. VELOCITY VECTOR*2(7)M/CS.
                        UNIT/R/
                VXV     ABVAL
## Page 872
                        V1S
                SL1     DSQ
                DDV
                DMPR    RTB
                        ARCONV1
                        SGNAGREE
COPYCYC2        EXIT                    # LEAVE ALTITUDE RATE COMPENSATION IN MPAC
                INHINT
                CA      UNIT/R/         # UPDATE RUNIT FOR R10.
                TS      RUNIT
                CA      UNIT/R/ +2
                TS      RUNIT +1
                CA      UNIT/R/ +4
                TS      RUNIT +2
                CA      MPAC            # LOAD NEW DALTRATE FOR R10.
                TS      DALTRATE

                EXTEND
                DCA     R1S
                DXCH    R
                EXTEND
                DCA     R1S +2
                DXCH    R +2
                EXTEND
                DCA     R1S +4
                DXCH    R +4
                EXTEND
                DCA     V1S
                DXCH    V
                EXTEND
                DCA     V1S +2
                DXCH    V +2
                EXTEND
                DCA     V1S +4
                DXCH    V +4

                TCF     COPYCYCL        # COMPLETE THE COYPCYCL.

## Page 882
# *********************************************************************************************************

CALCGRAV        UNIT    PUSH            # SAVE UNIT/R/ IN PUSHLIST            (18)
                STORE   UNIT/R/
                LXC,1   SLOAD           # RTX2 = 0 IF EARTH ORBIT, =2 IF LUNAR.
                        RTX2
                        RTX2
                DCOMP   BMN
                        CALCGRV1
                VLOAD   DOT             #                                     (12)
                        UNITZ
                        UNIT/R/
                SL1     PUSH            #                                     (14)
                DSQ     BDSU
                        DP1/20
                PDDL    DDV
                        RESQ
                        34D             # (RN)SQ
                STORE   32D             # TEMP FOR (RE/RN)SQ
                DMP     DMP
                        20J
                VXSC    PDDL
                        UNIT/R/
                DMP     DMP
                        2J
                        32D
                VXSC    VSL1
                        UNITZ
                VAD     STADR
                STORE   UNITGOBL
                VAD     PUSH            # MPAC = UNIT GRAVITY VECTOR.         (18)
CALCGRV1        DLOAD   NORM            # PERFORM A NORMALIZATION ON RMAGSQ IN
                        34D             # ORDER TO BE ABLE TO SCALE THE MU FOR
                        X2              # MAXIMUM PRECISION.
                BDDV*   SLR*
                        -MUDT,1
                        0 -21D,2
                VXSC    STADR
                STORE   GDT1/2          # SCALED AT 2(+7) M/CS
                RVQ

CALCRVG         VLOAD   VXM
                        DELV
                        REFSMMAT
                VXSC    VSL1
                        KPIP1
                STORE   DELVREF
                VSR1    PUSH
                VAD     PUSH            # (DV-OLDGDT)/2 TO PD SCALED AT 2(+7)M/CS
## Page 883
                        GDT/2
                VAD     PDDL            #                                       (18)
                        VN
                        PGUIDE
                SL      VXSC
                        6D
                VAD     STQ
                        RN
                        31D
                STCALL  RN1             # TEMP STORAGE OF RN SCALED 2(+29)M
                        CALCGRAV

                VAD     VAD
                VAD
                        VN
                STCALL  VN1             # TEMP STORAGE OF VN SCALED 2(+7)M/CS
                        31D

DP1/20          2DEC    0.05

SHIFT11         2DEC    1 B-11

## Page 884
# ****************************************************************************************************************

# MUNRVG IS A SPECIAL AVERAGE G INTEGRATION ROUTINE USED BY THRUSTING
# PROGRAMS WHICH FUNCTION IN THE VICINITY OF AN ASSUMED SPHERICAL MOON.
# THE INPUT AND OUTPUT QUANTITIES ARE REFERENCED TO THE STABLE MEMBER
# COORDINATE SYSTEM.

RVBOTH          VLOAD   PUSH
                        G(CSM)          # CSM GDT1/2 FOR LAST PASS.
                VAD     PDDL
                        V(CSM)
                        PGUIDE
                DDV     VXSC
                        SHIFT11
                VAD
                        R(CSM)
                STCALL  R1S             # = RCSM + PGUIDE(VCSM + GCSM) AT 2(+24)M.
                        MUNGRAV         # COMPUTE LUNAR GRAVITY AT CSM ALTITUDE.
                VAD     VAD
                        V(CSM)
                STADR
                STORE   V1S             # = VCSM + GCSM + GDT1/2 AT 2(+7)M/CS.
                EXIT
                TC      QUIKFAZ5
                TC      INTPRET
                VLOAD                   # FOR RESTART PURPOSES.
                        GDT1/2
                STOVL   G(CSM)
                        R1S
                STOVL   R(CSM)
                        V1S
                STORE   V(CSM)
                EXIT
                TC      QUIKFAZ5
                TC      INTPRET
MUNRVG          VLOAD   VXSC
                        DELV
                        KPIP2
                PUSH    VAD             # 1ST PUSH: DELV IN UNITS OF 2(8) M/CS
                        GDT/2
                PUSH    VAD             # 2ND PUSH: (DELV + GDT)/2, UNITS OF 2(7)
                        V               #                                     (12)
                PDDL    DDV
                        PGUIDE
                        SHIFT11
                VXSC
                VAD
                        R               # LM POSITION VECTOR AT 2(24)M.
                STCALL  R1S             # = R + PGUIDE(V + DELV + GDT1/2).
                        MUNGRAV
## Page 885
                VAD     VAD
                VAD                     #                                     (0)
                        V               # LM VELOCITY VECTOR AT 2(+7)M/CS.
                STORE   V1S             # = V + GDT1/2 + DELV
                ABVAL
                STOVL   ABVEL           # STORE SPEED FOR LR AND DISPLAYS.
                        UNIT/R/
                DOT     SL1
                        V1S
                STOVL   HDOTDISP        # HDOT = V. UNIT(R)*2(7) M/CS.
                        R1S
                VXV     VSL2
                        WM
                STODL   DELVS           # LUNAR ROTATION CORRECTION TERM*2(5)M/CS.
                        36D
                DSU     RTB
                        /LAND/
                        SGNAGREE
                STCALL  HCALC           # FOR NOW, DISPLAY WHETHER POS OR NEG
                        MUNRETRN        # GO TO LR UPDATES ROUTINE, R12.

MUNGRAV         UNIT                    # AT 36D HAVE ABVAL(R), AT 34D R.R
                STODL   UNIT/R/
                        34D
                SL      BDDV
                        6D
                        -MUDTMUN
                DMP     VXSC
                        SHIFT11
                        UNIT/R/
                STORE   GDT1/2          # 1/2GDT SCALED AT 2(7)M/CS.
                RVQ

BITS6+7         EQUALS  SUPER110        # LR POSITION DISCRETES
2SEC(18)        2DEC    200 B-18

2SEC(28)        2OCT    0000000310      # 2SEC AT 2(28)

4SEC(28)        2DEC    400 B-28

BITS4-7         OCT     110
1-30KFT         2DEC    16768072 B-24   # DPPOSMAX-30KFT

66DEC           DEC     66

## Page 886
UPDATCHK        CA      RNGEDBIT        # SEE IF ALT READING MADE
## RNGEDBIT in the above line is circled
                MASK    FLGWRD11
                EXTEND
                BZF     VMEASCHK        # NO ALT MEAS THIS CYCLE-CHECK FOR VEL

POSUPDAT        TC      QUIKFAZ5
                TC      POSINDEX        # SET X1 TO PROPER POSITION AND ZERO PLIST
                TC      INTPRET
                VLOAD*  VXM
                        HBEAMNB,1
                        XNBPIP          # HBEAM SM AT 2(1)
                PDDL    SL              # STORE IN PUSHLIST AND SCALE HMEAS
                        HMEAS
                        6D
                DMP     VXSC            # SLANT RANGE AT 2(22),PUSH UP FOR HBEAM
                        HSCAL           # TO GET SLANT RANGE VECTOR AT 2(23) M
                PUSH    DOT             # PUSH NEG OF RADAR ALTITUDE BEAM VECTOR
                        UNIT/R/         # ALTITUDE AT 2(24) METERS
                DSU     PDDL            # PUSH PARTIAL DELTA H, LOAD NEG OF BEAM Z
                        HCALC

## At the end of the 2nd divider below, the suffixed ':' was an '=' in the
## original printout.  The replacement is a workaround for our proof-reading
## system.
# ========================================================================
# TERRAIN MODEL
# =======================================================================:

                SR1     DAD
                        LAND +4
                BDSU    SL              # SCALE RANGE TO UNITS OF 2(18) METERS
                        R1S +4
                        6D
                BOVB    EXIT
                        SIGNMPAC        # PICK UP NEGMAX UPON OVERFLOW

                CS      FLAGWRD1        # IS NOTERFLG SET (BY P66 OR V68)?
                MASK    NOTERBIT
                EXTEND
                BZF     TERSKIP         # Y: SKIP TERRAIN BUT TRANSFER DELTA H

                CA      EBANK5          # N: PREPARE TO ACCESS TERRAIN TABLE
                TS      EBANK
                EBANK=  END-E5

                CA      ZERO            # INITIALIZE MINUS LAST ABSCISSA FOR
                TS      TEM2            # TERLOOP WHICH ADDS THE CONTRIBUTIONS
                CA      FOUR            # OF FIVE TERRAIN SEGMENTS TO DELTA H
TERLOOP         TS      TEM5
## Page 887
                CA      MPAC            # PICK UP CURRENT RANGE (NEG BEFORE SITE)
                TS      L
                INDEX   TEM5
                CS      ABSC0           # TERRAIN ABSCISSAE UNITS: 2(18) METERS
                TC      BANKCALL        # LIMIT GIVEN LIMITSUB MUST BE POSITIVE
                FCADR   LIMITSUB        # LIMIT |RANGE| <= |CURRENT ABSCISSA|
                TS      TEM4            # SAVE TO COMPARE WITH CURRENT ABSCISSA

                AD      TEM2            # SUBTRACT LAST ABSCISSA
                EXTEND
                INDEX   TEM5
                MP      SLOPE0          # SLOPE UNITS: 2(6) RADIANS. RESOL: 3.9 MR

                INDEX   FIXLOC          # ADD CONTRIBUTION OF SEGMENT TO YIELD
                DAS     4               # CORRECTED DELTA H IN UNITS 2(24) METERS

                CA      TEM1            # RETRIEVE MINUS CURR ABSC FROM LIMITSUB*
                TS      TEM2            # STORE AS MINUS LAST ABSC FOR NEXT SEG

# * NOTE:  IF WE HAVE FLOWN BEYOND THE LANDING SITE BY MORE THAN THE
#          LENGTH OF THE SEGMENT ADJACENT TO THE LANDING SITE, CA TEM1
#          WILL RETRIEVE - INSTEAD OF MINUS THE CURRENT ABSCISSA -
#          A ZERO OR POSITIVE REMAINDER OF THE DIVISION DONE BY LIMITSUB.
#          THIS RETRIEVAL WILL CAUSE AN IMMEDIATE BRANCH TO TEREND,
#          WHICH IS THE DESIRED RESULT.  HOWEVER, FLYING PAST THE LANDING
#          SITE IS IMPOSSIBLE EXCEPT IN P66 WHEN THE TERRAIN MODEL IS OFF.

                AD      TEM4            # HAS LM FLOWN PAST CURRENT ABSCISSA?
                EXTEND
                BZF     +2
                TCF     TEREND          # Y: IGNORE FURTHER ABSCISSAE
                CCS     TEM5            # N: IS CURRENT ABSCISSA THE LAST?
                TCF     TERLOOP         # N: REPEAT TERRAIN LOOP

TEREND          CA      EBANK7          # Y: RESTORE EBANK AND DEPART
                TS      EBANK
                EBANK=  END-E7

TERSKIP         INDEX   FIXLOC          # TRANSFER COMPLETED DELTA H HOME
                DXCH    4               # TO BE ACCESSED BY DISPLAYS, TELEMETRY,
                DXCH    DELTAH          # AND POSITION UPDATE.

                CA      FIXLOC          # RESTORE PUSHDOWN POINTER TO ZERO
                TS      PUSHLOC

## Page 888
                CA      FLGWRD11        # IS PSTHIBIT SET (BY HIGATASK)?
                MASK    PSTHIBIT
                EXTEND                  # DO NOT PERFORM DATA REASONABLENESS TEST
                BZF     NOREASON        # UNTIL AFTER HIGATE

                TC      INTPRET
                DLOAD   ABS
                        DELTAH
                DSU     SL3             # ABS(DELTAH) - DQFIX
                        DELQFIX
                DSU     EXIT            # ABS(DELTAH) - (DQFIX + HCALC/8) AT 2(21)
                        HCALC

                INCR    LRLCTR
                TC      BRANCH
                TCF     HFAIL           # DELTA H TOO LARGE
                TCF     HFAIL           # DELTA H TOO LARGE
                TC      DOWNFLAG        # RESET HFAIL FLAG
                ADRES   HFAILFLG
                TC      DOWNFLAG        # TURN OFF ALT FAIL LAMP
                ADRES   HFLSHFLG

NOREASON        CS      FLGWRD11
                MASK    LRINHBIT
                CCS     A
                TCF     VMEASCHK        # UPDATE INHIBITED - TEST VELOCITY ANYWAY

                TC      INTPRET
POSUP           DLOAD   SR4
                        HCALC           # RESCALE H TO 2(28)M
                EXIT
                EXTEND
                DCA     DELTAH          # STORE DELTAH IN MPAC AND
                DXCH    MPAC            # BRING HCALC INTO A,L
                TC      ALSIGNAG
                EXTEND                  # IF HIGH PART OF HCALC IS NON ZERO, THEN
                BZF     +2              # HCALC > HMAX,
                TCF     VMEASCHK        # SO UPDATE IS BYPASSED
                TS      MPAC +2         #   FOR LATER SHORTMP

                CS      L               # -H AT 2(14)M
                AD      LRHMAX          # HMAX - H
                EXTEND
                BZMF    VMEASCHK        # IF H >HMAX, BYPASS UPDATE
                EXTEND
                MP      LRWH            # WH(HMAX - H)
                EXTEND
                DV      LRHMAX          # WH(1 - H/HMAX)
                TS      MPTEMP
                TC      SHORTMP2        # DELTAH (WH)(1 - H/HMAX) IN MPAC
## Page 889
                TC      INTPRET         # MODE IS DP FROM ABOVE
                SL1
                VXSC    VAD
                        UNIT/R/         # DELTAR = DH(WH)(1 - H/HMAX) UNIT/R/
                        R1S
                STORE   GNUR
                EXIT

                TC      QUIKFAZ5

                CA      ZERO
RUPDATED        TC      GNURVST

VMEASCHK        TC      QUIKFAZ5        # RESTART AT NEXT LOCATION
R12THRU?        CS      FLGWRD11        # IS RADAREAD THROUGH ?
                MASK    R12RDBIT
                CCS     A
                TCF     VELDATA?        # YES:GO ON WITH UPDATE
                CCS     NEWJOB          # NO-WAIT
                TC      CHANG1
                TCF     R12THRU?
VELDATA?        CS      FLGWRD11
                MASK    VELDABIT        # IS V READING AVAILABLE?
                CCS     A
                TCF     VALTCHK         # NO   SEE IF V READING TO BE TAKEN

VELUPDAT        TC      POSINDEX        # SET X1 AND X2 AND ZERO PUSHLIST
                CS      VSELECT
                TS      L
                ADS     L               # -2 VSELECT IN L
                AD      L
                AD      L               # -6 VSELECT IN A
                INDEX   FIXLOC
                DAS     X1              # X1 = -6 VSELECT(POS), X2 = -2 VSELECT

                TC      INTPRET
                VLOAD*  VXM
                        VZBEAMNB,1      # CONVERT PROPER VBEAM FROM NB TO SM
                        XNBPIP          # SCALED AT 2(1)
                PDDL    SL              # STORE IN PD 0-5
                        VMEAS           # LOAD VELOCITY MEASUREMENT
                        12D
                DMP*    PDVL            # SCALE TO M/CS AT 2(6)
                        VZSCAL,2        # AND STORE IN PD 6-7
                        V1S             # VELOCITY AT TIME OF READING
                VSL2    VAD             # SCALE TO 2(5) M/CS AND SUBTRACT
                        DELVS           #               MOON ROTATION.
                PUSH    ABVAL           # STORE IN PD
                SR4     DAD             # ABS(VM)/8 + VELBIAS AT 2(6)
                        VELBIAS
## Page 890
                STOVL   20D             # STORE IN 20D AND PICK UP VM
                DOT     BDSU
                        0               # DELTAV = VMEAS - V(EST)
                PUSH    ABS
                DSU     EXIT            # ABS(DV) - (7.5 + ABS(VM)/8))
                        20D

                INCR    LRMCTR
                TC      BRANCH
                TCF     VFAIL           # DELTA V TOO LARGE     ALARM
                TCF     VFAIL           # DELTA V TOO LARGE     ALARM

                TC      DOWNFLAG        # RESET HFAIL FLAG
                ADRES   VFAILFLG
                TC      DOWNFLAG        # TURN OFF VEL FAIL LAMP
                ADRES   VFLSHFLG
## The above line is circled.

                CA      FLGWRD11
                MASK    VXINHBIT
                EXTEND
                BZF     VUPDAT          # IF VX INHIBIT RESET, INCORPORATE DATA.

                TC      DOWNFLAG
                ADRES   VXINH           # RESET VX INHIBIT

                CA      VSELECT
                AD      NEG2            # IF VSELECT = 2 (X AXIS),
                EXTEND                  # BYPASS UPDATE
                BZF     ENDVDAT

VUPDAT          CS      FLGWRD11
                MASK    LRINHBIT
                CCS     A
                TCF     VALTCHK         # UPDATE INHIBITED

                TS      MPAC +1

                CA      ABVEL           # STORE E7 ERASABLES NEEDED IN TEMPS
                TS      ABVEL*
                CA      VSELECT
                TS      VSELECT*
                CA      EBANK5
                TS      EBANK           # CHANGE EBANKS

                EBANK=  LRVF
                CS      LRVF
                AD      ABVEL*          # IF V < VF, USE WVF
                EXTEND
                BZMF    USEVF

## Page 891
                CS      ABVEL*
                AD      LRVMAX          # VMAX - V
                EXTEND
                BZMF    WSTOR -1        # IF V > VMAX, W = 0

                EXTEND
                INDEX   VSELECT*
                MP      LRWVZ           # WV(VMAX - V)

                EXTEND
                DV      LRVMAX          # WV( 1 - V/VMAX )
                TCF     WSTOR

USEVF           INDEX   VSELECT*
                CA      LRWVFZ          # USE APPROPRIATE CONSTANT WEIGHT
                TCF     WSTOR

 -1             CA      ZERO
WSTOR           TS      MPAC
                CS      BIT7            # (=64D)
                AD      MODREG
                EXTEND
                BZMF    GETGNUV         # IF IN P66 USE ANOTHER CONSTANT
                CA      LRWVFF
                TS      MPAC

GETGNUV         CA      EBANK7
                TS      EBANK           # CHANGE EBANKS

                EBANK=  ABVEL
                TC      INTPRET
                DMP     VXSC            # W(DELTA V)(VBEAMSM)  UP 6-7, 0-5
                VAD
                        V1S             # ADD WEIGHTED DELTA V TO VELOCITY
                STORE   GNUV
                EXIT

                TC      QUIKFAZ5        # DO NOT RE-UPDATE

                CA      SIX
VUPDATED        TC      GNURVST         # STORE NEW VELOCITY VECTOR
ENDVDAT         =       VALTCHK

VALTCHK         TC      QUIKFAZ5        # DO NOT REPEAT ABOVE

HIGATCHK        CS      FLGWRD11        # IS PSTHIBIT SET (BY HIGATASK)?
                MASK    PSTHIBIT
                EXTEND
                BZF     CONTSERV        # YES:  BYPASS HIGATE CHECK

## Page 892
                CA      TTF/8
                AD      RPCRTIME
                EXTEND
                BZMF    CONTSERV

                CA      EBANK4
                XCH     EBANK
                TS      L

                EBANK=  XNBPIP
                CS      XNBPIP
                EBANK=  DVCNTR
                LXCH    EBANK
                AD      RPCRTQSW
                EXTEND
                BZMF    HIGATASK
                TCF     CONTSERV


GNURVST         TS      BUF             # STORE GNUR (=GNUV) IN R1S OR V1S
                EXTEND                  # A = 0 FOR R, A = 6 FOR V
                DCA     GNUR
                INDEX   BUF
                DXCH    R1S
                EXTEND
                DCA     GNUR +2
                INDEX   BUF
                DXCH    R1S +2
                EXTEND
                DCA     GNUR +4
                INDEX   BUF
                DXCH    R1S +4
                TC      Q


QUIKFAZ5        CA      EBANK3
                XCH     EBANK           # SET EBANK 3
                DXCH    L               # Q TO A, A TO L
                EBANK=  PHSNAME5
                TS      PHSNAME5
                LXCH    EBANK
                EBANK=  DVCNTR
                TC      A


POSINDEX        CA      FIXLOC          # SET PUSHLIST TO ZERO
                TS      PUSHLOC

                CA      BIT1
                MASK    LRPOS           # *NOTE - LRPOS = 1 FOR POS 2 & VICE VERSA
## Page 893
                CCS     A
                CS      OCT30           # POS 2 , INDEX = -24D
                ZL                      # POS 1 , INDEX = 0 , X2 = 0 FOR BOTH
                INDEX   FIXLOC
                DXCH    X1              # SET X1,X2
                TC      Q
HFAIL           TC      UPFLAG          # SET HFAIL FLAG FOR DOWNLINK
                ADRES   HFAILFLG
                CS      LRRCTR
                EXTEND
                BZF     NORLITE         # IF R = 0, DO NOT TURN ON TRK FAIL
                AD      LRLCTR
                MASK    NEG3
                EXTEND                  # IF L-R LT 4, DO NOT TURN ON TRK FAIL
                BZF     +2
                TCF     NORLITE

                TC      UPFLAG          # AND SET BIT TO TURN ON TRACKER FAIL LITE
                ADRES   HFLSHFLG

NORLITE         CA      LRLCTR
                TS      LRRCTR          # SET R = L

                TCF     VMEASCHK

VFAIL           TC      UPFLAG
                ADRES   VFAILFLG        # SET VFAIL FLAG FOR DOWNLINK
## The above instruction and address are circled in red.
                CS      LRSCTR
                EXTEND                  # IF S = 0, DO NOT TURN ON TRACKER FAIL
                BZF     NOLITE
                AD      LRMCTR          # M-S
                MASK    NEG3            # TEST FOR M-S > 3
                EXTEND                  # IF M-S > 3, THEN TWO OR MORE OF THE
## In the above comment, "THEN TWO ORE MORE OF THE" is crossed out in green.
                BZF     +2              #   LAST FOUR V READINGS WERE BAD,
## In the above comment, a 3 has been written over FOUR, and "BAD," has been crossed out
## with "GOOD," written next to it.
                TCF     NOLITE          #   SO TURN ON VELOCITY FAIL LIGHT
## "DON'T" is written under "SO TURN", indicating the line should read "SO DON'T TURN ON..."

                TC      UPFLAG          # AND SET BIT TO TURN ON TRACKER FAIL LITE
                ADRES   VFLSHFLG
## The above instruction and address are circled.

NOLITE          CA      LRMCTR          # SET S = M
                TS      LRSCTR

                CCS     VSELECT         # TEST FOR Z COMPONENT
                TCF     ENDVDAT         # NOT Z, DO NOT SET VX INHIBIT

                TC      UPFLAG          # Z COMPONENT - SET FLAG TO SKIP X
                ADRES   VXINH           # COMPONENT,AS ERROR MAY BE DUE TO CROSS
                TCF     ENDVDAT         # LOBE LOCK UP NOT DETECTED ON X AXIS.

## Page 894
# ********************************************************************************************************
                BANK    33
                SETLOC  SERVICES
                BANK

                COUNT*  $$/SERV

                EBANK=  DVCNTR


# HIGATJOB IS BEGUN WHEN BOTH THE TIME AND ANGLE CRITERIA FOR ANTENNA REPOSITIONING ARE MET. THE JOB INITIATES THE
# LANDING RADAR ANTENNA REPOSITIONING ROUTINE. DURING THE REPOSITIONING, R12 IS INHIBITTED BY THE NOLRREAD FLAG.
# UPON COMPLETION OF THE REPOSITIONING,(SUCCESSFUL OR NOT),THE NOLRREAD   FLAG IS CLEARED AND R12 CONTINUES.


REREPOS         INHINT                  # ON RESTART, SET FLAGS AGAIN
                CS      FLGWRD11
                MASK    PRIO3
                ADS     FLGWRD11

HIGATJOB        TC      BANKCALL        # INITIATE REPOSITIONING ROUTINE
                CADR    LRPOS2
                TC      BANKCALL        # DELAY UNTIL FINISHED
                CADR    RADSTALL

                TCF     +1              # IF UNSUCCESSFUL, R12 WILL HANDLE THINGS
                CA      ONE             # INDICATE POS 2 IS EXPECTED
                TS      LRPOS

                TC      DOWNFLAG        # RE-ENABLE R12.
                ADRES   NOLRREAD

                TC      PHASCHNG        # CLEAR RESTART PROTECTION
                OCT     1
                TC      ENDOFJOB
## Below, in the comment column, is written "NEG3 = 77774"
back to top