swh:1:snp:92f3f585b9ae79620ad8c41a332d6329b31fd381
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
206_SERVICE_ROUTINES.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    206_SERVICER_ROUTINES.agc
## Purpose:     A module for revision 0 of BURST120 (Sunburst). It 
##              is part of the source code for the Lunar Module's
##              (LM) Apollo Guidance Computer (AGC) for Apollo 5.
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2016-09-30 RSB  Created draft version.
##              2016-10-16 MAS  Began transcription.
##              2016-10-17 MAS  Completed transcribing/disassembling/reconstructing. There are gaps in
##                              comments, but instruction-wise it should be pretty close.
##		2016-12-06 RSB	Comments proofed using octopus/ProoferComments,
##				changes made, though the general quality of the printout in this
##				section makes this a less-convincing procedure than it would normally
##				be.
##              2017-06-03 MAS  Pulled in corrections from the Shepatin 0 / Sunburst 37 transcription.

## Page 815
# **SERVICER ROUTINES**
#       MOD NO. 00      MODIFICATION BY A. KOSMALA      NOV. 1966
#       MOD NO.  1      MODIFICATION BY D. LICKLY       JAN 1967
#   *FUNCTIONAL DESCRIPTION*

#     THE NORMAL ENTRY TO THE THRUST MISSION CONTROL PROGRAM IS THROUGH PREREAD.  PREREAD SCHEDULES THE JOB
# LASTBIAS.  BOOST PHASE ENTERS THE PREREAD ROUTINE AT BIBIBIAS, BYPASSING THE LASTBIAS JOB.  PIPS ARE CLEARED,
# AVERAGE G FLAG IS SET, DRIFT FLAG IS UNSET.  DV MONITOR AND FINDCUD ARE INITIALIZED, THE JOB NORMLIZE IS
# SCHEDULED, AND A WAITLIST CALL IS MADE TO START READACCS IN TWO SECONDS.

#     NORMLIZE PERFORMS THE SCALING AND INITIALIZATION REQUIRED PRIOR TO THE FIRST ENTRY TO AVERAGE G.

#     IN THE READACCS SECTION, THE ACCELEROMETERS ARE READ BY THE PIPASR SUBROUTINE.  IF THE AVERAGE G FLAG IS
# SET, READACCS IS CALLED TO RECYCLE IN TWO SECONDS.  IF THE AVERAGE G FLAG IS DOWN, AVERAGE G EXIT (AVEGEXIT)
# IS SET FOR THE FINAL PASS, AND READACCS IS NOT CALLED AGAIN.  IN EITHER CASE, THE SERVICER JOB IS ESTABLISHED.

#     THE SERVICER ROUTINE CHECKS FOR RUNAWAY PIPS (DELV GREATER THAN 3200 PULSES/SEC FOR 2 SEC) AND SENDS
# ALARM CODE 205 IF BAD PIP IS FOUND.  PIPS ARE COMPENSATED IN 1/PIPA SUBROUTINE, MASS IS UPDATED BY MASSMON
# SUBROUTINE, AND  AVERAGEG DOES THE NAVIGATION.  THE AVERAGE G ROUTINE UPDATES RN, VN, AND GDT/2 VECTORS, USING
# THE SUBROUTINE CALCRVG.  CONTROL IS THEN TRANSFERRED TO THE MONITOR SPECIFIED BY DVSELECT.  DVSELECT IS SET BY
# THE BOOST PHASE TO BOOSTMON, AND BY THE ENGINEON ROUTINE TO THE PGNCSMON.  USERS STARTING SERVICER BEFORE THE
# ENGINE IS ON SHOULD INSURE BYPASSING DVMON INITIALLY BY SETTING DVSELECT TO THE GENADR OF AVERAGE G.

#     THE BOOST MONITOR (BOOSTMON) CHECKS DELV AGAINST THRSHLD+, THE THRESHOLD ACCELERATION FOR THE BOOST PHASE.
# IF DELV IS BELOW THRESHOLD, INDICATING TERMINATION OF BOOST, MISSION PHASE 6 IS SCHEDULED AS A JOB, DVSELECT
# IS ALTERED TO BYPASS BOOSTMON AND PROCEED DIRECTLY TO AVERAGE G.

#     THE PGNCS MONITOR (PGNCSMON) COMPARES ACTUAL THRUST TO THE THRESHOLD VALUE FOR THE +X ACCELERATION
# (100 CM/SEC).  IF THRUST IS FOUND BELOW THIS VALUE FOR 3 CYCLES (I.E., 4 TO 6 SECONDS) AS DETERMINED BY DVCNTR,
# AND THE ENGINE FLAG IS REMOVED, (INDICATING THAT THE ENGINE HAS BEEN TURNED OFF) CONTROL IS BRANCHED TO THE
# LOCATION SPECIFIED BY DVMNEXIT, PREVIOUSLY SET BY THE USERS PROGRAM.  DVSELECT IS ALTERED TO BYPASS PNGCSMON IN
# SUBSEQUENT PASSES.  IF, HOWEVER, THE ENGINE FLAG IS STILL ON AT THIS TIME, CONTROL IS TRANSFERRED TO ENGNFAIL.
# THIS SENDS ALARM CODE 1405 AND KILLS THAT MISSION PHASE.  ANY TIME THE THRUST IS LESS THAN THE THRESHOLD VALUE,
# THE STEERING IS DETACHED (NO EXIT VIA AVEGEXIT) AND EXIT IS MADE THRU SERVEXIT.

#     THE NORMAL EXIT IS THRU AVEGEXIT, WHICH MUST HAVE BEEN SET BY THE USER. THE FINAL EXIT, SET INTO AVEGEXIT BY
# READACCS WHEN IT  FINDS THE AVERAGE G FLAG DOWN, SETS UP FREE FALL GYRO COMPENSATION, SETS THE DRIFT FLAG ON,
# PERFORMS AVETOMID ROUTINE, AND TRANSFERS CONTROL TO POOH, THUS CLEARING  ALL ACTIVITY UNTIL A NEW MISSION
# PHASE IS DUE.

# ***** WARNING TO USERS *****

# THE USER MUST SET DVMNEXIT TO THE 2CADR OF A JOB TO BE PERFORMED WHEN ENGINE SHUTDOWN IS DETECTED BY SERVICER.
# IN GENERAL, THE AVERAGE G FLAG WILL BE TURNED OFF BY THE USER AT THAT TIME, ALLOWING JUST ONE MORE PASS THROUGH
# AVERAGE G.  ALL ACTIVITY OF THE USERS MISSION PHASE MUST HAVE BEEN COMPLETED BEFORE THIS LAST PASS THROUGH
# AVERAGE G, DUE TO THE PERFORMANCE OF POOH AS DESCRIBED ABOVE.

#     AVGEXIT MUST BE SET BY THE USER TO THE 2CADR OF THE JOB (E.G., STEERING) TO BE PERFORMED AFTER EACH PASS
# THROUGH AVERAGE G.  IF NO OTHER JOB IS TO BE DONE, AVEGEXIT SHOULD BE SET TO SERVEXIT.

## Page 816
#     USER MUST INITIALIZE DVSELECT TO THE GENADR OF AVERAGE G UNLESS THE ENGINEON ROUTINE HAS BEEN PERFORMED
# BEFORE THE START OF SERVICER.

#     USERS (EXCEPT FOR BOOST PHASE) MUST PERFORM MTDTOAVE ROUTINE BEFORE STARTING PREREAD.

# CALLING SEQUENCE IS NORMAL WAITLIST CALL FOR PREREAD.  (READACCS WILL START TWO SECONDS LATER.)


# SUBROUTINES CALLED

# LASTBIAS  PIPASR  FLAG1UP  FLAG2DWN  NORMLIZE  READACCS  SERVICER  1/PIPA  MASSMON  AVERAGE G  CALCRVG
# PHASCHNG  AVETOMID  POOH FORGETIT


# NORMAL EXIT MODES .. AVEGEXIT, DVMNEXIT, TASKOVER, ENDOFJOB.

# ALARM CODE 205 GIVEN IF RUNAWAY PIP.  PROGRAM THEN CONTINUES IN NORMAL SEQUENCE.
# ALARM CODE 1405 GIVEN IF ENGINE FAILURE IS DETECTED.  PROGRAM THEN TERMINATES THE MISSION PHASE. (TO FORGETIT)


#     ERASABLE INITIALIZATION REQUIRED

#                MASS .. INITIALIZED IN ERASABLE LOAD
#                RAVEGON AND VAVEGON .. INITIALIZED IN ERASABLE LOAD - UPDATED BEFORE EACH CALL FOR PREREAD.


# OUTPUT

# DELV(6)  RN(6)  VN(6)  GDT/2(6)  CDUTEMP(6)  MASS(2)  DELAREA(2)  PIPTIME(2)  OLDBT1(1)


# DEBRIS

#      CENTRALS ... A, L, Q

#      OTHER .... DVCNTR, ITEMP1, ITEMP2, RN1(6), VN1(6), GDT1/2(6), DAREATMP(2), MASSTEMP(2), PIPAGE, TEMX,

#                 TEMY, TEMZ, TEMXY, PIPCTR


#    *** THRUST MISSION CONTROL IS RESTART PROTECTED AND USES RESTART GROUP 5. *** 

## Page 817
                BANK            30
                EBANK=          DVCNTR
# *************************************             **************************************************************

PREREAD         TC              PHASCHNG
                OCT             07015
                OCT             77777

                EBANK=          DVCNTR
                2CADR           BIBIBIAS                        # SKIP LASTBIAS AFTER RESTART

                CAF             PRIO32
                TC              NOVAC
                EBANK=          NBDX
                2CADR           LASTBIAS                        # DO LAST GYRO COMPENSATION IN FREE FALL

BIBIBIAS        TC              PIPASR                          # CLEAR + READ PIPS LAST TIME IN FREE FALL

                TC              FLAG1UP                         # SET AVEG FLAG
                OCT             1

                CA              STARTDVC                        # * PLEASE DONT MOVE-DVCNTR SHOULD BE
## The following line was not printed, and has been disassembled from the octal listing. Unfortunately, we
## may never know why CA STARTDVC should not be moved.
                TS              DVCNTR

                TC              FLAG2DWN                        # KNOCK DOWN DRIFT FLAG
                OCT             40000

                CAF             EBANK4
                TS              EBANK
                EBANK=          AXIS                            # CORCT IS DEAD, LONG LIVE AXIS

                CAF             BIT14                           # INITIALIZE AXIS TO (0.5,0,0)
                TS              AXIS                            # FOR FINDCDUD
                CAF             ZERO
                TS              AXIS            +1
                TS              AXIS            +2
                TS              AXIS            +3
                TS              AXIS            +4
                TS              AXIS            +5

                CAF             TWO                             # DIRECT REREADAC TO READACCS IN CASE
                TS              PIPAGE                          # OF A RESTART

                CAF             PRIO21                          # SET UP TO DO NORMLIZE REQUIRED PRIOR
                TC              FINDVAC                         # TO FIRST ENTRY TO AVERAGE G.
                EBANK=          RAVEGON
                2CADR           NORMLIZE

## The following line was not printed, and has been disassembled from the octal listing. In its place comes the
## page header for page 818, which shares the same physical page as 817.
                CAF             200DEC
## Page 818
                TC              WAITLIST
                EBANK=          DVCNTR
                2CADR           READACCS

## The following line was not printed, and has been disassembled from the octal listing.
                TC              PHASCHNG
                OCT             40025
## The following line was not printed, and has been disassembled from the octal listing.
                TCF             TASKOVER

## Page 819
# *************************************   READACCS   *************************************************************
                EBANK=          NEGXDV
READACCS        CS              T5ADR                   # TO PREVENT LOST DOWNRUPTS, ADJUST THE
                AD              FILTAD                  # RELATIVE PHASING BETWEEN READACCS AND
                EXTEND                                  # DAP FOR MINIMUM INTERFERENCE. THESE
                BZF             WASFILT                 # TESTS ARE NECESSARY ONLY WHEN THE TRIM
                                                        # GIMBAL IS BEING USED, BUT IT TAKES TOO
                CS              T5ADR                   # LONG TO CHECK FOR THIS SITUATION TO BE
                AD              GTSAD                   # WORTH IT.
                EXTEND
                BZF             SLIPONE
                TCF             PIPREAD

WASFILT         CS              TIME5
                AD              POSMAX
                EXTEND
                BZF             SLIPONE

PIPREAD         TC              PIPASR

