Source Code
![]() |
These source-code files were from the printout at the MIT Museum, with many thanks
to Deborah Douglas, the Museum's Curator of Science and Technology, for releasing
it to us. The printout was digitally photographed by Paul Fjeld. A team of
volunteers transcribed the source code manually from these images or, where
appropriate, modified already-transcribed but similar source Colossus 249 (Apollo 9)
source code to agree with the images from the printout. 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:GAP: ASSEMBLE REVISION 055 OF AGC PROGRAM COMANCHE BY NASA 2021113-051 10:28 APR. 1,1969Note that the date is the date of the printout, not the date of the program revision. |
061601,000002: ## Copyright: Public domain.
061602,000003: ## Filename: RESTARTS_ROUTINE.agc
061603,000004: ## Purpose: Part of the source code for Comanche, build 055. It
061604,000005: ## is part of the source code for the Command Module's
061605,000006: ## (CM) Apollo Guidance Computer (AGC), Apollo 11.
061606,000007: ## Assembler: yaYUL
061607,000008: ## Reference: pp. 1414-1419
061608,000009: ## Contact: Ron Burkey <info@sandroid.org>
061609,000010: ## Website: http://www.ibiblio.org/apollo.
061610,000011: ## Mod history: 2009-05-07 RSB Adapted from Colossus249 file of the same
061611,000012: ## name, and page images. Corrected various
061612,000013: ## typos in the transcription of program
061613,000014: ## comments, and these should be back-ported
061614,000015: ## to Colossus249.
061615,000016: ## 2010-08-28 JL Added missing comment character.
061616,000017: ## 2016-12-22 RSB Proofed comment text using octopus/ProoferComments
061617,000018: ## and corrected the errors found.
061618,000019: ## 2017-01-18 RSB Fixed comment-text errors noted while diff'ing
061619,000020: ## vs Colossus 249.
061620,000021: ## 2017-03-14 RSB Comment-text fixes noted in proofing Luminary 116.
061621,000022:
061622,000023: ## The contents of the "Comanche055" files, in general, are transcribed
061623,000024: ## from scanned documents.
061624,000025: ##
061625,000026: ## Assemble revision 055 of AGC program Comanche by NASA
061626,000027: ## 2021113-051. April 1, 1969.
061627,000028: ##
061628,000029: ## This AGC program shall also be referred to as Colossus 2A
061629,000030: ##
061630,000031: ## Prepared by
061631,000032: ## Massachusetts Institute of Technology
061632,000033: ## 75 Cambridge Parkway
061633,000034: ## Cambridge, Massachusetts
061634,000035: ##
061635,000036: ## under NASA contract NAS 9-4065.
061636,000037: ##
061637,000038: ## Refer directly to the online document mentioned above for further
061638,000039: ## information. Please report any errors to info@sandroid.org.
061639,000040:
![]() |
Page 1414 |
061641,000042: 01,3520 BANK 01
061642,000043: 01,2000 SETLOC RESTART
061643,000044: 01,2000 BANK
061644,000045:
061645,000046: 01,3520 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
061646,000047:
061647,000048: 01,3520 COUNT 01/RSROU
061648,000049:
061649,000050: 01,3520 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
061650,000051: 01,3521 60000 DOUBLE # SAVE FOR INDEXING
061651,000052: 01,3522 54155 TS TEMP2G
061652,000053:
061653,000054: 01,3523 33762 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
061654,000055: 01,3524 54157 TS TEMPSWCH # TABLE PHASE
061655,000056:
061656,000057: 01,3525 33557 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
061657,000058: 01,3526 54707 TS GOLOC +2 # GROUP AFTER THIS
061658,000059:
061659,000060: 01,3527 30154 CA TEMPPHS
061660,000061: 01,3530 75051 MASK OCT1400
061661,000062: 01,3531 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART
061662,000063: 01,3532 13543 TCF ITSAVAR # IT:S A VARIABLE RESTART
061663,000064:
061664,000065: 01,3533 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
061665,000066: 01,3534 10000 CCS A
061666,000067: 01,3535 13643 TCF ITSATBL # NO, ITS A TABLE RESTART
061667,000068:
061668,000069: 01,3536 35066 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
061669,000070: 01,3537 05147 TC FINDVAC # THE DISPLAY RESTART JOB
061670,000071: 01,3540 E3,1400 EBANK= LST1
061671,000072: 01,3540 03261 20063 2CADR INITDSP
061672,000073:
061673,000074: 01,3542 03557 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
061674,000075:
061675,000076: 01,3543 75051 ITSAVAR MASK OCT1400 # IS IT TYPE B ?
061676,000077: 01,3544 10000 CCS A
061677,000078: 01,3545 13614 TCF ITSLIKEB # YES, IT IS TYPE B
061678,000079:
061679,000080: 01,3546 00006 EXTEND # STORE THE JOB (OR TASK) 2CADR FOR EXIT
061680,000081: 01,3547 50155 NDX TEMP2G
061681,000082: 01,3550 31437 DCA PHSNAME1
061682,000083: 01,3551 52706 DXCH GOLOC
061683,000084:
061684,000085: 01,3552 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCAL
061685,000086: 01,3553 75023 MASK OCT7
061686,000087: 01,3554 67715 AD MINUS2
061687,000088: 01,3555 10000 CCS A
061688,000089: 01,3556 13726 TCF ITSLNGCL # ITS A LONGCALL
061689,000090:
![]() |
Page 1415 |
061691,000092: 01,3557 04675 RTRNCADR TC SWRETURN # CANT GET HERE
061692,000093: 01,3560 13562 TCF ITSAWAIT
061693,000094:
061694,000095: 01,3561 13627 TCF ITSAJOB # ITS A JOB
061695,000096:
061696,000097: 01,3562 33766 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
061697,000098: 01,3563 54704 TS GOLOC -1
061698,000099:
061699,000100: 01,3564 50155 NDX TEMP2G # DIRECTLY STORED
061700,000101: 01,3565 31054 CA PHSPRDT1
061701,000102: 01,3566 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
061702,000103: 01,3567 24000 INCR A # NO,
061703,000104: 01,3570 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
061704,000105:
061705,000106: 01,3571 15500 TCF ITSINDIR # STORED INDIRECTLY
061706,000107:
061707,000108: 01,3572 13612 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
061708,000109:
061709,000110: # ***** THIS MUST BE IN FIXED FIXED *****
061710,000111:
061711,000112: 5500 BLOCK 02
061712,000113: 4000 SETLOC FFTAG2
061713,000114: 4000 BANK
061714,000115:
061715,000116: 5500 COUNT 02/RSROU
061716,000117:
061717,000118: 5500 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS
061718,000119: 5501 22006 LXCH BB # SWITCHED ERRASIBLE
061719,000120:
061720,000121: 5502 50000 NDX A # GET THE TIME INDIRECTLY
061721,000122: 5503 30001 CA 1
061722,000123:
061723,000124: 5504 22006 LXCH BB # RESTORE THE BB AND GOLOC
061724,000125: 5505 22706 LXCH GOLOC +1
061725,000126:
061726,000127: 5506 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
061727,000128:
061728,000129: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
061729,000130:
061730,000131: 01,3573 BANK 01
061731,000132: 01,2000 SETLOC RESTART
061732,000133: 01,2000 BANK
061733,000134:
061734,000135: 01,3573 COUNT 01/RSROU
061735,000136:
061736,000137: 01,3573 40000 FINDTIME COM # MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
061737,000138: 01,3574 54001 TS L # AND SAVE
061738,000139: 01,3575 50155 NDX TEMP2G
061739,000140: 01,3576 41053 CS TBASE1
061740,000141: 01,3577 00006 EXTEND
![]() |
Page 1416 |
061742,000143: 01,3600 60025 SU TIME1
061743,000144: 01,3601 10000 CCS A
061744,000145: 01,3602 40000 COM
061745,000146: 01,3603 67700 AD OCT37776
061746,000147: 01,3604 65017 AD ONE
061747,000148: 01,3605 60001 AD L
061748,000149: 01,3606 10000 CCS A
061749,000150: 01,3607 35021 CA ZERO
061750,000151: 01,3610 13612 TCF +2
061751,000152: 01,3611 13612 TCF +1
061752,000153: 01,3612 65017 IMEDIATE AD ONE
061753,000154: 01,3613 00704 TC GOLOC -1
061754,000155: 01,3614 33557 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
061755,000156: 01,3615 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
061756,000157:
061757,000158: 01,3616 33763 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
061758,000159: 01,3617 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE
061759,000160:
061760,000161: 01,3620 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
061761,000162: 01,3621 76043 MASK OCT177 # PART OF THIS VARIABLE PHASE
061762,000163: 01,3622 54154 TS TEMPPHS
061763,000164:
061764,000165: 01,3623 00006 EXTEND
061765,000166: 01,3624 50155 NDX TEMP2G # OBTAIN THE JOB:S 2CADR
061766,000167: 01,3625 31437 DCA PHSNAME1
061767,000168: 01,3626 52706 DXCH GOLOC
061768,000169:
061769,000170: 01,3627 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET:S GO
061770,000171: 01,3630 31054 CA PHSPRDT1
061771,000172: 01,3631 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF ITS
061772,000173: 01,3632 00006 EXTEND # A FINDVAC OR A NOVAC
061773,000174: 01,3633 63637 BZMF ITSNOVAC
061774,000175:
061775,000176: 01,3634 33765 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
061776,000177: 01,3635 56704 XCH GOLOC -1 # PICK UP PRIO,
061777,000178: 01,3636 00704 TC GOLOC -1 # AND GO
061778,000179:
061779,000180: 01,3637 33767 ITSNOVAC CAF NOVACADR # NEGATIVE,
061780,000181: 01,3640 56704 XCH GOLOC -1 # SET UP NOVAC CALL,
061781,000182: 01,3641 40000 COM # CORRECT PRIO,
061782,000183: 01,3642 00704 TC GOLOC -1 # AND GO
061783,000184:
061784,000185: 01,3643 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
061785,000186: 01,3644 10020 CCS CYR
061786,000187: 01,3645 13646 TCF +1 # IT:S EVEN
061787,000188: 01,3646 13744 TCF ITSEVEN
061788,000189:
061789,000190: 01,3647 33557 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
061790,000191: 01,3650 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
![]() |
Page 1417 |
061792,000193: 01,3651 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
061793,000194: 01,3652 54021 TS SR # THE RESTART TABLES
061794,000195: 01,3653 60021 AD SR
061795,000196: 01,3654 50155 NDX TEMP2G
061796,000197: 01,3655 62001 AD SIZETAB +1
061797,000198: 01,3656 54156 TS POINTER
061798,000199:
061799,000200: 01,3657 00006 CONTBL2 EXTEND # FIND OUT WHAT:S IN THE TABLE
061800,000201: 01,3660 50156 NDX POINTER
061801,000202: 01,3661 32002 DCA CADRTAB # GET THE 2CADR
061802,000203:
061803,000204: 01,3662 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION
061804,000205:
061805,000206: 01,3663 10000 CCS A # IS IT A JOB OR IS IT TIMED
061806,000207: 01,3664 24000 INCR A # POSITIVE, MUST BE A JOB
061807,000208: 01,3665 13740 TCF ITSAJOB2
061808,000209:
061809,000210: 01,3666 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
061810,000211: 01,3667 54705 TS GOLOC # LET-S STORE THE CORRECT CADR
061811,000212:
061812,000213: 01,3670 33766 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
061813,000214: 01,3671 54704 TS GOLOC -1
061814,000215:
061815,000216: 01,3672 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
061816,000217: 01,3673 75006 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
061817,000218: 01,3674 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
061818,000219: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
061819,000220: # IN IMPORTANCE ANYWAY. BIT 4
061820,000221: 01,3675 13733 TCF ITSWTLST # IT IS A WAITLIST CALL
061821,000222:
061822,000223: 01,3676 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T
061823,000224: 01,3677 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL
061824,000225:
061825,000226: 01,3700 15507 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
061826,000227:
061827,000228: # ***** THIS MUST BE IN FIXED FIXED *****
061828,000229:
061829,000230: 5507 BLOCK 02
061830,000231: 4000 SETLOC FFTAG2
061831,000232: 4000 BANK
061832,000233:
061833,000234: 5507 COUNT 02/RSROU
061834,000235:
061835,000236: 5507 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
061836,000237: 5510 22006 LXCH BB
061837,000238: 5511 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
061838,000239:
061839,000240: 5512 00006 EXTEND # GET THE DELTA TIME
061840,000241: 5513 50000 NDX A
061841,000242: 5514 30001 DCA 0
![]() |
Page 1418 |
061843,000244: 5515 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK
061844,000245: 5516 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS
061845,000246: 5517 22706 LXCH GOLOC +1 # AND PRESERVE OUR L
061846,000247: 5520 13701 TCF ITSLGCL2 # NOW LET:S PROCESS THIS LONGCALL
061847,000248:
061848,000249: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
061849,000250:
061850,000251: 01,3701 BANK 01
061851,000252: 01,2000 SETLOC RESTART
061852,000253: 01,2000 BANK
061853,000254:
061854,000255: 01,3701 COUNT 01/RSROU
061855,000256: 01,3701 53140 ITSLGCL2 DXCH LONGTIME
061856,000257:
061857,000258: 01,3702 00006 EXTEND # CALCULATE TIME LEFT
061858,000259: 01,3703 40025 DCS TIME2
061859,000260: 01,3704 21140 DAS LONGTIME
061860,000261: 01,3705 00006 EXTEND
061861,000262: 01,3706 31136 DCA LONGBASE
061862,000263: 01,3707 21140 DAS LONGTIME
061863,000264:
061864,000265: 01,3710 11137 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
061865,000266: 01,3711 13721 TCF LONGCLCL
061866,000267: 01,3712 13714 TCF +2
061867,000268: 01,3713 13607 TCF IMEDIATE -3
061868,000269: 01,3714 11140 CCS LONGTIME +1
061869,000270: 01,3715 13721 TCF LONGCLCL
061870,000271: 01,3716 13717 NOOP # CAN:T GET HERE *********
061871,000272: 01,3717 13607 TCF IMEDIATE -3
061872,000273: 01,3720 13612 TCF IMEDIATE
061873,000274:
061874,000275: 01,3721 33764 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
061875,000276: 01,3722 54704 TS GOLOC -1
061876,000277:
061877,000278: 01,3723 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL
061878,000279: 01,3724 31140 DCA LONGTIME
061879,000280: 01,3725 00704 TC GOLOC -1
061880,000281:
061881,000282: 01,3726 33766 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
061882,000283: 01,3727 54704 TS GOLOC -1
061883,000284:
061884,000285: 01,3730 50155 NDX TEMP2G
061885,000286: 01,3731 41054 CS PHSPRDT1 # GET THE DELTA T ADDRESS
061886,000287:
061887,000288: 01,3732 15507 TCF ITSLGCL1 # NOW GET THE DELTA TIME
061888,000289:
061889,000290: 01,3733 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
061890,000291: 01,3734 54706 TS GOLOC +1
![]() |
Page 1419 |
061892,000293: 01,3735 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
061893,000294: 01,3736 32000 CA PRDTTAB # DIRECTLY OR INDIRECTLY
061894,000295:
061895,000296: 01,3737 13566 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
061896,000297:
061897,000298: 01,3740 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR
061898,000299:
061899,000300: 01,3741 50156 NDX POINTER # ADD THE PRIORITY AND LET:S GO
061900,000301: 01,3742 32000 CA PRDTTAB
061901,000302:
061902,000303: 01,3743 13631 TCF CHKNOVAC
061903,000304:
061904,000305: 01,3744 30157 ITSEVEN CA TEMPSWCH # SET UP FOR EITHER THE SECOND PART OF THE
061905,000306: 01,3745 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
061906,000307:
061907,000308: 01,3746 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
061908,000309: 01,3747 32000 CA SIZETAB # THE TABLE
061909,000310: 01,3750 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET:S SEE YOU DO
061910,000311: 01,3751 60154 AD TEMPPHS # BETTER IN TIME OR NUMBERR OF LOCATIONS
061911,000312: 01,3752 60154 AD TEMPPHS
061912,000313: 01,3753 54156 TS POINTER
061913,000314:
061914,000315: 01,3754 13657 TCF CONTBL2 # NOW PROCESS WHAT IS IN THE TABLE
061915,000316:
061916,000317: 01,3755 36214 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
061917,000318: 01,3756 26156 ADS POINTER # THE TABLE
061918,000319:
061919,000320: 01,3757 33557 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
061920,000321: 01,3760 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT
061921,000322: # GROUP
061922,000323: 01,3761 13657 TCF CONTBL2 # SO LET:S GET THE SECOND ENTRY IN THE TBL
061923,000324:
061924,000325: 01,3762 0154 TEMPPHS EQUALS MPAC
061925,000326: 01,3762 0155 TEMP2G EQUALS MPAC +1
061926,000327: 01,3762 0156 POINTER EQUALS MPAC +2
061927,000328: 01,3762 0157 TEMPSWCH EQUALS MPAC +3
061928,000329: 01,3762 0705 GOLOC EQUALS VAC5 +20D
061929,000330: 01,3762 7715 MINUS2 EQUALS NEG2
061930,000331: 01,3762 6043 OCT177 EQUALS LOW7
061931,000332:
061932,000333: 01,3762 03755 PHS2CADR GENADR PHSPART2
061933,000334: 01,3763 03533 PRT2CADR GENADR GETPART2
061934,000335: 01,3764 05342 LGCLCADR GENADR LONGCALL
061935,000336: 01,3765 05147 FVACCADR GENADR FINDVAC
061936,000337: 01,3766 05245 WTLTCADR GENADR WAITLIST
061937,000338: 01,3767 05134 NOVACADR GENADR NOVAC
061938,000339:
061939,000340:
061940,000341:
061941,000342:
End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc