Source Code
![]() |
These source-code files were obtained by digitally photographing the
Colossus 237 program listing from the private collection of original
AGC developer Fred Martin, and then modifying pre-existing Colossus 249
(Apollo 9) source files to incorporate changes. Note that the page images
presented online are of reduced quality, and that additional 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 237 OF AGC PROGRAM COLOSSUS BY NASA 2021111-031 1:17 AUG. 24, 1968 |
058242,000002: # Copyright: Public domain.
058243,000003: # Filename: RESTARTS_ROUTINE.agc
058244,000004: # Purpose: Part of the source code for Colossus build 237.
058245,000005: # This is for the Command Module's (CM) Apollo Guidance
058246,000006: # Computer (AGC), we believe for Apollo 8.
058247,000007: # Assembler: yaYUL
058248,000008: # Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
058249,000009: # Website: www.ibiblio.org/apollo/index.html
058250,000010: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Colossus237/
058251,000011: # Mod history: 2011-04-17 JL Adapted from corresponding Colossus 249 file.
058252,000012:
058253,000013: # # Page 1378
058254,000014: 01,3520 BANK 01
058255,000015: 01,2000 SETLOC RESTART
058256,000016: 01,2000 BANK
058257,000017:
058258,000018: 01,3520 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
058259,000019:
058260,000020: 01,3520 COUNT 01/RSROU
058261,000021:
058262,000022: 01,3520 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
058263,000023: 01,3521 60000 DOUBLE # SAVE FOR INDEXING
058264,000024: 01,3522 54155 TS TEMP2G
058265,000025:
058266,000026: 01,3523 33762 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
058267,000027: 01,3524 54157 TS TEMPSWCH # TABLE PHASE
058268,000028:
058269,000029: 01,3525 33557 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
058270,000030: 01,3526 54707 TS GOLOC +2 # GROUP AFTER THIS
058271,000031:
058272,000032: 01,3527 30154 CA TEMPPHS
058273,000033: 01,3530 74744 MASK OCT1400
058274,000034: 01,3531 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART
058275,000035: 01,3532 13543 TCF ITSAVAR # IT:S A VARIABLE RESTART
058276,000036:
058277,000037: 01,3533 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
058278,000038: 01,3534 10000 CCS A
058279,000039: 01,3535 13643 TCF ITSATBL # NO, ITS A TABLE RESTART
058280,000040:
058281,000041: 01,3536 34761 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
058282,000042: 01,3537 05042 TC FINDVAC # THE DISPLAY RESTART JOB
058283,000043: 01,3540 E3,1400 EBANK= LST1
058284,000044: 01,3540 03165 20063 2CADR INITDSP
058285,000045:
058286,000046: 01,3542 03557 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
058287,000047:
058288,000048: 01,3543 74744 ITSAVAR MASK OCT1400 # IS IT TYPE B ?
058289,000049: 01,3544 10000 CCS A
058290,000050: 01,3545 13614 TCF ITSLIKEB # YES,IT IS TYPE B
058291,000051:
058292,000052: 01,3546 00006 EXTEND # STORE THE JOB (OR TASK) 2CADR FOR EXIT
058293,000053: 01,3547 50155 NDX TEMP2G
058294,000054: 01,3550 31437 DCA PHSNAME1
058295,000055: 01,3551 52706 DXCH GOLOC
058296,000056:
058297,000057: 01,3552 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCAL
058298,000058: 01,3553 74716 MASK OCT7
058299,000059: 01,3554 67715 AD MINUS2
058300,000060: 01,3555 10000 CCS A
058301,000061: 01,3556 13726 TCF ITSLNGCL # ITS A LONGCALL
058302,000062:
058303,000063: # # Page 1379
058304,000064: 01,3557 04570 RTRNCADR TC SWRETURN # CANT GET HERE.
058305,000065: 01,3560 13562 TCF ITSAWAIT
058306,000066:
058307,000067: 01,3561 13627 TCF ITSAJOB # ITS A JOB
058308,000068:
058309,000069: 01,3562 33766 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
058310,000070: 01,3563 54704 TS GOLOC -1
058311,000071:
058312,000072: 01,3564 50155 NDX TEMP2G # DIRECTLY STORED
058313,000073: 01,3565 31054 CA PHSPRDT1
058314,000074: 01,3566 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
058315,000075: 01,3567 24000 INCR A # NO.
058316,000076: 01,3570 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
058317,000077:
058318,000078: 01,3571 15367 TCF ITSINDIR # STORED INDIRECTLY
058319,000079:
058320,000080: 01,3572 13612 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
058321,000081:
058322,000082: # ***** THIS MUST BE IN FIXED FIXED *****
058323,000083:
058324,000084: 5367 BLOCK 02
058325,000085: 4000 SETLOC FFTAG2
058326,000086: 4000 BANK
058327,000087:
058328,000088: 5367 COUNT 02/RSROU
058329,000089:
058330,000090: 5367 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT B BANK IN CASE THIS IS
058331,000091: 5370 22006 LXCH BB # SWITCHED ERRASIBLE
058332,000092:
058333,000093: 5371 50000 NDX A # GET THE TIME INDIRECTLY
058334,000094: 5372 30001 CA 1
058335,000095:
058336,000096: 5373 22006 LXCH BB # RESTORE THE BB AND GOLOC
058337,000097: 5374 22706 LXCH GOLOC +1
058338,000098:
058339,000099: 5375 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
058340,000100:
058341,000101: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
058342,000102:
058343,000103: 01,3573 BANK 01
058344,000104: 01,2000 SETLOC RESTART
058345,000105: 01,2000 BANK
058346,000106:
058347,000107: 01,3573 COUNT 01/RSROU
058348,000108:
058349,000109: 01,3573 40000 FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTD
058350,000110: 01,3574 54001 TS L # AND SAVE
058351,000111: 01,3575 50155 NDX TEMP2G
058352,000112: 01,3576 41053 CS TBASE1
058353,000113: 01,3577 00006 EXTEND
058354,000114: # # Page 1380
058355,000115: 01,3600 60025 SU TIME1
058356,000116: 01,3601 10000 CCS A
058357,000117: 01,3602 40000 COM
058358,000118: 01,3603 67700 AD OCT37776
058359,000119: 01,3604 64712 AD ONE
058360,000120: 01,3605 60001 AD L
058361,000121: 01,3606 10000 CCS A
058362,000122: 01,3607 34714 CA ZERO
058363,000123: 01,3610 13612 TCF +2
058364,000124: 01,3611 13612 TCF +1
058365,000125: 01,3612 64712 IMEDIATE AD ONE
058366,000126: 01,3613 00704 TC GOLOC -1
058367,000127: 01,3614 33557 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
058368,000128: 01,3615 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
058369,000129:
058370,000130: 01,3616 33763 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
058371,000131: 01,3617 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE
058372,000132:
058373,000133: 01,3620 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
058374,000134: 01,3621 76043 MASK OCT177 # PART OF THIS VARIABLE PHASE
058375,000135: 01,3622 54154 TS TEMPPHS
058376,000136:
058377,000137: 01,3623 00006 EXTEND
058378,000138: 01,3624 50155 NDX TEMP2G # OBTAIN THE JOB:S 2CADR
058379,000139: 01,3625 31437 DCA PHSNAME1
058380,000140: 01,3626 52706 DXCH GOLOC
058381,000141:
058382,000142: 01,3627 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET:S GO
058383,000143: 01,3630 31054 CA PHSPRDT1
058384,000144: 01,3631 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF ITS
058385,000145: 01,3632 00006 EXTEND # A FINDVAC OR A NOVAC
058386,000146: 01,3633 63637 BZMF ITSNOVAC
058387,000147:
058388,000148: 01,3634 33765 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
058389,000149: 01,3635 56704 XCH GOLOC -1 # PICK UP PRIO,
058390,000150: 01,3636 00704 TC GOLOC -1 # AND GO
058391,000151:
058392,000152: 01,3637 33767 ITSNOVAC CAF NOVACADR # NEGATIVE,
058393,000153: 01,3640 56704 XCH GOLOC -1 # SET UP NOVAC CALL,
058394,000154: 01,3641 40000 COM # CORRECT PRIO,
058395,000155: 01,3642 00704 TC GOLOC -1 # AND GO
058396,000156:
058397,000157: 01,3643 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
058398,000158: 01,3644 10020 CCS CYR
058399,000159: 01,3645 13646 TCF +1 # IT:S EVEN
058400,000160: 01,3646 13744 TCF ITSEVEN
058401,000161:
058402,000162: 01,3647 33557 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
058403,000163: 01,3650 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
058404,000164:
058405,000165: # # Page 1381
058406,000166: 01,3651 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
058407,000167: 01,3652 54021 TS SR # THE RESTART TABLES
058408,000168: 01,3653 60021 AD SR
058409,000169: 01,3654 50155 NDX TEMP2G
058410,000170: 01,3655 62001 AD SIZETAB +1
058411,000171: 01,3656 54156 TS POINTER
058412,000172:
058413,000173: 01,3657 00006 CONTBL2 EXTEND # FIND OUT WHAT:S IN THE TABLE
058414,000174: 01,3660 50156 NDX POINTER
058415,000175: 01,3661 32002 DCA CADRTAB # GET THE 2CADR
058416,000176:
058417,000177: 01,3662 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION
058418,000178:
058419,000179: 01,3663 10000 CCS A # IS IT A JOB OR IT IT TIMED
058420,000180: 01,3664 24000 INCR A # POSITIVE, MUST BE A JOB
058421,000181: 01,3665 13740 TCF ITSAJOB2
058422,000182:
058423,000183: 01,3666 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
058424,000184: 01,3667 54705 TS GOLOC # LET-S STORE THE CORRECT CADR
058425,000185:
058426,000186: 01,3670 33766 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
058427,000187: 01,3671 54704 TS GOLOC -1
058428,000188:
058429,000189: 01,3672 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
058430,000190: 01,3673 74701 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
058431,000191: 01,3674 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
058432,000192: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
058433,000193: # IN IMPORTANCE ANYWAY. BIT 4
058434,000194: 01,3675 13733 TCF ITSWTLST # IT IS A WAITLIST CALL
058435,000195:
058436,000196: 01,3676 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T
058437,000197: 01,3677 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL
058438,000198:
058439,000199: 01,3700 15376 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
058440,000200:
058441,000201: # ***** THIS MUST BE IN FIXED FIXED *****
058442,000202:
058443,000203: 5376 BLOCK 02
058444,000204: 4000 SETLOC FFTAG2
058445,000205: 4000 BANK
058446,000206:
058447,000207: 5376 COUNT 02/RSROU
058448,000208:
058449,000209: 5376 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
058450,000210: 5377 22006 LXCH BB
058451,000211: 5400 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
058452,000212:
058453,000213: 5401 00006 EXTEND # GET THE DELTA TIME
058454,000214: 5402 50000 NDX A
058455,000215: 5403 30001 DCA 0
058456,000216: # # Page 1382
058457,000217: 5404 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK
058458,000218: 5405 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS
058459,000219: 5406 22706 LXCH GOLOC +1 # AND PRESERVE OUR L
058460,000220:
058461,000221: 5407 13701 TCF ITSLGCL2 # NOT LET:S PROCESS THIS LONGCALL
058462,000222:
058463,000223: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
058464,000224:
058465,000225: 01,3701 BANK 01
058466,000226: 01,2000 SETLOC RESTART
058467,000227: 01,2000 BANK
058468,000228:
058469,000229: 01,3701 COUNT 01/RSROU
058470,000230:
058471,000231: 01,3701 53140 ITSLGCL2 DXCH LONGTIME
058472,000232:
058473,000233: 01,3702 00006 EXTEND # CALCULATE TIME LEFT
058474,000234: 01,3703 40025 DCS TIME2
058475,000235: 01,3704 21140 DAS LONGTIME
058476,000236: 01,3705 00006 EXTEND
058477,000237: 01,3706 31136 DCA LONGBASE
058478,000238: 01,3707 21140 DAS LONGTIME
058479,000239:
058480,000240: 01,3710 11137 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
058481,000241: 01,3711 13721 TCF LONGCLCL
058482,000242: 01,3712 13714 TCF +2
058483,000243: 01,3713 13607 TCF IMEDIATE -3
058484,000244: 01,3714 11140 CCS LONGTIME +1
058485,000245: 01,3715 13721 TCF LONGCLCL
058486,000246: 01,3716 13717 NOOP # CAN:T GET HERE *********
058487,000247: 01,3717 13607 TCF IMEDIATE -3
058488,000248: 01,3720 13612 TCF IMEDIATE
058489,000249:
058490,000250: 01,3721 33764 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
058491,000251: 01,3722 54704 TS GOLOC -1
058492,000252:
058493,000253: 01,3723 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL
058494,000254: 01,3724 31140 DCA LONGTIME
058495,000255: 01,3725 00704 TC GOLOC -1
058496,000256:
058497,000257: 01,3726 33766 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
058498,000258: 01,3727 54704 TS GOLOC -1
058499,000259:
058500,000260: 01,3730 50155 NDX TEMP2G
058501,000261: 01,3731 41054 CS PHSPRDT1 # GET THE DELTA T ADDRESS
058502,000262:
058503,000263: 01,3732 15376 TCF ITSLGCL1 # NOW GET THE DELTA TIME
058504,000264:
058505,000265: 01,3733 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
058506,000266: 01,3734 54706 TS GOLOC +1
058507,000267: # # Page 1383
058508,000268: 01,3735 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
058509,000269: 01,3736 32000 CA PRDTTAB # DIRECTOY OR INDIRECTLY
058510,000270:
058511,000271: 01,3737 13566 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
058512,000272:
058513,000273: 01,3740 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR
058514,000274:
058515,000275: 01,3741 50156 NDX POINTER # ADD THE PRIORITY AND LET:S GO
058516,000276: 01,3742 32000 CA PRDTTAB
058517,000277:
058518,000278: 01,3743 13631 TCF CHKNOVAC
058519,000279:
058520,000280: 01,3744 30157 ITSEVEN CA TEMPSWCH # SET FOR EITHER THE SECOND PART OF THE
058521,000281: 01,3745 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
058522,000282:
058523,000283: 01,3746 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
058524,000284: 01,3747 32000 CA SIZETAB # THE TABLE
058525,000285: 01,3750 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET:S SEE YOU DO
058526,000286: 01,3751 60154 AD TEMPPHS # BETTER IN TIME OR NUMBERR OF LOCATIONS
058527,000287: 01,3752 60154 AD TEMPPHS
058528,000288: 01,3753 54156 TS POINTER
058529,000289:
058530,000290: 01,3754 13657 TCF CONTBL2 # NO PROCESS WHAT IS IN THE TABLE
058531,000291:
058532,000292: 01,3755 36214 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
058533,000293: 01,3756 26156 ADS POINTER # THE TABLE
058534,000294:
058535,000295: 01,3757 33557 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
058536,000296: 01,3760 54707 TS GOLOC +2 # EVEN TABLE , SO AFTER IT GET THE NEXT
058537,000297: # GROUP
058538,000298: 01,3761 13657 TCF CONTBL2 # SO LET:S GET THE SECOND ENTRY IN THE TBL
058539,000299:
058540,000300: 01,3762 0154 TEMPPHS EQUALS MPAC
058541,000301: 01,3762 0155 TEMP2G EQUALS MPAC +1
058542,000302: 01,3762 0156 POINTER EQUALS MPAC +2
058543,000303: 01,3762 0157 TEMPSWCH EQUALS MPAC +3
058544,000304: 01,3762 0705 GOLOC EQUALS VAC5 +20D
058545,000305: 01,3762 7715 MINUS2 EQUALS NEG2
058546,000306: 01,3762 6043 OCT177 EQUALS LOW7
058547,000307:
058548,000308:
058549,000309: 01,3762 03755 PHS2CADR GENADR PHSPART2
058550,000310: 01,3763 03533 PRT2CADR GENADR GETPART2
058551,000311: 01,3764 05231 LGCLCADR GENADR LONGCALL
058552,000312: 01,3765 05042 FVACCADR GENADR FINDVAC
058553,000313: 01,3766 05140 WTLTCADR GENADR WAITLIST
058554,000314: 01,3767 05027 NOVACADR GENADR NOVAC
End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc