Source Code
These source-code files are part of a reconstructed copy of LM131 revision 1,
the final release of the Apollo 13 Lunar Module (LM) Apollo Guidance Computer
(AGC) software.
The source reconstruction began with source code of Luminary 131 previously transcribed from a digitized copy of that program. A dump of the flight spare core rope memory module B5, part number 2010802-171, serial number RAY 411, was obtained. This module is the only module different between Luminary 131 and LM131 revision 1. The dump was disassembled and all changes were incorporated into these source files. Note that page numbers in the reconstructed code match those on the Luminary 131 printout, although the changed code would likely have changed page numbers for a real LM131 revision 1 listing. 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. |
029561,000002: ## Copyright: Public domain.
029562,000003: ## Filename: R31.agc
029563,000004: ## Purpose: A section of LM131 revision 1.
029564,000005: ## It is part of the reconstructed source code for the final
029565,000006: ## release of the flight software for the Lunar Module's (LM)
029566,000007: ## Apollo Guidance Computer (AGC) for Apollo 13. The code has
029567,000008: ## been reconstructed from a listing of Luminary 131 and a dump
029568,000009: ## of a core rope memory module B5, part number 2010802-171,
029569,000010: ## which is the only module different between LM131 revision 1
029570,000011: ## and Luminary 131. The executable generated from this source
029571,000012: ## has been verified against the module dump, so while the names,
029572,000013: ## comments, and ordering may not be exactly correct, the
029573,000014: ## resulting binary is.
029574,000015: ## Reference: pp. 705-710
029575,000016: ## Assembler: yaYUL
029576,000017: ## Contact: Ron Burkey <info@sandroid.org>.
029577,000018: ## Website: www.ibiblio.org/apollo/index.html
029578,000019: ## Mod history: 2022-10-28 MAS Created from Luminary 131.
029579,000020:
Page 705 |
029581,000022: 40,3737 BANK 40
029582,000023: 40,2000 SETLOC R31LOC
029583,000024: 40,2000 BANK
029584,000025:
029585,000026: 40,3737 COUNT* $$/R31
029586,000027:
029587,000028: 40,3737 35015 R31CALL CAF PRIO3
029588,000029: 40,3740 05105 TC FINDVAC
029589,000030: 40,3741 E7,1470 EBANK= SUBEXIT
029590,000031: 40,3741 03121 76067 2CADR V83CALL
029591,000032:
029592,000033: 40,3743 05221 DSPDELAY TC FIXDELAY
029593,000034: 40,3744 00144 DEC 100 B-14
029594,000035: 40,3745 31043 CA EXTVBACT
029595,000036: 40,3746 74740 MASK BIT12
029596,000037: 40,3747 00006 EXTEND
029597,000038: 40,3750 13743 BZF DSPDELAY
029598,000039:
029599,000040: 40,3751 35017 CAF PRIO5
029600,000041: 40,3752 05072 TC NOVAC
029601,000042: 40,3753 E7,1611 EBANK= TSTRT
029602,000043: 40,3753 03113 76067 2CADR DISPN5X
029603,000044:
029604,000045: 40,3755 15261 TCF TASKOVER
029605,000046:
029606,000047: 37,3113 BANK 37
029607,000048: 37,2000 SETLOC R31
029608,000049: 37,2000 BANK
029609,000050: 37,3113 COUNT* $$/R31
029610,000051:
029611,000052: 37,3113 33407 DISPN5X CAF V16N54
029612,000053: 37,3114 04616 TC BANKCALL
029613,000054: 37,3115 20334 CADR GOMARKF
029614,000055: 37,3116 05563 TC B5OFF
029615,000056: 37,3117 05563 TC B5OFF
029616,000057: 37,3120 13113 TCF DISPN5X
029617,000058:
029618,000059: 37,3121 40103 V83CALL CS FLAGWRD7 # TEST AVERAGE G FLAG
029619,000060: 37,3122 74747 MASK AVEGFBIT
029620,000061: 37,3123 00006 EXTEND
029621,000062: 37,3124 13377 BZF MUNG? # ON - TEST MUNFLAG
029622,000063:
029623,000064: 37,3125 40104 CS FLAGWRD8
029624,000065: 37,3126 74744 MASK SURFFBIT
029625,000066: 37,3127 00006 EXTEND
029626,000067: 37,3130 13403 BZF ONEBASE # ON SURFACE - BYPASS LEMPREC
029627,000068:
029628,000069: 37,3131 06042 TC INTPRET # EXTRAPOLATE BOTH STATE VECTORS
029629,000070: 37,3132 77634 RTB
Page 706 |
029631,000072: 37,3133 21574 LOADTIME
029632,000073: 37,3134 34041 STCALL TDEC1
029633,000074: 37,3135 27056 LEMPREC # PRECISION BASE VECTOR FOR LM
029634,000075: 37,3136 77775 VLOAD
029635,000076: 37,3137 00017 RATT1
029636,000077: 37,3140 26170 STOVL BASETHP
029637,000078: 37,3141 00025 VATT1
029638,000079: 37,3142 16105 STODL BASETHV
029639,000080: 37,3143 00015 TAT
029640,000081: 37,3144 02114 DOCMBASE STORE BASETIME # PRECISION BASE VECTOR FOR CM
029641,000082: 37,3145 34041 STCALL TDEC1
029642,000083: 37,3146 27042 CSMPREC
029643,000084: 37,3147 77775 VLOAD
029644,000085: 37,3150 00017 RATT1
029645,000086: 37,3151 26140 STOVL BASEOTP
029646,000087: 37,3152 00025 VATT1
029647,000088: 37,3153 02120 STORE BASEOTV
029648,000089: 37,3154 77776 EXIT
029649,000090:
029650,000091: 37,3155 40103 REV83 CS FLAGWRD7
029651,000092: 37,3156 74747 MASK AVEGFBIT
029652,000093: 37,3157 00006 EXTEND
029653,000094: 37,3160 13326 BZF GETRVN # IF AVEGFLAG SET, USE RN,VN
029654,000095:
029655,000096: 37,3161 40104 CS FLAGWRD8
029656,000097: 37,3162 74744 MASK SURFFBIT
029657,000098: 37,3163 00006 EXTEND
029658,000099: 37,3164 13370 BZF R31SURF # IF ON SURFACE, USE LEMAREC
029659,000100:
029660,000101: 37,3165 06042 TC INTPRET # DO CONIC EXTRAPOLATION FOR BOTH VEHICLES
029661,000102: 37,3166 77634 RTB
029662,000103: 37,3167 21574 LOADTIME
029663,000104: 37,3170 34041 STCALL TDEC1
029664,000105: 37,3171 27410 INTSTALL
029665,000106: 37,3172 43175 VLOAD CLEAR
029666,000107: 37,3173 02170 BASETHP
029667,000108: 37,3174 00263 MOONFLAG
029668,000109: 37,3175 25535 STOVL RCV
029669,000110: 37,3176 02105 BASETHV
029670,000111: 37,3177 15543 STODL VCV
029671,000112: 37,3200 02114 BASETIME
029672,000113: 37,3201 43014 BOF SET # GET APPROPRIATE MOONFLAG SETTING
029673,000114: 37,3202 04344 MOONTHIS
029674,000115: 37,3203 77205 +2
029675,000116: 37,3204 00063 MOONFLAG
029676,000117: 37,3205 77614 SET
029677,000118: 37,3206 01473 INTYPFLG # CONIC EXTRAP.
029678,000119: 37,3207 35517 STCALL TET
029679,000120: 37,3210 27106 INTEGRVS # INTEGRATION --- AT LAST ---
029680,000121: 37,3211 77775 OTHCONIC VLOAD
Page 707 |
029682,000123: 37,3212 00001 RATT
029683,000124: 37,3213 26207 STOVL RONE
029684,000125: 37,3214 00007 VATT
029685,000126: 37,3215 36215 STCALL VONE # GET SET FOR CONIC EXTRAP., OTHER.
029686,000127: 37,3216 27410 INTSTALL
029687,000128: 37,3217 71214 SET DLOAD
029688,000129: 37,3220 01473 INTYPFLG
029689,000130: 37,3221 00015 TAT
029690,000131: 37,3222 00041 OTHINT STORE TDEC1
029691,000132: 37,3223 43175 VLOAD CLEAR
029692,000133: 37,3224 02140 BASEOTP
029693,000134: 37,3225 00263 MOONFLAG
029694,000135: 37,3226 25535 STOVL RCV
029695,000136: 37,3227 02120 BASEOTV
029696,000137: 37,3230 15543 STODL VCV
029697,000138: 37,3231 02114 BASETIME
029698,000139: 37,3232 43014 BOF SET
029699,000140: 37,3233 04344 MOONTHIS
029700,000141: 37,3234 77236 +2
029701,000142: 37,3235 00063 MOONFLAG
029702,000143: 37,3236 35517 STCALL TET
029703,000144: 37,3237 27106 INTEGRVS
029704,000145: 37,3240 52375 COMPDISP VLOAD VSU
029705,000146: 37,3241 00001 RATT
029706,000147: 37,3242 02207 RONE
029707,000148: 37,3243 65234 RTB PDDL
029708,000149: 37,3244 21725 NORMUNX1 # UNIT(RANGE) TO PD 0-5
029709,000150: 37,3245 00045 36D
029710,000151: 37,3246 77657 SL* # RESCALE AFTER NORMUNIT
029711,000152: 37,3247 20201 0,1
029712,000153: 37,3250 26201 STOVL RANGE # SCALED 2(29)M
029713,000154: 37,3251 00007 VATT
029714,000155: 37,3252 50251 VSU DOT # (VCM-VLM).UNIT(LOS), PD=0
029715,000156: 37,3253 02215 VONE
029716,000157: 37,3254 77752 SL1 # SCALED 2(7)M/CS
029717,000158: 37,3255 26203 STOVL RRATE
029718,000159: 37,3256 02207 RONE
029719,000160: 37,3257 63256 UNIT PDVL # UNIT(R) TO PD 0-5
029720,000161: 37,3260 06516 UNITZ
029721,000162: 37,3261 77624 CALL
029722,000163: 37,3262 47663 CDU*NBSM
029723,000164: 37,3263 41505 VXM PUSH # UNIT(Z)/4 TO PD 6-11
029724,000165: 37,3264 01734 REFSMMAT
029725,000166: 37,3265 72431 VPROJ VSL2 # UNIT(P)=UNIT(UZ-(UZ)PROJ(UR))
029726,000167: 37,3266 00001 0D
029727,000168: 37,3267 53445 BVSU UNIT
029728,000169: 37,3270 00007 6D
029729,000170: 37,3271 47315 PDVL VXV # UNIT(P) TO PD 12-17
029730,000171: 37,3272 00001 0D # UNIT(RL)
029731,000172: 37,3273 02215 VONE
Page 708 |
029733,000174: 37,3274 50235 VXV DOT # (UR * VL) * UR . U(P)
029734,000175: 37,3275 00001 0D
029735,000176: 37,3276 00015 12D
029736,000177: 37,3277 77715 PDVL # SIGN TO 12-13, LOAD U(P)
029737,000178: 37,3300 75241 DOT SIGN
029738,000179: 37,3301 00007 6D
029739,000180: 37,3302 00015 12D
029740,000181: 37,3303 65512 SL2 ACOS # ARCCOS(UP.UZ(SIGN))
029741,000182: 37,3304 26205 STOVL RTHETA
029742,000183: 37,3305 00001 0D
029743,000184: 37,3306 51041 DOT BPL # IF UR.UZ NEG,
029744,000185: 37,3307 00007 6D # RTHETA = 1 - RTHETA
029745,000186: 37,3310 77315 +5
029746,000187: 37,3311 45345 DLOAD DSU
029747,000188: 37,3312 06532 DPPOSMAX
029748,000189: 37,3313 02205 RTHETA
029749,000190: 37,3314 02205 STORE RTHETA
029750,000191: 37,3315 77776 EXIT
029751,000192:
029752,000193: 37,3316 34747 CA BIT5
029753,000194: 37,3317 71043 MASK EXTVBACT
029754,000195: 37,3320 00006 EXTEND # IF ANSWERED,
029755,000196: 37,3321 15472 BZF ENDEXT # TERMINATE
029756,000197:
029757,000198: 37,3322 41043 CS EXTVBACT
029758,000199: 37,3323 74740 MASK BIT12
029759,000200: 37,3324 27043 ADS EXTVBACT # SET BIT 12
029760,000201: 37,3325 13155 TCF REV83 # AND START AGAIN.
029761,000202:
029762,000203: 37,3326 37713 GETRVN CA PRIO22 # INHIBIT SERVICER
029763,000204: 37,3327 05146 TC PRIOCHNG
029764,000205: 37,3330 06042 TC INTPRET
029765,000206: 37,3331 40375 VLOAD SETPD
029766,000207: 37,3332 01220 RN # LM STATE VECTOR IN RN,VN
029767,000208: 37,3333 00001 0
029768,000209: 37,3334 26207 STOVL RONE
029769,000210: 37,3335 01226 VN
029770,000211: 37,3336 26215 STOVL VONE # LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET
029771,000212: 37,3337 01726 V(CSM) # (TO INSURE TIME COMPATABILITY)
029772,000213: 37,3340 65315 PDVL PDDL
029773,000214: 37,3341 01720 R(CSM)
029774,000215: 37,3342 01234 PIPTIME
029775,000216: 37,3343 77776 EXIT
029776,000217: 37,3344 35015 CA PRIO3
029777,000218: 37,3345 05146 TC PRIOCHNG
029778,000219: 37,3346 06042 TC INTPRET
029779,000220: 37,3347 77214 BOFF VLOAD
029780,000221: 37,3350 03347 MUNFLAG
029781,000222: 37,3351 77363 GETRVN2 # IF MUNFLAG RESET, DO CM DELTA PRECISION
Page 709 |
029783,000224: 37,3352 60505 VXM VSR4 # CHANGE TO REFERENCE SYSTEM AND RESCALE
029784,000225: 37,3353 01734 REFSMMAT
029785,000226: 37,3354 77715 PDVL # R TO PD 0-5
029786,000227: 37,3355 76505 VXM VSL1
029787,000228: 37,3356 01734 REFSMMAT
029788,000229: 37,3357 40206 PUSH SETPD # V TO PD 5-11
029789,000230: 37,3360 00001 0
029790,000231: 37,3361 77650 GOTO
029791,000232: 37,3362 77240 COMPDISP
029792,000233:
029793,000234: 37,3363 77624 GETRVN2 CALL
029794,000235: 37,3364 27410 INTSTALL
029795,000236: 37,3365 52014 CLEAR GOTO
029796,000237: 37,3366 01673 INTYPFLG # PREC EXTRAP FOR OTHER
029797,000238: 37,3367 77222 OTHINT
029798,000239: 37,3370 06042 R31SURF TC INTPRET
029799,000240: 37,3371 77634 RTB # LM IS ON SURFACE, SO PRECISION
029800,000241: 37,3372 21574 LOADTIME # INTEGRATION USES PLANETARY INERTIAL
029801,000242: 37,3373 34041 STCALL TDEC1 # ORIENTATION SUBROUTINE
029802,000243: 37,3374 27056 LEMPREC
029803,000244: 37,3375 77650 GOTO # DO CSM CONIC
029804,000245: 37,3376 77211 OTHCONIC
029805,000246: 37,3377 40102 MUNG? CS FLAGWRD6
029806,000247: 37,3400 74744 MASK MUNFLBIT
029807,000248: 37,3401 00006 EXTEND
029808,000249: 37,3402 13326 BZF GETRVN # IF MUNFLAG SET, CSM BASE NOT NEEDED
029809,000250:
029810,000251: 37,3403 06042 ONEBASE TC INTPRET # GET CSM BASE VECTOR
029811,000252: 37,3404 52034 RTB GOTO
029812,000253: 37,3405 21574 LOADTIME
029813,000254: 37,3406 77144 DOCMBASE
029814,000255:
029815,000256: 37,3407 04066 V16N54 VN 1654
029816,000257:
Page 710
The original program listing had no source lines on this page. |
029819,000260:
End of include-file R31.agc. Parent file is MAIN.agc