Source Code
|
These source-code files are part of a reconstructed copy of Luminary 163, the
first (unflown) release of the Apollo 14 Lunar Module (LM) Apollo Guidance
Computer (AGC) software.
The reconstruction began with reconstructed source code for Luminary 173. Changes between revision 163 and 173 were backed out, as described by Luminary memos 157 and 158. 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 163 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. |
064533,000002: ## Copyright: Public domain.
064534,000003: ## Filename: SPS_BACK-UP_RCS_CONTROL.agc
064535,000004: ## Purpose: A section of Luminary revision 163.
064536,000005: ## It is part of the reconstructed source code for the first
064537,000006: ## (unflown) release of the flight software for the Lunar
064538,000007: ## Module's (LM) Apollo Guidance Computer (AGC) for Apollo 14.
064539,000008: ## The code has been recreated from a reconstructed copy of
064540,000009: ## Luminary 173, as well as Luminary memos 157 amd 158.
064541,000010: ## It has been adapted such that the resulting bugger words
064542,000011: ## exactly match those specified for Luminary 163 in NASA
064543,000012: ## drawing 2021152N, which gives relatively high confidence
064544,000013: ## that the reconstruction is correct.
064545,000014: ## Reference: pp. 1495-1498
064546,000015: ## Assembler: yaYUL
064547,000016: ## Contact: Ron Burkey <info@sandroid.org>.
064548,000017: ## Website: www.ibiblio.org/apollo/index.html
064549,000018: ## Mod history: 2019-08-21 MAS Created from Luminary 173.
064550,000019:
|
Page 1495 |
064552,000021: # PROGRAM NAME: SPSRCS
064553,000022:
064554,000023: # AUTHOR: EDGAR M. OSHIKA (AC ELECTRONICS)
064555,000024:
064556,000025: # MODIFIED: TO RETURN TO ALL AXES VIA Q BY P.S.WEISSMAN, OCT 7, 1968
064557,000026:
064558,000027: # MODIFIED TO IMPROVE BENDING STABILITY BY G.KALAN,FEB.14,1969
064559,000028: # FUNCTIONAL DESCRIPTION:
064560,000029:
064561,000030: # THIS PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE
064562,000031: # PLANE LOGIC.
064563,000032:
064564,000033: # 1. JET SENSE TEST (SPSRCS)
064565,000034:
064566,000035: # IF JETS ARE FIRING NEGATIVELY,SET OLDSENSE NEGATIVE AND CONTINUE
064567,000036: # IF JETS ARE FIRING POSITIVELY,SET OLDSENSE POSITIVE AND CONTINUE
064568,000037: # IF JETS ARE NOT FIRING,SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST
064569,000038:
064570,000039: # 2. RATE DEAD BAND TEST
064571,000040:
064572,000041: # IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE,LEAVE
064573,000042: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE,CONTINUE.
064574,000043: # IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE,LEAVE
064575,000044: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE,CONTINUE.
064576,000045:
064577,000046: # 3. OUTER RATE LIMIT TEST (SPSSTART)
064578,000047:
064579,000048: # IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME
064580,000049: # TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE,CONTINUE.
064581,000050:
064582,000051: # 4. COAST ZONE TEST
064583,000052:
064584,000053: # 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-
064585,000054: # TIVE AND CONTINUE. OTHERWISE,SET JET FIRING TIME TO ZERO AND CONTINUE.
064586,000055: # IF STATE IS ABOVE LINE E + 4X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE
064587,000056: # AND CONTINUE. OTHERWISE,SET JET FIRING TIME TO ZERO AND CONTINUE.
064588,000057:
064589,000058: # 5. INHIBITION LOGIC
064590,000059:
064591,000060: # IF OLDSENSE IS NON-ZERO:
064592,000061: # A) RETURN IF JET TIME HAS SAME SIGN AS OLDSENSE
064593,000062: # B) SET INHIBITION COUNTER*AND RETURN IF JET TIME IS ZERO
064594,000063: # C) SET INHIBITION COUNTER,*SET JET TIME TO ZERO AND RETURN IF SIGN
064595,000064: # OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE
064596,000065:
064597,000066: # IF OLDSENSE IS ZERO:
064598,000067: # A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE
064599,000068: # B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE
064600,000069: # *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P,AND UV AXES,
064601,000070: # RESPECTIVELY,IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF
|
Page 1496 |
064603,000072: # EACH DAP PASS.
064604,000073:
064605,000074: # THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED
064606,000075: # AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE
064607,000076: # P AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES.
064608,000077:
064609,000078: # CALLING SEQUENCE:
064610,000079:
064611,000080: # INHINT
064612,000081: # TC IBNKCALL
064613,000082: # CADR SPSRCS
064614,000083:
064615,000084:
064616,000085: # EXIT:
064617,000086: # TC Q
064618,000087: # ALARM/ABORT MODE: NONE
064619,000088:
064620,000089: # SUBROUTINES CALLED: NONE
064621,000090:
064622,000091: # INPUT: E,EDOT
064623,000092: # TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO
064624,000093:
064625,000094: # OUTPUT: TJP, TJV, TJU
064626,000095:
064627,000096:
064628,000097: 21,3640 BANK 21
064629,000098: 21,2000 SETLOC DAPS4
064630,000099: 21,2000 BANK
064631,000100:
064632,000101: 21,3640 COUNT* $$/DAPBU
064633,000102:
064634,000103: 21,3640 E6,1525 EBANK= TJU
064635,000104: 21,3640 00632 RATELIM2 OCT 00632 # 1.125 DEG/SEC
064636,000105: 21,3641 34736 POSTHRST CA HALF
064637,000106:
064638,000107: 21,3642 51505 NDX AXISCTR
064639,000108: 21,3643 55525 TS TJU
064640,000109: 21,3644 11744 CCS OLDSENSE
064641,000110: 21,3645 13665 TCF POSCHECK # JETS FIRING POSITIVELY
064642,000111: 21,3646 13670 TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR
064643,000112: 21,3647 51505 NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY
064644,000113: 21,3650 41525 CS TJU
064645,000114: 21,3651 10000 CCS A
064646,000115: 21,3652 00002 TC Q # RETURN
064647,000116: 21,3653 13655 TCF +2
064648,000117: 21,3654 13655 TCF +1 # JETS COMMANDED OFF.SET CTR AND RETURN
064649,000118: 21,3655 51505 SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR,
064650,000119: 21,3656 33677 CA UTIME # SET JET TIME TO ZERO,AND RETURN
|
Page 1497 |
064652,000121: 21,3657 51505 INDEX AXISCTR
064653,000122: 21,3660 55767 TS UJETCTR
064654,000123: 21,3661 34755 ZAPTJ CA ZERO
064655,000124: 21,3662 51505 INDEX AXISCTR
064656,000125: 21,3663 55525 TS TJU
064657,000126: 21,3664 00002 TC Q
064658,000127: 21,3665 51505 POSCHECK INDEX AXISCTR
064659,000128: 21,3666 31525 CA TJU
064660,000129: 21,3667 13651 TCF NEGCHECK +2
064661,000130: 21,3670 51505 CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER
064662,000131: 21,3671 11767 CCS UJETCTR
064663,000132: 21,3672 13674 TCF +2
064664,000133: 21,3673 00002 TC Q # CTR IS NOT POSITIVE. RETURN
064665,000134: 21,3674 13661 TCF ZAPTJ # CTR IS POSITIVE.INHIBIT FIRINGS
064666,000135: 21,3675 00002 TC Q # CTR IS NOT POSITIVE.RETURN
064667,000136: 21,3676 00004 OCT 00004
064668,000137: 21,3677 00012 UTIME OCT 00012
064669,000138: 21,3700 00012 OCT 00012
064670,000139: 21,3701 E6,1744 OLDSENSE EQUALS DAPTREG1
064671,000140: 21,3701 44753 NEGFIRE CS ONE # JETS FIRING NEGATIVELY
064672,000141: 21,3702 55744 TS OLDSENSE
064673,000142: 21,3703 31427 CA EDOT
064674,000143: 21,3704 13710 TCF +4
064675,000144: 21,3705 34753 PLUSFIRE CA ONE
064676,000145: 21,3706 55744 TS OLDSENSE
064677,000146: 21,3707 41427 CS EDOT # RATE DEAD BAND TEST
064678,000147: 21,3710 22000 LXCH A
064679,000148: 21,3711 40111 CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE
064680,000149: 21,3712 74744 MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET
064681,000150: 21,3713 10000 CCS A
064682,000151: 21,3714 34767 CA RATEDB1
064683,000152: 21,3715 60001 AD L
064684,000153: 21,3716 00006 EXTEND
064685,000154: 21,3717 63727 BZMF SPSSTART
064686,000155: 21,3720 13644 TCF POSTHRST +3
064687,000156:
064688,000157: 21,3721 51505 SPSRCS INDEX AXISCTR # JET SENSE TEST
064689,000158: 21,3722 11525 CCS TJU
064690,000159: 21,3723 13705 TCF PLUSFIRE # JETS FIRING POSITIVELY
064691,000160: 21,3724 13726 TCF +2
064692,000161: 21,3725 13701 TCF NEGFIRE # JETS FIRING NEGATIVELY
064693,000162: 21,3726 55744 TS OLDSENSE # JETS OFF
064694,000163: 21,3727 31427 SPSSTART CA EDOT # OUTER RATE LIMIT TEST
064695,000164: 21,3730 00006 EXTEND
064696,000165: 21,3731 74766 MP RATELIM1
064697,000166: 21,3732 10000 CCS A
064698,000167: 21,3733 13752 TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED
064699,000168: 21,3734 13736 TCF +2
064700,000169: 21,3735 13641 TCF POSTHRST # OUTER RATE LIMIT EXCEEDED
064701,000170: 21,3736 31427 CA EDOT # COAST ZONE TEST
064702,000171: 21,3737 61751 AD E
|
Page 1498 |
064704,000173: 21,3740 00006 EXTEND
064705,000174: 21,3741 71411 MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG
064706,000175: 21,3742 00006 EXTEND
064707,000176: 21,3743 13760 BZF TJZERO
064708,000177:
064709,000178: 21,3744 00006 EXTEND
064710,000179: 21,3745 63754 BZMF +7
064711,000180: 21,3746 31427 CA EDOT
064712,000181: 21,3747 63640 AD RATELIM2
064713,000182: 21,3750 00006 EXTEND
064714,000183: 21,3751 63760 BZMF TJZERO
064715,000184: 21,3752 44736 NEGTHRST CS HALF
064716,000185: 21,3753 13642 TCF POSTHRST +1
064717,000186: 21,3754 43640 +7 CS RATELIM2
064718,000187: 21,3755 61427 AD EDOT
064719,000188: 21,3756 00006 EXTEND
064720,000189: 21,3757 63641 BZMF POSTHRST
064721,000190: 21,3760 34755 TJZERO CA ZERO
064722,000191: 21,3761 13642 TCF POSTHRST +1
064723,000192:
064724,000193:
064725,000194: 21,3762 4766 RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC
064726,000195: 21,3762 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