Source Code

This is the source-code for the Apollo 9 Command Module's Guidance Computer. These files were derived originally from the scan from MIT's Dibner Institute's now-discontinued website titled "History of Recent Science and Technology", which in turn was originally created by Gary Neff, though his high-quality scans were unfortunately reduced in legibility when presented online. The markings on the front of the printout imply that it was the original AGC developer Norm Brodeur's copy. A scan by Ron Burkey has superceded it, made from a more-legible copy from the collection of original AGC developer Fred Martin. The source code was transcribed from those images by Ron Burkey. Note that the page images presented online are of reduced quality, and that higher-quality images are available. Report any conversion errors or legibility problems in page images to info@sandroid.org. Notations on the program listing read, in part:

	ASSEMBLE REVISION 249 OF AGC PROGRAM COLOSSUS BY NASA 2021111-041
	20'35 OCT. 28,1968
Note that the date is the date of the printout, not the date of the program revision.

040676,000002:                                                                                                  ## Copyright:   Public domain.
040677,000003:                                                                                                  ## Filename:    TVCMASSPROP.agc
040678,000004:                                                                                                  ## Purpose:     Part of the source code for Colossus, build 249.
040679,000005:                                                                                                  ##              It is part of the source code for the Command Module's (CM)
040680,000006:                                                                                                  ##              Apollo Guidance Computer (AGC), for Apollo 9.
040681,000007:                                                                                                  ## Assembler:   yaYUL
040682,000008:                                                                                                  ## Reference:   Begins on p. 911
040683,000009:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
040684,000010:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
040685,000011:                                                                                                  ## Mod history: 08/23/04 RSB.   Began transcribing.
040686,000012:                                                                                                  ##              05/14/05 RSB.   Corrected website reference above.
040687,000013:                                                                                                  ##              2017-01-06 RSB  Page numbers now agree with those on the
040688,000014:                                                                                                  ##                              original harcopy, as opposed to the PDF page
040689,000015:                                                                                                  ##                              numbers in 1701.pdf.
040690,000016:                                                                                                  ##              2017-01-20 RSB  Cross-diff'd comment text (not whitespace)
040691,000017:                                                                                                  ##                              vs the already-proofed corresponding Colossus
040692,000018:                                                                                                  ##                              237 and Comanche 55 source-code files
040693,000019:                                                                                                  ##                              and corrected errors found.
040694,000020:                                                                                                  ##
040695,000021:                                                                                                  ## The contents of the "Colossus249" files, in general, are transcribed 
040696,000022:                                                                                                  ## from a scanned copy of the program listing.  Notations on this
040697,000023:                                                                                                  ## document read, in part:
040698,000024:                                                                                                  ##
040699,000025:                                                                                                  ##      Assemble revision 249 of AGC program Colossus by NASA
040700,000026:                                                                                                  ##      2021111-041.  October 28, 1968.  
040701,000027:                                                                                                  ##
040702,000028:                                                                                                  ##      This AGC program shall also be referred to as
040703,000029:                                                                                                  ##                              Colossus 1A
040704,000030:                                                                                                  ##
040705,000031:                                                                                                  ##      Prepared by
040706,000032:                                                                                                  ##                      Massachusetts Institute of Technology
040707,000033:                                                                                                  ##                      75 Cambridge Parkway
040708,000034:                                                                                                  ##                      Cambridge, Massachusetts
040709,000035:                                                                                                  ##      under NASA contract NAS 9-4065.
040710,000036:                                                                                                  ##
040711,000037:                                                                                                  ## Refer directly to the online document mentioned above for further information.
040712,000038:                                                                                                  ## Please report any errors (relative to the scanned pages) to info@sandroid.org.
040713,000039:                                                                                                  ##
040714,000040:                                                                                                  ## In some cases, where the source code for Luminary 131 overlaps that of 
040715,000041:                                                                                                  ## Colossus 249, this code is instead copied from the corresponding Luminary 131
040716,000042:                                                                                                  ## source file, and then is proofed to incorporate any changes.
040717,000043: 

Page 911

