Source Code
059757,000001: # Copyright: Public domain.
059758,000002: # Filename: RESTARTS_ROUTINE.agc
059759,000003: # Purpose: Part of the source code for Colossus, build 249.
059760,000004: # It is part of the source code for the Command Module's (CM)
059761,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9.
059762,000006: # Assembler: yaYUL
059763,000007: # Reference: Starts on p. 1404 of 1701.pdf.
059764,000008: # Contact: Ron Burkey <info@sandroid.org>.
059765,000009: # Website: www.ibiblio.org/apollo.
059766,000010: # Mod history: 08/30/04 RSB. Adapted from corresponding Luminary131 file.
059767,000011:
059768,000012: # The contents of the "Colossus249" files, in general, are transcribed
059769,000013: # from a scanned document obtained from MIT's website,
059770,000014: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this
059771,000015: # document read, in part:
059772,000016:
059773,000017: # Assemble revision 249 of AGC program Colossus by NASA
059774,000018: # 2021111-041. October 28, 1968.
059775,000019:
059776,000020: # This AGC program shall also be referred to as
059777,000021: # Colossus 1A
059778,000022:
059779,000023: # Prepared by
059780,000024: # Massachussets Institute of Technology
059781,000025: # 75 Cambridge Parkway
059782,000026: # Cambridge, Massachusetts
059783,000027: # under NASA contract NAS 9-4065.
059784,000028:
059785,000029: # Refer directly to the online document mentioned above for further information.
059786,000030: # Please report any errors (relative to 1701.pdf) to info@sandroid.org.
059787,000031:
059788,000032: # In some cases, where the source code for Luminary 131 overlaps that of
059789,000033: # Colossus 249, this code is instead copied from the corresponding Luminary 131
059790,000034: # source file, and then is proofed to incorporate any changes.
059791,000035:
059792,000036: # Page 1404
059793,000037: 01,3520 BANK 01
059794,000038: 01,2000 SETLOC RESTART
059795,000039: 01,2000 BANK
059796,000040:
059797,000041: 01,3520 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
059798,000042:
059799,000043: 01,3520 COUNT 01/RSROU
059800,000044:
059801,000045: 01,3520 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
059802,000046: 01,3521 60000 DOUBLE # SAVE FOR INDEXING
059803,000047: 01,3522 54155 TS TEMP2G
059804,000048:
059805,000049: 01,3523 33762 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
059806,000050: 01,3524 54157 TS TEMPSWCH # TABLE PHASE
059807,000051:
059808,000052: 01,3525 33557 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
059809,000053: 01,3526 54707 TS GOLOC +2 # GROUP AFTER THIS
059810,000054:
059811,000055: 01,3527 30154 CA TEMPPHS
059812,000056: 01,3530 74744 MASK OCT1400
059813,000057: 01,3531 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART
059814,000058: 01,3532 13543 TCF ITSAVAR # IT'S A VARIABLE RESTART
059815,000059:
059816,000060: 01,3533 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
059817,000061: 01,3534 10000 CCS A
059818,000062: 01,3535 13643 TCF ITSATBL # NO, IT'S A TABLE RESTART
059819,000063:
059820,000064: 01,3536 34761 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
059821,000065: 01,3537 05042 TC FINDVAC # THE DISPLAY RESTART JOB
059822,000066: 01,3540 E3,1400 EBANK= LST1
059823,000067: 01,3540 03165 20103 2CADR INITDSP
059824,000068:
059825,000069: 01,3542 03557 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
059826,000070:
059827,000071: 01,3543 74744 ITSAVAR MASK OCT1400 # IS IT TYPE B ?
059828,000072: 01,3544 10000 CCS A
059829,000073: 01,3545 13614 TCF ITSLIKEB # YES, IT IS TYPE B
059830,000074:
059831,000075: 01,3546 00006 EXTEND # STORES THE JOB (OR TASK) 2CADR FOR EXIT
059832,000076: 01,3547 50155 NDX TEMP2G
059833,000077: 01,3550 31437 DCA PHSNAME1
059834,000078: 01,3551 52706 DXCH GOLOC
059835,000079:
059836,000080: 01,3552 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCALL
059837,000081: 01,3553 74716 MASK OCT7
059838,000082: 01,3554 67715 AD MINUS2
059839,000083: 01,3555 10000 CCS A
059840,000084: 01,3556 13726 TCF ITSLNGCL # IT'S A LONGCALL
059841,000085:
059842,000086: # Page 1405
059843,000087: 01,3557 04570 RTRNCADR TC SWRETURN # CAN'T GET HERE.
059844,000088: 01,3560 13562 TCF ITSAWAIT
059845,000089:
059846,000090: 01,3561 13627 TCF ITSAJOB # IT'S A JOB
059847,000091:
059848,000092: 01,3562 33766 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
059849,000093: 01,3563 54704 TS GOLOC -1
059850,000094:
059851,000095: 01,3564 50155 NDX TEMP2G # DIRECTLY STORED
059852,000096: 01,3565 31054 CA PHSPRDT1
059853,000097: 01,3566 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
059854,000098: 01,3567 24000 INCR A # NO.
059855,000099: 01,3570 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
059856,000100:
059857,000101: 01,3571 15367 TCF ITSINDIR # STORED INDIRECTLY
059858,000102:
059859,000103: 01,3572 13612 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
059860,000104:
059861,000105: # ***** THIS MUST BE IN FIXED FIXED *****
059862,000106:
059863,000107: 5367 BLOCK 02
059864,000108: 4000 SETLOC FFTAG2
059865,000109: 4000 BANK
059866,000110:
059867,000111: 5367 COUNT 02/RSROU
059868,000112:
059869,000113: 5367 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS
059870,000114: 5370 22006 LXCH BB # SWITCHED ERASABLE
059871,000115:
059872,000116: 5371 50000 NDX A # GET THE TIME INDIRECTLY
059873,000117: 5372 30001 CA 1
059874,000118:
059875,000119: 5373 22006 LXCH BB # RESTORE THE BB AND GOLOC
059876,000120: 5374 22706 LXCH GOLOC +1
059877,000121:
059878,000122: 5375 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
059879,000123:
059880,000124: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
059881,000125:
059882,000126: 01,3573 BANK 01
059883,000127: 01,2000 SETLOC RESTART
059884,000128: 01,2000 BANK
059885,000129:
059886,000130: 01,3573 COUNT 01/RSROU
059887,000131:
059888,000132: 01,3573 40000 FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED
059889,000133: 01,3574 54001 TS L # AND SAVE
059890,000134: 01,3575 50155 NDX TEMP2G
059891,000135: 01,3576 41053 CS TBASE1
059892,000136: 01,3577 00006 EXTEND
059893,000137: # Page 1406
059894,000138: 01,3600 60025 SU TIME1
059895,000139: 01,3601 10000 CCS A
059896,000140: 01,3602 40000 COM
059897,000141: 01,3603 67700 AD OCT37776
059898,000142: 01,3604 64712 AD ONE
059899,000143: 01,3605 60001 AD L
059900,000144: 01,3606 10000 CCS A
059901,000145: 01,3607 34714 CA ZERO
059902,000146: 01,3610 13612 TCF +2
059903,000147: 01,3611 13612 TCF +1
059904,000148: 01,3612 64712 IMEDIATE AD ONE
059905,000149: 01,3613 00704 TC GOLOC -1
059906,000150: 01,3614 33557 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
059907,000151: 01,3615 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
059908,000152:
059909,000153: 01,3616 33763 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
059910,000154: 01,3617 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE
059911,000155:
059912,000156: 01,3620 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
059913,000157: 01,3621 76043 MASK OCT177 # PART OF THIS VARIABLE PHASE
059914,000158: 01,3622 54154 TS TEMPPHS
059915,000159:
059916,000160: 01,3623 00006 EXTEND
059917,000161: 01,3624 50155 NDX TEMP2G # OBTAIN THE JOB'S 2CADR
059918,000162: 01,3625 31437 DCA PHSNAME1
059919,000163: 01,3626 52706 DXCH GOLOC
059920,000164:
059921,000165: 01,3627 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET'S GO
059922,000166: 01,3630 31054 CA PHSPRDT1
059923,000167: 01,3631 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF IT'S
059924,000168: 01,3632 00006 EXTEND # A FINDVAC OR A NOVAC
059925,000169: 01,3633 63637 BZMF ITSNOVAC
059926,000170:
059927,000171: 01,3634 33765 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
059928,000172: 01,3635 56704 XCH GOLOC -1 # PICK UP PRIO
059929,000173: 01,3636 00704 TC GOLOC -1 AND
059930,000174:
059931,000175: 01,3637 33767 ITSNOVAC CAF NOVACADR # NEGATIVE,
059932,000176: 01,3640 56704 XCH GOLOC -1 # SET UP NOVAC CALL,
059933,000177: 01,3641 40000 COM # CORRECT PRIO,
059934,000178: 01,3642 00704 TC GOLOC -1 # AND GO
059935,000179:
059936,000180: 01,3643 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
059937,000181: 01,3644 10020 CCS CYR
059938,000182: 01,3645 13646 TCF +1 # IT'S EVEN
059939,000183: 01,3646 13744 TCF ITSEVEN
059940,000184:
059941,000185: 01,3647 33557 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
059942,000186: 01,3650 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
059943,000187: # Page 1407
059944,000188: 01,3651 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
059945,000189: 01,3652 54021 TS SR # THE RESTART TABLES
059946,000190: 01,3653 60021 AD SR
059947,000191: 01,3654 50155 NDX TEMP2G
059948,000192: 01,3655 62001 AD SIZETAB +1
059949,000193: 01,3656 54156 TS POINTER
059950,000194:
059951,000195: 01,3657 00006 CONTBL2 EXTEND # FIND OUT WHAT'S IN THE TABLE
059952,000196: 01,3660 50156 NDX POINTER
059953,000197: 01,3661 32002 DCA CADRTAB # GET THE 2CADR
059954,000198:
059955,000199: 01,3662 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION
059956,000200:
059957,000201: 01,3663 10000 CCS A # IS IT A JOB OR IT IT TIMED
059958,000202: 01,3664 24000 INCR A # POSITIVE, MUST BE A JOB
059959,000203: 01,3665 13740 TCF ITSAJOB2
059960,000204:
059961,000205: 01,3666 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
059962,000206: 01,3667 54705 TS GOLOC # LET'S STORE THE CORRECT CADR
059963,000207:
059964,000208: 01,3670 33766 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
059965,000209: 01,3671 54704 TS GOLOC -1
059966,000210:
059967,000211: 01,3672 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
059968,000212: 01,3673 74701 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
059969,000213: 01,3674 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
059970,000214: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
059971,000215: # IN IMPORTANCE ANYWAY. BUT 4
059972,000216: 01,3675 13733 TCF ITSWTLST # IT IS A WAITLIST CALL
059973,000217:
059974,000218: 01,3676 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T
059975,000219: 01,3677 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL
059976,000220:
059977,000221: 01,3700 15376 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
059978,000222:
059979,000223: # ***** THIS MUST BE IN FIXED FIXED *****
059980,000224:
059981,000225: 5376 BLOCK 02
059982,000226: 4000 SETLOC FFTAG2
059983,000227: 4000 BANK
059984,000228:
059985,000229: 5376 COUNT 02/RSROU
059986,000230:
059987,000231: 5376 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
059988,000232: 5377 22006 LXCH BB
059989,000233: 5400 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
059990,000234:
059991,000235: 5401 00006 EXTEND # GET THE DELTA TIME
059992,000236: 5402 50000 NDX A
059993,000237: 5403 30001 DCA 0
059994,000238: # Page 1408
059995,000239: 5404 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK
059996,000240: 5405 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS
059997,000241: 5406 22706 LXCH GOLOC +1 # AND PRESERVE OUR L
059998,000242: 5407 13701 TCF ITSLGCL2 # NOT GET'S PROCESS THIS LONGCALL
059999,000243:
060000,000244: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
060001,000245:
060002,000246: 01,3701 BANK 01
060003,000247: 01,2000 SETLOC RESTART
060004,000248: 01,2000 BANK
060005,000249:
060006,000250: 01,3701 COUNT 01/RSROU
060007,000251: 01,3701 53140 ITSLGCL2 DXCH LONGTIME
060008,000252:
060009,000253: 01,3702 00006 EXTEND # CALCULATE TIME LEFT
060010,000254: 01,3703 40025 DCS TIME2
060011,000255: 01,3704 21140 DAS LONGTIME
060012,000256: 01,3705 00006 EXTEND
060013,000257: 01,3706 31136 DCA LONGBASE
060014,000258: 01,3707 21140 DAS LONGTIME
060015,000259:
060016,000260: 01,3710 11137 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
060017,000261: 01,3711 13721 TCF LONGCLCL
060018,000262: 01,3712 13714 TCF +2
060019,000263: 01,3713 13607 TCF IMEDIATE -3
060020,000264: 01,3714 11140 CCS LONGTIME +1
060021,000265: 01,3715 13721 TCF LONGCLCL
060022,000266: 01,3716 13717 NOOP # CAN'T GET HERE ************
060023,000267: 01,3717 13607 TCF IMEDIATE -3
060024,000268: 01,3720 13612 TCF IMEDIATE
060025,000269:
060026,000270: 01,3721 33764 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
060027,000271: 01,3722 54704 TS GOLOC -1
060028,000272:
060029,000273: 01,3723 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL
060030,000274: 01,3724 31140 DCA LONGTIME
060031,000275: 01,3725 00704 TC GOLOC -1
060032,000276:
060033,000277: 01,3726 33766 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
060034,000278: 01,3727 54704 TS GOLOC -1
060035,000279:
060036,000280: 01,3730 50155 NDX TEMP2G
060037,000281: 01,3731 41054 CS PHSPRDT1 # GET THE DELTA T ADDRESS
060038,000282:
060039,000283: 01,3732 15376 TCF ITSLGCL1 # NOW GET THE DELTA TIME
060040,000284:
060041,000285: 01,3733 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
060042,000286: 01,3734 54706 TS GOLOC +1
060043,000287: # Page 1409
060044,000288: 01,3735 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
060045,000289: 01,3736 32000 CA PRDTTAB # DIRECTOY OR INDIRECTLY
060046,000290:
060047,000291: 01,3737 13566 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
060048,000292:
060049,000293: 01,3740 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR
060050,000294:
060051,000295: 01,3741 50156 NDX POINTER # ADD THE PRIORITY AND LET'S GO
060052,000296: 01,3742 32000 CA PRDTTAB
060053,000297:
060054,000298: 01,3743 13631 TCF CHKNOVAC
060055,000299:
060056,000300: 01,3744 30157 ITSEVEN CA TEMPSWCH # SET FOR EITHER THE SECOND PART OF THE
060057,000301: 01,3745 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
060058,000302:
060059,000303: 01,3746 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
060060,000304: 01,3747 32000 CA SIZETAB # THE TABLE
060061,000305: 01,3750 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET'S SEE YOU DO
060062,000306: 01,3751 60154 AD TEMPPHS # BETTER IN TIME OR NUMBER OF LOCATIONS
060063,000307: 01,3752 60154 AD TEMPPHS
060064,000308: 01,3753 54156 TS POINTER
060065,000309:
060066,000310: 01,3754 13657 TCF CONTBL2 # NO PROCESS WHAT IS IN THE TABLE
060067,000311:
060068,000312: 01,3755 36214 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
060069,000313: 01,3756 26156 ADS POINTER # THE TABLE
060070,000314:
060071,000315: 01,3757 33557 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
060072,000316: 01,3760 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT
060073,000317: # GROUP
060074,000318: 01,3761 13657 TCF CONTBL2 # SO LET'S GET THE SECOND ENTRY IN THE TBL
060075,000319:
060076,000320: 01,3762 0154 TEMPPHS EQUALS MPAC
060077,000321: 01,3762 0155 TEMP2G EQUALS MPAC +1
060078,000322: 01,3762 0156 POINTER EQUALS MPAC +2
060079,000323: 01,3762 0157 TEMPSWCH EQUALS MPAC +3
060080,000324: 01,3762 0705 GOLOC EQUALS VAC5 +20D
060081,000325: 01,3762 7715 MINUS2 EQUALS NEG2
060082,000326: 01,3762 6043 OCT177 EQUALS LOW7
060083,000327:
060084,000328: 01,3762 03755 PHS2CADR GENADR PHSPART2
060085,000329: 01,3763 03533 PRT2CADR GENADR GETPART2
060086,000330: 01,3764 05231 LGCLCADR GENADR LONGCALL
060087,000331: 01,3765 05042 FVACCADR GENADR FINDVAC
060088,000332: 01,3766 05140 WTLTCADR GENADR WAITLIST
060089,000333: 01,3767 05027 NOVACADR GENADR NOVAC
060090,000334:
060091,000335:
060092,000336:
060093,000337:
End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc