Source Code
021340,000001: # Copyright: Public domain.
021341,000002: # Filename: R31.agc
021342,000003: # Purpose: Part of the source code for Colossus, build 249.
021343,000004: # It is part of the source code for the Command Module's (CM)
021344,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9.
021345,000006: # Assembler: yaYUL
021346,000007: # Reference: pp. 498-503 of 1701.pdf.
021347,000008: # Contact: Ron Burkey <info@sandroid.org>.
021348,000009: # Website: www.ibiblio.org/apollo.
021349,000010: # Mod history: 08/11/04 RSB. Began adapting from corresponding Luminary131
021350,000011: # source file.
021351,000012: # 2010-10-24 JL Fixed indentation of last line (interpretive operand).
021352,000013:
021353,000014: # The contents of the "Colossus249" files, in general, are transcribed
021354,000015: # from a scanned document obtained from MIT's website,
021355,000016: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this
021356,000017: # document read, in part:
021357,000018:
021358,000019: # Assemble revision 249 of AGC program Colossus by NASA
021359,000020: # 2021111-041. October 28, 1968.
021360,000021:
021361,000022: # This AGC program shall also be referred to as
021362,000023: # Colossus 1A
021363,000024:
021364,000025: # Prepared by
021365,000026: # Massachusetts Institute of Technology
021366,000027: # 75 Cambridge Parkway
021367,000028: # Cambridge, Massachusetts
021368,000029: # under NASA contract NAS 9-4065.
021369,000030:
021370,000031: # Refer directly to the online document mentioned above for further information.
021371,000032: # Please report any errors (relative to 1701.pdf) to info@sandroid.org.
021372,000033:
021373,000034: # In some cases, where the source code for Luminary 131 overlaps that of
021374,000035: # Colossus 249, this code is instead copied from the corresponding Luminary 131
021375,000036: # source file, and then is proofed to incorporate any changes.
021376,000037:
021377,000038: # Page 498
021378,000039: 34,2002 BANK 34
021379,000040: 35,2000 SETLOC R31
021380,000041: 35,2000 BANK
021381,000042:
021382,000043: 35,3150 COUNT* $$/R31
021383,000044:
021384,000045: 35,3150 34752 R31CALL CAF PRIO3
021385,000046: 35,3151 05042 TC FINDVAC
021386,000047: 35,3152 E4,1770 EBANK= SUBEXIT
021387,000048: 35,3152 03204 72064 2CADR V83CALL
021388,000049:
021389,000050: 35,3154 34734 DSPDELAY CAF 1SEC
021390,000051: 35,3155 04555 TC BANKCALL
021391,000052: 35,3156 01732 CADR DELAYJOB
021392,000053: 35,3157 31044 CA EXTVBACT
021393,000054: 35,3160 74677 MASK BIT12
021394,000055: 35,3161 00006 EXTEND
021395,000056: 35,3162 13154 BZF DSPDELAY
021396,000057:
021397,000058: 35,3163 30105 DISPN5X CA FLAGWRD9 # TEST R31FLAG (IN SUNDANCE R31FLAG WILL
021398,000059: 35,3164 74707 MASK BIT4 # ALWAYS BE SET AS R34 DOES NOT EXIST.
021399,000060: 35,3165 00006 EXTEND
021400,000061: 35,3166 13171 BZF +3
021401,000062: 35,3167 33310 CAF V16N54 # R31 USE NOUN 54
021402,000063: 35,3170 03172 TC +2
021403,000064: 35,3171 33311 CAF V16N53 # R34 USE NOUN 53
021404,000065: 35,3172 04555 TC BANKCALL
021405,000066: 35,3173 20465 CADR GOMARKF
021406,000067: 35,3174 05514 TC B5OFF
021407,000068: 35,3175 05514 TC B5OFF
021408,000069: 35,3176 13163 TCF DISPN5X
021409,000070:
021410,000071: 35,3177 06006 V83 TC INTPRET
021411,000072: 35,3200 77624 CALL
021412,000073: 35,3201 73426 REDOEXTP
021413,000074: 35,3202 77650 GOTO
021414,000075: 35,3203 73207 COMPDISP
021415,000076: 35,3204 06006 V83CALL TC INTPRET
021416,000077: 35,3205 77624 CALL
021417,000078: 35,3206 73312 STATEXTP # EXTRAPOLATE STATE VECTORS
021418,000079: 35,3207 52375 COMPDISP VLOAD VSU
021419,000080: 35,3210 00001 RATT
021420,000081: 35,3211 02327 RONE
021421,000082: 35,3212 51406 PUSH ABVAL # RATT-RONE TO 0D PD= 6
021422,000083: 35,3213 02321 STORE RANGE # METERS B-29
021423,000084: 35,3214 77301 NORM VLOAD
021424,000085: 35,3215 00047 X1 # RATT-RONE PD= 0
021425,000086: 35,3216 77762 VSR1
021426,000087: 35,3217 53457 VSL* UNIT
021427,000088: # Page 499
021428,000089: 35,3220 20201 0,1
021429,000090: 35,3221 52315 PDVL VSU # UNIT(LOS) TO 0D PD= 6
021430,000091: 35,3222 00007 VATT
021431,000092: 35,3223 02335 VONE
021432,000093: 35,3224 77641 DOT # (VATT-VONE).UNIT(LOS) PD= 0
021433,000094: 35,3225 77752 SL1
021434,000095: 35,3226 36323 STCALL RRATE # RANGE RATE M/CS B-7
021435,000096: 35,3227 47432 CDUTRIG # TO INITIALIZE FOR *NBSM*
021436,000097: 35,3230 77624 CALL
021437,000098: 35,3231 62000 R34LOS # NOTE. PDL MUST = 0.
021438,000099: 35,3232 53575 R34ANG VLOAD UNIT
021439,000100: 35,3233 02327 RONE
021440,000101: 35,3234 77715 PDVL # UR TO 0D PD= 6
021441,000102: 35,3235 15330 THISAXIS # UNITX FOR CM, UNITZ FOR LM
021442,000103: 35,3236 77214 BON VLOAD # CHK R31FLAG. ON=R31 THETA, OFF=R34 PHI
021443,000104: 35,3237 04713 R31FLAG
021444,000105: 35,3240 73242 +2 # R31-THETA
021445,000106: 35,3241 00015 12D
021446,000107: 35,3242 77624 CALL
021447,000108: 35,3243 47601 *NBSM*
021448,000109: 35,3244 41505 VXM PUSH # UXORZ TO 6D PD=12D
021449,000110: 35,3245 01736 REFSMMAT
021450,000111: 35,3246 72431 VPROJ VSL2
021451,000112: 35,3247 00001 0D
021452,000113: 35,3250 53445 BVSU UNIT
021453,000114: 35,3251 00007 6D
021454,000115: 35,3252 47315 PDVL VXV # UP/2 TO 12D PD=18D
021455,000116: 35,3253 02327 RONE
021456,000117: 35,3254 02335 VONE
021457,000118: 35,3255 47256 UNIT VXV
021458,000119: 35,3256 02327 RONE
021459,000120: 35,3257 63241 DOT PDVL # SIGN TO 12D, UP/2 TO MPAC PD=18D
021460,000121: 35,3260 00015 12D
021461,000122: 35,3261 50372 VSL1 DOT # UP.UXORZ
021462,000123: 35,3262 00007 6D
021463,000124: 35,3263 72565 SIGN SL1
021464,000125: 35,3264 00015 12D
021465,000126: 35,3265 77726 ACOS
021466,000127: 35,3266 26325 STOVL RTHETA
021467,000128: 35,3267 02327 RONE
021468,000129: 35,3270 51041 DOT BPL
021469,000130: 35,3271 00007 6D
021470,000131: 35,3272 73277 +5
021471,000132: 35,3273 44345 DLOAD BDSU # IF UXORZ.R NEG, RTHETA = 1 - RTHETA
021472,000133: 35,3274 02325 RTHETA
021473,000134: 35,3275 15340 DPPOSMAX
021474,000135: 35,3276 02325 STORE RTHETA # RTHETA BETWEEN 0 AND 1 REV.
021475,000136: 35,3277 77776 EXIT
021476,000137: 35,3300 34706 CAF BIT5
021477,000138: 35,3301 71044 MASK EXTVBACT
021478,000139: # Page 500
021479,000140: 35,3302 00006 EXTEND
021480,000141: 35,3303 15423 BZF ENDEXT # YES, DIE
021481,000142:
021482,000143: 35,3304 41044 CS EXTVBACT
021483,000144: 35,3305 74677 MASK BIT12
021484,000145: 35,3306 27044 ADS EXTVBACT
021485,000146:
021486,000147: 35,3307 13177 TCF V83
021487,000148: 35,3310 04066 V16N54 VN 1654
021488,000149: 35,3311 04065 V16N53 VN 1653
021489,000150:
021490,000151: # Page 501
021491,000152: # THE STATEXTP SUBROUTINE DOES A PRECISION EXTRAPOLATION OF BOTH VEHICLES
021492,000153: # STATE VECTORS TO PRESENT TIME AND SAVES THEM AS BASE VECTORS.
021493,000154: # IF SERVICER IS OFF ---
021494,000155: # THIS VEHICLES BASE VECTOR IS CONIC EXTRAPOLATED TO
021495,000156: # PRESENT TIME AND SAVED AS RONE, VONE.
021496,000157: # THE OTHER VEHICLES BASE VECTOR IS CONIC EXTRAPOLATED
021497,000158: # TO TEH SAME TIME, THE OUTPUT BEING LEFT IN RATT, VATT.
021498,000159: # IF SERVICER IS ON ---
021499,000160: # RONE, VONE ARE SET EQUAL TO RN, VN AND THE OTHER
021500,000161: # VEHICLES STATE VECTOR IS PREC. EXTRAPOLATED TO PIPTIME.
021501,000162:
021502,000163: 35,3312 47020 STATEXTP STQ RTB
021503,000164: 35,3313 00112 STATEXIT
021504,000165: 35,3314 45505 LOADTIME
021505,000166: 35,3315 34041 STCALL TDEC1
021506,000167: 35,3316 27036 OTHPREC # GET BASE VECTORS
021507,000168: 35,3317 77775 VLOAD
021508,000169: 35,3320 00017 RATT1
021509,000170: 35,3321 26225 STOVL BASEOTP # OTHER POS.
021510,000171: 35,3322 00025 VATT1
021511,000172: 35,3323 16241 STODL BASEOTV # OTHER VEL.
021512,000173: 35,3324 00015 TAT
021513,000174: 35,3325 02272 STORE BASETIME
021514,000175: 35,3326 34041 STCALL TDEC1
021515,000176: 35,3327 27022 THISPREC
021516,000177: 35,3330 77775 VLOAD
021517,000178: 35,3331 00017 RATT1
021518,000179: 35,3332 26255 STOVL BASETHP # THIS POS.
021519,000180: 35,3333 00025 VATT1
021520,000181: 35,3334 02263 STORE BASETHV # THIS VEL
021521,000182: 35,3335 47014 HAVEBASE BON RTB
021522,000183: 35,3336 03711 V37FLAG
021523,000184: 35,3337 73413 GETRVN # IF AVG ON, GET RN ETC.
021524,000185: 35,3340 45505 LOADTIME
021525,000186: 35,3341 34041 STCALL TDEC1 # BEGIN SET UP FOR CONIT EXTRAP. FOR THIS.
021526,000187: 35,3342 27371 INTSTALL
021527,000188: 35,3343 43175 VLOAD CLEAR
021528,000189: 35,3344 02255 BASETHP
021529,000190: 35,3345 00263 MOONFLAG
021530,000191: 35,3346 25535 STOVL RCV
021531,000192: 35,3347 02263 BASETHV
021532,000193: 35,3350 15543 STODL VCV
021533,000194: 35,3351 02272 BASETIME
021534,000195: 35,3352 43014 BOF SET # GET APPROPRIATE MOONFLAG SETTING
021535,000196: 35,3353 04343 MOONTHIS
021536,000197: 35,3354 73356 +2
021537,000198: 35,3355 00063 MOONFLAG
021538,000199: 35,3356 77614 SET
021539,000200: 35,3357 01473 INTYPFLG # CONIC EXTRAP.
021540,000201: 35,3360 35517 STCALL TET
021541,000202: 35,3361 27066 INTEGRVS # INTEGRATION --- AT LAST ---
021542,000203: # Page 502
021543,000204: 35,3362 77775 VLOAD
021544,000205: 35,3363 00001 RATT
021545,000206: 35,3364 26327 STOVL RONE
021546,000207: 35,3365 00007 VATT
021547,000208: 35,3366 36335 STCALL VONE # GET SET FOR CONIC EXTRAP., OTHER.
021548,000209: 35,3367 27371 INTSTALL
021549,000210: 35,3370 71214 SET DLOAD
021550,000211: 35,3371 01473 INTYPFLG
021551,000212: 35,3372 00015 TAT
021552,000213: 35,3373 00041 OTHINT STORE TDEC1
021553,000214: 35,3374 43175 VLOAD CLEAR
021554,000215: 35,3375 02225 BASEOTP
021555,000216: 35,3376 00263 MOONFLAG
021556,000217: 35,3377 25535 STOVL RCV
021557,000218: 35,3400 02241 BASEOTV
021558,000219: 35,3401 15543 STODL VCV
021559,000220: 35,3402 02272 BASETIME
021560,000221: 35,3403 43014 BOF SET
021561,000222: 35,3404 04343 MOONTHIS
021562,000223: 35,3405 73407 +2
021563,000224: 35,3406 00063 MOONFLAG
021564,000225: 35,3407 35517 STCALL TET
021565,000226: 35,3410 27066 INTEGRVS
021566,000227: 35,3411 77650 GOTO
021567,000228: 35,3412 00112 STATEXIT # THIS VEHICLES POS.,VEL. IN PUSHLIST
021568,000229:
021569,000230: 35,3413 77775 GETRVN VLOAD
021570,000231: 35,3414 01171 RN
021571,000232: 35,3415 26327 STOVL RONE
021572,000233: 35,3416 01177 VN
021573,000234: 35,3417 16335 STODL VONE
021574,000235: 35,3420 01205 PIPTIME
021575,000236: 35,3421 77624 CALL
021576,000237: 35,3422 27371 INTSTALL
021577,000238: 35,3423 52014 CLEAR GOTO
021578,000239: 35,3424 01673 INTYPFLG # PREC EXTRAP FOR OTHER
021579,000240: 35,3425 73373 OTHINT
021580,000241:
021581,000242: 35,3426 52020 REDOEXTP STQ GOTO
021582,000243: 35,3427 00112 STATEXIT
021583,000244: 35,3430 73335 HAVEBASE
021584,000245: 31,2000 SETLOC R34
021585,000246: 31,2000 BANK
021586,000247: 31,2000 77776 R34LOS EXIT
021587,000248: 31,2001 30036 CA CDUS
021588,000249: 31,2002 50120 INDEX FIXLOC
021589,000250: 31,2003 54011 TS 9D
021590,000251: 31,2004 30035 CA CDUT
021591,000252: 31,2005 50120 INDEX FIXLOC
021592,000253: 31,2006 54013 TS 11D
021593,000254: # Page 503
021594,000255: 31,2007 30120 CA FIXLOC
021595,000256: 31,2010 66211 AD SIX
021596,000257: 31,2011 40000 COM
021597,000258: 31,2012 50120 INDEX FIXLOC
021598,000259: 31,2013 54046 TS X1
021599,000260: 31,2014 06006 TC INTPRET
021600,000261: 31,2015 77624 CALL
021601,000262: 31,2016 46000 SXTNB
021602,000263: 31,2017 34015 STCALL 12D
021603,000264: 31,2020 73232 R34ANG
021604,000265:
End of include-file R31.agc. Parent file is MAIN.agc