040719,000045:                                                                                                  #  PROGRAM NAME....MASSPROP
040720,000046:                                                                                                  #  LOG SECTION....TVCMASSPROP            PROGRAMMER...MELANSON (ENGEL, SCHLUNDT)
040721,000047: 
040722,000048:                                                                                                  #  FUNCTIONAL DESCRIPTION:
040723,000049: 
040724,000050:                                                                                                  #        MASSPROP OPERATES IN TWO MODES: (1) IF LEM MASS OR CONFIGURATION ARE UPDATED (MASSPROP DOES NOT TEST
040725,000051:                                                                                                  #        FOR THIS) THE ENTIRE PROGRAM MUST BE RUN THROUGH, BREAKPOINT VALUES AND DERIVATIVES OF THE OUTPUTS WITH
040726,000052:                                                                                                  #        RESPECT TO CSM MASS BEING CALCULATED PRIOR TO CALCULATION OF THE OUTPUTS.  (2) OTHERWISE, THE OUTPUTS CAN BE
040727,000053:                                                                                                  #        CALCULATED USING PREVIOUSLY COMPUTED BREAKPOINT VALUES AND DERIVATIVES.
040728,000054: 
040729,000055:                                                                                                  #  CALLING SEQUENCES
040730,000056: 
040731,000057:                                                                                                  #        IF LEM MASS OR CONFIGURATION HAS BEEN UPDATED, TRANSFER TO MASSPROP, OTHERWISE TRANSFER TO FIXCW.
040732,000058:                                                                                                  #                L       TC      BANKCALL OR IBNKCALL
040733,000059:                                                                                                  #                L+1     CADR    MASSPROP
040734,000060:                                                                                                  #                        OR
040735,000061:                                                                                                  #                L+1     CADR    FIXCW
040736,000062:                                                                                                  #                L+2     RETURNS VIA Q
040737,000063: 
040738,000064:                                                                                                  #  CALLED   IN PARTICULAR BY DONOUN47 (JOB) AND TVCEXECUTIVE (TASK)
040739,000065: 
040740,000066:                                                                                                  #  JOBS OR TASKS INITIATED - NONE
040741,000067: 
040742,000068:                                                                                                  #  SUBROUTINES CALLED - NONE
040743,000069: 
040744,000070:                                                                                                  #  ERASABLE INITIALIZATION REQUIRED
040745,000071: 
040746,000072:                                                                                                  #        LEMMASS MUST CONTAIN LEM MASS SCALED AT B+16 IN KILOGRAMS
040747,000073:                                                                                                  #        CSMMASS MUST CONTAIN CSM MASS SCALED AT B+16 IN KILOGRAMS
040748,000074:                                                                                                  #        DAPDATR1 MUST BE SET TO INDICATE VEHICLE CONFIGURATION.
040749,000075:                                                                                                  #                BITS (15,14,13)  =  ( 0 , 0 , 1 )       LEM OFF
040750,000076:                                                                                                  #                                    ( 0 , 1 , 0 )       LEM ON (ASCNT,DSCNT)
040751,000077:                                                                                                  #                                    ( 1 , 1 , 0 )       LEM ON (ASCNT ONLY)
040752,000078: 
040753,000079:                                                                                                  #  ALARMS -      NONE
040754,000080: 
040755,000081:                                                                                                  #  EXIT -        TC      Q
040756,000082: 
040757,000083:                                                                                                  #  OUTPUTS:
040758,000084: 
040759,000085:                                                                                                  #        (1)     IXX, SINGLE PRECISION SCALED AT B+20 IN KG-M SQ.
040760,000086:                                                                                                  #        (2)     IAVG, SINGLE PRECISION SCALED AT B+20 IN KG-M SQ.
040761,000087:                                                                                                  #        (3)     IAVG/TLX, SINGLE PRECISION, SCALED AT B+2 SEC-SQD
040762,000088:                                                                                                  #        
040763,000089:                                                                                                  #        THEY ARE STORED IN CONSECUTIVE REGISTERS IXX0, IXX1, IXX2
040764,000090:                                                                                                  #        CONVERSION FACTOR:  (SLUG-FTSQ) = 0.737562 (KG-MSQ)

Page 912