PIPSDONE        EXTEND                                  # SUPER HIGH-SPEED PHASE CHANGE TO
                DCA             5.31SET                 # MINIMIZE THE TIME SPENT IN THE READACCS
                DXCH            -PHASE5                 # TASK.

REDO5.31        CAF             TWO                     # SHOW PIPS HAVE BEEN READ FOR REREADAC.
                TS              PIPAGE

CHEKAVEG        CS              FLAGWRD1
                MASK            BIT1
                CCS             A                       # IF AVEG FLAG DOWN SET FINAL EXIT AVEG
                TC              AVEGOUT

                CAF             200DEC                  # READ PIPS AT 2 SECOND INTERVALS
                TC              WAITLIST
                EBANK=          BMEMORY
                2CADR           READACCS

MAKESERV        CAF             PRIO20                  # ESTABLISH SERVICER ROUTINE
                TC              FINDVAC
                EBANK=          BMEMORY
                2CADR           SERVICER

                EXTEND                                  # HIGH SPEED PHASE CHANGE.
                DCA             5.6SET                  # 5.6 FOR REREADAC TASK & SERVICER JOB.
                DXCH            -PHASE5
                CS              TIME1                   # SET TBASE.
                TS              TBASE5

                TCF             TASKOVER                # END PREVIOUS READACCS WAITLIST TASK

## Page 820
                EBANK=          BMEMORY
PIP2CADR        2CADR           PIPASR
## The printer skipped a line here, but only failed to print the second word of the 2CADR.

AVEGOUT         CA              AVOUTADR
                TS              DVSELECT
                TCF             MAKESERV

SLIPONE         CS              ONE                     # RESCHEDULE DAP EVENT TO OCCUR 10 MS
                ADS             TIME5                   # FARTHER INTO THE FUTURE.
## The following line wasn't printed. It was instead disassembled from the octal listing and symbol table.
                TCF             PIPREAD

## The following two lines were printed on top of each other. The line after them wasn't printed at all.
## They were teased apart, reconstructed, and put in the right places with help from the octal listing 
## and the symbol table.
AVOUTADR        GENADR          AVGEND
FILTAD          GENADR          FILTER
GTSAD           GENADR          GTS
## End of reconstructed lines.

5.31SET         2OCT            7774600031

5.6SET          2OCT            7777100006

## Page 821

# DO SAVEM AND RESTOREM LATER IF NORMAL RESTARTS SHOULD EVER RETURN

SERVICER        CAF             TWO
PIPCHECK        TS              PIPCTR

                DOUBLE
                INDEX           A
## The next 10 lines were printed on only 2. I'm not sure the exact distribution, but it seems likely that they
## were split evenly between the two. They were disassembled from the octal section, with help from the symbol
## table. For the first line, I have chosen DELVX rather than DELV to match SERVICER207 in Colossus 237.
## Fragments of comments were also printed on the second line. They read:
## "   O UE    T [DP] [P.]      M"
## where characters in brackets were printed on top of each other. In place of the original comments, I have 
## transplanted comments from the SERVICER207 section of Colossus 237, which closely mirrors this. They roughly
## align with the the above string, and so are likely close to correct.
                CCS             DELVX
                TC              +2
                TC              PIPLOOP

                AD              -MAXDELV                        # DO PIPA-SATURATION TEST BEFORE
                EXTEND
                BZMF            PIPLOOP                         # COMPENSATION.

                TC              ALARM
                OCT             00205                           # SATURATED-PIPA ALARM  ***CHANGE LATER
                TCF             +3

PIPLOOP         CCS             PIPCTR
## End of disassembled lines.
                TCF             PIPCHECK

                TC              PHASCHNG                        # RESTART REREADAC + SERVICER
                OCT             16035
                OCT             20000
                EBANK=          BMEMORY
                2CADR           GOMASS

                TC              BANKCALL                        # PIPA COMPENSATION CALL
                CADR            1/PIPA

GOMASS          TC              INTPRET
                VLOAD           ABVAL
                                DELV
                STCALL          ABDELV
                                MASSMON
                CALL
## The following line wasn't printed. It was disassembled from the octal listing and symbol table.
                                CALCRVG
                EXIT
## In the right margin is written in green marker "engineon  pg 480".

                TC              PHASCHNG
                OCT             10035

COPYCYCL        INHINT
                CAF             EIGHT
                TS              ITEMP1
