https://github.com/virtualagc/virtualagc
Raw File
Tip revision: 4e5d304eb7cd5589b924ffb8b423b6f15511b35d authored by Ron Burkey on 20 October 2018, 17:47:00 UTC
The sample Block I AGC program TRIVIUM, found at the very end of one of
Tip revision: 4e5d304
FRESH_START_AND_RESTART.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    FRESH_START_AND_RESTART.agc
## Purpose:     A section of Sunburst revision 37, or Shepatin revision 0.
##              It is part of an early development version of the software
##              for Apollo Guidance Computer (AGC) on the unmanned Lunar
##              Module (LM) flight Apollo 5. Sunburst 37 was the program
##              upon which Don Eyles's offline development program Shepatin
##              was based; the listing herein transcribed was actually for
##              the equivalent revision 0 of Shepatin.
##              This file is intended to be a faithful transcription, except
##              that the code format has been changed to conform to the
##              requirements of the yaYUL assembler rather than the
##              original YUL assembler.
## Reference:   pp. 78-89
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2017-05-24 MAS  Created from Sunburst 120.
##              2017-05-29 HG   Transcribed
##              2017-06-15 HG   Fix operand  BIT14  -> BIT4
##                              Fix operator TC     -> TS  
##                                           TCF    -> TC 
##                              Fix statements CS    LMPCMD --> MASK LMPCMD
##                                             MASK  BIT15  --> AD   BIT15
##                                             ADS   LMPCMD --> TS   LMPCMD
##                              Fix value IM30INIR  OCT 37000 -> OCT 37400
##		2017-06-21 RSB	Various comment fixes found using 
##				octopus/ProoferComments.

## Page 78
                BANK            01
                EBANK=          LST1

SLAP1           INHINT                                  # FRESH START. COMES HERE FROM PINBALL.
                TC              STARTSUB                # SUBROUTINE DOES MOST OF THE WORK.

STARTSW         TCF             GOON                    # PATCH FOR SIMULATIONS

STARTSIM        CAF             BIT14

                TC              FINDVAC
                EBANK=          ITEMP1
                2CADR           BEGIN206

GOON            CAF             BIT15                   # TURN OFF ALL DSPTAB +11D LAMPS ONLY ON
                TS              DSPTAB          +11D    # REQUESTED FRESH START.

                CAF             ZERO                    # SAME STORY ON ZEROING FAILREG.
                TS              REDOCTR
                TS              FAILREG
                TS              FAILREG         +1
                TS              FAILREG         +2

                EXTEND                                  # INITIALIZE SPECIAL ENEMIZE REGISTER
                DCA             ENJOBCAD
                DXCH            FLUSHREG                # *** REMOVE IF FAKESTRT REMOVED

DOFSTART        CS              ZERO                    # MAKE ALL MTIMER/PHASE PAIRS AVAILABLE.
                TS              MTIMER4
                TS              MTIMER3
                TS              MTIMER2
                TS              MTIMER1

                TS              MPHASE4
                TS              MPHASE3
                TS              MPHASE2
                TS              MPHASE1

# INITIALIZE SWITCH REGISTERS INCLUDING DAPBOOLS

                CS              ONE
                TS              LMPOUTT

                CA              SEVEN
  -6            TS              L
                INDEX           L
                CA              SWINIT
                INDEX           L
                TS              STATE
                CCS             L
                TCF             -6

## Page 79

                TS              CDUX                    # ZERO CDUS SO MATRIX COMPUTATION IN T4
                TS              CDUY                    # WONT OVERFLOW.
                TS              CDUZ

                TS              LMPCMD                  # RESET LMP COMMAND AREA.
                TS              LMPCMD          +1
                TS              LMPCMD          +2
                TS              LMPCMD          +3
                TS              LMPCMD          +4
                TS              LMPCMD          +5
                TS              LMPCMD          +6
                TS              LMPCMD          +7
                TS              LMPIN
                TS              LMPOUT

POOH3           CAF             ZERO
                TS              SMODE
                TS              MODREG
                TS              AGSWORD                 # ALLOW AGS INITIALIZATION.

                TS              PHASE6                  # INITIALIZE PHASE TABLES - NO MISSION
                TS              PHASE1                  # PROGRAMS RUNNING.
                TS              PHASE2
                TS              PHASE3
                TS              PHASE4
                TS              PHASE5

                COM
                TS              -PHASE6
                TS              -PHASE1
                TS              -PHASE2
                TS              -PHASE3
                TS              -PHASE4
                TS              -PHASE5

                CAF             LNORMT4
                TS              T4LOC

                CAF             IM30INIF                # FRESH START IMU INITIALIZATION.
                TS              IMODES30

                CAF             BIT10                   # REMOVE IMU FAIL INHIBIT IN 5 SECS.
                TC              WAITLIST
                EBANK=          LST1
                2CADR           IFAILOK
                EXTEND                                  # SETTING T5RUPT FOR SETIDLER PROGRAM
                DCA             SETADR                  # THE SETIDLER PROGRAM ASSURES 1 SECOND
                DXCH            T5ADR                   # DELAY BEFORE THE DAPIDLER BEGINS.

## Page 80
ENDRSTRT        CAF             BIT6                    # IF GIMBAL LOCK LAMP IS STILL ON,
                MASK            DSPTAB          +11D    # IMU WAS FOUND IN GIMBAL LOCK IN RESTART
                CCS             A                       # AND LEFT IN COARSE ALIGN. IN THIS CASE
                CS              BIT9                    # SET ISS OPERATE BIT IN IMODES30 TO
                ADS             IMODES30                # OPERATE SO T4 INBIT MONITOR WONT ZERO

                RELINT                                  # THE CDUS AS IT DOES IN FRESH START.
                TC              BANKCALL                # DISPLAY MAJOR MODE.
                CADR            DSPMM

                CAF             PRIO30                  # THIS IS USED ONLY FOR SPECIAL ENEMIZE.
                INHINT                                  # $$$ REMOVE IF FULL RESTARTABILITY ***
                TC              FINDVAC
                EBANK=          FLUSHREG
                2CADR           FLUSHLOC
                RELINT
                TCF             DUMMYJOB        +2      # DONT ZERO NEWJOB



FLUSHLOC        EXTEND                                  # GO TO SPECIAL ENEMA LOC FOR ROM
                DCA             FLUSHREG
                DXCH            Z                       # USUALLY THIS WILL BE AN ENDOFJOB

OCT312          OCT             312
                EBANK=          LST1
ENJOBCAD        2CADR           ENDOFJOB

## Page 81
#          COMES HERE FROM LOCATION 4000, GOJAM. RESTART ANY PROGRAMS WHICH MAY HAVE BEEN RUNNING AT THE TIME.

GOPROG          TC              BANKCALL                # * * * SUBJECT TO A HUGE CHANGE * * *
                CADR            FAKESTRT
                INCR            REDOCTR

                CA              ERESTORE
                EXTEND
                BZF             2STARTSB
                CA              SKEEP7
                MASK            HI5
                EXTEND                                  # IF SKEEP7 CONTAINS NONSENSE, DO
                BZF             +2                      # A FRESH START.  THIS ELIMINATES A CHANCE
                TCF             SLAP1                   # OF POSSIBLE COMPUTER LOCKUP.

                EXTEND                                  # RESTORE B(X) AND B(X+1) IF RESTART
                DCA             SKEEP5                  # HAPPENED WHILE SELF-CHECK HAD REPLACED
                NDX             SKEEP7                  # THEM WITH CHECKING WORDS.
                DXCH            0000

2STARTSB        TC              STARTSUB                # COMMON INITIALIZATION ROUTINE

                CAF             9,6                     # LEAVE PROGRAM ALARM AND GIMBAL LOCK
                MASK            DSPTAB          +11D    # LAMPS INTACT ON RESTART.
                AD              BIT15
                XCH             DSPTAB          +11D

                MASK            BIT6
                CCS             A                       # IF GIMBAL LOCK LAMP WAS ON, LEAVE ISS IN
                CAF             BIT4                    # COARSE ALIGN.
                EXTEND
                WOR             12

# DAP ZEROES GODAPGO TO BYPASS STARTUP OF DAP AFTER JETABORT UNTIL GROUND
                EXTEND                                  # SETTING T5RUPT FOR DAPIDLER PROGRAM
                DCA             IDLEADR
                DXCH            T5ADR
                                                        # RESETS GODAPGO.
                CAF             PRIO37                  # DISPLAY FAILREG AS INDICATION OF RESTART
                TC              NOVAC                   # OR TO DISPLAY ABORT CODE AS ABOVE.
                EBANK=          LST1
                2CADR           DOALARM
LIGHTSET        EXTEND                                  # DONT TRY TO RESTART IF ERROR
                READ            15                      # AND MARK REJECT BUTTONS DEPRESSED.
                AD              -ELR
                EXTEND
                BZF             +2
                TCF             +7

                CAF             BIT5

## Page 82
                EXTEND
                RAND            16
                AD              -MKREJ
                EXTEND
                BZF             DOFSTART

                CS              T4LOC                   # SEE IF LMP COMMAND WAS SITTING IN CH 10
                AD              LLMPRS2                 # WHEN RESTART OCCURRED. IF SO, SET BIT 15

                EXTEND                                  # BACK TO ZERO SO THE COMMAND WILL BE
                BZF             LMPRUPT                 # RESENT.

                CCS             LMPOUTT                 # IF NOT, SEE IF UPDATE OF REFERENCE
                AD              ONE                     # POINTER (LMPOUT) WAS IN PROCESS. IF SO,
                TS              LMPOUT                  # LMPOUTT IS NON-NEGATIVE.
                CS              ONE                     # SHOW LMPOUT UPDATED.
                TS              LMPOUTT
                TCF             T4LOCRST

LMPRUPT         CS              BIT15                   # CANT USE ADS HERE SINCE CODING MUST BE
                INDEX           LMPOUT                  # REPEATABLE (RESTART DURING RESTART, ETC)
                MASK            LMPCMD
                AD              BIT15
                INDEX           LMPOUT
                TS              LMPCMD

T4LOCRST        CAF             LNORMT4
                TS              T4LOC

 -1             CAF             NUMGRPS                 # VERIFY PHASE TABLE AGREEMENT.
PCLOOP          TS              MPAC            +5
                DOUBLE

                EXTEND
                INDEX           A
                DCA             -PHASE1                 # COMPLEMENT INTO A, DIRECT INTO L.
                EXTEND
                RXOR            L                       # RESULT MUST BE -0 FOR AGREEMENT.
                CCS             A
                TCF             PTBAD                   # RESTART FAILURE.
                TCF             PTBAD
                TCF             PTBAD

                CCS             MPAC            +5      # PROCESS ALL RESTART GROUPS.
                TCF             PCLOOP

                TS              MPAC            +6      # SET TO +0.
                TC              NXTRST          -1      # * * * BYPASS 77 CHECK FOR NOW
                CA              -PHASE6                 # TEST TO SEE IF IT IS A PLANNED NO RESTAR
                AD              OCT77                   # T RESTART
                CCS             A
                TCF             +4                      # A NORMAL RESTART

## Page 83
OCT77           OCT             77                      # CAN:T GET HERE
                TCF             +2                      # A NORMAL RESTART
                TCF             +1                      # THIS MAY GO TO FORGETIT IF EVER USED

                CAF             NUMGRPS                 # SEE IF ANY GROUPS RUNNING.
NXTRST          TS              MPAC            +5
                DOUBLE
                INDEX           A
                CCS             PHASE1
                TCF             PACTIVE                 # PNZ - GROUP ACTIVE.
                TCF             PINACT                  # +0 - GROUP NOT RUNNING.

PACTIVE         TS              MPAC
                INCR            MPAC                    # ABS OF PHASE.

                INCR            MPAC            +6      # INDICATE GROUP DEMANDS PRESENT.
                CA              RACTCADR                # GO TO RESTARTS AND PROCESS PHASE INFO.
                TC              SWCALL                  # MUST RETURN TO SWRETURN.

PINACT          CCS             MPAC            +5      # PROCESS ALL RESTART GROUPS.
                TCF             NXTRST

TSTMPAC6        CCS             MPAC            +6      # IF NO GROUPS ACTIVE THIS REQUEST, DO A
                TCF             DORSTART
                TCF             DOFSTART                # FRESH START

PTBAD           CAF             OCT1107                 # SET ADDITIONAL FAILURE TO SHOW PHASE
                TS              SFAIL                   # TABLE DISAGREEMENT (WILL BE DISPLAYED
                TCF             DOFSTART                # IN R2).

RACTCADR        CADR            RESTARTS
OCT1107         OCT             1107                    # ADDITIONAL ALARM CODE.

DORSTART        CAF             IFAILINH                # LEAVE IMU FAILURE INHIBITS INTACT ON
                MASK            IMODES30                # RESTART, RESETTING ALL FAILURE CODES.
                AD              IM30INIR
                TS              IMODES30

                TCF             ENDRSTRT

## Page 84
#          INITIALIZATION COMMON TO BOTH FRESH START AND RESTART.
                EBANK=          DNTMGOTO                # DO PORTION OF FRESH START NOT DONE
STARTSUB        CAF             LDNTMGO                 # BY POO.
                TS              EBANK                   # SET UP TM PROGRAM.

                CAF             LDNPHAS1
                TS              DNTMGOTO

