Source Code

053946,000001: # Copyright: Public domain. 053947,000002: # Filename: RESTARTS_ROUTINE.agc 053948,000003: # Purpose: A section of Luminary 1C, revision 131. 053949,000004: # It is part of the source code for the Lunar Module's (LM) 053950,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 053951,000006: # This file is intended to be a faithful transcription, except 053952,000007: # that the code format has been changed to conform to the 053953,000008: # requirements of the yaYUL assembler rather than the 053954,000009: # original YUL assembler. 053955,000010: # Reference: pp. 1300-1305 of 1729.pdf. 053956,000011: # Contact: Ron Burkey <info@sandroid.org>. 053957,000012: # Website: www.ibiblio.org/apollo/index.html 053958,000013: # Mod history: 06/05/03 RSB. Began transcribing. 053959,000014: # 05/14/05 RSB Corrected website references above. 053960,000015: # 2010-10-25 JL Added missing # in comment. 053961,000016: 053962,000017: # Page 1300 053963,000018: 01,3527 BANK 01 053964,000019: 01,2000 SETLOC RESTART 053965,000020: 01,2000 BANK 053966,000021: 053967,000022: 01,3527 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK 053968,000023: 053969,000024: 01,3527 COUNT* $$/RSROU 053970,000025: 01,3527 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1 053971,000026: 01,3530 60000 DOUBLE # SAVE FOR INDEXING 053972,000027: 01,3531 54155 TS TEMP2G 053973,000028: 053974,000029: 01,3532 33771 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN 053975,000030: 01,3533 54157 TS TEMPSWCH # TABLE PHASE 053976,000031: 053977,000032: 01,3534 33566 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT 053978,000033: 01,3535 54707 TS GOLOC +2 # GROUP AFTER THIS 053979,000034: 053980,000035: 01,3536 30154 CA TEMPPHS 053981,000036: 01,3537 75007 MASK OCT1400 053982,000037: 01,3540 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART 053983,000038: 01,3541 13552 TCF ITSAVAR # IT'S A VARIABLE RESTART 053984,000039: 053985,000040: 01,3542 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART 053986,000041: 01,3543 10000 CCS A 053987,000042: 01,3544 13652 TCF ITSATBL # NO, IT'S A TABLE RESTART 053988,000043: 053989,000044: 01,3545 35024 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START 053990,000045: 01,3546 05105 TC FINDVAC # THE DISPLAY RESTART JOB 053991,000046: 01,3547 E3,1400 EBANK= LST1 053992,000047: 01,3547 03040 20103 2CADR INITDSP 053993,000048: 053994,000049: 01,3551 03566 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE 053995,000050: 053996,000051: 01,3552 75007 ITSAVAR MASK OCT1400 # IS IT TYPE B ? 053997,000052: 01,3553 10000 CCS A 053998,000053: 01,3554 13623 TCF ITSLIKEB # YES, IT IS TYPE B 053999,000054: 054000,000055: 01,3555 00006 EXTEND # STORES THE JOB (OR TASK) 2CADR FOR EXIT 054001,000056: 01,3556 50155 NDX TEMP2G 054002,000057: 01,3557 31437 DCA PHSNAME1 054003,000058: 01,3560 52706 DXCH GOLOC 054004,000059: 054005,000060: 01,3561 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCALL 054006,000061: 01,3562 74757 MASK OCT7 054007,000062: 01,3563 67751 AD MINUS2 054008,000063: 01,3564 10000 CCS A 054009,000064: 01,3565 13735 TCF ITSLNGCL # IT'S A LONGCALL 054010,000065: 054011,000066: 01,3566 04631 RTRNCADR TC SWRETURN # CAN'T GET HERE. 054012,000067: # Page 1301 054013,000068: 01,3567 13571 TCF ITSAWAIT 054014,000069: 054015,000070: 01,3570 13636 TCF ITSAJOB # IT'S A JOB 054016,000071: 054017,000072: 01,3571 33775 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL 054018,000073: 01,3572 54704 TS GOLOC -1 054019,000074: 054020,000075: 01,3573 50155 NDX TEMP2G # DIRECTLY STORED 054021,000076: 01,3574 31053 CA PHSPRDT1 054022,000077: 01,3575 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART 054023,000078: 01,3576 24000 INCR A # NO. 054024,000079: 01,3577 13602 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN 054025,000080: 054026,000081: 01,3600 15436 TCF ITSINDIR # STORED INDIRECTLY 054027,000082: 054028,000083: 01,3601 13621 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART 054029,000084: 054030,000085: # ***** THIS MUST BE IN FIXED FIXED ***** 054031,000086: 054032,000087: 5436 BLOCK 02 054033,000088: 4000 SETLOC FFTAG2 054034,000089: 4000 BANK 054035,000090: 054036,000091: 5436 COUNT* $$/RSROU 054037,000092: 5436 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS 054038,000093: 5437 22006 LXCH BB # SWITCHED ERASABLE 054039,000094: 054040,000095: 5440 50000 NDX A # GET THE TIME INDIRECTLY 054041,000096: 5441 30001 CA 1 054042,000097: 054043,000098: 5442 22006 LXCH BB # RESTORE THE BB AND GOLOC 054044,000099: 5443 22706 LXCH GOLOC +1 054045,000100: 054046,000101: 5444 13602 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN 054047,000102: 054048,000103: # ***** YOU MAY RETURN TO SWITCHED FIXED ***** 054049,000104: 054050,000105: 01,3602 BANK 01 054051,000106: 01,2000 SETLOC RESTART 054052,000107: 01,2000 BANK 054053,000108: 054054,000109: 01,3602 COUNT* $$/RSROU 054055,000110: 01,3602 40000 FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED 054056,000111: 01,3603 54001 TS L # AND SAVE 054057,000112: 01,3604 50155 NDX TEMP2G 054058,000113: 01,3605 41052 CS TBASE1 054059,000114: 01,3606 00006 EXTEND 054060,000115: 01,3607 60025 SU TIME1 054061,000116: 01,3610 10000 CCS A 054062,000117: 01,3611 40000 COM 054063,000118: # Page 1302 054064,000119: 01,3612 67734 AD OCT37776 054065,000120: 01,3613 64753 AD ONE 054066,000121: 01,3614 60001 AD L 054067,000122: 01,3615 10000 CCS A 054068,000123: 01,3616 34755 CA ZERO 054069,000124: 01,3617 13621 TCF +2 054070,000125: 01,3620 13621 TCF +1 054071,000126: 01,3621 64753 IMEDIATE AD ONE 054072,000127: 01,3622 00704 TC GOLOC -1 054073,000128: 01,3623 33566 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN 054074,000129: 01,3624 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE 054075,000130: 054076,000131: 01,3625 33772 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS 054077,000132: 01,3626 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE 054078,000133: 054079,000134: 01,3627 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE 054080,000135: 01,3630 76077 MASK OCT177 # PART OF THIS VARIABLE PHASE 054081,000136: 01,3631 54154 TS TEMPPHS 054082,000137: 054083,000138: 01,3632 00006 EXTEND 054084,000139: 01,3633 50155 NDX TEMP2G # OBTAIN THE JOB'S 2CADR 054085,000140: 01,3634 31437 DCA PHSNAME1 054086,000141: 01,3635 52706 DXCH GOLOC 054087,000142: 054088,000143: 01,3636 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET'S GO 054089,000144: 01,3637 31053 CA PHSPRDT1 054090,000145: 01,3640 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF IT'S 054091,000146: 01,3641 00006 EXTEND # A FINDVAC OR A NOVAC 054092,000147: 01,3642 63646 BZMF ITSNOVAC 054093,000148: 054094,000149: 01,3643 33774 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL. 054095,000150: 01,3644 56704 XCH GOLOC -1 # PICK UP PRIO 054096,000151: 01,3645 00704 TC GOLOC -1 # AND GO 054097,000152: 054098,000153: 01,3646 33776 ITSNOVAC CAF NOVACADR # NEGATIVE, 054099,000154: 01,3647 56704 XCH GOLOC -1 # SET UP NOVAC CALL, 054100,000155: 01,3650 40000 COM # CORRECT PRIO, 054101,000156: 01,3651 00704 TC GOLOC -1 # AND GO 054102,000157: 054103,000158: 01,3652 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN 054104,000159: 01,3653 10020 CCS CYR 054105,000160: 01,3654 13655 TCF +1 # IT'S EVEN 054106,000161: 01,3655 13753 TCF ITSEVEN 054107,000162: 054108,000163: 01,3656 33566 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A 054109,000164: 01,3657 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT 054110,000165: 054111,000166: 01,3660 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN 054112,000167: 01,3661 54021 TS SR # THE RESTART TABLES 054113,000168: 01,3662 60021 AD SR 054114,000169: # Page 1303 054115,000170: 01,3663 50155 NDX TEMP2G 054116,000171: 01,3664 62003 AD SIZETAB +1 054117,000172: 01,3665 54156 TS POINTER 054118,000173: 054119,000174: 01,3666 00006 CONTBL2 EXTEND # FIND OUT WHAT'S IN THE TABLE 054120,000175: 01,3667 50156 NDX POINTER 054121,000176: 01,3670 32002 DCA CADRTAB # GET THE 2CADR 054122,000177: 054123,000178: 01,3671 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION 054124,000179: 054125,000180: 01,3672 10000 CCS A # IS IT A JOB OR IT IT TIMED 054126,000181: 01,3673 24000 INCR A # POSITIVE, MUST BE A JOB 054127,000182: 01,3674 13747 TCF ITSAJOB2 054128,000183: 054129,000184: 01,3675 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL 054130,000185: 01,3676 54705 TS GOLOC # LET'S STORE THE CORRECT CADR 054131,000186: 054132,000187: 01,3677 33775 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST 054133,000188: 01,3700 54704 TS GOLOC -1 054134,000189: 054135,000190: 01,3701 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL 054136,000191: 01,3702 74742 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB 054137,000192: 01,3703 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7, 054138,000193: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT 054139,000194: # IN IMPORTANCE ANYWAY. BUT 4 054140,000195: 01,3704 13742 TCF ITSWTLST # IT IS A WAITLIST CALL 054141,000196: 054142,000197: 01,3705 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T 054143,000198: 01,3706 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL 054144,000199: 054145,000200: 01,3707 15445 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME 054146,000201: 054147,000202: # ***** THIS MUST BE IN FIXED FIXED ***** 054148,000203: 054149,000204: 5445 BLOCK 02 054150,000205: 4000 SETLOC FFTAG2 054151,000206: 4000 BANK 054152,000207: 054153,000208: 5445 COUNT* $$/RSROU 054154,000209: 5445 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK 054155,000210: 5446 22006 LXCH BB 054156,000211: 5447 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS 054157,000212: 054158,000213: 5450 00006 EXTEND # GET THE DELTA TIME 054159,000214: 5451 50000 NDX A 054160,000215: 5452 30001 DCA 0 054161,000216: 054162,000217: 5453 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK 054163,000218: 5454 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS 054164,000219: 5455 22706 LXCH GOLOC +1 # AND PRESERVE OUR L 054165,000220: # Page 1304 054166,000221: 5456 13710 TCF ITSLGCL2 # NOT GET'S PROCESS THIS LONGCALL 054167,000222: 054168,000223: # ***** YOU MAY RETURN TO SWITCHED FIXED ***** 054169,000224: 054170,000225: 01,3710 BANK 01 054171,000226: 01,2000 SETLOC RESTART 054172,000227: 01,2000 BANK 054173,000228: 054174,000229: 01,3710 COUNT* $$/RSROU 054175,000230: 01,3710 53153 ITSLGCL2 DXCH LONGTIME 054176,000231: 054177,000232: 01,3711 00006 EXTEND # CALCULATE TIME LEFT 054178,000233: 01,3712 40025 DCS TIME2 054179,000234: 01,3713 21153 DAS LONGTIME 054180,000235: 01,3714 00006 EXTEND 054181,000236: 01,3715 31151 DCA LONGBASE 054182,000237: 01,3716 21153 DAS LONGTIME 054183,000238: 054184,000239: 01,3717 11152 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED 054185,000240: 01,3720 13730 TCF LONGCLCL 054186,000241: 01,3721 13723 TCF +2 054187,000242: 01,3722 13616 TCF IMEDIATE -3 054188,000243: 01,3723 11153 CCS LONGTIME +1 054189,000244: 01,3724 13730 TCF LONGCLCL 054190,000245: 01,3725 13726 NOOP # CAN'T GET HERE ************ 054191,000246: 01,3726 13616 TCF IMEDIATE -3 054192,000247: 01,3727 13621 TCF IMEDIATE 054193,000248: 054194,000249: 01,3730 33773 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL 054195,000250: 01,3731 54704 TS GOLOC -1 054196,000251: 054197,000252: 01,3732 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL 054198,000253: 01,3733 31153 DCA LONGTIME 054199,000254: 01,3734 00704 TC GOLOC -1 054200,000255: 054201,000256: 01,3735 33775 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST 054202,000257: 01,3736 54704 TS GOLOC -1 054203,000258: 054204,000259: 01,3737 50155 NDX TEMP2G 054205,000260: 01,3740 41053 CS PHSPRDT1 # GET THE DELTA T ADDRESS 054206,000261: 054207,000262: 01,3741 15445 TCF ITSLGCL1 # NOW GET THE DELTA TIME 054208,000263: 054209,000264: 01,3742 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION 054210,000265: 01,3743 54706 TS GOLOC +1 054211,000266: 054212,000267: 01,3744 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED 054213,000268: 01,3745 32000 CA PRDTTAB # DIRECTOY OR INDIRECTLY 054214,000269: 054215,000270: 01,3746 13575 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED 054216,000271: 054217,000272: # Page 1305 054218,000273: 01,3747 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR 054219,000274: 054220,000275: 01,3750 50156 NDX POINTER # ADD THE PRIORITY AND LET'S GO 054221,000276: 01,3751 32000 CA PRDTTAB 054222,000277: 054223,000278: 01,3752 13640 TCF CHKNOVAC 054224,000279: 054225,000280: 01,3753 30157 ITSEVEN CA TEMPSWCH # SET FOR EITHER THE SECOND PART OF THE 054226,000281: 01,3754 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP 054227,000282: 054228,000283: 01,3755 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN 054229,000284: 01,3756 32002 CA SIZETAB # THE TABLE 054230,000285: 01,3757 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET'S SEE YOU DO 054231,000286: 01,3760 60154 AD TEMPPHS # BETTER IN TIME OR NUMBER OF LOCATIONS 054232,000287: 01,3761 60154 AD TEMPPHS 054233,000288: 01,3762 54156 TS POINTER 054234,000289: 054235,000290: 01,3763 13666 TCF CONTBL2 # NO PROCESS WHAT IS IN THE TABLE 054236,000291: 054237,000292: 01,3764 36250 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF 054238,000293: 01,3765 26156 ADS POINTER # THE TABLE 054239,000294: 054240,000295: 01,3766 33566 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE 054241,000296: 01,3767 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT 054242,000297: # GROUP 054243,000298: 01,3770 13666 TCF CONTBL2 # SO LET'S GET THE SECOND ENTRY IN THE TBL 054244,000299: 054245,000300: 01,3771 0154 TEMPPHS EQUALS MPAC 054246,000301: 01,3771 0155 TEMP2G EQUALS MPAC +1 054247,000302: 01,3771 0156 POINTER EQUALS MPAC +2 054248,000303: 01,3771 0157 TEMPSWCH EQUALS MPAC +3 054249,000304: 01,3771 0705 GOLOC EQUALS VAC5 +20D 054250,000305: 01,3771 7751 MINUS2 EQUALS NEG2 054251,000306: 01,3771 6077 OCT177 EQUALS LOW7 054252,000307: 054253,000308: 01,3771 03764 PHS2CADR GENADR PHSPART2 054254,000309: 01,3772 03542 PRT2CADR GENADR GETPART2 054255,000310: 01,3773 05277 LGCLCADR GENADR LONGCALL 054256,000311: 01,3774 05105 FVACCADR GENADR FINDVAC 054257,000312: 01,3775 05203 WTLTCADR GENADR WAITLIST 054258,000313: 01,3776 05072 NOVACADR GENADR NOVAC 054259,000314: 054260,000315: End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc