Source Code

007650,000001: # Copyright: Public domain. 007651,000002: # Filename: RCS_FAILURE_MONITOR.agc 007652,000003: # Purpose: RCS FAILURE MONITOR code for for Luminary 1C, revision 131. 007653,000004: # It is part of the source code for the Lunar Module's (LM) 007654,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 007655,000006: # This file is intended to be a faithful transcription, except 007656,000007: # that the code format has been changed to conform to the 007657,000008: # requirements of the yaYUL assembler rather than the 007658,000009: # original YUL assembler. 007659,000010: # Reference: pp. 197-199 of 1729.pdf. 007660,000011: # Contact: Ron Burkey <info@sandroid.org>. 007661,000012: # Website: www.ibiblio.org/apollo/index.html 007662,000013: # Mod history: 05/05/03 RSB. Began transcribing. 007663,000014: # 05/14/05 RSB Corrected website references above. 007664,000015: 007665,000016: # Page 197 007666,000017: # PROGRAM DESCRIPTION: 007667,000018: 007668,000019: # AUTHOR: J. S. MILLER 007669,000020: 007670,000021: # MODIFIED 6 MARCH 1968 BY P. S. WEISSMAN TO SET UP JOB FOR 1/ACCS WHEN THE MASKS ARE CHANGED. 007671,000022: 007672,000023: # THIS ROUTINE IS ATTACHED TO T4RUPT, AND IS ENTERED EVERY 480 MS. ITS FUNCTION IS TO EXAMINE THE LOW 8 BITS 007673,000024: # OF CHANNEL 32 TO SEE IF ANY ISOLATION-VALVE CLOSURE BITS HAVE APPEARED OR DISAPPEARED (THE CREW IS WARNED OF JET 007674,000025: # FAILURES BY LAMPS LIT BY THE GRUMMAN FAILURE-DETECTION CIRCUITRY; THEY MAY RESPOND BY OPERATING SWITCHES WHICH 007675,000026: # ISOLATE PARIS OF JETS FROM THE PROPELLANT TANKS AND SET BITS IN CHANNEL 32). iN THE EVENT THAT CHANNEL 32 BITS 007676,000027: # DIFFER FROM `PVALVEST', THE RECORD OF ACTIONS TAKEN BY THIS ROUTINE, THE APPROPRIATE BITS IN `CH5MASK' & 007677,000028: # `CH6MASK', USED BY THE DAP JET-SELECTION LOGIC, ARE UPDATED, AS IS `PVALVEST'. TO SPEED UP & SHORTEN THE 007678,000029: # ROUTINE, NO MORE THAN ONE CHANGE IS ACCEPTED PER ENTRY. THE HIGHEST-NUMBERED BIT IN CHANNEL 32 WHICH REQUIRES 007679,000030: # ACTION IS THE ONE PROCESSED. 007680,000031: 007681,000032: # THE CODING IN THE FAILURE MONITOR HAS BEEN WRITTEN SO AS TO HAVE ALMOST COMPLETE RESTART PROTECTION. FOR 007682,000033: # EXAMPLE, NO ASSUMPTION IS MADE WHEN SETTING A `CH5MASK' BIT TO 1 THAT THE PREVIOUS STATE IS 0, ALTHOUGH IT OF 007683,000034: # COURSE SHOULD BE. ONE CASE WHICH MAY BE SEEN TO EVADE PROTECTION IS THE OCCURRENCE OF A RESTART AFTER UPDATING 007684,000035: # ONE OR BOTH DAP MASK-WORDS BUT BEFORE UPDATING `PVALVEST', COUPLED WITH A CHANGE IN TEH VALVE-BIT BACK TO ITS 007685,000036: # FORMER STATE. THE CONSEQUENCE OF THIS IS THAT THE NEXT ENTRY WOULD NOT SEE THE CHANGE INCOMPLETELY INCORP- 007686,000037: # ORATED BY THE LAST PASS (BECAUSE IT WENT AWAY AT JUST THE RIGHT TIME), BUT THE DAP MASK-WORDS WILL BE INCORRECT. 007687,000038: # THIS COMBINATION OF EVENTS SEEMS QUITE REMOTE, BUT NOT IMPOSSIBLE UNLESS THE CREW OPERATES THE SWITCHES AT HALF- 007688,000039: # SECOND INTERVALS OR LONGER. IN ANY EVENT, A DISAGREEMENT BETWEEN REALITY AND THE DAP MASKS WILL BE CUREED IF 007689,000040: # THE MISINTERPRETED SWITCH IS REVERSED AND THEN RESTORED TO ITS CORRECT POSITION (SLOWLY). 007690,000041: 007691,000042: # CALLING SEQUENCE: 007692,000043: 007693,000044: # TCF RCSMONIT # (IN INTERRUPT MODE, EVERY 480 MS.) 007694,000045: 007695,000046: # EXIT: TCF RCSMONEX (ALL PATHS EXIT VIA SUCH AN INSTRUCTION) 007696,000047: 007697,000048: 06,3164 5270 RCSMONEX EQUALS RESUME 007698,000049: 007699,000050: # ERASABLE INITIALIZATION REQUIRED: 007700,000051: 007701,000052: # VIA FRESH START: PVALVEST = +0 (ALL JETS ENABLED) 007702,000053: # CH5MASK,CH6MASK = +0 (ALL JETS OK) 007703,000054: 007704,000055: # OUTPUT: CH5MASK 7 CH6MASK UPDATED (1'S WHERE JETS NOT TO BE USED, IN CHANNEL 5 & 6 FORMAT) 007705,000056: # PVALTEST UPDATED (1'S WHEN VALVE CLOSURES HAVE BEEN TRANSLATED INTO CH5MASK & CH6MASK; CHAN 32 FORMAT) 007706,000057: # JOB TO DO 1/ACCS. 007707,000058: 007708,000059: # DEBRIS: A, L, AND Q AND DEBRIS OF NOVAC. 007709,000060: 007710,000061: # SUBROUTINE CALLED: NOVAC. 007711,000062: 007712,000063: 06,3164 1257 EBANK= CH5MASK 007713,000064: 007714,000065: 23,2000 BANK 23 007715,000066: 06,2000 SETLOC RCSMONT 007716,000067: 06,2000 BANK 007717,000068: # Page 198 007718,000069: 06,3164 COUNT* $$/T4RCS 007719,000070: 007720,000071: 06,3164 44755 RCSMONIT CS ZERO 007721,000072: 06,3165 00006 EXTEND 007722,000073: 06,3166 06032 RXOR CHAN32 # PICK UP + INVERT INVERTED CHANNEL 32. 007723,000074: 06,3167 74357 MASK LOW8 # KEEP JET-FAIL BITS ONLY. 007724,000075: 06,3170 54002 TS Q 007725,000076: 007726,000077: 06,3171 41273 CS PVALVEST 007727,000078: 06,3172 70002 MASK Q # FORM PC + PC. 007728,000079: 06,3173 54001 TS L # (P = PREVIOUS ISOLATION VALVE STATE, 007729,000080: 06,3174 40002 CS Q # C = CURRENT VALVE STATE (CH32)). 007730,000081: 06,3175 71273 MASK PVALVEST 007731,000082: 06,3176 26001 ADS L # RESULT NZ INDICATES ACTION REQUIRED. 007732,000083: 007733,000084: 06,3177 00006 EXTEND 007734,000085: 06,3200 15270 BZF RCSMONEX # QUIT IF NO ACTION REQUIRED. 007735,000086: 007736,000087: 06,3201 00006 EXTEND 007737,000088: 06,3202 74745 MP BIT7 # MOVE BITS 8-1 OF A TO 14-7 OF L. 007738,000089: 06,3203 56001 XCH L # XERO TO L IN THE PROCESS. 007739,000090: 007740,000091: 06,3204 24001 -3 INCR L 007741,000092: 06,3205 60000 DOUBLE # BOUND TO GET OVERFLOW IN THIS LOOP, 007742,000093: 06,3206 54000 OVSK # SINCE WE ASSURED INITIAL NZ IN A. 007743,000094: 06,3207 13204 TCF -3 007744,000095: 007745,000096: 06,3210 50001 INDEX L 007746,000097: 06,3211 34743 CA BIT8 -1 # SAVE THE RELEVANT BIT (8-1). 007747,000098: 06,3212 54002 TS Q 007748,000099: 06,3213 71273 MASK PVALVEST # LOOK AT PREVIOUS VALVE STATE BIT. 007749,000100: 06,3214 10000 CCS A 007750,000101: 06,3215 13231 TCF VOPENED # THE VALVE HAS JUST BEEN OPENED. 007751,000102: 007752,000103: 06,3216 41257 CS CH5MASK # THE VALVE HAS JUST BEEN CLOSED. 007753,000104: 06,3217 50001 INDEX L 007754,000105: 06,3220 73250 MASK 5FAILTAB 007755,000106: 06,3221 27257 ADS CH5MASK # SET INHIBIT BIT FOR CHANNEL 5 JET. 007756,000107: 007757,000108: 06,3222 41260 CS CH6MASK 007758,000109: 06,3223 50001 INDEX L 007759,000110: 06,3224 73260 MASK 6FAILTAB 007760,000111: 06,3225 27260 ADS CH6MASK # SET INGIBIT BIT FOR CHANNEL 6 JET 007761,000112: 007762,000113: 06,3226 30002 CA Q 007763,000114: 06,3227 27273 ADS PVALVEST # RECORD ACTION TAKEN. 007764,000115: 007765,000116: 06,3230 13244 TCF 1/ACCFIX # SET UP 1/ACCJOB AND EXIT. 007766,000117: 007767,000118: # Page 199 007768,000119: 06,3231 50001 VOPENED INDEX L # A VALVE HAS JUST BEEN OPENED. 007769,000120: 06,3232 43250 CS 5FAILTAB 007770,000121: 06,3233 71257 MASK CH5MASK 007771,000122: 06,3234 55257 TS CH5MASK # REMOVE INHIBIT BIT FOR CHANNEL 5 JET. 007772,000123: 007773,000124: 06,3235 50001 INDEX L 007774,000125: 06,3236 43260 CS 6FAILTAB 007775,000126: 06,3237 71260 MASK CH6MASK 007776,000127: 06,3240 55260 TS CH6MASK # REMOVE INHIBIT BIT FOR CHANNEL 6 JET. 007777,000128: 007778,000129: 06,3241 40002 CS Q 007779,000130: 06,3242 71273 MASK PVALVEST 007780,000131: 06,3243 55273 TS PVALVEST # RECORD ACTION TAKEN. 007781,000132: 007782,000133: 06,3244 37720 1/ACCFIX CAF PRIO27 # SET UP 1/ACCS SO THAT THE SWITCH CURVES 007783,000134: 06,3245 05072 TC NOVAC # FOR TJETLAW CAN BE MODIFIED IF CH5MASK 007784,000135: 06,3246 E6,1536 EBANK= AOSQ # HAS BEEN ALTERED. 007785,000136: 06,3246 03652 42106 2CADR 1/ACCJOB 007786,000137: 007787,000138: 06,3250 15270 TCF RCSMONEX # EXIT. 007788,000139: 007789,000140: 06,3251 5FAILTAB EQUALS -1 # CH 5 JET BIT CORRESPONDING TO CH 32 BIT: 007790,000141: 06,3251 00040 OCT 00040 # 8 007791,000142: 06,3252 00020 OCT 00020 # 7 007792,000143: 06,3253 00100 OCT 00100 # 6 007793,000144: 06,3254 00200 OCT 00200 # 5 007794,000145: 06,3255 00010 OCT 00010 # 4 007795,000146: 06,3256 00001 OCT 00001 # 3 007796,000147: 06,3257 00004 OCT 00004 # 2 007797,000148: 06,3260 00002 OCT 00002 # 1 007798,000149: 007799,000150: 06,3261 6FAILTAB EQUALS -1 # CH 6 JET BIT CORRESPONDING TO CH 32 BIT: 007800,000151: 06,3261 00010 OCT 00010 # 8 007801,000152: 06,3262 00020 OCT 00020 # 7 007802,000153: 06,3263 00004 OCT 00004 # 6 007803,000154: 06,3264 00200 OCT 00200 # 5 007804,000155: 06,3265 00001 OCT 00001 # 4 007805,000156: 06,3266 00002 OCT 00002 # 3 007806,000157: 06,3267 00040 OCT 00040 # 2 007807,000158: 06,3270 00100 OCT 00100 # 1 007808,000159: 007809,000160: End of include-file RCS_FAILURE_MONITOR.agc. Parent file is MAIN.agc