STARTSB2        XCH             Q                       # ENTRY FROM POO.
                TS              BUF                     # EXEC TEMPS ARE AVAILABLE TO US.

                CAF             ZERO                    # ZERO OUTBITS WITHIN 3MS OF RESTART.
                EXTEND
                WRITE           12
                EXTEND
                WRITE           14
                EXTEND
                WRITE           11
                TS              ERESTORE                #      ERASCHK RESTORE FLAG

                EXTEND                                  # USE FIRST 8 OF 12 SUPER-BANKS (ADD PROG
                WRITE           7                       # WHEN LAST FOUR ARE NEEDED). PROBABLY V37
                CAF             PRIO34                  # ENABLE INTERRUPTS.
                EXTEND
                WRITE           13

                CAF             POSMAX                  # T3 AND T4 OVERFLOW AS SOON AS POSSIBLE.
                TS              TIME5                   # SO DOES T5.
                TS              TIME3                   #   (POSMAX IS PSEUDO INTERRUPT SIGNAL IN
                TS              TIME4                   #   CASE RUPT SIGNALLED BEFORE TS TIME3).

                EBANK=          LST1
                CAF             STARTEB
                TS              EBANK                   # SET FOR E3

                CAF             NEG1/2                  # INITIALIZE WAITLIST DELTA-TS.
                TS              LST1            +7
                TS              LST1            +6
                TS              LST1            +5
                TS              LST1            +4
                TS              LST1            +3
                TS              LST1            +2
                TS              LST1            +1

                TS              LST1

                CS              ENDTASK
                TS              LST2
                TS              LST2            +2
                TS              LST2            +4
                TS              LST2            +6

## Page 85
                TS              LST2            +8D
                TS              LST2            +10D

                TS              LST2            +12D
                TS              LST2            +14D
                TS              LST2            +16D
                CS              ENDTASK         +1
                TS              LST2            +1
                TS              LST2            +3
                TS              LST2            +5
                TS              LST2            +7
                TS              LST2            +9D
                TS              LST2            +11D
                TS              LST2            +13D
                TS              LST2            +15D
                TS              LST2            +17D

                CS              ZERO                    # MAKE ALL EXECUTIVE REGISTER SETS
                TS              PRIORITY                # AVAILABLE.
                TS              PRIORITY        +12D
                TS              PRIORITY        +24D
                TS              PRIORITY        +36D
                TS              PRIORITY        +48D
                TS              PRIORITY        +60D
                TS              PRIORITY        +72D

                TS              NEWJOB                  # SHOWS NO ACTIVE JOBS.

                CAF             VAC1ADRC                # MAKE ALL VAC AREAS AVAILABLE.
                TS              VAC1USE
                AD              LTHVACA
                TS              VAC2USE
                AD              LTHVACA
                TS              VAC3USE
                AD              LTHVACA
                TS              VAC4USE
                AD              LTHVACA
                TS              VAC5USE

                CAF             TEN                     # TURN OFF ALL DISPLAY SYSTEM RELAYS.
                TS              DIDFLG                  # DISPLAY INERTIAL DATA FLAG.
DSPOFF          TS              MPAC
                CS              BIT12
                INDEX           MPAC
                TS              DSPTAB
                CCS             MPAC
                TC              DSPOFF

                TS              INLINK
                TS              DSPCNT

                TS              CADRSTOR

## Page 86
                TS              REQRET
                TS              CLPASS
                TS              DSPLOCK
                TS              MONSAVE                 # KILL MONITOR
                TS              MONSAVE1
                TS              GRABLOCK
                TS              VERBREG
                TS              NOUNREG

                TS              DSPLIST
                TS              DSPLIST         +1
                TS              DSPLIST         +2

                TS              MARKSTAT
                TS              EXTVBACT                # MAKE EXTENDED VERBS AVAILABLE
                TS              IMUCADR
                TS              OPTCADR
                TS              RADCADR
                TS              ATTCADR
                TS              PHASENUM
                TS              LGYRO
                TS              DSRUPTSW
                CAF             NOUTCON
                TS              NOUT

                CS              ONE                     # NO RADAR DESIGNATION.
                TS              SAMPLIM                 # NO RADAR RUPTS EXPECTED.

                CAF             IM33INIT                # NO PIP OR TM FAILS.
                TS              IMODES33

                CAF             BIT6                    # SET LR POS.
                EXTEND
                RAND            33
                AD              RMODINIT
                TS              RADMODES

                CAF             LESCHK                  # SELF CHECK GO-TO REGISTER.
                TS              SELFRET
                CS              VD1
                TS              DSPCOUNT

                CAF             NOMTMLST                # SET UP NOMINAL DOWNLINK LIST.
                TS              DNLSTADR

                TC              BUF