## Page 822
                DOUBLE
                TS              ITEMP2
                EXTEND
                INDEX           ITEMP2
                DCA             RN1
                INDEX           ITEMP2
                DXCH            RN
                CCS             ITEMP1
                TCF             COPYCYCL        +2
                EXTEND
                DCA             DAREATMP
                DXCH            DELAREA
                EXTEND
                DCA             MASSTEMP
                DXCH            MASS
                EXTEND
                DCA             PIPTIME
                DXCH            STATIME                 # STATE VECTOR TIME FOR DOWNLINK.

                CAF             BIT4                    #  SIVBGONE BIT
                MASK            FLAGWRD1
                EXTEND
                BZF             CHGPHASE

                CAF             PRIO34
                TC              NOVAC
                EBANK=          DT
                2BCADR          1/ACCS

CHGPHASE        TC              PHASCHNG
                OCT             10035

                TC              DVSELECT
## An arrow is drawn in green marker from the above instruction down to BIT2 lon the PGNCSMON line below.


AGSMON          EQUALS          AVERAGEG

-MAXDELV        DEC             -6398                   # 3200 PULSES/SEC FOR 2 SEC.  CCS TAKES 1.

# **************************************************MAINTAIN THE ORDER OF THE CONSTANTS BETWEEN THE ASTERISKS.
PLUSXDVA        DEC             400                     # 200 CM/SEC(2)= ASCENT THRESHOLD
200DEC          DEC             200
PLUSXDVD        DEC             45                      # 22.5 CM/SEC SQ = DESCENT THRESHHOLD.
# **************************************************

PGNCSMON        CAF             BIT2                    # CHECK CHANNEL 30 TO SEE IF STAGING HAS
## The following line wasn't printed. It has been taken from Sunburst 37/Shepatin 0.
                EXTEND                                  # OCCURRED.  IF BIT2 IS ON WE ARE UNSTAGED

## There is a completely empty page in the listing here. Instructions continue on the next page, with no
## page break header from Yul.
                RAND            30                      # AND DESCENT PLUSXDV IS USED -- OTHERWISE
                INDEX           A                       # THE ASCENT PLUSXDV IS EMPLOYED.

## Page 823
## The next six lines were printed on only two (or maybe three, the header is also garbled). They have
## been disassembled from the octal listing and symbol table. A few comment fragments made it through
## on the last garbled line. They read:
## " HRUS   IS  K   R S    H  DV M  I  R"
## A single-word comment was pulled in from Sunburst 37/Shepatin 0. Given other context, the above
## letters are likely part of something like "THRUST IS OK -- RESET <something> DV MONITOR"
                CS              PLUSXDVA
                AD              ABDELV                  # ACCELERATION
                EXTEND
                BZMF            THRUSTLO
                CA              SETDVCNT
                TS              DVCNTR
## End of disassembled lines.

AVERAGEG        TC              PHASCHNG
## The following line was not printed. It was taken from the octal listing, and follows other PHASCHG
## calling patterns.
                OCT             10035
                EXTEND
                DCA             AVGEXIT
                DXCH            Z                       # AVERAGEG EXIT


## The following three instructions are circled in green marker, with a small checkmark drawn next to DVCNTR.
THRUSTLO        CCS             DVCNTR
                TCF             SERVEXIT        -1      # NO STEERING IF NO THRUST.
NODV            CA              FLAGWRD1
                MASK            BIT5
## The following line was not printed. It was disassembled from the octal listing.
                CCS             A
                TCF             ENGNFAIL                # YES.  GIVE FAIL ALARM.
                TC              PHASCHNG                # NO.  GO OUT THRU DVMNEXIT.
                OCT             10035

## The following two instructions have a box drawn around them in green marker.
                CAF             AVEGADDR                # REMOVE DV MONITOR.
                TS              DVSELECT

DVEXIT          EXTEND                                  # BRANCH TO SELECTED LOCATION
                DCA             DVMNEXIT
                DXCH            Z

BOOSTMON        CS              ABDELV                  # COMPARE ABDELV TO THRSHLD+ TO DETECT
                AD              THRSHLD+                # BOOSTER SHUTDOWN
                EXTEND
                BZMF            AVERAGEG

                INHINT                                  # SHUTDOWN HAS OCCURRED
                CAF             PRIO20
                TC              NOVAC                   # SET UP MISSION PHASE 6 JOB
                EBANK=          BMEMORY
                2CADR           MP6JOB			# NO VAC AREA NEEDED

                TC              PHASCHNG
