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