Source Code

This source code is very close to the Apollo Guidance Computer software for the Apollo 13 Lunar module. This revision of the Luminary 131 program is from December of 1969, whereas there was a later revision in January of 1970, and still another revision in February, which is the code that flew on the mission. As far as this transcription is concerned, it was originally from a copy made in 1991 of a printout from the collection of AGC developer Don Eyles for collector David Craig. It was subsequently scanned by Gary Neff, reprocessed for online presentation at the now-discontinued History of Recent Science and Technology (HRST) website of MIT's Dibner Institute (the full-quality scans being discarded in the process), and finally transcribed by Ron Burkey for the Virtual AGC Project. Although a high-quality replacement scan for a completely illegible page was later provided by Gary Neff, the reduced legibility of the reprocessed HRST posting nevertheless caused many errors to be introduced into the transcription. Accordingly, a second scan of the same physical printout was made in 2017 for the Virtual AGC Project's collection at the Internet Archive, and used to correct the transcription errors. All of the scanned materials mentioned, as well as other Luminary 131 related material, are available online. Don Eyles apprently made additional hand-written notes in printout between 1991 and 2017, so the two scans are not identical in that respect. The page-headings in the printout read, in part:
	GAP:  ASSEMBLE REVISION 131 OF AGC PROGRAM LUMINARY BY NASA 2021112-091
	17:53 DEC. 19, 1969
Note that the date is the date the printout was made, not the date on which the program revision was released, although these happen to be very close together.

029747,000002:                                                                                                  ## Copyright:   Public domain.
029748,000003:                                                                                                  ## Filename:    R31.agc
029749,000004:                                                                                                  ## Purpose:     A section of Luminary 1C, revision 131.
029750,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
029751,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 13.
029752,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
029753,000008:                                                                                                  ##              that the code format has been changed to conform to the
029754,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
029755,000010:                                                                                                  ##              original YUL assembler.
029756,000011:                                                                                                  ## Reference:   pp. 705-710
029757,000012:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
029758,000013:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
029759,000014:                                                                                                  ## Mod history: 05/24/03 RSB.   Began transcribing.
029760,000015:                                                                                                  ##              05/14/05 RSB    Corrected website reference above.
029761,000016:                                                                                                  ##              2017-01-06 RSB  Page numbers now agree with those on the
029762,000017:                                                                                                  ##                              original hardcopy, as opposed to the PDF page
029763,000018:                                                                                                  ##                              numbers in 1701.pdf.
029764,000019:                                                                                                  ##              2017-02-24 RSB  Proofed comment text using octopus/ProoferComments.
029765,000020:                                                                                                  ##              2017-03-09 RSB  Comment-text fixes noted in proofing Luminary 116.
029766,000021: 

Page 705

029768,000023: 40,3737                                           BANK     40                                    
029769,000024: 40,2000                                           SETLOC   R31LOC                                
029770,000025: 40,2000                                           BANK                                           
029771,000026: 
029772,000027: 40,3737                                           COUNT*   $$/R31                                
029773,000028: 
029774,000029: 40,3737           35015        R31CALL            CAF      PRIO3                                 
029775,000030: 40,3740           05105                           TC       FINDVAC                               
029776,000031: 40,3741  E7,1470                                  EBANK=   SUBEXIT                               
029777,000032: 40,3741           03121 76067                     2CADR    V83CALL                               
029778,000033: 
029779,000034: 40,3743           05221        DSPDELAY           TC       FIXDELAY                              
029780,000035: 40,3744           00144                           DEC      100        B-14                       
029781,000036: 40,3745           31043                           CA       EXTVBACT                              
029782,000037: 40,3746           74740                           MASK     BIT12                                 
029783,000038: 40,3747           00006                           EXTEND                                         
029784,000039: 40,3750           13743                           BZF      DSPDELAY                              
029785,000040: 
029786,000041: 40,3751           35017                           CAF      PRIO5                                 
029787,000042: 40,3752           05072                           TC       NOVAC                                 
029788,000043: 40,3753  E7,1611                                  EBANK=   TSTRT                                 
029789,000044: 40,3753           03113 76067                     2CADR    DISPN5X                               
029790,000045: 
029791,000046: 40,3755           15261                           TCF      TASKOVER                              
029792,000047: 
029793,000048: 37,3113                                           BANK     37                                    
029794,000049: 37,2000                                           SETLOC   R31                                   
029795,000050: 37,2000                                           BANK                                           
029796,000051: 37,3113                                           COUNT*   $$/R31                                
029797,000052: 
029798,000053: 37,3113           33407        DISPN5X            CAF      V16N54                                
029799,000054: 37,3114           04616                           TC       BANKCALL                              
029800,000055: 37,3115           20334                           CADR     GOMARKF                               
029801,000056: 37,3116           05563                           TC       B5OFF                                 
029802,000057: 37,3117           05563                           TC       B5OFF                                 
029803,000058: 37,3120           13113                           TCF      DISPN5X                               
029804,000059: 
029805,000060: 37,3121           40103        V83CALL            CS       FLAGWRD7                              #  TEST AVERAGE G FLAG
029806,000061: 37,3122           74747                           MASK     AVEGFBIT                              
029807,000062: 37,3123           00006                           EXTEND                                         
029808,000063: 37,3124           13377                           BZF      MUNG?                                 #  ON - TEST MUNFLAG
029809,000064: 
029810,000065: 37,3125           40104                           CS       FLAGWRD8                              
029811,000066: 37,3126           74744                           MASK     SURFFBIT                              
029812,000067: 37,3127           00006                           EXTEND                                         
029813,000068: 37,3130           13403                           BZF      ONEBASE                               #  ON SURFACE - BYPASS LEMPREC
029814,000069: 
029815,000070: 37,3131           06042                           TC       INTPRET                               #  EXTRAPOLATE BOTH STATE VECTORS
029816,000071: 37,3132           77634                           RTB                                            

Page 706

029818,000073: 37,3133           21574                                    LOADTIME                              
029819,000074: 37,3134           34041                           STCALL   TDEC1                                 
029820,000075: 37,3135           27056                                    LEMPREC                               #  PRECISION BASE VECTOR FOR LM
029821,000076: 37,3136           77775                           VLOAD                                          
029822,000077: 37,3137           00017                                    RATT1                                 
029823,000078: 37,3140           26170                           STOVL    BASETHP                               
029824,000079: 37,3141           00025                                    VATT1                                 
029825,000080: 37,3142           16105                           STODL    BASETHV                               
029826,000081: 37,3143           00015                                    TAT                                   
029827,000082: 37,3144           02114        DOCMBASE           STORE    BASETIME                              #  PRECISION BASE VECTOR FOR CM
029828,000083: 37,3145           34041                           STCALL   TDEC1                                 
029829,000084: 37,3146           27042                                    CSMPREC                               
029830,000085: 37,3147           77775                           VLOAD                                          
029831,000086: 37,3150           00017                                    RATT1                                 
029832,000087: 37,3151           26140                           STOVL    BASEOTP                               
029833,000088: 37,3152           00025                                    VATT1                                 
029834,000089: 37,3153           02120                           STORE    BASEOTV                               
029835,000090: 37,3154           77776                           EXIT                                           
029836,000091: 
029837,000092: 37,3155           40103        REV83              CS       FLAGWRD7                              
029838,000093: 37,3156           74747                           MASK     AVEGFBIT                              
029839,000094: 37,3157           00006                           EXTEND                                         
029840,000095: 37,3160           13326                           BZF      GETRVN                                #  IF AVEGFLAG SET, USE RN,VN
029841,000096: 
029842,000097: 37,3161           40104                           CS       FLAGWRD8                              
029843,000098: 37,3162           74744                           MASK     SURFFBIT                              
029844,000099: 37,3163           00006                           EXTEND                                         
029845,000100: 37,3164           13370                           BZF      R31SURF                               #  IF ON SURFACE, USE LEMAREC
029846,000101: 
029847,000102: 37,3165           06042                           TC       INTPRET                               #  DO CONIC EXTRAPOLATION FOR BOTH VEHICLES
029848,000103: 37,3166           77634                           RTB                                            
029849,000104: 37,3167           21574                                    LOADTIME                              
029850,000105: 37,3170           34041                           STCALL   TDEC1                                 
029851,000106: 37,3171           27410                                    INTSTALL                              
029852,000107: 37,3172           43175                           VLOAD    CLEAR                                 
029853,000108: 37,3173           02170                                    BASETHP                               
029854,000109: 37,3174           00263                                    MOONFLAG                              
029855,000110: 37,3175           25535                           STOVL    RCV                                   
029856,000111: 37,3176           02105                                    BASETHV                               
029857,000112: 37,3177           15543                           STODL    VCV                                   
029858,000113: 37,3200           02114                                    BASETIME                              
029859,000114: 37,3201           43014                           BOF      SET                                   #  GET APPROPRIATE MOONFLAG SETTING
029860,000115: 37,3202           04344                                    MOONTHIS                              
029861,000116: 37,3203           77205                                    +2                                    
029862,000117: 37,3204           00063                                    MOONFLAG                              
029863,000118: 37,3205           77614                           SET                                            
029864,000119: 37,3206           01473                                    INTYPFLG                              #  CONIC EXTRAP.
029865,000120: 37,3207           35517                           STCALL   TET                                   
029866,000121: 37,3210           27106                                    INTEGRVS                              #  INTEGRATION --- AT LAST ---
029867,000122: 37,3211           77775        OTHCONIC           VLOAD                                          

Page 707

029869,000124: 37,3212           00001                                    RATT                                  
029870,000125: 37,3213           26207                           STOVL    RONE                                  
029871,000126: 37,3214           00007                                    VATT                                  
029872,000127: 37,3215           36215                           STCALL   VONE                                  #  GET SET FOR CONIC EXTRAP., OTHER.
029873,000128: 37,3216           27410                                    INTSTALL                              
029874,000129: 37,3217           71214                           SET      DLOAD                                 
029875,000130: 37,3220           01473                                    INTYPFLG                              
029876,000131: 37,3221           00015                                    TAT                                   
029877,000132: 37,3222           00041        OTHINT             STORE    TDEC1                                 
029878,000133: 37,3223           43175                           VLOAD    CLEAR                                 
029879,000134: 37,3224           02140                                    BASEOTP                               
029880,000135: 37,3225           00263                                    MOONFLAG                              
029881,000136: 37,3226           25535                           STOVL    RCV                                   
029882,000137: 37,3227           02120                                    BASEOTV                               
029883,000138: 37,3230           15543                           STODL    VCV                                   
029884,000139: 37,3231           02114                                    BASETIME                              
029885,000140: 37,3232           43014                           BOF      SET                                   
029886,000141: 37,3233           04344                                    MOONTHIS                              
029887,000142: 37,3234           77236                                    +2                                    
029888,000143: 37,3235           00063                                    MOONFLAG                              
029889,000144: 37,3236           35517                           STCALL   TET                                   
029890,000145: 37,3237           27106                                    INTEGRVS                              
029891,000146: 37,3240           52375        COMPDISP           VLOAD    VSU                                   
029892,000147: 37,3241           00001                                    RATT                                  
029893,000148: 37,3242           02207                                    RONE                                  
029894,000149: 37,3243           65234                           RTB      PDDL                                  
029895,000150: 37,3244           21725                                    NORMUNX1                              #  UNIT(RANGE) TO PD 0-5
029896,000151: 37,3245           00045                                    36D                                   
029897,000152: 37,3246           77657                           SL*                                            #  RESCALE AFTER NORMUNIT
029898,000153: 37,3247           20201                                    0,1                                   
029899,000154: 37,3250           26201                           STOVL    RANGE                                 #  SCALED 2(29)M
029900,000155: 37,3251           00007                                    VATT                                  
029901,000156: 37,3252           50251                           VSU      DOT                                   #  (VCM-VLM).UNIT(LOS), PD=0
029902,000157: 37,3253           02215                                    VONE                                  
029903,000158: 37,3254           77752                           SL1                                            #  SCALED 2(7)M/CS
029904,000159: 37,3255           26203                           STOVL    RRATE                                 
029905,000160: 37,3256           02207                                    RONE                                  
029906,000161: 37,3257           63256                           UNIT     PDVL                                  #  UNIT(R) TO PD 0-5
029907,000162: 37,3260           06516                                    UNITZ                                 
029908,000163: 37,3261           77624                           CALL                                           
029909,000164: 37,3262           47663                                    CDU*NBSM                              
029910,000165: 37,3263           41505                           VXM      PUSH                                  #  UNIT(Z)/4 TO PD 6-11
029911,000166: 37,3264           01734                                    REFSMMAT                              
029912,000167: 37,3265           72431                           VPROJ    VSL2                                  #  UNIT(P)=UNIT(UZ-(UZ)PROJ(UR))
029913,000168: 37,3266           00001                                    0D                                    
029914,000169: 37,3267           53445                           BVSU     UNIT                                  
029915,000170: 37,3270           00007                                    6D                                    
029916,000171: 37,3271           47315                           PDVL     VXV                                   #  UNIT(P) TO PD 12-17
029917,000172: 37,3272           00001                                    0D                                    #  UNIT(RL)
029918,000173: 37,3273           02215                                    VONE                                  

Page 708

029920,000175: 37,3274           50235                           VXV      DOT                                   #  (UR * VL) * UR . U(P)
029921,000176: 37,3275           00001                                    0D                                    
029922,000177: 37,3276           00015                                    12D                                   
029923,000178: 37,3277           77715                           PDVL                                           #  SIGN TO 12-13, LOAD U(P)
029924,000179: 37,3300           75241                           DOT      SIGN                                  
029925,000180: 37,3301           00007                                    6D                                    
029926,000181: 37,3302           00015                                    12D                                   
029927,000182: 37,3303           65512                           SL2      ACOS                                  #  ARCCOS(UP.UZ(SIGN))
029928,000183: 37,3304           26205                           STOVL    RTHETA                                
029929,000184: 37,3305           00001                                    0D                                    
029930,000185: 37,3306           51041                           DOT      BPL                                   #  IF UR.UZ NEG,
029931,000186: 37,3307           00007                                    6D                                    #        RTHETA = 1 - RTHETA
029932,000187: 37,3310           77315                                    +5                                    
029933,000188: 37,3311           45345                           DLOAD    DSU                                   
029934,000189: 37,3312           06532                                    DPPOSMAX                              
029935,000190: 37,3313           02205                                    RTHETA                                
029936,000191: 37,3314           02205                           STORE    RTHETA                                
029937,000192: 37,3315           77776                           EXIT                                           
029938,000193: 
029939,000194: 37,3316           34747                           CA       BIT5                                  
029940,000195: 37,3317           71043                           MASK     EXTVBACT                              
029941,000196: 37,3320           00006                           EXTEND                                         #  IF ANSWERED,
029942,000197: 37,3321           15472                           BZF      ENDEXT                                #        TERMINATE
029943,000198: 
029944,000199: 37,3322           41043                           CS       EXTVBACT                              
029945,000200: 37,3323           74740                           MASK     BIT12                                 
029946,000201: 37,3324           27043                           ADS      EXTVBACT                              #  SET BIT 12
029947,000202: 37,3325           13155                           TCF      REV83                                 #  AND START AGAIN.
029948,000203: 
029949,000204: 37,3326           37713        GETRVN             CA       PRIO22                                #  INHIBIT SERVICER
029950,000205: 37,3327           05146                           TC       PRIOCHNG                              
029951,000206: 37,3330           06042                           TC       INTPRET                               
029952,000207: 37,3331           40375                           VLOAD    SETPD                                 
029953,000208: 37,3332           01220                                    RN                                    #  LM STATE VECTOR IN RN,VN
029954,000209: 37,3333           00001                                    0                                     
029955,000210: 37,3334           26207                           STOVL    RONE                                  
029956,000211: 37,3335           01226                                    VN                                    
029957,000212: 37,3336           26215                           STOVL    VONE                                  #  LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET
029958,000213: 37,3337           01726                                    V(CSM)                                #  (TO INSURE TIME COMPATABILITY)
029959,000214: 37,3340           65315                           PDVL     PDDL                                  
029960,000215: 37,3341           01720                                    R(CSM)                                
029961,000216: 37,3342           01234                                    PIPTIME                               
029962,000217: 37,3343           77776                           EXIT                                           
029963,000218: 37,3344           35015                           CA       PRIO3                                 
029964,000219: 37,3345           05146                           TC       PRIOCHNG                              
029965,000220: 37,3346           06042                           TC       INTPRET                               
029966,000221: 37,3347           77214                           BOFF     VLOAD                                 
029967,000222: 37,3350           03347                                    MUNFLAG                               
029968,000223: 37,3351           77363                                    GETRVN2                               #  IF MUNFLAG RESET, DO CM DELTA PRECISION