## The following line was not printed. It was taken from the octal listing and matches other PHASCHNG calls.
                OCT             07022
                OCT             20000
                EBANK=          BMEMORY
                2CADR           MP6JOB
## The printer missed a line here, but it only contained the second word of the 2CADR.

## Page 824
## This page header comes toward the bottom of the previous physical page, and the "824" is underlined in 
## green marker.
                TC              PHASCHNG
                OCT             10035

## The following two instructions have a green bracket drawn around the operands.
DVMNKILL        CAF             AVEGADDR                # REMOVE DV MONITOR FROM SERVICER
                TS              DVSELECT

AVEGADDR        TC              AVERAGEG

THRSHLD+        DEC             980                     # BOOSTER SHUTDOWN AT 1/2 G OVER 2 SECS

## An arrow is drawn to "ALARM" in the line below. This would have been the alarm seen during the flight, so it
## is likely that this listing was used for debugging the problem.
ENGNFAIL        TC              ALARM
                OCT             1405                    # DVALARM.  ENGINE ON BUT NO THRUST.

                TC              POSTJUMP
                CADR            FORGETIT                # SHUTDOWN.
## There is a physical page break here. The instruction below also has a green check mark next to it.
 -1             TS              DVCNTR
SERVEXIT        TC              PHASCHNG
                OCT             00035

                TCF             ENDOFJOB

## Page 825
# ***** GIMBL MONITOR - USED PRIOR TO PGNCSMON IN DPS BURNS **************

                EBANK=          ABDELV
GIMBLMON        CA              SLOSHCTR                # FIRST CONDITION FOR USE OF TRIM GIMBAL-
                EXTEND                                  #     THAT SLOSH HAS NOT BUILT UP TO THE
                BZF             GIMBLOFF                #     POINT THAT THE GIMBAL IS NOT USEFUL
                EXTEND
                DIM             SLOSHCTR

                CS              GTHRSHLD                # SECOND CONDITION FOR USE OF TRIM GIMBAL-
                AD              ABDELV                  #     THAT DPS THRUST HAS ATTAINED A FAIR
                EXTEND                                  #     DEGREE OF STABILITY
## The following line was not printed. It was disassembled from the octal listing.
                BZMF            GIMBLOFF

                CS              FLAGWRD2                # THIRD CONDITION FOR USE OF TRIM GIMBAL-
                MASK            BIT4                    #     THAT THROTTLING IS NOT NOW UNDERWAY.
                EXTEND                                  #     THIS FLAG IS SET WHEN THROTTLING IS
                BZF             PGNCSMON                #     BEGUN AND RESET WHEN IT IS OVER.

                CA              BIT10                   # FOURTH CONDITION FOR USE OF TRIM GIMBAL-
                EXTEND                                  #     THAT GIMBAL HAS NOT FAILED
                RAND            32
                EXTEND
## The following line was not printed. It was disassembled from the octal listing.
                BZF             GIMBLOFF

GIMBLON         INHINT                                  # IF WE GET THIS FAR IT IS OK TO TURN ON
                CS              USEQRJTS                # THE GLORIOUS TRIM GIMBAL
                MASK            DAPBOOLS
                TS              DAPBOOLS
                RELINT
## The following line was not printed. It was disassembled from the octal listing.
                TCF             PGNCSMON

GIMBLOFF        INHINT                                  # IT IS NECESSARY FOR SOME REASON TO
                CS              DAPBOOLS                # TURN OFF THE TRIM GIMBAL
                MASK            USEQRJTS
## The following four lines, as well as the header of the next page, were all printed on top of each other. They
## were disassembled from the octal listing and symbol table. The comment on GTHRSHLD is barely legible, and I
## may have gotten the number wrong.
                ADS             DAPBOOLS
                RELINT
                TCF             PGNCSMON

GTHRSHLD        DEC             60                      # APPROXIMATELY 60 LBS THRUST

## Page 826
## The following two lines were printed on top of each other. The first is a line comment which didn't quite
## make it through. I've done my best to pick it out from behind the other characters.<br>
## <pre>
##     ROO   IN       O    RMINA    R ADACES AND AV RAGE G
## </pre>
                EBANK=          DVTOTAL
AVGEND          CA              PIPTIME         +1      # FINAL AVERAGE G EXIT
## The following line was not printed. It was instead taken from a picture of SHEPATIN rev 0 provided by Don Eyles,
## and confirmed to match the octal listing.
                TS              OLDBT1                  # SET UP FREE FALL GYRO COMPENSATION

                TC              FLAG2UP                 # SET DRIFT FLAG
                OCT             40000

                EXTEND
                DCA             AVEMIDAD                # TRANSFER STATE VECTOR VIA AVETOMID
                DXCH            Z

                TC              PHASCHNG
                OCT             04025                   # POOH WILL TURN OFF PHASE5

## The following line was not printed. It was instead disassembled from the octal listing.
                CA              BIT6
                MASK            FLAGWRD1                # FLAG IS UP BUT RATHER TO ENDOF JOB
                EXTEND
                BZF             POOH
                TC              PHASCHNG                # MAKE GROUP 5 INACTIVE
                OCT             5

                TC              FLAG1DWN                # NOT MORE THAN ONE USE OF THIS FLAG.
                OCT             00040

                TCF             ENDOFJOB

                EBANK=          AVMIDRTN
AVEMIDAD        2CADR           AVETOMID

## Page 827
#    NORMLIZE PERFORMS THE INITIALIZATION REQUIRED PRIOR TO THE FIRST ENTRY TO AVERAGEG, AND SCALES RN SO THAT IT
# HAS 1 LEADING BINARY ZERO. IN MOST MISSIONS, RN WILL BE SCALED AT 2(+29), BUT IN THE 206 MISSION, RN WILL BE
# SCALED AT 2(+24)M.  TIME OF RN,VN IS IN STATIME FOR DWNLINK


                EBANK=          RAVEGON
NORMLIZE        INHINT
                CAF             ELEVEN                  # INITIALIZE INDEX-DEC 11
                TS              RUPTREG1
## The following six instructions were printed on two lines. They were instead disassembled from the octal listing
## and symbol table. A single letter of a comment made it through: "       V       ". They have since been
## confirmed to match Shepatin 0 / Sunburst 37, and the comment has been restored.
                INDEX           RUPTREG1
                CA              RAVEGON
                INDEX           RUPTREG1
                TS              RN                      # STORE RN, VN
                CCS             RUPTREG1
                TCF             NORMLIZE        +2
## End of disassembled instructions.

                EXTEND
## The following five lines were all printed on one. They have been disassembled from the octal listing. Part of
## a comment made it through: "S A    IM  F R DWNLINK". The full comment has been restored from Shepatin 0 /
## Sunburst 37.
                DCA             TAVEGON
                DXCH            STATIME                 # STATE TIME FOR DWNLINK
                RELINT
                TC              INTPRET
                VLOAD           CALL
## End of disassembled instructions.
                                RN                      # LOAD RN VEC FOR CALCGRAV
                                CALCGRAV                # INITIALIZE UNITR RMAG GDT1
                STORE           GDT/2
## The following two lines, as well as the header for the next page, were all printed on the same line. The
## instructions have been disassembled from the octal listing.
                EXIT
                TCF             ENDOFJOB
                
## Page 828
#    VPATCHER IS AN ADAPTATION OF NORMLIZE WHICH IS CALLED AFTER MIDTOAVE HAS BEEN PERFORMED AND PRIOR TO
# PREBURN PROGRAMS THAT REQUIRE IGNITION STATE POSITION, VELOCITY, AND GRAVITY VECTORS IN REGISTERS RN,VN, AND
# GDT/2.  THE REGISTERS ARE RE-INITIALIZED BY NORMLIZE WHEN PREREAD CALLEDRED BY NORMLIZE WHEN PREREAD IS CALLED


# NAME=               DATE=
#    VPATCHER            20 OCTOBER 1966
# PROGRAMMER          SUBROUTINES CALLED
#    SCHULENBERG         CALCGRAV

# CALLING SEQUENCE
#    IF IN BASIC   L-1 TC      INTPRET
#                  L   CALL    VPATCHER
#                  L+1 EXIT
# NORMAL EXIT
#    AT L+1 OF CALLING SEQUENCE
# DEBRIS
#    RN, VN, GDT/2, UNITR, RMAG

