Source Code

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