Source Code
064829,000001: # Copyright: Public domain.
064830,000002: # Filename: SPS_BACK-UP_RCS_CONTROL.agc
064831,000003: # Purpose: Part of the source code for Luminary 1A build 099.
064832,000004: # It is part of the source code for the Lunar Module's (LM)
064833,000005: # Apollo Guidance Computer (AGC), for Apollo 11.
064834,000006: # Assembler: yaYUL
064835,000007: # Contact: Ron Burkey <info@sandroid.org>.
064836,000008: # Website: www.ibiblio.org/apollo.
064837,000009: # Pages: 1507-1510
064838,000010: # Mod history: 2009-05-27 RSB Adapted from the corresponding
064839,000011: # Luminary131 file, using page
064840,000012: # images from Luminary 1A.
064841,000013: # 2011-01-06 JL Fixed pseudo-label indentation.
064842,000014:
064843,000015: # This source code has been transcribed or otherwise adapted from
064844,000016: # digitized images of a hardcopy from the MIT Museum. The digitization
064845,000017: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of
064846,000018: # the Museum. Many thanks to both. The images (with suitable reduction
064847,000019: # in storage size and consequent reduction in image quality as well) are
064848,000020: # available online at www.ibiblio.org/apollo. If for some reason you
064849,000021: # find that the images are illegible, contact me at info@sandroid.org
064850,000022: # about getting access to the (much) higher-quality images which Paul
064851,000023: # actually created.
064852,000024:
064853,000025: # Notations on the hardcopy document read, in part:
064854,000026:
064855,000027: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
064856,000028: # 16:27 JULY 14, 1969
064857,000029:
064858,000030: # Page 1507
064859,000031: # PROGRAM NAME: SPSRCS
064860,000032: # AUTHOR: EDGAR M. OSHIKA (AC ELECTRONICS)
064861,000033: # MODIFIED: TO RETURN TO ALL AXES VIA Q BY P. S. WEISSMAN, OCT 7, 1968
064862,000034: # MODIFIED TO IMPROVE BENDING STABILITY BY G. KALAN, FEB. 14, 1969
064863,000035:
064864,000036: # FUNCTIONAL DESCRIPTION:
064865,000037: # THE PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE
064866,000038: # PLANE LOGIC.
064867,000039:
064868,000040: # 1. JET SENSE TEST (SPSRCS)
064869,000041: # IF JETS ARE FIRING NEGATIVELY, SET OLDSENSE NEGATIVE AND CONTINUE
064870,000042: # IF JETS ARE FIRING POSITIVELY, SET OLDSENSE POSITIVE AND CONTINUE
064871,000043: # IF JETS ARE NOT FIRING, SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST
064872,000044:
064873,000045: # 2. RATE DEAD BAND TEST
064874,000046: # IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE, LEAVE
064875,000047: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
064876,000048: # IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE, LEAVE
064877,000049: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
064878,000050:
064879,000051: # 3. OUTER RATE LIMIT TEST (SPSSTART)
064880,000052: # IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME
064881,000053: # TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
064882,000054:
064883,000055: # 4. COAST ZONE TEST
064884,000056: # 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
064885,000057: # POSITIVE AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
064886,000058: # IF STATE IS ABOVE LINE E + 4 X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE
064887,000059: # AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
064888,000060:
064889,000061: # 5. INHIBITION LOGIC
064890,000062: # IF OLDSENSE IS NON-ZERO:
064891,000063: # A) RETURN IF JET TIME AS THE SAME SIGN AS OLDSENSE
064892,000064: # B) SET INHIBITION COUNTER* AND RETURN IF JET TIME IS ZERO
064893,000065: # C) SET INHIBITION COUNTER,* SET JET TIME TO ZERO AND RETURN IF SIGN
064894,000066: # OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE
064895,000067: # IF OLDSENSE IS ZERO:
064896,000068: # A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE
064897,000069: # B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE
064898,000070: # *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P AND UV AXES,
064899,000071: # RESPECTIVELY, IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF
064900,000072: # Page 1508
064901,000073: # EACH DAP PASS.
064902,000074:
064903,000075: # THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED
064904,000076: # AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE
064905,000077: # P AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES.
064906,000078:
064907,000079: # CALLING SEQUENCE:
064908,000080: # INHINT
064909,000081: # TC IBNKCALL
064910,000082: # CADR SPSRCE
064911,000083:
064912,000084: # EXIT:
064913,000085: # TC Q
064914,000086:
064915,000087: # ALARM/ABORT MODE: NONE
064916,000088:
064917,000089: # SUBROUTINES CALLED: NONE
064918,000090:
064919,000091: # INPUT: E, EDOT
064920,000092: # TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO
064921,000093:
064922,000094: # OUTPUT: TJP, TJV, TJU
064923,000095:
064924,000096: 21,3646 BANK 21
064925,000097: 21,2000 SETLOC DAPS4
064926,000098: 21,2000 BANK
064927,000099:
064928,000100: 21,3646 COUNT* $$/DAPBU
064929,000101:
064930,000102: 21,3646 E6,1525 EBANK= TJU
064931,000103: 21,3646 00632 RATELIM2 OCT 00632 # 1.125 DEG/SEC
064932,000104: 21,3647 34736 POSTHRST CA HALF
064933,000105:
064934,000106: 21,3650 51505 NDX AXISCTR
064935,000107: 21,3651 55525 TS TJU
064936,000108: 21,3652 11745 CCS OLDSENSE
064937,000109: 21,3653 13673 TCF POSCHECK # JETS FIRING POSITIVELY
064938,000110: 21,3654 13676 TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR
064939,000111: 21,3655 51505 NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY
064940,000112: 21,3656 41525 CS TJU
064941,000113: 21,3657 10000 CCS A
064942,000114: 21,3660 00002 TC Q # RETURN
064943,000115: 21,3661 13663 TCF +2
064944,000116: 21,3662 13663 TCF +1 # JETS COMMANDED OFF. SET CTR AND RETURN
064945,000117: 21,3663 51505 SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR,
064946,000118: 21,3664 33705 CA UTIME # SET JET TIME TO ZER, AND RETURN
064947,000119: # Page 1509
064948,000120: 21,3665 51505 INDEX AXISCTR
064949,000121: 21,3666 55770 TS UJETCTR
064950,000122: 21,3667 34755 ZAPTJ CA ZERO
064951,000123: 21,3670 51505 INDEX AXISCTR
064952,000124: 21,3671 55525 TS TJU
064953,000125: 21,3672 00002 TC Q
064954,000126: 21,3673 51505 POSCHECK INDEX AXISCTR
064955,000127: 21,3674 31525 CA TJU
064956,000128: 21,3675 13657 TCF NEGCHECK +2
064957,000129: 21,3676 51505 CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER
064958,000130: 21,3677 11770 CCS UJETCTR
064959,000131: 21,3700 13702 TCF +2
064960,000132: 21,3701 00002 TC Q # CTR IS NOT POSITIVE. RETURN
064961,000133: 21,3702 13667 TCF ZAPTJ # CTR IS POSITIVE. INHIBIT FIRINGS
064962,000134: 21,3703 00002 TC Q # CTR IS NOT POSITIVE. RETURN
064963,000135: 21,3704 00004 OCT 00004
064964,000136: 21,3705 00012 UTIME OCT 00012
064965,000137: 21,3706 00012 OCT 00012
064966,000138: 21,3707 E6,1745 OLDSENSE EQUALS DAPTREG1
064967,000139: 21,3707 44753 NEGFIRE CS ONE # JETS FIRING NEGATIVELY
064968,000140: 21,3710 55745 TS OLDSENSE
064969,000141: 21,3711 31427 CA EDOT
064970,000142: 21,3712 13716 TCF +4
064971,000143: 21,3713 34753 PLUSFIRE CA ONE
064972,000144: 21,3714 55745 TS OLDSENSE
064973,000145: 21,3715 41427 CS EDOT # RATE DEAD BAND TEST
064974,000146: 21,3716 22000 LXCH A
064975,000147: 21,3717 40111 CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE
064976,000148: 21,3720 74744 MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET
064977,000149: 21,3721 10000 CCS A
064978,000150: 21,3722 34767 CA RATEDB1
064979,000151: 21,3723 60001 AD L
064980,000152: 21,3724 00006 EXTEND
064981,000153: 21,3725 63735 BZMF SPSSTART
064982,000154: 21,3726 13652 TCF POSTHRST +3
064983,000155:
064984,000156: 21,3727 51505 SPSRCS INDEX AXISCTR # JET SENSE TEST
064985,000157: 21,3730 11525 CCS TJU
064986,000158: 21,3731 13713 TCF PLUSFIRE # JETS FIRING POSITIVELY
064987,000159: 21,3732 13734 TCF +2
064988,000160: 21,3733 13707 TCF NEGFIRE # JETS FIRING NEGATIVELY
064989,000161: 21,3734 55745 TS OLDSENSE # JETS OFF
064990,000162: 21,3735 31427 SPSSTART CA EDOT # OUTER RATE LIMIT TEST
064991,000163: 21,3736 00006 EXTEND
064992,000164: 21,3737 74766 MP RATELIM1
064993,000165: 21,3740 10000 CCS A
064994,000166: 21,3741 13760 TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED
064995,000167: 21,3742 13744 TCF +2
064996,000168: 21,3743 13647 TCF POSTHRST # OUTER RATE LIMIT EXCEEDED
064997,000169: 21,3744 31427 CA EDOT # COAST ZONE TEST
064998,000170: # Page 1510
064999,000171: 21,3745 61752 AD E
065000,000172: 21,3746 00006 EXTEND
065001,000173: 21,3747 71411 MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG
065002,000174: 21,3750 00006 EXTEND
065003,000175: 21,3751 13766 BZF TJZERO
065004,000176:
065005,000177: 21,3752 00006 EXTEND
065006,000178: 21,3753 63762 BZMF +7
065007,000179: 21,3754 31427 CA EDOT
065008,000180: 21,3755 63646 AD RATELIM2
065009,000181: 21,3756 00006 EXTEND
065010,000182: 21,3757 63766 BZMF TJZERO
065011,000183: 21,3760 44736 NEGTHRST CS HALF
065012,000184: 21,3761 13650 TCF POSTHRST +1
065013,000185: 21,3762 43646 +7 CS RATELIM2
065014,000186: 21,3763 61427 AD EDOT
065015,000187: 21,3764 00006 EXTEND
065016,000188: 21,3765 63647 BZMF POSTHRST
065017,000189: 21,3766 34755 TJZERO CA ZERO
065018,000190: 21,3767 13650 TCF POSTHRST +1
065019,000191:
065020,000192: 21,3770 4766 RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC
065021,000193: 21,3770 4767 RATEDB1 = TBUILDFX # = 00045, CORRESPONDS TO 0.101 DEG/SEC
065022,000194:
065023,000195: # *** END OF LMDAP .015 ***
065024,000196:
065025,000197:
End of include-file SPS_BACK-UP_RCS_CONTROL.agc. Parent file is MAIN.agc