# OUTPUT
## The following line was not printed. It was pulled from Shepatin 0 / Sunburst 37.
#    RIGNITION IN RN*2(+24)M
#    VIGNITION IN VN*2(+7)M/CS
#    GDT/2 AT IGNITION IN GDT/2*2(+7)M/CS
#    UNIT RIGNITION IN UNITR *2(+1)M
#    RMAG AT 2(+24)M

VPATCHER        STQ             EXIT
                                TEMX
                INHINT
                CAF             EBANK4
                XCH             EBANK
                TS              RUPTREG2
                CAF             ELEVEN                  # INITIALIZE INDEX TO DEC 11
VPATLOOP        TS              RUPTREG1
                INDEX           RUPTREG1
## There is a page break here.
                CA              RIGNTION
                INDEX           RUPTREG1
                TS              RN                      # STORE RN,VN
                CCS             RUPTREG1
## The following two lines were printed on top of each other.
                TCF             VPATLOOP
                EXTEND
                DCA             TIGNTION
                DXCH            STATIME                 # STATE TIME FOR DWNLINK
                CA              RUPTREG2
                TS              EBANK
                RELINT
                TC              INTPRET
                VLOAD           CALL
## There is a blank page here, with the letters "MTF" written on it. This page marks the end of the printer
## problems, and probably corresponds to a change of paper.
## Page 829
                                RN                      # LOAD RN VEC FOR CALCGRAV
                                CALCGRAV

                STCALL          GDT/2
                                TEMX

## Page 830
# *********************************   FLAG SUBROUTINES   *********************************************************


                BLOCK           03
#    THE FLAG SUBROUTINES ARE USED TO SET OR RESET FLAGS (BITS) IN FLAGWRD1 AND FLAGWRD2. THE BIT(S) TO BE SET OR
# RESET IS(ARE) INDICATED BY THE OCTAL NUMBER FOLLOWING THE TC CALL. THE CALLING SEQUENCES ARE -

#                                                  TC     FLAG1UP         SET BIT(S) IN FLAGWRD1 CORRESPONDING TO
#                                                  OCT    XXXXX           THE 1 BITS IN NUMBER XXXXX.

#                                                  TC     FLAG1DWN        RESET BIT(S) IN FLAGWRD1 CORRESPONDING
#                                                  OCT    XXXXX           TO THE 1 BITS IN NUMBER XXXXX.

# THE CALLING SEQUENCES FOR FLAGWRD2 ARE SIMILAR.

#    NOTE THAT FLAGWRD1 AND FLAGWRD2 CORRESPOND TO INTERPRETIVE SWITCHES 15D THROUGH 44D.

#          FLAGWORD BITS ARE DEFINED IN LOG SECTION "ERASABLE ASSIGNMENTS"

FLAG1UP         INHINT                                  # SET FLAG 1 SUBROUTINE
                CS              FLAGWRD1
                INDEX           Q
                MASK            0
                ADS             FLAGWRD1

                RELINT
                TCF             Q+1

FLAG2UP         INHINT                                  # SET FLAG 2 SUBROUTINE
                CS              FLAGWRD2
                INDEX           Q
                MASK            0
                ADS             FLAGWRD2

                RELINT
                TCF             Q+1

FLAG1DWN        INDEX           Q                       # RESET FLAG 1 SUBROUTINE
                CS              0
                INHINT
                MASK            FLAGWRD1
                TS              FLAGWRD1
                RELINT
                TCF             Q+1

FLAG2DWN        INDEX           Q                       # RESET FLAG 2 SUBROUTINE
                CS              0
                INHINT
## Page 831
                MASK            FLAGWRD2
                TS              FLAGWRD2
                RELINT
                TCF             Q+1

GMBLMNAD        GENADR          GIMBLMON

PGNSCADR        GENADR          PGNCSMON

BURNDB          DEC             0.00556                 # 1 DEGREE DEADBAND SCALED AT PI RADIANS
NARROWDB        DEC             0.00167                 # .3 DEGREE DEADBAND SCALED AT PI RADIANS
WIDEDB          DEC             0.02778                 # 5 DEGREE DEADBAND SCALED AT PI RADIANS
back to top