IFAILINH        OCT             35                      # ISS FAILURE INHIBIT BITS.
LDNPHAS1        GENADR          DNPHASE1
LDNTMGO         ECADR           DNTMGOTO
NOMTMLST        GENADR          NOMDNLST

## Page 87
LESCHK          GENADR          SELFCHK
LLMPRS2         GENADR          LMPRESET
VAC1ADRC        ADRES           VAC1USE
LTHVACA         DEC             44

STARTEB         ECADR           LST1
NUMGRPS         EQUALS          FIVE                    # SIX GROUPS CURRENTLY.

#          WHERE TO GO ON RESTART IF TERMINATE REQUESTED.

-ELR            OCT             -22                     # -ERROR LIGHT RESET KEY CODE.
-MKREJ          OCT             -20                     # - MARK REJECT.
IM30INIF        OCT             37411                   # INHIBITS IMU FAIL FOR 5 SEC AND PIP ISSW
IM30INIR        OCT             37400                   # LEAVE FAIL INHIBITS ALONE.

IM33INIT        OCT             16000                   # NO PIP OR TM FAIL SIGNALS.
9,6             OCT             440                     # MASK FOR PROG ALARM AND GIMBAL LOCK.
RMODINIT        OCT             00102

                EBANK=          DT
IDLEADR         2CADR           DAPIDLER
                EBANK=          DT
SETADR          2CADR           SETIDLE

SWINIT          OCT             0
                OCT             0
                OCT             00005
                OCT             44516                   # INIT FOR DAPBOOLS. DB SET IN SETIDLE.
                OCT             0
                OCT             0
                OCT             0
                OCT             0

## Page 88
# PROGRAM TO REVERT TO IDLING MODE (P 00).

# CALLING SEQUENCE:  TC (OR TCF)   POOH     UNDER EXEC (NOT INTERRUPTED).

                BLOCK           02
POOH            TC              POSTJUMP
                CADR            POOH2                   # DO A PARTIAL FRESH START.


                BANK            01

POOH2           INHINT
                TC              STARTSB2                # DOESN'T CLOBBER DOWNLINK.

                TC              FLAG2DWN
                OCT             20                      # TURN OFF MISSION TIMER FLAG

#   ***** HERE WE SHOULD RESET STATE REGISTERS, DEAL WITH DAP, ETC. *****

                CA              LPOOH3                  # PICK UP RETURN FOR MSTART.
                TC              MSTART          -1      # START MISSION TIMERS COUNTING.
                                                        # WE GET A RELINT AT MSTART.


LPOOH3          ADRES           POOH3
                BANK            7

FORGETIT        INHINT                                  # THIS IS ALSO DOV74
                EXTEND
                DCA             KILLCAD
                DXCH            DVMNEXIT

                EXTEND
                DCA             CADAVER
                DXCH            AVGEXIT

                CAF             PINGSMON
                TS              DVSELECT

                TC              ENGINOFF

                CS              BGIMBALS                # TURN OFF TRIM GIMBALS
                EXTEND
                WAND            12

ENEMA           INHINT
                CAF             ZERO                    # MAKE INACTIVE ALL RESTART PHASES
                TS              PHASE1                  # EXCEPT SERVICER

## Page 89
                TS              PHASE2
                TS              PHASE3

                TS              PHASE4
                TS              PHASE6

                COM
                TS              -PHASE1
                TS              -PHASE2
                TS              -PHASE3
                TS              -PHASE4
                TS              -PHASE6

                TS              MPHASE1                 # SET TIMER/PHASE PAIRS TO IDLE STATE
                TS              MPHASE2
                TS              MPHASE3
                TS              MPHASE4
                TS              MTIMER4
                TS              MTIMER3
                TS              MTIMER2
                TS              MTIMER1

# START TASK TO RESET LMP COMMANDS HERE AND OTHER CLEANUP PROBLEMS
                TC              POSTJUMP
                CADR            GOPROG          +3

                EBANK=          LST1
CADAVER         2CADR           SERVEXIT

                EBANK=          LST1
KILLCAD         2CADR           AVEGKILL

PINGSMON        GENADR          PGNCSMON
BGIMBALS        OCT             7400

AVEGKILL        TC              FLAG1DWN                # COMES HERE WHEN ENGINE OFF
                OCT             1
# SERVICER GOES TO POOH AND ENABLES TIMERS AT DEAD END.  ALL PROGRAMS MUSTTURN OFF PIPAS AT END OF MISSION PHASE
                TCF             ENDOFJOB

FAKESTRT        INCR            REDOCTR                 # FAKESTRT ALARM
                TC              ALARM
                OCT             0316

                TCF             FORGETIT

DOV74           EQUALS          FORGETIT
back to top