Page 709

029970,000225: 37,3352           60505                           VXM      VSR4                                  #  CHANGE TO REFERENCE SYSTEM AND RESCALE
029971,000226: 37,3353           01734                                    REFSMMAT                              
029972,000227: 37,3354           77715                           PDVL                                           #  R TO PD 0-5
029973,000228: 37,3355           76505                           VXM      VSL1                                  
029974,000229: 37,3356           01734                                    REFSMMAT                              
029975,000230: 37,3357           40206                           PUSH     SETPD                                 #  V TO PD 5-11
029976,000231: 37,3360           00001                                    0                                     
029977,000232: 37,3361           77650                           GOTO                                           
029978,000233: 37,3362           77240                                    COMPDISP                              
029979,000234: 
029980,000235: 37,3363           77624        GETRVN2            CALL                                           
029981,000236: 37,3364           27410                                    INTSTALL                              
029982,000237: 37,3365           52014                           CLEAR    GOTO                                  
029983,000238: 37,3366           01673                                    INTYPFLG                              #  PREC EXTRAP FOR OTHER
029984,000239: 37,3367           77222                                    OTHINT                                
029985,000240: 37,3370           06042        R31SURF            TC       INTPRET                               
029986,000241: 37,3371           77634                           RTB                                            #  LM IS ON SURFACE, SO PRECISION
029987,000242: 37,3372           21574                                    LOADTIME                              #  INTEGRATION USES PLANETARY INERTIAL
029988,000243: 37,3373           34041                           STCALL   TDEC1                                 #  ORIENTATION SUBROUTINE
029989,000244: 37,3374           27056                                    LEMPREC                               
029990,000245: 37,3375           77650                           GOTO                                           #  DO CSM CONIC
029991,000246: 37,3376           77211                                    OTHCONIC                              
029992,000247: 37,3377           40102        MUNG?              CS       FLAGWRD6                              
029993,000248: 37,3400           74744                           MASK     MUNFLBIT                              
029994,000249: 37,3401           00006                           EXTEND                                         
029995,000250: 37,3402           13326                           BZF      GETRVN                                #  IF MUNFLAG SET, CSM BASE NOT NEEDED
029996,000251: 
029997,000252: 37,3403           06042        ONEBASE            TC       INTPRET                               #  GET CSM BASE VECTOR
029998,000253: 37,3404           52034                           RTB      GOTO                                  
029999,000254: 37,3405           21574                                    LOADTIME                              
030000,000255: 37,3406           77144                                    DOCMBASE                              
030001,000256: 
030002,000257: 37,3407           04066        V16N54             VN       1654                                  
030003,000258: 

Page 710
The original program listing had no source lines on this page.

030006,000261: 

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