Revision 49926c64aa2d4ea8cd64b4eaa626d22f43bfaeeb authored by Ron Burkey on 12 October 2018, 13:13:55 UTC, committed by Ron Burkey on 12 October 2018, 13:13:55 UTC
to comments in *.agc files that include the strings -SIMULATION or +SIMULATION. The former are automatically commented out if --simulation is used, while the latter are commented out is --simulation is *not* used. All of that was for the sole purpose of adding a -SIMULATION specifier to a single line in Validation.agc that proves inconvenient sometimes for simulations of the AGC electronics. There's a new target in the top-level Makefile (namely Validation-hardware-simulation) that isn't one of the default ones, but which when used, builds a separate rope (Validation/Validation-hardware-simulation.agc.bin) and html with that one inconvenient line in Validation.agc commented out. Overkill, I know.
1 parent 0a720cd
AS206_MISSION_SCHEDULING_PACKAGE.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: AS206_MISSION_SCHEDULING_PACKAGE.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. 748-762
## 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-06-07 MAS Updated for Sunburst 37. There's a decent number
## of differences.
## 2017-06-15 HG Fix page number 814 -> 762
## Add missing instruction TCF ENDUP
## remove operand modifier CHKUPDEX +1 -> CHKUPDEX
## 2017-06-23 RSB Proofed comment text with
## octopus/ProoferComments.
## Page 748
# THE FOLLOWING ROUTINES IMPLEMENT THE MISSION SCHEDULING LOGIC AS DESCRIBED IN CHAPTER 4 OF THE
# AS206 OPERATIONS PLAN. THE FOLLOWING ROUTINE IS ENTERED ONCE EACH SECOND FOR MOST OF THE DURATION OF THE
# FLIGHT, ONCE LIFT-OFF HAS OCCURRED. AN EXCEPTION TO THIS IS THE TIME-CRI
# RESTART GROUP FOR MISSION SCHEDULING PACKAGE IS GROUP 3.
BANK 31
EBANK= MTIMER4
MMAINT CAF THREE # LOOP TO PROCESS ALL FOUR TIMERS.
TS MINH # AT END OF TIMER UPDATE, THIS REGISTER
# WILL NOT BE EQUAL TO 3 IF MAINTENANCE IS
# TO CEASE.
MLOOP TS RUPTREG1
INDEX A # LOOK AT TIMER.
CCS MTIMER4
TCF MCOUNT # PNZ - ACTIVE AND COUNTING DOWN.
TCF MDUE # +0 - MISSION PHASE DUE.
AD ONE # NNZ - FREE BUT LOADED BY GROUND.
COM # -0 - FREE.
MCOUNT INDEX RUPTREG1 # PLACE UPDATED TIMERS AND PHASE REGISTERS
TS MTIMER4T # INTO COPY BUFFER FOR RESTART PROTECTION.
INDEX RUPTREG1
CA MPHASE4
MENTERED INDEX RUPTREG1
TS MPHASE4T
CCS RUPTREG1
TCF MLOOP
MCHKST CCS STATECTR # SEE IF POSSIBLY TIME FOR INTERNAL STATE
TCF MSTATEOK # VECTOR EXTRAPOLATION.
CAF THREE # IF SO, DO UPDATE UNLESS WE ARE WITHIN 16
MSTATECK TS RUPTREG1 # SECONDS OF THE INITIATION OF ANY MISSION
CS LOW4 # PHASE.
INDEX RUPTREG1
MASK MTIMER4
EXTEND
BZF MSTATEOK -1 # BRANCH IF PHASE DUE WITHIN 16 SECS.
CCS RUPTREG1
TCF MSTATECK
CAF PRIO5
TC FINDVAC # TO DO THE INTEGRATION.
EBANK= TDEC
2CADR STATEINT
## Page 749
-1 CAF STATECRI
MSTATEOK TS STATECTR
CA NEWMTIME # COPY FOR RESTART PROTECTION
TS NEWTIMET
TC PHASCHNG # UPDATE RESTART
OCT 04013
REDO3.3 CAF SEVEN # COPY NEW TIMERS AND PHASE REGISTERS.
MCOPY TS RUPTREG1
INDEX A
CA MTIMER4T
INDEX RUPTREG1
TS MTIMER4
CCS RUPTREG1
TCF MCOPY
CS THREE # SEE IF FURTHER MAINTENCE HAS BEEN
MASK MINH # INHIBITED BY THE INITIATION OF A TIME-
CCS A # CRITICAL MISSION PHASE.
TCF MINHIBIT
CAF 1SEC # UPDATE T1 SETTING FOR NEXT UPDATE
ADS NEWMTIME
TC PHASCHNG
OCT 04013 # IMMECIATE RESTART AT NEXT LOCATION
CS TIME1 # GET DT FOR NEXT SCHEDULING REQUEST.
AD NEWTIMET
EXTEND
BZMF +2 # CORRECT FOR CLOCK OVERFLOW.
TCF +3
AD HALF
AD HALF
+3 TC WAITLIST
EBANK= MTIMER4
2CADR MMAINT
TC TASKOVER
MINHIBIT TC FLAG2DWN # RESET TIMERS ENABLED FLAG.
OCT 20
TC PHASCHNG
OCT 00003
TCF TASKOVER
## Page 750
1SEC DEC 100
## Page 751
# THE FOLLOWING CODING DISPATCHES DUE MISSION PHASES VIA A TABLE OF EXECUTIVE PRIORITIES AND 2CADRS.
MDUE CA RUPTREG1
TS MDUETEMP # COPY FOR RESTART PROTECTION
INDEX RUPTREG1 # GET NUMBER OF NEW PHASE AND MP BY NUMBER
CA MPHASE4 # OF TABLE ENTRIES PER PHASE TO GET ADDRES
EXTEND # OF TABLE ENTRY FOR THIS PHASE.
BZF BADPHASE # INACTIVE MPHASE HERE IS VERY BAD.
TS PHASENUM # HOLDS CURRENT MP NUMBER FOR DOWNLINK
EXTEND
MP THREE
INDEX L
CA MTABLE # PRIO, INHIBIT/ENABLE INFO., ETC.
TS RUPTREG2
MASK SEVEN # HONOR INHIBIT/ENABLE FUNCTION.
MASK FLAGWRD2
CCS A
TCF MBYPASS
CAF BIT4 # SET MRETURN IF COUNTERS ARE TO STOP.
MASK RUPTREG2
ADS MINH
CAF PRIO37
MASK RUPTREG2
TS NEWPRIO
EXTEND
INDEX L # PICK UP 2CADR AND DO FINDVAC.
DCA MTABLE +1
TC SPVAC
TC 2PHSCHNG
OCT 00032 # 2.3SPOT TO RESTART MISSION PHASE NOW DUE
OCT 04013 # GROUP 3 RESTART FOR MISSIN SCHEDULER
CA MDUETEMP
TS RUPTREG1 # RUPTREG1 WAS DESTROYED BY 2PHSCHNG
CAF PRIO30 # SET UP JOB TO TERMINATE ANY UPDATE
TC NOVAC # POSSIBLY IN PROGRESS & RELEASE DISPLAY.
EBANK= MTIMER4 # PINBALL USES UNSWITCHED ERASABLE
2CADR UPDATKIL
MBYPASS CS ZERO
INDEX RUPTREG1 # MAKE THIS TIMER/PHASE PAIR AVAILABLE.
TS MTIMER4T
TCF MENTERED # JOINS MAIN CODING.
## Page 752
# RESTART ROUTIN E TO RESCHEDULE MISSION PHASE
REDOMDUE INDEX MDUETEMP # FIND PRIO AND 2CADR OF NEW MP
CA MPHASE4 # IN TABLE. MDUETEMP CONTAINS
EXTEND # THE PHASE REGISTER NUMBER OF THE
MP THREE # MISSION PHASE DUE AT THIS TIME
INDEX L
CA MTABLE
MASK PRIO37
TS NEWPRIO
EXTEND
INDEX L
DCA MTABLE +1
TC SPVAC # DO FINDVAC WITH 2CADR IN A + L
TCF TASKOVER
# DO A PSEUDO VERB 34 ENTER TO KILL AN UPDATE IN PROGRESS, AND TO RELEASE THE DSKY.
UPDATKIL CAF 34OCT
TS REQRET
TC BANKCALL
CADR UPDATVB -1
TC POSTJUMP
CADR VBTERM # GOES TO ENDOFJOB WHEN DONE
## Page 753
# THE FOLLOWING SUBROUTINE MAY BE USED BY MISSION PROGRAMS TO SET MISSION PHASE/TIMER PAIRS TO INITIATE
# THE VARIOUS MISSION PHASES (SEE CHAPTER 4 OF THE GSOP).
# CALLING SEQUENCE IS AS FOLLOWS:
# TC MPENTRY UNDER CONTROL OF EXEC OR RUPT.
# DEC INDEX INDEX OF TIMER (1 TO 4).
# DEC PHASE MISSION PHASE NUMBER.
# ADRES DT DT = TIME (SECONDS) TO INITIATION.
# (EBANK MUST ALREADY BE SET.)
BLOCK 02
MPENTRY INHINT
INDEX Q # MAKE INTERNAL INDEX.
CS 0
AD FOUR
TS RUPTREG1
INDEX A # IF THIS MISSION PHASE REGISTER IS NOT
CCS MPHASE4 # -0, IT HAS BEEN CHANGED BY THE GROUND,
TCF MENTRYT # SO LEAVE IT ALONE.
TCF MENTRYT
TCF MENTRYT
INDEX Q
CAF 1
INDEX RUPTREG1
TS MPHASE4
MENTRYT INDEX RUPTREG1 # IF THE TIMER IS -0, SET IT TO THE INPUT
CCS MTIMER4 # VALUE, OTHERWISE, ASSUME IT HAS BEEN
AD ONE # SET BY THE GROUND AND JUST FORCE IT POS.
TCF MENTABS
TCF -2
INDEX Q
CAF 2
INDEX A
CA 0
MENTABS INDEX RUPTREG1
TS MTIMER4
CAF THREE # MAKE UP RETURN SO COMMON ROUTINE CAN BE
AD Q # USED TO INITATE TIMER COUNTING.
-1 TS MRETURN
## Page 754
# SUBROUTINE TO START MISSION TIMERS IF THEY ARE NOT GOING ALREADY.
MSTART CA FLAGWRD2 # SEE IF TIMERS ENABLED ALREADY.
MASK BIT5
CCS A
TCF MDONE # YES - RETURN.
TC PHASCHNG # UPDATE RESTART BEFORE SETTING FLAG.
OCT 05013
OCT 77777
TC FLAG2UP # SHOW TIMERS ENABLED.
OCT 20
INHINT
CAF 1SEC+1
AD TIME1
XCH NEWMTIME
CAF STATECRI # INITIALIZE STATE VECTOR EXTRAPOLATION
TS STATECTR # TIMER.
CAF ONE
TC WAITLIST
EBANK= MTIMER4
2CADR MMAINT # START COUNTER MAINTENANCE.
MDONE RELINT
TC MRETURN
STATECRI DEC 539 # CALLS FOR INTEGRATION EVERY 539 SEC.
1SEC+1 DEC 101
## Page 755
# SUBROUTINE CALLS FOR VARIOUS UPDATE OPTIONS (SEE GSOP). ENTER UNDER EXEC WITH INTERRUPT INHIBITED.
BANK 31
DOV70 TC MTIMERUP # VERB 70
TCF ENDUP
DOV72 TC MTIMERUP # VERB 72
DOV71 TC MPHASEUP # VERB 71
TCF ENDUP
# *** C ODING TO BE INSERTED HERE TO CLEAR OUT ALL TIMER/PHASE PAIRS
# W HICH H AVE BEEN SET BY LGC, SINCE GROUND REQUEST WILL SUPERSEDE
# ALL PR EVIOUSLY SCHEDULED MPS EXCEPT THOSE SET BY GROUND ITSELF
# DOV74 EQUALS FORGETIT
ENDV73 RELINT
TCFENDUP TCF ENDUP
## Page 756
# INVERT INHIBIT/ENABLE SWITCH WHOSE INDEX IS IN UPINDEX (1 TO 3). ENTER UNDER EXEC WITH INTERRUPT INHIBITED.
DOV73 CS TWO
AD UPINDEX
TC MAGSUB # SEE IF INDEX LEGIT.
DEC -1
TCF UPERROR
INDEX UPINDEX
CAF BIT3 -1 # BITS IN POSITIONS 3, 2, AND 1 OF
TS L # FLAGWRD2 (SEE SWITCH ASSIGNMENTS).
INHINT
CA FLAGWRD2
EXTEND
RXOR L
TS FLAGWRD2
TCF ENDV73
# THE FOLLOWING CODING ISSUES THE SINGLE LMP COMMAND FOUND IN UPINDEX PROVIDED THE TIMERS ARE ENABLED
# (NON TIME CRITICAL PHASE OF MISSION).
DOV67 CS FLAGWRD2
MASK BIT5
CCS A
TCF UPERROR
CS BIT8 # COMMAND MUST BE BETWEEN 1 AND 255.
AD UPINDEX
TC MAGSUB
DEC -127
TCF UPERROR
CAF TC1LMP
TS UPINDEX -1
CAF TCFENDUP
TS UPINDEX +1
TC UPINDEX -1
TC1LMP TC 1LMP # FOR ERASABLE CALL.
## Page 757
# THE FOLLOWING CODING UPDATES A MISSION PHASE NUMBER WHOSE INDEX IS IN UPINDEX TO THE VALUE FOUND
# IN UPPHASE. RETURN IS TO CALLER IF DATA OK, OR TO UPERROR IF DATA OUT OF RANGE.
MPHASEUP CA Q
TC CHKUPDEX # CHECK INDEX VALUE AND MAKE INTERNAL NDX.
CCS UPPHASE # CHECK ON SIZE OF PHASE.
TCF +4
TCF UPERROR
TCF UPERROR
TCF UPERROR
+4 TC MAGSUB
OCT -21 # ALLOW PHASES 1 - 18D ONLY.
TCF UPERROR # FOR BAD RETURN FROM MAGSUB
CS UPPHASE # CHECK LEGALITY OF UPPHASE
AD SIX
CCS A
TCF UPERROR
MPLEGAL OCT 72400 # BITS 15 - 1 = 1 FOR MP 7 - 21 LEGAL
TCF +2
TCF UPERROR
INDEX A
CA BIT15
MASK MPLEGAL
EXTEND
BZF UPERROR
CA UPPHASE
INDEX RUPTREG1
TS MPHASE4
TCF MDONE # RELINT & RETURN VIA MRETURN.
# MINOR SUBROUTINE TO CHECK MISSION TIMER/PHASE UPDATE INDEX AND LEAVE CORRESPONDING VALUE IN RUPTREG1.
# TO BE ENTERED WITH INTERRUPT INHIBITED:
CHKUPDEX TS MRETURN # CALLER'S RETURN ARRIVES IN A.
CCS UPINDEX
TCF +4
TCF UPERROR
TCF UPERROR
TCF UPERROR
+4 MASK NEG3
CCS A
TCF UPERROR
CS UPINDEX # MAKE INTERNAL VALUE.
## Page 758
AD FOUR
TS RUPTREG1
TC Q
## Page 759
# THE FOLLOWING CODING UPDATES THE MISSION TIMER WHOSE INDEX IS IN UPINDEX BY ADDING THE CONTENTS OF UPDT
# TO IT. OUTCOMES DEPEND ON WHETHER THE TIMER WAS COUNTING AT THE TIME, AND THE SIGN OF THE RESULT (SEE GSOP).
MTIMERUP CA Q # GO TO COMMON SUBROUTINE TO SAVE RETURN
TC CHKUPDEX # AND CHECK INDEX.
INDEX RUPTREG1 # SEE IF TIMER IS COUNTING NOW.
CCS MTIMER4
TCF TUPBUSY # POS INDICATES IT IS.
TCF TUPBUSY
NOOP
CA UPDT # IF NOT BUSY, DO ADD, MAKING NO CHANGE
INDEX RUPTREG1 # IN THE ENABLE FLAG.
ADS MTIMER4
TCF MDONE
TUPBUSY CCS UPDT # IF TIMER COUNTING, SEE IF DT ZERO.
TCF CTRAD # NZ - DO ADD.
TCF CTRABS # +0 - PHASE DUE NEXT MAINTENANCE CYCLE.
TCF CTRAD
CS ZERO # IF -0, DISABLE TIMER.
CTRABS INDEX RUPTREG1
TS MTIMER4
TCF MDONE
CTRAD CA UPDT
INDEX RUPTREG1
ADS MTIMER4
CCS A # IF RESULT NEGATIVE OR ZERO, PHASE DUE
TCF MDONE # NEXT MAINTENANCE CYCLE.
TCF MDONE
CAF ZERO
TCF CTRABS # (THIS ALONE REVERTS -0 TO +0.)
## Page 760
# THE FOLLOWING CODING IS THE SAME AS MTIMERUP BUT ACCEPTS DP GET IN UPGET (SEE GSOP).
MGETUP TC INTPRET # MAKE SURE THIS ENTERED WITH VAC AREA.
RTB BDSU # TIME IN CS.
LOADTIME
UPGET
DMP SL # CONVERT TO SEC & MOVE TO MAJOR PART.
1/100
14D
BOVB BMN
UPERROR
UPERROR -1 # (DOES AN EXIT.)
EXIT
INHINT
CA BIT5 # INSURE THAT MAINTENANCE IS STILL ENABLED
MASK FLAGWRD2
EXTEND
BZF UPERROR
TC CHKUPDEX
CA MPAC # CONTAINS DT IN SECONDS.
INDEX RUPTREG1
TS MTIMER4 # INSERT DT DIRECTLY INTO TIMER.
# GENERAL EXIT LOCATION FOR SUCCESSFULLY COMPLETED UPDATE:
ENDUP TCF ENDOFJOB # (MORE TO BE ADDED?)
# EXIT FOR GENERAL UPDATE ERRORS (RANGE OF DATA, ETC.)
-1 EXIT
UPERROR TC FALTON
TCF ENDOFJOB
## The original listing reads simplye "E-2" here. A 1 has been added to conform to yaYUL's requirements.
1/100 2DEC 1 E-2
## Page 761
# THE FOLLOWING TABLE SPECIFIES STARTING LOCATIONS AND PRIORITIES OF ALL 206 MISSION PHASES INITIATED BY
# THE MISSION TIMERS (S4B-LEM SEP AND BEYOND). IT ALSO CONTAINS INHIBIT/ENABLE INFORMATION, ETC. EACH ENTRY
# CONSISTS OF THREE WORDS. THE FIRST IS PACKED WITH SEVERAL PIECES OF INFORMATION, AND THE SECOND TWO CONTAIN THE
# 2CADR OF THE LOCATION AT WHICH THE PHASE IS TO BEGIN. THE INTERPRETATION OF WORD 1 IS AS FOLLOWS:
# BIT15: SPARE
# BITS 14-10: JOB PRIORITY.
# BITS 9-5: SPARE
# BIT4: 1 IF TIMERS TO BE DISABLED ON PHASE INITIATION.
# BIT3: 1 IF RCS TESTS (INHIBIT/ENABLE INFO).
# BIT2: 1 IF DPS COLD SOAK
# BIT1: 1 IF RCS COLD SOAK
# NOTE SPARES COULD BE USED FOR SWITCHING DOWNLISTS, ETC.
# PHASES 1 - 6 ARE NOT INCLUDED SINCE THEY ARE NOT INITIATED BY THE MISSION SCHEDULING ROUTINES.
MTABLE1 OCT 20010 # MP7
EBANK= TDEC
2CADR MP07JOB
OCT 20012 # MP8
EBANK= RATEINDX
2CADR MP8JOB
OCT 20010 # MP9
EBANK= TDEC
2CADR MP9JOB
TC CCSHOLE # MP 10. UNUSED SLOT.
TC CCSHOLE
34OCT OCT 00034
OCT 20010 # MP11
EBANK= TDEC
2CADR MP11JOB
TC CCSHOLE # MP 12. UNUSED SLOT.
TC CCSHOLE
TC CCSHOLE
OCT 20010 # MP13
EBANK= TDEC
2CADR MP13JOB
TC CCSHOLE # MP 14. UNUSED SLOT.
TC CCSHOLE
TC CCSHOLE
MTABLE EQUALS MTABLE1 -21D # MP 1-6 NOT ACTUALLY INCLUDED IN TABLE.
## Page 762
BADPHASE TC ALARM # ALARM WHEN MPHASE COMES DUE BUT MPHASE
OCT 00601 # REGISTER IS ZERO (-0 MEANS INACTIVE).
CAF PRIO37
TC NOVAC
EBANK= LST1
2CADR FORGETIT
TC TASKOVER
Computing file changes ...