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