Source Code
|
These source-code files are part of a reconstructed copy of Luminary 178, the
final release of the Apollo 14 Lunar Module (LM) Apollo Guidance Computer
(AGC) software.
The reconstruction began with source code of Zerlina 56, Luminary 210, and Luminary 131, previously transcribed from digitized copies of those programs. The code was created by combining the three, using Zerlina 56 as a base, since it was based off of Luminary 183. The differences between the three were carefully merged using the Luminary memos as a guide, with all changes made after Luminary 178 being backed out. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021152N. Note that page numbers in the reconstructed code match those for the baseline log section mentioned in each file's changelog; the page numbers for a real Luminary 178 listing would be different. Comments from the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository. |
064707,000002: ## Copyright: Public domain.
064708,000003: ## Filename: SPS_BACK-UP_RCS_CONTROL.agc
064709,000004: ## Purpose: A section of Luminary revision 178.
064710,000005: ## It is part of the reconstructed source code for the final
064711,000006: ## release of the flight software for the Lunar Module's
064712,000007: ## (LM) Apollo Guidance Computer (AGC) for Apollo 14. The
064713,000008: ## code has been recreated from copies of Zerlina 56, Luminary
064714,000009: ## 210, and Luminary 131, as well as many Luminary memos.
064715,000010: ## It has been adapted such that the resulting bugger words
064716,000011: ## exactly match those specified for Luminary 178 in NASA
064717,000012: ## drawing 2021152N, which gives relatively high confidence
064718,000013: ## that the reconstruction is correct.
064719,000014: ## Reference: pp. 1495-1498
064720,000015: ## Assembler: yaYUL
064721,000016: ## Contact: Ron Burkey <info@sandroid.org>.
064722,000017: ## Website: www.ibiblio.org/apollo/index.html
064723,000018: ## Mod history: 2019-08-14 MAS Created from Zerlina 56.
064724,000019: ## 2019-09-15 MAS Restored the definition of OLDSENSE.
064725,000020:
|
Page 1495 |
064727,000022: # PROGRAM NAME: SPSRCS
064728,000023:
064729,000024: # AUTHOR: EDGAR M. OSHIKA (AC ELECTRONICS)
064730,000025:
064731,000026: # MODIFIED: TO RETURN TO ALL AXES VIA Q BY P.S.WEISSMAN, OCT 7, 1968
064732,000027:
064733,000028: # MODIFIED TO IMPROVE BENDING STABILITY BY G.KALAN,FEB.14,1969
064734,000029: # FUNCTIONAL DESCRIPTION:
064735,000030:
064736,000031: # THIS PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE
064737,000032: # PLANE LOGIC.
064738,000033:
064739,000034: # 1. JET SENSE TEST (SPSRCS)
064740,000035:
064741,000036: # IF JETS ARE FIRING NEGATIVELY,SET OLDSENSE NEGATIVE AND CONTINUE
064742,000037: # IF JETS ARE FIRING POSITIVELY,SET OLDSENSE POSITIVE AND CONTINUE
064743,000038: # IF JETS ARE NOT FIRING,SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST
064744,000039:
064745,000040: # 2. RATE DEAD BAND TEST
064746,000041:
064747,000042: # IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE,LEAVE
064748,000043: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE,CONTINUE.
064749,000044: # IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE,LEAVE
064750,000045: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE,CONTINUE.
064751,000046:
064752,000047: # 3. OUTER RATE LIMIT TEST (SPSSTART)
064753,000048:
064754,000049: # IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME
064755,000050: # TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE,CONTINUE.
064756,000051:
064757,000052: # 4. COAST ZONE TEST
064758,000053:
064759,000054: # IF STATE (E,EDOT) IS BELOW LINE E + 4 X EDOT > -1.4 DEG AND EDOT IS LESS THAN 1.30 DEG/SEC SET JET TIME POSI-
064760,000055: # TIVE AND CONTINUE. OTHERWISE,SET JET FIRING TIME TO ZERO AND CONTINUE.
064761,000056: # IF STATE IS ABOVE LINE E + 4X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE
064762,000057: # AND CONTINUE. OTHERWISE,SET JET FIRING TIME TO ZERO AND CONTINUE.
064763,000058:
064764,000059: # 5. INHIBITION LOGIC
064765,000060:
064766,000061: # IF OLDSENSE IS NON-ZERO:
064767,000062: # A) RETURN IF JET TIME HAS SAME SIGN AS OLDSENSE
064768,000063: # B) SET INHIBITION COUNTER*AND RETURN IF JET TIME IS ZERO
064769,000064: # C) SET INHIBITION COUNTER,*SET JET TIME TO ZERO AND RETURN IF SIGN
064770,000065: # OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE
064771,000066:
064772,000067: # IF OLDSENSE IS ZERO:
064773,000068: # A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE
064774,000069: # B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE
064775,000070: # *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P,AND UV AXES,
064776,000071: # RESPECTIVELY,IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF
|
Page 1496 |
064778,000073: # EACH DAP PASS.
064779,000074:
064780,000075: # THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED
064781,000076: # AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE
064782,000077: # P AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES.
064783,000078:
064784,000079: # CALLING SEQUENCE:
064785,000080:
064786,000081: # INHINT
064787,000082: # TC IBNKCALL
064788,000083: # CADR SPSRCS
064789,000084:
064790,000085:
064791,000086: # EXIT:
064792,000087: # TC Q
064793,000088: # ALARM/ABORT MODE: NONE
064794,000089:
064795,000090: # SUBROUTINES CALLED: NONE
064796,000091:
064797,000092: # INPUT: E,EDOT
064798,000093: # TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO
064799,000094:
064800,000095: # OUTPUT: TJP, TJV, TJU
064801,000096:
064802,000097:
064803,000098: 21,3433 BANK 21
064804,000099: 21,2000 SETLOC DAPS4
064805,000100: 21,2000 BANK
064806,000101:
064807,000102: 21,3433 COUNT* $$/DAPBU
064808,000103:
064809,000104: 21,3433 E6,1525 EBANK= TJU
064810,000105: 21,3433 00632 RATELIM2 OCT 00632 # 1.125 DEG/SEC
064811,000106: 21,3434 34736 POSTHRST CA HALF
064812,000107:
064813,000108: 21,3435 51505 NDX AXISCTR
064814,000109: 21,3436 55525 TS TJU
064815,000110: 21,3437 11744 CCS OLDSENSE
064816,000111: 21,3440 13460 TCF POSCHECK # JETS FIRING POSITIVELY
064817,000112: 21,3441 13463 TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR
064818,000113: 21,3442 51505 NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY
064819,000114: 21,3443 41525 CS TJU
064820,000115: 21,3444 10000 CCS A
064821,000116: 21,3445 00002 TC Q # RETURN
064822,000117: 21,3446 13450 TCF +2
064823,000118: 21,3447 13450 TCF +1 # JETS COMMANDED OFF.SET CTR AND RETURN
064824,000119: 21,3450 51505 SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR,
064825,000120: 21,3451 33472 CA UTIME # SET JET TIME TO ZERO,AND RETURN
|
Page 1497 |
064827,000122: 21,3452 51505 INDEX AXISCTR
064828,000123: 21,3453 55767 TS UJETCTR
064829,000124: 21,3454 34755 ZAPTJ CA ZERO
064830,000125: 21,3455 51505 INDEX AXISCTR
064831,000126: 21,3456 55525 TS TJU
064832,000127: 21,3457 00002 TC Q
064833,000128: 21,3460 51505 POSCHECK INDEX AXISCTR
064834,000129: 21,3461 31525 CA TJU
064835,000130: 21,3462 13444 TCF NEGCHECK +2
064836,000131: 21,3463 51505 CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER
064837,000132: 21,3464 11767 CCS UJETCTR
064838,000133: 21,3465 13467 TCF +2
064839,000134: 21,3466 00002 TC Q # CTR IS NOT POSITIVE. RETURN
064840,000135: 21,3467 13454 TCF ZAPTJ # CTR IS POSITIVE.INHIBIT FIRINGS
064841,000136: 21,3470 00002 TC Q # CTR IS NOT POSITIVE.RETURN
064842,000137: 21,3471 00004 OCT 00004
064843,000138: 21,3472 00012 UTIME OCT 00012
064844,000139: 21,3473 00012 OCT 00012
064845,000140: 21,3474 E6,1744 OLDSENSE EQUALS DAPTREG1
064846,000141: 21,3474 44753 NEGFIRE CS ONE # JETS FIRING NEGATIVELY
064847,000142: 21,3475 55744 TS OLDSENSE
064848,000143: 21,3476 31427 CA EDOT
064849,000144: 21,3477 13503 TCF +4
064850,000145: 21,3500 34753 PLUSFIRE CA ONE
064851,000146: 21,3501 55744 TS OLDSENSE
064852,000147: 21,3502 41427 CS EDOT # RATE DEAD BAND TEST
064853,000148: 21,3503 22000 LXCH A
064854,000149: 21,3504 40111 CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE
064855,000150: 21,3505 74744 MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET
064856,000151: 21,3506 10000 CCS A
064857,000152: 21,3507 34767 CA RATEDB1
064858,000153: 21,3510 60001 AD L
064859,000154: 21,3511 00006 EXTEND
064860,000155: 21,3512 63522 BZMF SPSSTART
064861,000156: 21,3513 13437 TCF POSTHRST +3
064862,000157:
064863,000158: 21,3514 51505 SPSRCS INDEX AXISCTR # JET SENSE TEST
064864,000159: 21,3515 11525 CCS TJU
064865,000160: 21,3516 13500 TCF PLUSFIRE # JETS FIRING POSITIVELY
064866,000161: 21,3517 13521 TCF +2
064867,000162: 21,3520 13474 TCF NEGFIRE # JETS FIRING NEGATIVELY
064868,000163: 21,3521 55744 TS OLDSENSE # JETS OFF
064869,000164: 21,3522 31427 SPSSTART CA EDOT # OUTER RATE LIMIT TEST
064870,000165: 21,3523 00006 EXTEND
064871,000166: 21,3524 74766 MP RATELIM1
064872,000167: 21,3525 10000 CCS A
064873,000168: 21,3526 13545 TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED
064874,000169: 21,3527 13531 TCF +2
064875,000170: 21,3530 13434 TCF POSTHRST # OUTER RATE LIMIT EXCEEDED
064876,000171: 21,3531 31427 CA EDOT # COAST ZONE TEST
064877,000172: 21,3532 61751 AD E
|
Page 1498 |
064879,000174: 21,3533 00006 EXTEND
064880,000175: 21,3534 71411 MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG
064881,000176: 21,3535 00006 EXTEND
064882,000177: 21,3536 13553 BZF TJZERO
064883,000178:
064884,000179: 21,3537 00006 EXTEND
064885,000180: 21,3540 63547 BZMF +7
064886,000181: 21,3541 31427 CA EDOT
064887,000182: 21,3542 63433 AD RATELIM2
064888,000183: 21,3543 00006 EXTEND
064889,000184: 21,3544 63553 BZMF TJZERO
064890,000185: 21,3545 44736 NEGTHRST CS HALF
064891,000186: 21,3546 13435 TCF POSTHRST +1
064892,000187: 21,3547 43433 +7 CS RATELIM2
064893,000188: 21,3550 61427 AD EDOT
064894,000189: 21,3551 00006 EXTEND
064895,000190: 21,3552 63434 BZMF POSTHRST
064896,000191: 21,3553 34755 TJZERO CA ZERO
064897,000192: 21,3554 13435 TCF POSTHRST +1
064898,000193:
064899,000194:
064900,000195: 21,3555 4766 RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC
064901,000196: 21,3555 4767 RATEDB1 = TBUILDFX # = 00045, CORRESPONDS TO 0.101 DEG/SEC
End of include-file SPS_BACK-UP_RCS_CONTROL.agc. Parent file is MAIN.agc