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