Proof RCS_FAILURE_MONITOR #631 (#711)

Co-authored-by: James Harris <wopian@wopian.me>
This commit is contained in:
y yam 2020-10-14 02:53:32 +09:00 committed by GitHub
parent 3b9f70628c
commit 33db89d305
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,25 +25,25 @@
# 16:27 JULY 14, 1969 # 16:27 JULY 14, 1969
# Page 190 # Page 190
# PROGRAM DESCRIPTION: # PROGRAM DESCRIPTION
# #
# AUTHOR: J. S. MILLER # AUTHOR: J S MILLER
# #
# MODIFIED 6 MARCH 1968 BY P. S. WEISSMAN TO SET UP JOB FOR 1/ACCS WHEN THE MASKS ARE CHANGED. # MODIFIED 6 MARCH 1968 BY P S WEISSMAN TO SET UP JOB FOR 1/ACCS WHEN THE MASKS ARE CHANGED.
# #
# THIS ROUTINE IS ATTACHED TO T4RUPT, AND IS ENTERED EVERY 480 MS. ITS FUNCTION IS TO EXAMINE THE LOW 8 BITS # THIS ROUTINE IS ATTACHED TO T4RUPT, AND IS ENTERED EVERY 480 MS. ITS FUNCTION IS TO EXAMINE THE LOW 8 BITS
# OF CHANNEL 32 TO SEE IF ANY ISOLATION-VALVE CLOSURE BITS HAVE APPEARED OR DISAPPEARED (THE CREW IS WARNED OF JET # OF CHANNEL 32 TO SEE IF ANY ISOLATION-VALVE CLOSURE BITS HAVE APPEARED OR DISAPPEARED (THE CREW IS WARNED OF JET
# FAILURES BY LAMPS LIT BY THE GRUMMAN FAILURE-DETECTION CIRCUITRY; THEY MAY RESPOND BY OPERATING SWITCHES WHICH # FAILURES BY LAMPS LIT BY THE GRUMMAN FAILURE-DETECTION CIRCUITRY; THEY MAY RESPOND BY OPERATING SWITCHES WHICH
# ISOLATE PAIRS OF JETS FROM THE PROPELLANT TANKS AND SET BITS IN CHANNEL 32). IN THE EVENT THAT CHANNEL 32 BITS # ISOLATE PAIRS OF JETS FROM THE PROPELLANT TANKS AND SET BITS IN CHANNEL 32). IN THE EVENT THAT CHANNEL 32 BITS
# DIFFER FROM `PVALVEST', THE RECORD OF ACTIONS TAKEN BY THIS ROUTINE, THE APPROPRIATE BITS IN `CH5MASK' & # DIFFER FROM 'PVALVEST', THE RECORD OF ACTIONS TAKEN BY THIS ROUTINE, THE APPROPRIATE BITS IN 'CH5MASK' &
# `CH6MASK', USED BY THE DAP JET-SELECTION LOGIC, ARE UPDATED, AS IS `PVALVEST'. TO SPEED UP & SHORTEN THE # 'CH6MASK', USED BY THE DAP JET-SELECTION LOGIC, ARE UPDATED, AS IS 'PVALVEST'. TO SPEED UP & SHORTEN THE
# ROUTINE, NO MORE THAN ONE CHANGE IS ACCEPTED PER ENTRY. THE HIGHEST-NUMBERED BIT IN CHANNEL 32 WHICH REQUIRES # ROUTINE, NO MORE THAN ONE CHANGE IS ACCEPTED PER ENTRY. THE HIGHEST-NUMBERED BIT IN CHANNEL 32 WHICH REQUIRES
# ACTION IS THE ONE PROCESSED. # ACTION IS THE ONE PROCESSED.
# #
# THE CODING IN THE FAILURE MONITOR HAS BEEN WRITTEN SO AS TO HAVE ALMOST COMPLETE RESTART PROTECTION. FOR # THE CODING IN THE FAILURE MONITOR HAS BEEN WRITTEN SO AS TO HAVE ALMOST COMPLETE RESTART PROTECTION. FOR
# EXAMPLE, NO ASSUMPTION IS MADE WHEN SETTING A `CH5MASK' BIT TO 1 THAT THE PREVIOUS STATE IS 0, ALTHOUGH IT OF # EXAMPLE, NO ASSUMPTION IS MADE WHEN SETTING A 'CH5MASK' BIT TO 1 THAT THE PREVIOUS STATE IS 0, ALTHOUGH IT OF
# COURSE SHOULD BE. ONE CASE WHICH MAY BE SEEN TO EVADE PROTECTION IS THE OCCURRENCE OF A RESTART AFTER UPDATING # COURSE SHOULD BE. ONE CASE WHICH MAY BE SEEN TO EVADE PROTECTION IS THE OCCURRENCE OF A RESTART AFTER UPDATING
# ONE OR BOTH DAP MASK-WORDS BUT BEFORE UPDATING `PVALVEST', COUPLED WITH A CHANGE IN THE VALVE-BIT BACK TO ITS # ONE OR BOTH DAP MASK-WORDS BUT BEFORE UPDATING 'PVALVEST', COUPLED WITH A CHANGE IN THE VALVE-BIT BACK TO ITS
# FORMER STATE. THE CONSEQUENCE OF THIS IS THAT THE NEXT ENTRY WOULD NOT SEE THE CHANGE INCOMPLETELY INCORP- # FORMER STATE. THE CONSEQUENCE OF THIS IS THAT THE NEXT ENTRY WOULD NOT SEE THE CHANGE INCOMPLETELY INCORP-
# ORATED BY THE LAST PASS (BECAUSE IT WENT AWAY AT JUST THE RIGHT TIME), BUT THE DAP MASK-WORDS WILL BE INCORRECT. # ORATED BY THE LAST PASS (BECAUSE IT WENT AWAY AT JUST THE RIGHT TIME), BUT THE DAP MASK-WORDS WILL BE INCORRECT.
# THIS COMBINATION OF EVENTS SEEMS QUITE REMOTE, BUT NOT IMPOSSIBLE UNLESS THE CREW OPERATES THE SWITCHES AT HALF- # THIS COMBINATION OF EVENTS SEEMS QUITE REMOTE, BUT NOT IMPOSSIBLE UNLESS THE CREW OPERATES THE SWITCHES AT HALF-
@ -52,22 +52,21 @@
# #
# CALLING SEQUENCE: # CALLING SEQUENCE:
# #
# TCF RCSMONIT # (IN INTERRUPT MODE, EVERY 480 MS.) # TCF RCSMONIT (IN INTERRUPT MODE, EVERY 480 MS.)
# #
# EXIT: TCF RCSMONEX (ALL PATHS EXIT VIA SUCH AN INSTRUCTION) # EXIT: TCF RCSMONEX (ALL PATHS EXIT VIA SUCH AN INSTRUCTION)
RCSMONEX EQUALS RESUME RCSMONEX EQUALS RESUME
# ERASABLE INITIALIZATION REQUIRED: # ERASABLE INITIALIZATION REQUIRED:
# #
# VIA FRESH START: PVALVEST = +0 (ALL JETS ENABLED) # VIA FRESH START: PVALVEST = +0 (ALL JETS ENABLED)
# CH5MASK,CH6MASK = +0 (ALL JETS OK) # CH5MASK, CH6MASK = +0 (ALL JETS OK)
# #
# OUTPUT: CH5MASK & CH6MASK UPDATED (1'S WHERE JETS NOT TO BE USED, IN CHANNEL 5 & 6 FORMAT) # OUTPUT: CH5MASK & CH6MASK UPDATED (1'S WHERE JETS NOT TO BE USED, IN CHANNEL 5 & 6 FORMAT)
# PVALTEST UPDATED (1'S WHEN VALVE CLOSURES HAVE BEEN TRANSLATED INTO CH5MASK & CH6MASK; CHAN 32 FORMAT) # PVALTEST UPDATED (1.5 WHEN VALVE CLOSURES HAVE BEEN TRANSLATED INTO CH5MASK & CH6MASK; CHAN 32 FORMAT)
# JOB TO DO 1/ACCS. # JOB TO DO 1/ACCS.
# #
# DEBRIS: A, L, AND Q AND DEBRIS OF NOVAC. # DEBRIS: A, L, Q AND DEBRIS OF NOVAC.
# #
# SUBROUTINE CALLED: NOVAC. # SUBROUTINE CALLED: NOVAC.
@ -83,91 +82,92 @@ RCSMONIT EQUALS RCSMON
RCSMON CS ZERO RCSMON CS ZERO
EXTEND EXTEND
RXOR CHAN32 # PICK UP + INVERT INVERTED CHANNEL 32. RXOR CHAN32 # PICK UP + INVERT INVERTED CHANNEL 32.
MASK LOW8 # KEEP JET-FAIL BITS ONLY. MASK LOW8 # KEEP JET-FAIL BITS ONLY.
TS Q TS Q
CS PVALVEST # _ _ CS PVALVEST # - -
MASK Q # FORM PC + PC. MASK Q # FORM PC + PC.
TS L # (P = PREVIOUS ISOLATION VALVE STATE, TS L # (P = PREVIOUS ISOLATION VALVE STATE,
CS Q # C = CURRENT VALVE STATE (CH32)). CS Q # C = CURRENT VALVE STATE (CH 32)).
MASK PVALVEST MASK PVALVEST
ADS L # RESULT NZ INDICATES ACTION REQUIRED. ADS L # RESULT NZ INDICATES ACTION REQUIRED.
EXTEND EXTEND
BZF RCSMONEX # QUIT IF NO ACTION REQUIRED. BZF RCSMONEX # QUIT IF NO ACTION REQUIRED.
EXTEND EXTEND
MP BIT7 # MOVE BITS 8-1 OF A TO 14-7 OF L. MP BIT7 # MOVE BITS 8 - 1 OF A TO 14 - 7 OF L.
XCH L # ZERO TO L IN THE PROCESS. XCH L # ZERO TO L IN THE PROCESS.
-3 INCR L -3 INCR L
DOUBLE # BOUND TO GET OVERFLOW IN THIS LOOP, DOUBLE # BOUND TO GET OVERFLOW IN THIS LOOP.
OVSK # SINCE WE ASSURED INITIAL NZ IN A. OVSK # SINCE WE ASSURED INITIAL NZ IN A.
TCF -3 TCF -3
INDEX L INDEX L
CA BIT8 -1 # SAVE THE RELEVANT BIT (8-1). CA BIT8 -1 # SAVE THE RELEVANT BIT (8 - 1).
TS Q TS Q
MASK PVALVEST # LOOK AT PREVIOUS VALVE STATE BIT. MASK PVALVEST # LOOK AT PREVIOUS VALVE STATE BIT.
CCS A CCS A
TCF VOPENED # THE VALVE HAS JUST BEEN OPENED. TCF VOPENED # THE VALVE HAS JUST BEEN OPENED.
CS CH5MASK # THE VALVE HAS JUST BEEN CLOSED. CS CH5MASK # THE VALVE HAS JUST BEEN CLOSED.
INDEX L INDEX L
MASK 5FAILTAB MASK 5FAILTAB
ADS CH5MASK # SET INHIBIT BIT FOR CHANNEL 5 JET. ADS CH5MASK # SET INHIBIT BIT FOR CHANNEL 5 JET.
CS CH6MASK CS CH6MASK
INDEX L INDEX L
MASK 6FAILTAB MASK 6FAILTAB
ADS CH6MASK # SET INGIBIT BIT FOR CHANNEL 6 JET ADS CH6MASK # SET INGIBIT BIT FOR CHANNEL 6 JET.
CA Q CA Q
ADS PVALVEST # RECORD ACTION TAKEN. ADS PVALVEST # RECORD ACTION TAKEN.
TCF 1/ACCFIX # SET UP 1/ACCJOB AND EXIT. TCF 1/ACCFIX # SET UP 1/ACCJOB AND EXIT.
# Page 192 # Page 192
VOPENED INDEX L # A VALVE HAS JUST BEEN OPENED. VOPENED INDEX L # A VALVE HAS JUST BEEN OPENED.
CS 5FAILTAB CS 5FAILTAB
MASK CH5MASK MASK CH5MASK
TS CH5MASK # REMOVE INHIBIT BIT FOR CHANNEL 5 JET. TS CH5MASK # REMOVE INHIBIT BIT FOR CHANNEL 5 JET.
INDEX L INDEX L
CS 6FAILTAB CS 6FAILTAB
MASK CH6MASK MASK CH6MASK
TS CH6MASK # REMOVE INHIBIT BIT FOR CHANNEL 6 JET. TS CH6MASK # REMOVE INHIBIT BIT FOR CHANNEL 6 JET.
CS Q CS Q
MASK PVALVEST MASK PVALVEST
TS PVALVEST # RECORD ACTION TAKEN. TS PVALVEST # RECORD ACTION TAKEN.
1/ACCFIX CAF PRIO27 # SET UP 1/ACCS SO THAT THE SWITCH CURVES 1/ACCFIX CAF PRIO27 # SET UP 1/ACCS SO THAT THE SWITCH CURVES
TC NOVAC # FOR TJETLAW CAN BE MODIFIED IF CH5MASK TC NOVAC # FOR TJETLAW CAN BE MODIFIED IF CH5MASK
EBANK= AOSQ # HAS BEEN ALTERED. EBANK= AOSQ # HAS BEEN ALTERED.
2CADR 1/ACCJOB 2CADR 1/ACCJOB
TCF RCSMONEX # EXIT. TCF RCSMONEX # EXIT.
5FAILTAB EQUALS -1 # CH 5 JET BIT CORRESPONDING TO CH 32 BIT:
OCT 00040 # 8 5FAILTAB EQUALS -1 # CH 5 JET BIT CORRESPONDING TO CH 32 BIT:
OCT 00020 # 7 OCT 00040 # 8
OCT 00100 # 6 OCT 00020 # 7
OCT 00200 # 5 OCT 00100 # 6
OCT 00010 # 4 OCT 00200 # 5
OCT 00001 # 3 OCT 00010 # 4
OCT 00004 # 2 OCT 00001 # 3
OCT 00002 # 1 OCT 00004 # 2
OCT 00002 # 1
6FAILTAB EQUALS -1 # CH 6 JET BIT CORRESPONDING TO CH 32 BIT:
OCT 00010 # 8 6FAILTAB EQUALS -1 # CH 6 JET BIT CORRESPONDING TO CH 32 BIT:
OCT 00020 # 7 OCT 00010 # 8
OCT 00004 # 6 OCT 00020 # 7
OCT 00200 # 5 OCT 00004 # 6
OCT 00001 # 4 OCT 00200 # 5
OCT 00002 # 3 OCT 00001 # 4
OCT 00040 # 2 OCT 00002 # 3
OCT 00100 # 1 OCT 00040 # 2
OCT 00100 # 1