040766,000092: 
040767,000093:                                                                                                  #  OUTPUTS ARE CALCULATED AS FOLLOWS:
040768,000094: 
040769,000095:                                                                                                  #        (1)     IF LEM DOCKED, LEMMASS IS FIRST ELIMINATED AS A PARAMETER
040770,000096: 
040771,000097:                                                                                                  #                VARST0 = INTVALUE0 + LEMMASS(SLOPEVAL0)         IXX             BREAKPOINT VALUE
040772,000098:                                                                                                  #                VARST1 = INTVALUE1 + LEMMASS(SLOPEVAL1)         IAVG            BREAKPOINT VALUE
040773,000099:                                                                                                  #                VARST2 = INTVALUE2 + LEMMASS(SLOPEVAL2)         IAVG/TLX        BREAKPOINT VALUE
040774,000100: 
040775,000101:                                                                                                  #                VARST3 = INTVALUE3 + LEMMASS(SLOPEVAL3)         IAVG/TLX        SLOPE FOR CSMMASS > 33956 LBS (SPS > 10000 LBS)
040776,000102:                                                                                                  #                VARST4 = INTVALUE4 + LEMMASS(SLOPEVAL4)         IAVG            SLOPE FOR CSMMASS > 33956 LBS (SPS > 10000 LBS)
040777,000103: 
040778,000104:                                                                                                  #                VARST5 = INTVALUE5 + LEMMASS(SLOPEVAL5)         IXX             SLOPE FOR ALL VALUES OF CSMMASS
040779,000105: 
040780,000106:                                                                                                  #                VARST6 = INTVALUE6 + LEMMASS(SLOPEVAL6)         IAVG            SLOPE FOR CSMMASS < 33956 LBS (SPS < 10000 LBS)
040781,000107:                                                                                                  #                VARST7 = INTVALUE7 + LEMMASS(SLOPEVAL7)         IAVG/TLX        SLOPE FOR CSMMASS < 33956 LBS (SPS < 10000 LBS)
040782,000108: 
040783,000109:                                                                                                  #                VARST8 = INTVALUE8 + LEMMASS(SLOPEVAL8)         IAVG            DECREMENT TO BRKPT VALUE WHEN LEM DSCNT STAGE OFF
040784,000110:                                                                                                  #                VARST9 = INTVALUE9 + LEMMASS(SLOPEVAL9)         IAVG/TLX        DECREMENT TO BRKPT VALUE WHEN LEM DSCNT STAGE OFF
040785,000111: 
040786,000112:                                                                                                  #        (2)     IF LEM NOT DOCKED
040787,000113: 
040788,000114:                                                                                                  #                VARST0 = NOLEMVAL0      WHERE THE MEANING AND SCALING OF VARST0
040789,000115:                                                                                                  #                   .          .         TO VARST9 ARE THE SAME AS GIVEN ABOVE
040790,000116:                                                                                                  #                   .          .
040791,000117:                                                                                                  #                   .          .         NOTE... FOR THIS CASE, VARST8,9 HAVE NO
040792,000118:                                                                                                  #                VARST9 = NOLEMVAL9      MEANING (THEY ARE COMPUTED BUT NOT USED)
040793,000119: 
040794,000120:                                                                                                  #        (3)     THE FINAL OUTPUT CALCULATIONS ARE THEN DONE
040795,000121: 
040796,000122:                                                                                                  #                IXX0 = VARST0 + (CSMMASS + NEGBPW)VARST5                IXX
040797,000123: 
040798,000124:                                                                                                  #                IXX1 = VARST1 + (CSMMASS + NEGBPW)VARST(4 OR 6)         IAVG
040799,000125: 
040800,000126:                                                                                                  #                IXX2 = VARST2 + (CSMMASS + NEGBPW)VARST(3 OR 7)         IAVG/TLX
040801,000127: 
040802,000128:                                                                                                  #        THE DATA USED CAME FROM CSM/LM SPACECRAFT OPERATIONAL DATA BOOK.
040803,000129:                                                                                                  #                VOL. 3, NASA DOCUMENT SNA-8-D-027 (MARCH 1968)
040804,000130: 
040805,000131:                                                                                                  #        PERTINENT MASS DATA:            CSM WEIGHT      (FULL)  64100 LBS
040806,000132:                                                                                                  #                                                        (EMPTY) 23956 LBS
040807,000133:                                                                                                  #                                        LEM WEIGHT      (FULL)  32000 LBS
040808,000134:                                                                                                  #                                                        (EMPTY) 14116 LBS
040809,000135: 
040810,000136:                                                                                                  #        (WEIGHTS ARE FROM AMENDMENT #1 (APRIL 24, 1968) TO ABOVE DATA BOOK)

Page 913

040812,000138: 
040813,000139: 25,3766                                           BANK     25                                    
040814,000140: 05,2000                                           SETLOC   DAPMASS                               
040815,000141: 05,2000                                           BANK                                           
040816,000142: 05,3207  E6,1742                                  EBANK=   BZERO                                 
040817,000143: 05,3207                                           COUNT*   $$/MASP                               
040818,000144: 
040819,000145: 05,3207           34334        MASSPROP           CAF      NINE                                  #  MASSPROP USES TVC/RCS INTERUPT TEMPS
040820,000146: 05,3210           55506                           TS       PHI333                                #  SET UP TEN PASSES
040821,000147: 
040822,000148: 05,3211           31466        LEMTEST            CAE      DAPDATR1                              #  DETERMINE LEM STATUS
040823,000149: 05,3212           74676                           MASK     BIT13                                 
040824,000150: 05,3213           00006                           EXTEND                                         
040825,000151: 05,3214           13220                           BZF      LEMYES                                
040826,000152: 
040827,000153: 05,3215           51506        LEMNO              INDEX    PHI333                                #  LEM NOT ATTACHED
040828,000154: 05,3216           33304                           CAF      NOLEMVAL                              
040829,000155: 05,3217           13230                           TCF      STOINST                               
040830,000156: 
040831,000157: 05,3220           31473        LEMYES             CAE      LEMMASS                               #  LEM IS ATTACHED
040832,000158: 05,3221           60000                           DOUBLE                                         
040833,000159: 05,3222           00006                           EXTEND                                         
040834,000160: 05,3223           51506                           INDEX    PHI333                                
040835,000161: 05,3224           73326                           MP       SLOPEVAL                              
040836,000162: 05,3225           20001                           DDOUBL                                         
040837,000163: 05,3226           51506                           INDEX    PHI333                                
040838,000164: 05,3227           63314                           AD       INTVALUE                              
040839,000165: 
040840,000166: 05,3230           51506        STOINST            INDEX    PHI333                                #  STORAGE INST BEGIN HERE
040841,000167: 05,3231           55511                           TS       VARST0                                
040842,000168: 05,3232           11506                           CCS      PHI333                                #  ARE ALL TEN PASSES COMPLETED
040843,000169: 05,3233           13210                           TCF      MASSPROP   +1                         #  NO - GO DECREMENT PHI333
040844,000170: 
040845,000171: 05,3234           11466        DXTEST             CCS      DAPDATR1                              #  IF NEG, BIT15 IS 1, LEM DSCNT STAGE OFF
040846,000172: 05,3235           13243                           TCF      FIXCW                                 
040847,000173: 05,3236           13243                           TCF      FIXCW                                 
040848,000174: 05,3237           53522                           DXCH     VARST0     +8D                        
040849,000175: 05,3240           21513                           DAS      VARST0     +1                         
040850,000176: 05,3241           33341                           CA       DXITFIX                               
040851,000177: 05,3242           27520                           ADS      VARST0     +7                         
040852,000178: 
040853,000179: 05,3243           34711        FIXCW              CAF      BIT2                                  #  COMPUTATION PHASE BEGINS HERE. SET UP
040854,000180: 05,3244           55506                           TS       PHI333                                #  THREE PASSES
040855,000181: 05,3245           55507                           TS       PSI333                                
040856,000182: 
040857,000183: 05,3246           31474                           CAE      CSMMASS                               #  GET DELTA CSM WEIGHT - SIGN DETERMINES
040858,000184: 05,3247           63340                           AD       NEGBPW                                #  SLOPE LOCATIONS.
040859,000185: 05,3250           60000                           DOUBLE                                         
040860,000186: 05,3251           55510                           TS       TEMP333                               

Page 914

