Source Code
|
This is a reconstructed version of Luminary 130, the initial AGC program released
in November 1969 for the Apollo 13 LM. Three more releases
followed before the flown revision was finally manufactured in February 1970.
This reconstruction was created from a previous transcription of the original listing of Luminary 131, combined with Luminary memo #129 which describes the small difference between the Luminary 130 and 131. The reconstructed source code was verified by matching memory-bank checksums to those listed for Luminary 130 in drawing 2021152G. In this source code, program comments from the original (Luminary 131) code are prefixed with '#', while those added later by the Virtual AGC project are prefixed with '##'. |
029897,000002: ## Copyright: Public domain.
029898,000003: ## Filename: R31.agc
029899,000004: ## Purpose: A section of the reconstructed source code for Luminary 130.
029900,000005: ## This was the original program released for the Apollo 13 LM,
029901,000006: ## although several more revisions would follow. It has been
029902,000007: ## reconstructed from a listing of Luminary 131, from which it
029903,000008: ## differs on only two lines in P70-P71. The difference is
029904,000009: ## described in detail in Luminary memo #129, which was used
029905,000010: ## to perform the reconstruction. This file is intended to be a
029906,000011: ## faithful reconstruction, except that the code format has been
029907,000012: ## changed to conform to the requirements of the yaYUL assembler
029908,000013: ## rather than the original YUL assembler.
029909,000014: ## Reference: pp. 705-710
029910,000015: ## Contact: Ron Burkey <info@sandroid.org>.
029911,000016: ## Website: www.ibiblio.org/apollo/index.html
029912,000017: ## Mod history: 05/24/03 RSB. Began transcribing.
029913,000018: ## 05/14/05 RSB Corrected website reference above.
029914,000019: ## 2017-01-06 RSB Page numbers now agree with those on the
029915,000020: ## original hardcopy, as opposed to the PDF page
029916,000021: ## numbers in 1701.pdf.
029917,000022: ## 2017-02-24 RSB Proofed comment text using octopus/ProoferComments.
029918,000023: ## 2017-03-09 RSB Comment-text fixes noted in proofing Luminary 116.
029919,000024: ## 2018-09-04 MAS Copied from Luminary 131 for Luminary 130.
029920,000025:
|
Page 705 |
029922,000027: 40,3737 BANK 40
029923,000028: 40,2000 SETLOC R31LOC
029924,000029: 40,2000 BANK
029925,000030:
029926,000031: 40,3737 COUNT* $$/R31
029927,000032:
029928,000033: 40,3737 35015 R31CALL CAF PRIO3
029929,000034: 40,3740 05105 TC FINDVAC
029930,000035: 40,3741 E7,1470 EBANK= SUBEXIT
029931,000036: 40,3741 03121 76067 2CADR V83CALL
029932,000037:
029933,000038: 40,3743 05221 DSPDELAY TC FIXDELAY
029934,000039: 40,3744 00144 DEC 100 B-14
029935,000040: 40,3745 31043 CA EXTVBACT
029936,000041: 40,3746 74740 MASK BIT12
029937,000042: 40,3747 00006 EXTEND
029938,000043: 40,3750 13743 BZF DSPDELAY
029939,000044:
029940,000045: 40,3751 35017 CAF PRIO5
029941,000046: 40,3752 05072 TC NOVAC
029942,000047: 40,3753 E7,1611 EBANK= TSTRT
029943,000048: 40,3753 03113 76067 2CADR DISPN5X
029944,000049:
029945,000050: 40,3755 15261 TCF TASKOVER
029946,000051:
029947,000052: 37,3113 BANK 37
029948,000053: 37,2000 SETLOC R31
029949,000054: 37,2000 BANK
029950,000055: 37,3113 COUNT* $$/R31
029951,000056:
029952,000057: 37,3113 33407 DISPN5X CAF V16N54
029953,000058: 37,3114 04616 TC BANKCALL
029954,000059: 37,3115 20334 CADR GOMARKF
029955,000060: 37,3116 05563 TC B5OFF
029956,000061: 37,3117 05563 TC B5OFF
029957,000062: 37,3120 13113 TCF DISPN5X
029958,000063:
029959,000064: 37,3121 40103 V83CALL CS FLAGWRD7 # TEST AVERAGE G FLAG
029960,000065: 37,3122 74747 MASK AVEGFBIT
029961,000066: 37,3123 00006 EXTEND
029962,000067: 37,3124 13377 BZF MUNG? # ON - TEST MUNFLAG
029963,000068:
029964,000069: 37,3125 40104 CS FLAGWRD8
029965,000070: 37,3126 74744 MASK SURFFBIT
029966,000071: 37,3127 00006 EXTEND
029967,000072: 37,3130 13403 BZF ONEBASE # ON SURFACE - BYPASS LEMPREC
029968,000073:
029969,000074: 37,3131 06042 TC INTPRET # EXTRAPOLATE BOTH STATE VECTORS
029970,000075: 37,3132 77634 RTB
|
Page 706 |
029972,000077: 37,3133 21574 LOADTIME
029973,000078: 37,3134 34041 STCALL TDEC1
029974,000079: 37,3135 27056 LEMPREC # PRECISION BASE VECTOR FOR LM
029975,000080: 37,3136 77775 VLOAD
029976,000081: 37,3137 00017 RATT1
029977,000082: 37,3140 26170 STOVL BASETHP
029978,000083: 37,3141 00025 VATT1
029979,000084: 37,3142 16105 STODL BASETHV
029980,000085: 37,3143 00015 TAT
029981,000086: 37,3144 02114 DOCMBASE STORE BASETIME # PRECISION BASE VECTOR FOR CM
029982,000087: 37,3145 34041 STCALL TDEC1
029983,000088: 37,3146 27042 CSMPREC
029984,000089: 37,3147 77775 VLOAD
029985,000090: 37,3150 00017 RATT1
029986,000091: 37,3151 26140 STOVL BASEOTP
029987,000092: 37,3152 00025 VATT1
029988,000093: 37,3153 02120 STORE BASEOTV
029989,000094: 37,3154 77776 EXIT
029990,000095:
029991,000096: 37,3155 40103 REV83 CS FLAGWRD7
029992,000097: 37,3156 74747 MASK AVEGFBIT
029993,000098: 37,3157 00006 EXTEND
029994,000099: 37,3160 13326 BZF GETRVN # IF AVEGFLAG SET, USE RN,VN
029995,000100:
029996,000101: 37,3161 40104 CS FLAGWRD8
029997,000102: 37,3162 74744 MASK SURFFBIT
029998,000103: 37,3163 00006 EXTEND
029999,000104: 37,3164 13370 BZF R31SURF # IF ON SURFACE, USE LEMAREC
030000,000105:
030001,000106: 37,3165 06042 TC INTPRET # DO CONIC EXTRAPOLATION FOR BOTH VEHICLES
030002,000107: 37,3166 77634 RTB
030003,000108: 37,3167 21574 LOADTIME
030004,000109: 37,3170 34041 STCALL TDEC1
030005,000110: 37,3171 27410 INTSTALL
030006,000111: 37,3172 43175 VLOAD CLEAR
030007,000112: 37,3173 02170 BASETHP
030008,000113: 37,3174 00263 MOONFLAG
030009,000114: 37,3175 25535 STOVL RCV
030010,000115: 37,3176 02105 BASETHV
030011,000116: 37,3177 15543 STODL VCV
030012,000117: 37,3200 02114 BASETIME
030013,000118: 37,3201 43014 BOF SET # GET APPROPRIATE MOONFLAG SETTING
030014,000119: 37,3202 04344 MOONTHIS
030015,000120: 37,3203 77205 +2
030016,000121: 37,3204 00063 MOONFLAG
030017,000122: 37,3205 77614 SET
030018,000123: 37,3206 01473 INTYPFLG # CONIC EXTRAP.
030019,000124: 37,3207 35517 STCALL TET
030020,000125: 37,3210 27106 INTEGRVS # INTEGRATION --- AT LAST ---
030021,000126: 37,3211 77775 OTHCONIC VLOAD
|
Page 707 |
030023,000128: 37,3212 00001 RATT
030024,000129: 37,3213 26207 STOVL RONE
030025,000130: 37,3214 00007 VATT
030026,000131: 37,3215 36215 STCALL VONE # GET SET FOR CONIC EXTRAP., OTHER.
030027,000132: 37,3216 27410 INTSTALL
030028,000133: 37,3217 71214 SET DLOAD
030029,000134: 37,3220 01473 INTYPFLG
030030,000135: 37,3221 00015 TAT
030031,000136: 37,3222 00041 OTHINT STORE TDEC1
030032,000137: 37,3223 43175 VLOAD CLEAR
030033,000138: 37,3224 02140 BASEOTP
030034,000139: 37,3225 00263 MOONFLAG
030035,000140: 37,3226 25535 STOVL RCV
030036,000141: 37,3227 02120 BASEOTV
030037,000142: 37,3230 15543 STODL VCV
030038,000143: 37,3231 02114 BASETIME
030039,000144: 37,3232 43014 BOF SET
030040,000145: 37,3233 04344 MOONTHIS
030041,000146: 37,3234 77236 +2
030042,000147: 37,3235 00063 MOONFLAG
030043,000148: 37,3236 35517 STCALL TET
030044,000149: 37,3237 27106 INTEGRVS
030045,000150: 37,3240 52375 COMPDISP VLOAD VSU
030046,000151: 37,3241 00001 RATT
030047,000152: 37,3242 02207 RONE
030048,000153: 37,3243 65234 RTB PDDL
030049,000154: 37,3244 21725 NORMUNX1 # UNIT(RANGE) TO PD 0-5
030050,000155: 37,3245 00045 36D
030051,000156: 37,3246 77657 SL* # RESCALE AFTER NORMUNIT
030052,000157: 37,3247 20201 0,1
030053,000158: 37,3250 26201 STOVL RANGE # SCALED 2(29)M
030054,000159: 37,3251 00007 VATT
030055,000160: 37,3252 50251 VSU DOT # (VCM-VLM).UNIT(LOS), PD=0
030056,000161: 37,3253 02215 VONE
030057,000162: 37,3254 77752 SL1 # SCALED 2(7)M/CS
030058,000163: 37,3255 26203 STOVL RRATE
030059,000164: 37,3256 02207 RONE
030060,000165: 37,3257 63256 UNIT PDVL # UNIT(R) TO PD 0-5
030061,000166: 37,3260 06516 UNITZ
030062,000167: 37,3261 77624 CALL
030063,000168: 37,3262 47663 CDU*NBSM
030064,000169: 37,3263 41505 VXM PUSH # UNIT(Z)/4 TO PD 6-11
030065,000170: 37,3264 01734 REFSMMAT
030066,000171: 37,3265 72431 VPROJ VSL2 # UNIT(P)=UNIT(UZ-(UZ)PROJ(UR))
030067,000172: 37,3266 00001 0D
030068,000173: 37,3267 53445 BVSU UNIT
030069,000174: 37,3270 00007 6D
030070,000175: 37,3271 47315 PDVL VXV # UNIT(P) TO PD 12-17
030071,000176: 37,3272 00001 0D # UNIT(RL)
030072,000177: 37,3273 02215 VONE
|
Page 708 |
030074,000179: 37,3274 50235 VXV DOT # (UR * VL) * UR . U(P)
030075,000180: 37,3275 00001 0D
030076,000181: 37,3276 00015 12D
030077,000182: 37,3277 77715 PDVL # SIGN TO 12-13, LOAD U(P)
030078,000183: 37,3300 75241 DOT SIGN
030079,000184: 37,3301 00007 6D
030080,000185: 37,3302 00015 12D
030081,000186: 37,3303 65512 SL2 ACOS # ARCCOS(UP.UZ(SIGN))
030082,000187: 37,3304 26205 STOVL RTHETA
030083,000188: 37,3305 00001 0D
030084,000189: 37,3306 51041 DOT BPL # IF UR.UZ NEG,
030085,000190: 37,3307 00007 6D # RTHETA = 1 - RTHETA
030086,000191: 37,3310 77315 +5
030087,000192: 37,3311 45345 DLOAD DSU
030088,000193: 37,3312 06532 DPPOSMAX
030089,000194: 37,3313 02205 RTHETA
030090,000195: 37,3314 02205 STORE RTHETA
030091,000196: 37,3315 77776 EXIT
030092,000197:
030093,000198: 37,3316 34747 CA BIT5
030094,000199: 37,3317 71043 MASK EXTVBACT
030095,000200: 37,3320 00006 EXTEND # IF ANSWERED,
030096,000201: 37,3321 15472 BZF ENDEXT # TERMINATE
030097,000202:
030098,000203: 37,3322 41043 CS EXTVBACT
030099,000204: 37,3323 74740 MASK BIT12
030100,000205: 37,3324 27043 ADS EXTVBACT # SET BIT 12
030101,000206: 37,3325 13155 TCF REV83 # AND START AGAIN.
030102,000207:
030103,000208: 37,3326 37713 GETRVN CA PRIO22 # INHIBIT SERVICER
030104,000209: 37,3327 05146 TC PRIOCHNG
030105,000210: 37,3330 06042 TC INTPRET
030106,000211: 37,3331 40375 VLOAD SETPD
030107,000212: 37,3332 01220 RN # LM STATE VECTOR IN RN,VN
030108,000213: 37,3333 00001 0
030109,000214: 37,3334 26207 STOVL RONE
030110,000215: 37,3335 01226 VN
030111,000216: 37,3336 26215 STOVL VONE # LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET
030112,000217: 37,3337 01726 V(CSM) # (TO INSURE TIME COMPATABILITY)
030113,000218: 37,3340 65315 PDVL PDDL
030114,000219: 37,3341 01720 R(CSM)
030115,000220: 37,3342 01234 PIPTIME
030116,000221: 37,3343 77776 EXIT
030117,000222: 37,3344 35015 CA PRIO3
030118,000223: 37,3345 05146 TC PRIOCHNG
030119,000224: 37,3346 06042 TC INTPRET
030120,000225: 37,3347 77214 BOFF VLOAD
030121,000226: 37,3350 03347 MUNFLAG
030122,000227: 37,3351 77363 GETRVN2 # IF MUNFLAG RESET, DO CM DELTA PRECISION
|
Page 709 |
030124,000229: 37,3352 60505 VXM VSR4 # CHANGE TO REFERENCE SYSTEM AND RESCALE
030125,000230: 37,3353 01734 REFSMMAT
030126,000231: 37,3354 77715 PDVL # R TO PD 0-5
030127,000232: 37,3355 76505 VXM VSL1
030128,000233: 37,3356 01734 REFSMMAT
030129,000234: 37,3357 40206 PUSH SETPD # V TO PD 5-11
030130,000235: 37,3360 00001 0
030131,000236: 37,3361 77650 GOTO
030132,000237: 37,3362 77240 COMPDISP
030133,000238:
030134,000239: 37,3363 77624 GETRVN2 CALL
030135,000240: 37,3364 27410 INTSTALL
030136,000241: 37,3365 52014 CLEAR GOTO
030137,000242: 37,3366 01673 INTYPFLG # PREC EXTRAP FOR OTHER
030138,000243: 37,3367 77222 OTHINT
030139,000244: 37,3370 06042 R31SURF TC INTPRET
030140,000245: 37,3371 77634 RTB # LM IS ON SURFACE, SO PRECISION
030141,000246: 37,3372 21574 LOADTIME # INTEGRATION USES PLANETARY INERTIAL
030142,000247: 37,3373 34041 STCALL TDEC1 # ORIENTATION SUBROUTINE
030143,000248: 37,3374 27056 LEMPREC
030144,000249: 37,3375 77650 GOTO # DO CSM CONIC
030145,000250: 37,3376 77211 OTHCONIC
030146,000251: 37,3377 40102 MUNG? CS FLAGWRD6
030147,000252: 37,3400 74744 MASK MUNFLBIT
030148,000253: 37,3401 00006 EXTEND
030149,000254: 37,3402 13326 BZF GETRVN # IF MUNFLAG SET, CSM BASE NOT NEEDED
030150,000255:
030151,000256: 37,3403 06042 ONEBASE TC INTPRET # GET CSM BASE VECTOR
030152,000257: 37,3404 52034 RTB GOTO
030153,000258: 37,3405 21574 LOADTIME
030154,000259: 37,3406 77144 DOCMBASE
030155,000260:
030156,000261: 37,3407 04066 V16N54 VN 1654
030157,000262:
|
Page 710
The original program listing had no source lines on this page. |
030160,000265:
End of include-file R31.agc. Parent file is MAIN.agc