Source Code
![]() |
This is the source-code for the Apollo 9 Command Module's Guidance Computer.
These files were derived originally from the scan from MIT's Dibner Institute's
now-discontinued website titled "History of Recent Science and Technology", which
in turn was originally created by Gary Neff, though his high-quality scans were
unfortunately reduced in legibility when presented online.
The markings on the front of the
printout imply that it was the original AGC developer Norm Brodeur's copy.
A scan by Ron Burkey has superceded it, made from a more-legible copy from the collection of original
AGC developer Fred Martin. The source code was transcribed from
those images by Ron Burkey. Note that the page images
presented online are of reduced quality, and that higher-quality images
are available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:ASSEMBLE REVISION 249 OF AGC PROGRAM COLOSSUS BY NASA 2021111-041 20'35 OCT. 28,1968Note that the date is the date of the printout, not the date of the program revision. |
001096,000002: ## Copyright: Public domain.
001097,000003: ## Filename: TAGS_FOR_RELATIVE_SETLOC.agc
001098,000004: ## Purpose: Part of the source code for Colossus, build 249.
001099,000005: ## It is part of the source code for the Command Module's (CM)
001100,000006: ## Apollo Guidance Computer (AGC), for Apollo 9.
001101,000007: ## Assembler: yaYUL
001102,000008: ## Reference: pp. 25-33 of 1701.pdf.
001103,000009: ## Contact: Ron Burkey <info@sandroid.org>.
001104,000010: ## Website: www.ibiblio.org/apollo.
001105,000011: ## Mod history: 08/02/04 RSB Adapted from similar Luminary 131 file.
001106,000012: ## 05/06/09 RSB Made a few comment corrections I noticed
001107,000013: ## were needed when adapting for Comanche 055.
001108,000014: ## 2017-01-05 RSB Page numbers now agree with those on the
001109,000015: ## original harcopy, as opposed to the PDF page
001110,000016: ## numbers in 1701.pdf.
001111,000017: ## 2017-01-20 RSB Cross-diff'd comment text (not whitespace)
001112,000018: ## vs the already-proofed corresponding Colossus
001113,000019: ## 237 and Comanche 55 source-code files
001114,000020: ## and corrected errors found.
001115,000021: ##
001116,000022: ## The contents of the "Colossus249" files, in general, are transcribed
001117,000023: ## from a scanned copy of the program listing. Notations on this
001118,000024: ## document read, in part:
001119,000025: ##
001120,000026: ## Assemble revision 249 of AGC program Colossus by NASA
001121,000027: ## 2021111-041. October 28, 1968.
001122,000028: ##
001123,000029: ## This AGC program shall also be referred to as
001124,000030: ## Colossus 1A
001125,000031: ##
001126,000032: ## Prepared by
001127,000033: ## Massachusetts Institute of Technology
001128,000034: ## 75 Cambridge Parkway
001129,000035: ## Cambridge, Massachusetts
001130,000036: ## under NASA contract NAS 9-4065.
001131,000037: ##
001132,000038: ## Refer directly to the online document mentioned above for further information.
001133,000039: ## Please report any errors (relative to the scanned pages) to info@sandroid.org.
001134,000040: ##
001135,000041: ## In some cases, where the source code for Luminary 131 overlaps that of
001136,000042: ## Colossus 249, this code is instead copied from the corresponding Luminary 131
001137,000043: ## source file, and then is proofed to incorporate any changes.
001138,000044:
![]() |
Page 25 |
001140,000046: ??????? FIXED MEMORY 120000 - 167777
001141,000047: ??????? COUNT BANKSUM
001142,000048:
001143,000049: # MODULE 1 CONTAINS BANKS 0 THROUGH 5
001144,000050:
001145,000051: 4000 BLOCK 02
001146,000052: 4000 FFTAG1 EQUALS
001147,000053: 4000 FFTAG2 EQUALS
001148,000054: 4000 FFTAG3 EQUALS
001149,000055: 4000 FFTAG4 EQUALS
001150,000056: 4000 FFTAG7 EQUALS
001151,000057: 4000 FFTAG8 EQUALS
001152,000058: 4000 FFTAG9 EQUALS
001153,000059: 4000 FFTAG10 EQUALS
001154,000060: 4000 FFTAG12 EQUALS
001155,000061: 4000 BNKSUM 02
001156,000062:
001157,000063: 6000 BLOCK 03
001158,000064: 6000 FFTAG5 EQUALS
001159,000065: 6000 FFTAG6 EQUALS
001160,000066: 6000 BNKSUM 03
001161,000067:
001162,000068: 00,2000 BANK 00
001163,000069: 00,2000 DLAYJOB EQUALS
001164,000070: 00,2000 BNKSUM 00
001165,000071:
001166,000072: 01,2000 BANK 01
001167,000073: 01,2000 RESTART EQUALS
001168,000074: 01,2000 BNKSUM 01
001169,000075:
001170,000076: 04,2000 BANK 04
001171,000077: 04,2000 VERB37 EQUALS
001172,000078: 04,2000 CONICS1 EQUALS
001173,000079: 04,2000 PINBALL4 EQUALS
001174,000080: 04,2000 R36LM EQUALS
001175,000081: 04,2000 INTPRET2 EQUALS
001176,000082: 04,2000 IMUCAL1 EQUALS
001177,000083: 04,2000 STBLEORB EQUALS
001178,000084: 04,2000 E/PROG EQUALS
001179,000085: 04,2000 MIDDGIM EQUALS
001180,000086:
001181,000087: 04,2000 BNKSUM 04
001182,000088:
![]() |
Page 26 |
001184,000090:
001185,000091: 05,2000 BANK 05
001186,000092: 05,2000 FRANDRES EQUALS
001187,000093: 05,2000 DOWNTELM EQUALS
001188,000094: 05,2000 DAPMASS EQUALS
001189,000095: 05,2000 BNKSUM 05
001190,000096:
001191,000097: # MODULE 2 CONTAINS BANKS 6 THROUGH 13
001192,000098:
001193,000099: 06,2000 BANK 06
001194,000100: 06,2000 IMUCOMP EQUALS
001195,000101: 06,2000 T4RUP EQUALS
001196,000102: 06,2000 IMUCAL2 EQUALS
001197,000103: 06,2000 BNKSUM 06
001198,000104:
001199,000105: 07,2000 BANK 07
001200,000106: 07,2000 SXTMARKE EQUALS
001201,000107: 07,2000 R02 EQUALS
001202,000108: 07,2000 MODESW EQUALS
001203,000109: 07,2000 XANG EQUALS
001204,000110: 07,2000 KEYRUPT EQUALS
001205,000111: 07,2000 BNKSUM 07
001206,000112:
001207,000113: 10,2000 BANK 10
001208,000114: 10,2000 DISPLAYS EQUALS
001209,000115: 10,2000 PHASETAB EQUALS
001210,000116: 10,2000 COMGEOM2 EQUALS
001211,000117: 10,2000 SXTMARK1 EQUALS
001212,000118: 10,2000 P60S4 EQUALS
001213,000119: 10,2000 OPTDRV EQUALS
001214,000120: 10,2000 BNKSUM 10
001215,000121:
001216,000122: 11,2000 BANK 11
001217,000123: 11,2000 ORBITAL EQUALS
001218,000124: 11,2000 ORBITAL1 EQUALS # CONSTANTS
001219,000125: 11,2000 INTVEL EQUALS
001220,000126: 11,2000 S52/2 EQUALS
001221,000127: 11,2000 BNKSUM 11
001222,000128:
001223,000129: 12,2000 BANK 12
001224,000130: 12,2000 CONICS EQUALS
![]() |
Page 27 |
001226,000132: 12,2000 BNKSUM 12
001227,000133:
001228,000134: 13,2000 BANK 13
001229,000135: 13,2000 P76LOC EQUALS
001230,000136: 13,2000 LATLONG EQUALS
001231,000137: 13,2000 INTINIT EQUALS
001232,000138: 13,2000 SR52/1 EQUALS
001233,000139: 13,2000 ORBITAL2 EQUALS
001234,000140: 13,2000 BNKSUM 13
001235,000141: # SPACER
001236,000142:
001237,000143: # MODULE 3 CONTAINS BANKS 14 THROUGH 21
001238,000144:
001239,000145: 14,2000 BANK 14
001240,000146: 14,2000 STARTAB EQUALS
001241,000147: 14,2000 RT53 EQUALS
001242,000148: 14,2000 P50S1 EQUALS
001243,000149: 14,2000 BNKSUM 14
001244,000150:
001245,000151: 15,2000 BANK 15
001246,000152: 15,2000 P50S EQUALS
001247,000153: 15,2000 ETRYDAP EQUALS
001248,000154: 15,2000 S52/3 EQUALS
001249,000155: 15,2000 BNKSUM 15
001250,000156:
001251,000157: 16,2000 BANK 16
001252,000158: 16,2000 P40S1 EQUALS
001253,000159: 16,2000 DAPROLL EQUALS
001254,000160: 16,2000 P50S2 EQUALS
001255,000161: 16,2000 BNKSUM 16
001256,000162:
001257,000163: 17,2000 BANK 17
001258,000164: 17,2000 DAPS4 EQUALS
001259,000165: 17,2000 DAPS5 EQUALS
001260,000166: 17,2000 DAPS7 EQUALS
001261,000167: 17,2000 BNKSUM 17
001262,000168:
001263,000169: 20,2000 BANK 20
![]() |
Page 28 |
001265,000171: 20,2000 DAPS6 EQUALS
001266,000172: 20,2000 DAPS1 EQUALS
001267,000173: 20,2000 DAPS2 EQUALS
001268,000174: 20,2000 BNKSUM 20
001269,000175:
001270,000176: 21,2000 BANK 21
001271,000177: 21,2000 DAPS3 EQUALS
001272,000178: 21,2000 MYSUBS EQUALS
001273,000179: 21,2000 BNKSUM 21
001274,000180:
001275,000181: # MODULE 4 CONTAINS BANKS 22 THROUGH 27
001276,000182:
001277,000183: 22,2000 BANK 22
001278,000184: 22,2000 RTBCODES EQUALS
001279,000185: 22,2000 RTBCODE1 EQUALS
001280,000186: 22,2000 DAPS8 EQUALS
001281,000187: 22,2000 APOPERI EQUALS
001282,000188: 22,2000 P40S5 EQUALS
001283,000189: 22,2000 KALCMON2 EQUALS
001284,000190: 22,2000 KALCMON1 EQUALS
001285,000191: 22,2000 BNKSUM 22
001286,000192:
001287,000193: 23,2000 BANK 23
001288,000194: 23,2000 P20S2 EQUALS
001289,000195: 23,2000 INFLIGHT EQUALS
001290,000196: 23,2000 COMGEOM1 EQUALS
001291,000197: 23,2000 POWFLITE EQUALS
001292,000198: 23,2000 POWFLIT1 EQUALS
001293,000199: 23,2000 RENDGUID EQUALS
001294,000200: 23,2000 POWFLIT2 EQUALS
001295,000201: 23,2000 R30LOC EQUALS
001296,000202: 23,2000 P11FOUR EQUALS
001297,000203: 23,2000 P12A EQUALS
001298,000204: 23,2000 NORMLIZ EQUALS
001299,000205: 23,2000 ASENT7 EQUALS
001300,000206: 23,2000 RODTRAP EQUALS
001301,000207: 23,2000 BNKSUM 23
001302,000208:
001303,000209: 24,2000 BANK 24
001304,000210: 24,2000 LOADDAP EQUALS
001305,000211: 24,2000 P40S EQUALS
001306,000212: 24,2000 BNKSUM 24
001307,000213:
001308,000214: 25,2000 BANK 25
![]() |
Page 29 |
001310,000216: 25,2000 REENTRY EQUALS
001311,000217: 25,2000 BNKSUM 25
001312,000218:
001313,000219: 26,2000 BANK 26
001314,000220: 26,2000 INTPRET1 EQUALS
001315,000221: 26,2000 REENTRY1 EQUALS
001316,000222: 26,2000 P60S EQUALS
001317,000223: 26,2000 P60S1 EQUALS
001318,000224: 26,2000 P60S2 EQUALS
001319,000225: 26,2000 P60S3 EQUALS
001320,000226: 26,2000 PLANTIN EQUALS # LUNAR ROT
001321,000227: 26,2000 EPHEM EQUALS
001322,000228: 26,2000 P05P06 EQUALS
001323,000229: 26,2000 26P50S EQUALS
001324,000230: 26,2000 BNKSUM 26
001325,000231:
001326,000232: 27,2000 BANK 27
001327,000233: 27,2000 TOF-FF EQUALS
001328,000234: 27,2000 TOF-FF1 EQUALS
001329,000235: 27,2000 MANUVER EQUALS
001330,000236: 27,2000 MANUVER1 EQUALS
001331,000237: 27,2000 VECPT EQUALS
001332,000238: 27,2000 UPDATE1 EQUALS
001333,000239: 27,2000 UPDATE2 EQUALS
001334,000240: 27,2000 R22S1 EQUALS
001335,000241: 27,2000 P60S5 EQUALS
001336,000242: 27,2000 RTE2 EQUALS
001337,000243: 27,2000 BNKSUM 27
001338,000244:
001339,000245: # MODULE 5 CONTAINS BANKS 30 THROUGH 35
001340,000246:
001341,000247: 30,2000 BANK 30
001342,000248: 30,2000 IMUSUPER EQUALS
001343,000249: 30,2000 LOWSUPER EQUALS
001344,000250: 30,2000 FCSTART EQUALS # STANDARD LOCATION FOR THIS. (FOR EXTVB)
001345,000251: 30,2000 LOPC EQUALS
001346,000252: 30,2000 P20S1 EQUALS
001347,000253: 30,2000 P20S6 EQUALS
001348,000254: 30,2000 P40S3 EQUALS
001349,000255: 30,2000 R35A EQUALS
001350,000256: 30,2000 BNKSUM 30
001351,000257:
![]() |
Page 30 |
001353,000259: 31,2000 BANK 31
001354,000260: 31,2000 R35 EQUALS
001355,000261: 31,2000 RT23 EQUALS
001356,000262: 31,2000 P30S1A EQUALS
001357,000263: 31,2000 R34 EQUALS
001358,000264: 31,2000 BNKSUM 31
001359,000265:
001360,000266: 32,2000 BANK 32
001361,000267: 32,2000 MSGSCAN1 EQUALS
001362,000268: 32,2000 RTE EQUALS
001363,000269: 32,2000 DELRSPL1 EQUALS
001364,000270: 32,2000 IMUCAL3 EQUALS
001365,000271: 32,2000 BNKSUM 32
001366,000272:
001367,000273: 33,2000 BANK 33
001368,000274: 33,2000 TESTLEAD EQUALS
001369,000275: 33,2000 IMUCAL EQUALS
001370,000276: 33,2000 BNKSUM 33
001371,000277:
001372,000278: 34,2000 BANK 34
001373,000279: 34,2000 P11ONE EQUALS
001374,000280: 34,2000 P20S3 EQUALS
001375,000281: 34,2000 P20S4 EQUALS
001376,000282: 34,2000 RTECON EQUALS
001377,000283: 34,2000 BNKSUM 34
001378,000284:
001379,000285: 35,2000 BANK 35
001380,000286: 35,2000 RTECON1 EQUALS
001381,000287: 35,2000 CSI/CDH EQUALS
001382,000288: 35,2000 P30S1 EQUALS
001383,000289: 35,2000 P30S EQUALS
001384,000290: 35,2000 R31 EQUALS
001385,000291: 35,2000 P17S1 EQUALS
001386,000292: 35,2000 BNKSUM 35
001387,000293:
001388,000294: # MODULE 6 CONTAINS BANKS 36 THROUGH 43
001389,000295:
001390,000296: 36,2000 BANK 36
001391,000297: 36,2000 MEASINC EQUALS
001392,000298: 36,2000 MEASINC1 EQUALS
![]() |
Page 31 |
001394,000300: 36,2000 P17S EQUALS
001395,000301: 36,2000 RTE1 EQUALS
001396,000302: 36,2000 BNKSUM 36
001397,000303:
001398,000304: 37,2000 BANK 37
001399,000305: 37,2000 P20S EQUALS
001400,000306: 37,2000 BODYATT EQUALS
001401,000307: 37,2000 RENDEZ EQUALS
001402,000308: 37,2000 SERVICES EQUALS
001403,000309: 37,2000 P11TWO EQUALS
001404,000310: 37,2000 BNKSUM 37
001405,000311:
001406,000312: 40,2000 BANK 40
001407,000313: 40,2000 PINSUPER EQUALS
001408,000314: 40,2000 SELFSUPR EQUALS
001409,000315: 40,2000 PINBALL1 EQUALS
001410,000316: 40,2000 BNKSUM 40
001411,000317:
001412,000318: 41,2000 BANK 41
001413,000319: 41,2000 PINBALL2 EQUALS
001414,000320: 41,2000 BNKSUM 41
001415,000321:
001416,000322: 42,2000 BANK 42
001417,000323: 42,2000 SBAND EQUALS
001418,000324: 42,2000 PINBALL3 EQUALS
001419,000325: 42,2000 EXTVBS EQUALS
001420,000326: 42,2000 BNKSUM 42
001421,000327:
001422,000328: 43,2000 BANK 43
001423,000329: 43,2000 SELFCHEC EQUALS
001424,000330: 43,2000 EXTVERBS EQUALS
001425,000331: 43,2000 BNKSUM 43
001426,000332:
001427,000333: 43,2000 26,3331 HI6ZEROS EQUALS ZEROVECS # ZERO VECTOR ALWAYS IN HIGH MEMORY
001428,000334: 43,2000 04,3455 LO6ZEROS EQUALS ZEROVEC # ZERO VECTOR ALWAYS IN LOW MEMORY
001429,000335: 43,2000 26,3327 HIDPHALF EQUALS UNITX
001430,000336: 43,2000 04,3453 LODPHALF EQUALS XUNIT
001431,000337: 43,2000 26,3321 HIDP1/4 EQUALS DP1/4TH
![]() |
Page 32 |
001433,000339: 43,2000 04,3501 LODP1/4 EQUALS D1/4 # 2DEC .25
001434,000340: 43,2000 26,3327 HIUNITX EQUALS UNITX
001435,000341: 43,2000 26,3325 HIUNITY EQUALS UNITY
001436,000342: 43,2000 26,3323 HIUNITZ EQUALS UNITZ
001437,000343: 43,2000 04,3453 LOUNITX EQUALS XUNIT # 2DEC .5
001438,000344: 43,2000 04,3451 LOUNITY EQUALS YUNIT # 2DEC 0
001439,000345: 43,2000 04,3447 LOUNITZ EQUALS ZUNIT # 2DEC 0
001440,000346: 43,2000 11,3706 3/4LOWDP EQUALS 3/4 # 2DEC 3.0 B-2
001441,000347:
001442,000348: 43,2000 30,2000 SBANK= LOWSUPER
001443,000349:
001444,000350: # ROPE SPECIFIC ASSIGNS OBVIATING NEED TO CHECK COMPUTER FLAG IN DETVRUZVING INTEGRATION AREA ENTRIES
001445,000351:
001446,000352: 43,2000 13,3036 OTHPREC EQUALS LEMPREC
001447,000353: 43,2000 13,2711 ATOPOTH EQUALS ATOPLEM
001448,000354: 43,2000 13,2636 ATOPTHIS EQUALS ATOPCSM
001449,000355: 43,2000 0000173 MOONTHIS EQUALS CMOONFLG
001450,000356: 43,2000 0000174 MOONOTH EQUALS LMOONFLG
001451,000357: 43,2000 13,2651 MOVATHIS EQUALS MOVEACSM
001452,000358: 43,2000 35,3204 STATEST EQUALS V83CALL # * TEMPORARY
001453,000359: 43,2000 13,3022 THISPREC EQUALS CSMPREC
001454,000360: 43,2000 26,3327 THISAXIS = UNITX
001455,000361: 43,2000 4747 ERASID EQUALS LOW10 # DOWNLINK ERASABLE DUMP ID
001456,000362: 43,2000 6214 DELAYNUM EQUALS THREE
001457,000363:
001458,000364: # ****************************************************************************************************************
001459,000365:
001460,000366: # THE FOLLOWING ECADRS ARE DEFINED TO FACILITATE EBANK SWITCHING. THEY ALSO MAKE IT EASIER FOR
001461,000367: # ERASABLE CONTROL TO REARRANGE ERASABLE MEMORY WITHOUT DISRUPTING THE PROGRAMS WHICH SET EBANKS.
001462,000368: # PRIOR TO ROPE RELEASE FIXED MEMORY CAN BE SAVED BY SETTING EACH EBXXXX =EBANKX (X=4,5,6,7). EBANKX OF COURSE
001463,000369: # WILL BE THE BANK WHERE THE ERASABLES REFERENCED IN EBXXXX WILL BE STORED.
001464,000370:
001465,000371: 07,2000 BANK 7
001466,000372: 07,2000 E7,1674 EBANK= MARKDOWN
001467,000373: 07,2000 03674 EBMARKDO ECADR MARKDOWN
001468,000374: 07,2001 E7,1725 EBANK= MRKBUF1
001469,000375: 07,2001 03725 EBMRKBUF ECADR MRKBUF1
001470,000376:
001471,000377: 24,2000 BANK 24
001472,000378: 24,2000 E7,1431 EBANK= DVCNTR
001473,000379: 24,2000 03431 EBDVCNTR ECADR DVCNTR
001474,000380: 24,2001 E7,1672 EBANK= P40TMP
001475,000381: 24,2001 03672 EBP40TMP ECADR P40TMP
001476,000382:
001477,000383: 34,2000 BANK 34
001478,000384: 34,2000 E7,1431 EBANK= DVCNTR
001479,000385: 34,2000 03431 EBDVCNT ECADR DVCNTR
001480,000386: 34,2001 E5,1426 EBANK= QPLACES
001481,000387: 34,2001 02426 EBQPLACE ECADR QPLACES
001482,000388:
001483,000389: 37,2000 BANK 37
001484,000390: 37,2000 1231 EBANK= RN1
![]() |
Page 33 |
001486,000392: 37,2000 01231 EBRN1 ECADR RN1
001487,000393:
001488,000394: # ****************************************************************************************************************
001489,000395:
End of include-file TAGS_FOR_RELATIVE_SETLOC_AND_BLANK_BANK_CARDS.agc. Parent file is MAIN.agc