040862,000188: 05,3252           00006                           EXTEND                                         
040863,000189: 05,3253           63256                           BZMF     PEGGY                                 #  DETERMINE CORRECT SLOPE
040864,000190: 05,3254           37715                           CAF      NEG2                                  
040865,000191: 05,3255           55506                           TS       PHI333                                
040866,000192: 
040867,000193: 05,3256           51506        PEGGY              INDEX    PHI333                                #  ALL IS READY - CALCULATE OUTPUTS NOW
040868,000194: 05,3257           31516                           CAE      VARST5                                #  GET SLOPE
040869,000195: 05,3260           00006                           EXTEND                                         
040870,000196: 05,3261           71510                           MP       TEMP333                               #  MULT BY DELTA CSM WEIGHT
040871,000197: 05,3262           60000                           DOUBLE                                         
040872,000198: 05,3263           51507                           INDEX    PSI333                                
040873,000199: 05,3264           61511                           AD       VARST0                                #  ADD BREAKPOINT VALUE
040874,000200: 05,3265           51507                           INDEX    PSI333                                
040875,000201: 05,3266           55470                           TS       IXX                                   #  ****** OUTPUTS (IXX0, IXX1, IXX2) ******
040876,000202: 05,3267           11507                           CCS      PSI333                                #  BOOKKEEPING - MASSPROP FINISHED OR NOT
040877,000203: 05,3270           13300                           TCF      BOKKEP2                               #  NO - GO TAKE CARE OF INDEXING REGISTERS
040878,000204: 
040879,000205: 05,3271           31466                           CAE      DAPDATR1                              #  UPDATE WEIGHT/G
040880,000206: 05,3272           74675                           MASK     BIT14                                 
040881,000207: 05,3273           10000                           CCS      A                                     
040882,000208: 05,3274           31473                           CA       LEMMASS                               
040883,000209: 05,3275           61474                           AD       CSMMASS                               
040884,000210: 05,3276           55475                           TS       WEIGHT/G                              #  SCALED AT B+16 IN KILOGRAMS
040885,000211: 05,3277           00002        ENDMASSP           TC       Q                                     
040886,000212: 
040887,000213: 05,3300           55507        BOKKEP2            TS       PSI333                                #  REDUCE PSI BY ONE
040888,000214: 05,3301           00006                           EXTEND                                         
040889,000215: 05,3302           27506                           DIM      PHI333                                
040890,000216: 05,3303           13256                           TCF      PEGGY                                 
040891,000217: 

Page 915

040893,000219: 05,3304           00616        NOLEMVAL           DEC      25445      B-20                       
040894,000220: 05,3305           02526                           DEC      87450      B-20                       
040895,000221: 05,3306           02352                           DEC      .30715     B-2                        
040896,000222: 05,3307           01471                           DEC      1.22877    E-5        B+12            
040897,000223: 05,3310           00634                           DEC      1.6096     B-6                        
040898,000224: 05,3311           00612                           DEC      1.54       B-6                        
040899,000225: 05,3312           03706                           DEC      7.77177    B-6                        
040900,000226: 05,3313           04425                           DEC      3.46458    E-5        B+12            
040901,000227: 
040902,000228: 05,3314           00644        INTVALUE           DEC      26850      B-20                       
040903,000229: 05,3315           03710                           DEC      127518     B-20                       
040904,000230: 05,3316           04246                           DEC      .54059     B-2                        
040905,000231: 05,3317           02011                           DEC      .153964    E-4        B+12            
040906,000232: 05,3320           77501                           DEC      -.742923   B-6                        
040907,000233: 05,3321           00612                           DEC      1.5398     B-6                        
040908,000234: 05,3322           04656                           DEC      9.68       B-6                        
040909,000235: 05,3323           10372                           DEC      .647625    E-4        B+12            
040910,000236: 05,3324           77126                           DEC      -27228     B-20                       
040911,000237: 05,3325           76261                           DEC      -.206476   B-2                        
040912,000238: 
040913,000239: 05,3326           00767        SLOPEVAL           DEC      1.96307    B-6                        
040914,000240: 05,3327           15624                           DEC      27.5774    B-6                        
040915,000241: 05,3330           03054                           DEC      2.3548     E-5        B+12            
040916,000242: 05,3331           04532                           DEC      2.1777     E-9        B+26            
040917,000243: 05,3332           10433                           DEC      1.044      E-3        B+8             
040918,000244: 05,3333           00000                           DEC      0          B-14                       
040919,000245: 05,3334           22070                           DEC      2.21068    E-3        B+8             
040920,000246: 05,3335           03204                           DEC      1.5166     E-9        B+26            
040921,000247: 05,3336           77266                           DEC      -1.284     B-6                        
040922,000248: 05,3337           02476                           DEC      2          E-5        B+12            
040923,000249: 
040924,000250: 05,3340           70364        NEGBPW             DEC      -15402.17  B-16                       
040925,000251: 05,3341           75420        DXITFIX            DEC*     -1.88275   E-5        B+12*           
040926,000252: 

End of include-file TVCMASSPROP.agc.  Parent file is MAIN.agc