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