Source Code

061214,000001: # Copyright: Public domain. 061215,000002: # Filename: RESTARTS_ROUTINE.agc 061216,000003: # Purpose: Part of the source code for Comanche, build 055. It 061217,000004: # is part of the source code for the Command Module's 061218,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11. 061219,000006: # Assembler: yaYUL 061220,000007: # Reference: pp. 1414-1419 061221,000008: # Contact: Ron Burkey <info@sandroid.org> 061222,000009: # Website: http://www.ibiblio.org/apollo. 061223,000010: # Mod history: 2009-05-07 RSB Adapted from Colossus249 file of the same 061224,000011: # name, and page images. Corrected various 061225,000012: # typos in the transcription of program 061226,000013: # comments, and these should be back-ported 061227,000014: # to Colossus249. 061228,000015: 061229,000016: # The contents of the "Comanche055" files, in general, are transcribed 061230,000017: # from scanned documents. 061231,000018: 061232,000019: # Assemble revision 055 of AGC program Comanche by NASA 061233,000020: # 2021113-051. April 1, 1969. 061234,000021: 061235,000022: # This AGC program shall also be referred to as Colossus 2A 061236,000023: 061237,000024: # Prepared by 061238,000025: # Massachussets Institute of Technology 061239,000026: # 75 Cambridge Parkway 061240,000027: # Cambridge, Massachusetts 061241,000028: 061242,000029: # under NASA contract NAS 9-4065. 061243,000030: 061244,000031: # Refer directly to the online document mentioned above for further 061245,000032: # information. Please report any errors to info@sandroid.org. 061246,000033: 061247,000034: # Page 1414 061248,000035: 01,3520 BANK 01 061249,000036: 01,2000 SETLOC RESTART 061250,000037: 01,2000 BANK 061251,000038: 061252,000039: 01,3520 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK 061253,000040: 061254,000041: 01,3520 COUNT 01/RSROU 061255,000042: 061256,000043: 01,3520 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1 061257,000044: 01,3521 60000 DOUBLE # SAVE FOR INDEXING 061258,000045: 01,3522 54155 TS TEMP2G 061259,000046: 061260,000047: 01,3523 33762 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN 061261,000048: 01,3524 54157 TS TEMPSWCH # TABLE PHASE 061262,000049: 061263,000050: 01,3525 33557 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT 061264,000051: 01,3526 54707 TS GOLOC +2 # GROUP AFTER THIS 061265,000052: 061266,000053: 01,3527 30154 CA TEMPPHS 061267,000054: 01,3530 75051 MASK OCT1400 061268,000055: 01,3531 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART 061269,000056: 01,3532 13543 TCF ITSAVAR # IT'S A VARIABLE RESTART 061270,000057: 061271,000058: 01,3533 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART 061272,000059: 01,3534 10000 CCS A 061273,000060: 01,3535 13643 TCF ITSATBL # NO, IT'S A TABLE RESTART 061274,000061: 061275,000062: 01,3536 35066 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START 061276,000063: 01,3537 05147 TC FINDVAC # THE DISPLAY RESTART JOB 061277,000064: 01,3540 E3,1400 EBANK= LST1 061278,000065: 01,3540 03261 20063 2CADR INITDSP 061279,000066: 061280,000067: 01,3542 03557 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE 061281,000068: 061282,000069: 01,3543 75051 ITSAVAR MASK OCT1400 # IS IT TYPE B ? 061283,000070: 01,3544 10000 CCS A 061284,000071: 01,3545 13614 TCF ITSLIKEB # YES, IT IS TYPE B 061285,000072: 061286,000073: 01,3546 00006 EXTEND # STORES THE JOB (OR TASK) 2CADR FOR EXIT 061287,000074: 01,3547 50155 NDX TEMP2G 061288,000075: 01,3550 31437 DCA PHSNAME1 061289,000076: 01,3551 52706 DXCH GOLOC 061290,000077: 061291,000078: 01,3552 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCALL 061292,000079: 01,3553 75023 MASK OCT7 061293,000080: 01,3554 67715 AD MINUS2 061294,000081: 01,3555 10000 CCS A 061295,000082: 01,3556 13726 TCF ITSLNGCL # IT'S A LONGCALL 061296,000083: 061297,000084: # Page 1415 061298,000085: 01,3557 04675 RTRNCADR TC SWRETURN # CAN'T GET HERE. 061299,000086: 01,3560 13562 TCF ITSAWAIT 061300,000087: 061301,000088: 01,3561 13627 TCF ITSAJOB # IT'S A JOB 061302,000089: 061303,000090: 01,3562 33766 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL 061304,000091: 01,3563 54704 TS GOLOC -1 061305,000092: 061306,000093: 01,3564 50155 NDX TEMP2G # DIRECTLY STORED 061307,000094: 01,3565 31054 CA PHSPRDT1 061308,000095: 01,3566 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART 061309,000096: 01,3567 24000 INCR A # NO. 061310,000097: 01,3570 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN 061311,000098: 061312,000099: 01,3571 15500 TCF ITSINDIR # STORED INDIRECTLY 061313,000100: 061314,000101: 01,3572 13612 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART 061315,000102: 061316,000103: # ***** THIS MUST BE IN FIXED FIXED ***** 061317,000104: 061318,000105: 5500 BLOCK 02 061319,000106: 4000 SETLOC FFTAG2 061320,000107: 4000 BANK 061321,000108: 061322,000109: 5500 COUNT 02/RSROU 061323,000110: 061324,000111: 5500 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS 061325,000112: 5501 22006 LXCH BB # SWITCHED ERASABLE 061326,000113: 061327,000114: 5502 50000 NDX A # GET THE TIME INDIRECTLY 061328,000115: 5503 30001 CA 1 061329,000116: 061330,000117: 5504 22006 LXCH BB # RESTORE THE BB AND GOLOC 061331,000118: 5505 22706 LXCH GOLOC +1 061332,000119: 061333,000120: 5506 13573 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN 061334,000121: 061335,000122: # ***** YOU MAY RETURN TO SWITCHED FIXED ***** 061336,000123: 061337,000124: 01,3573 BANK 01 061338,000125: 01,2000 SETLOC RESTART 061339,000126: 01,2000 BANK 061340,000127: 061341,000128: 01,3573 COUNT 01/RSROU 061342,000129: 061343,000130: 01,3573 40000 FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED 061344,000131: 01,3574 54001 TS L # AND SAVE 061345,000132: 01,3575 50155 NDX TEMP2G 061346,000133: 01,3576 41053 CS TBASE1 061347,000134: 01,3577 00006 EXTEND 061348,000135: # Page 1416 061349,000136: 01,3600 60025 SU TIME1 061350,000137: 01,3601 10000 CCS A 061351,000138: 01,3602 40000 COM 061352,000139: 01,3603 67700 AD OCT37776 061353,000140: 01,3604 65017 AD ONE 061354,000141: 01,3605 60001 AD L 061355,000142: 01,3606 10000 CCS A 061356,000143: 01,3607 35021 CA ZERO 061357,000144: 01,3610 13612 TCF +2 061358,000145: 01,3611 13612 TCF +1 061359,000146: 01,3612 65017 IMEDIATE AD ONE 061360,000147: 01,3613 00704 TC GOLOC -1 061361,000148: 01,3614 33557 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN 061362,000149: 01,3615 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE 061363,000150: 061364,000151: 01,3616 33763 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS 061365,000152: 01,3617 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE 061366,000153: 061367,000154: 01,3620 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE 061368,000155: 01,3621 76043 MASK OCT177 # PART OF THIS VARIABLE PHASE 061369,000156: 01,3622 54154 TS TEMPPHS 061370,000157: 061371,000158: 01,3623 00006 EXTEND 061372,000159: 01,3624 50155 NDX TEMP2G # OBTAIN THE JOB'S 2CADR 061373,000160: 01,3625 31437 DCA PHSNAME1 061374,000161: 01,3626 52706 DXCH GOLOC 061375,000162: 061376,000163: 01,3627 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET'S GO 061377,000164: 01,3630 31054 CA PHSPRDT1 061378,000165: 01,3631 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF IT'S 061379,000166: 01,3632 00006 EXTEND # A FINDVAC OR A NOVAC 061380,000167: 01,3633 63637 BZMF ITSNOVAC 061381,000168: 061382,000169: 01,3634 33765 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL. 061383,000170: 01,3635 56704 XCH GOLOC -1 # PICK UP PRIO 061384,000171: 01,3636 00704 TC GOLOC -1 AND 061385,000172: 061386,000173: 01,3637 33767 ITSNOVAC CAF NOVACADR # NEGATIVE, 061387,000174: 01,3640 56704 XCH GOLOC -1 # SET UP NOVAC CALL, 061388,000175: 01,3641 40000 COM # CORRECT PRIO, 061389,000176: 01,3642 00704 TC GOLOC -1 # AND GO 061390,000177: 061391,000178: 01,3643 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN 061392,000179: 01,3644 10020 CCS CYR 061393,000180: 01,3645 13646 TCF +1 # IT'S EVEN 061394,000181: 01,3646 13744 TCF ITSEVEN 061395,000182: 061396,000183: 01,3647 33557 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A 061397,000184: 01,3650 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT 061398,000185: # Page 1417 061399,000186: 01,3651 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN 061400,000187: 01,3652 54021 TS SR # THE RESTART TABLES 061401,000188: 01,3653 60021 AD SR 061402,000189: 01,3654 50155 NDX TEMP2G 061403,000190: 01,3655 62001 AD SIZETAB +1 061404,000191: 01,3656 54156 TS POINTER 061405,000192: 061406,000193: 01,3657 00006 CONTBL2 EXTEND # FIND OUT WHAT'S IN THE TABLE 061407,000194: 01,3660 50156 NDX POINTER 061408,000195: 01,3661 32002 DCA CADRTAB # GET THE 2CADR 061409,000196: 061410,000197: 01,3662 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION 061411,000198: 061412,000199: 01,3663 10000 CCS A # IS IT A JOB OR IT IT TIMED 061413,000200: 01,3664 24000 INCR A # POSITIVE, MUST BE A JOB 061414,000201: 01,3665 13740 TCF ITSAJOB2 061415,000202: 061416,000203: 01,3666 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL 061417,000204: 01,3667 54705 TS GOLOC # LET'S STORE THE CORRECT CADR 061418,000205: 061419,000206: 01,3670 33766 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST 061420,000207: 01,3671 54704 TS GOLOC -1 061421,000208: 061422,000209: 01,3672 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL 061423,000210: 01,3673 75006 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB 061424,000211: 01,3674 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7, 061425,000212: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT 061426,000213: # IN IMPORTANCE ANYWAY. BUT 4 061427,000214: 01,3675 13733 TCF ITSWTLST # IT IS A WAITLIST CALL 061428,000215: 061429,000216: 01,3676 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T 061430,000217: 01,3677 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL 061431,000218: 061432,000219: 01,3700 15507 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME 061433,000220: 061434,000221: # ***** THIS MUST BE IN FIXED FIXED ***** 061435,000222: 061436,000223: 5507 BLOCK 02 061437,000224: 4000 SETLOC FFTAG2 061438,000225: 4000 BANK 061439,000226: 061440,000227: 5507 COUNT 02/RSROU 061441,000228: 061442,000229: 5507 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK 061443,000230: 5510 22006 LXCH BB 061444,000231: 5511 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS 061445,000232: 061446,000233: 5512 00006 EXTEND # GET THE DELTA TIME 061447,000234: 5513 50000 NDX A 061448,000235: 5514 30001 DCA 0 061449,000236: # Page 1418 061450,000237: 5515 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK 061451,000238: 5516 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS 061452,000239: 5517 22706 LXCH GOLOC +1 # AND PRESERVE OUR L 061453,000240: 5520 13701 TCF ITSLGCL2 # NOT GET'S PROCESS THIS LONGCALL 061454,000241: 061455,000242: # ***** YOU MAY RETURN TO SWITCHED FIXED ***** 061456,000243: 061457,000244: 01,3701 BANK 01 061458,000245: 01,2000 SETLOC RESTART 061459,000246: 01,2000 BANK 061460,000247: 061461,000248: 01,3701 COUNT 01/RSROU 061462,000249: 01,3701 53140 ITSLGCL2 DXCH LONGTIME 061463,000250: 061464,000251: 01,3702 00006 EXTEND # CALCULATE TIME LEFT 061465,000252: 01,3703 40025 DCS TIME2 061466,000253: 01,3704 21140 DAS LONGTIME 061467,000254: 01,3705 00006 EXTEND 061468,000255: 01,3706 31136 DCA LONGBASE 061469,000256: 01,3707 21140 DAS LONGTIME 061470,000257: 061471,000258: 01,3710 11137 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED 061472,000259: 01,3711 13721 TCF LONGCLCL 061473,000260: 01,3712 13714 TCF +2 061474,000261: 01,3713 13607 TCF IMEDIATE -3 061475,000262: 01,3714 11140 CCS LONGTIME +1 061476,000263: 01,3715 13721 TCF LONGCLCL 061477,000264: 01,3716 13717 NOOP # CAN'T GET HERE ************ 061478,000265: 01,3717 13607 TCF IMEDIATE -3 061479,000266: 01,3720 13612 TCF IMEDIATE 061480,000267: 061481,000268: 01,3721 33764 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL 061482,000269: 01,3722 54704 TS GOLOC -1 061483,000270: 061484,000271: 01,3723 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL 061485,000272: 01,3724 31140 DCA LONGTIME 061486,000273: 01,3725 00704 TC GOLOC -1 061487,000274: 061488,000275: 01,3726 33766 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST 061489,000276: 01,3727 54704 TS GOLOC -1 061490,000277: 061491,000278: 01,3730 50155 NDX TEMP2G 061492,000279: 01,3731 41054 CS PHSPRDT1 # GET THE DELTA T ADDRESS 061493,000280: 061494,000281: 01,3732 15507 TCF ITSLGCL1 # NOW GET THE DELTA TIME 061495,000282: 061496,000283: 01,3733 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION 061497,000284: 01,3734 54706 TS GOLOC +1 061498,000285: # Page 1419 061499,000286: 01,3735 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED 061500,000287: 01,3736 32000 CA PRDTTAB # DIRECTLY OR INDIRECTLY 061501,000288: 061502,000289: 01,3737 13566 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED 061503,000290: 061504,000291: 01,3740 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR 061505,000292: 061506,000293: 01,3741 50156 NDX POINTER # ADD THE PRIORITY AND LET'S GO 061507,000294: 01,3742 32000 CA PRDTTAB 061508,000295: 061509,000296: 01,3743 13631 TCF CHKNOVAC 061510,000297: 061511,000298: 01,3744 30157 ITSEVEN CA TEMPSWCH # SET FOR EITHER THE SECOND PART OF THE 061512,000299: 01,3745 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP 061513,000300: 061514,000301: 01,3746 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN 061515,000302: 01,3747 32000 CA SIZETAB # THE TABLE 061516,000303: 01,3750 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET'S SEE YOU DO 061517,000304: 01,3751 60154 AD TEMPPHS # BETTER IN TIME OR NUMBER OF LOCATIONS 061518,000305: 01,3752 60154 AD TEMPPHS 061519,000306: 01,3753 54156 TS POINTER 061520,000307: 061521,000308: 01,3754 13657 TCF CONTBL2 # NO PROCESS WHAT IS IN THE TABLE 061522,000309: 061523,000310: 01,3755 36214 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF 061524,000311: 01,3756 26156 ADS POINTER # THE TABLE 061525,000312: 061526,000313: 01,3757 33557 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE 061527,000314: 01,3760 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT 061528,000315: # GROUP 061529,000316: 01,3761 13657 TCF CONTBL2 # SO LET'S GET THE SECOND ENTRY IN THE TBL 061530,000317: 061531,000318: 01,3762 0154 TEMPPHS EQUALS MPAC 061532,000319: 01,3762 0155 TEMP2G EQUALS MPAC +1 061533,000320: 01,3762 0156 POINTER EQUALS MPAC +2 061534,000321: 01,3762 0157 TEMPSWCH EQUALS MPAC +3 061535,000322: 01,3762 0705 GOLOC EQUALS VAC5 +20D 061536,000323: 01,3762 7715 MINUS2 EQUALS NEG2 061537,000324: 01,3762 6043 OCT177 EQUALS LOW7 061538,000325: 061539,000326: 01,3762 03755 PHS2CADR GENADR PHSPART2 061540,000327: 01,3763 03533 PRT2CADR GENADR GETPART2 061541,000328: 01,3764 05342 LGCLCADR GENADR LONGCALL 061542,000329: 01,3765 05147 FVACCADR GENADR FINDVAC 061543,000330: 01,3766 05245 WTLTCADR GENADR WAITLIST 061544,000331: 01,3767 05134 NOVACADR GENADR NOVAC 061545,000332: 061546,000333: 061547,000334: 061548,000335: End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc