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