Source Code

055472,000001: # Copyright: Public domain. 055473,000002: # Filename: RESTARTS_ROUTINE.agc 055474,000003: # Purpose: Part of the source code for Luminary 1A build 099. 055475,000004: # It is part of the source code for the Lunar Module's (LM) 055476,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 055477,000006: # Assembler: yaYUL 055478,000007: # Contact: Onno Hommes <ohommes@cmu.edu>. 055479,000008: # Website: www.ibiblio.org/apollo. 055480,000009: # Pages: 1303-1309 055481,000010: # Mod history: 2009-05-27 OH Transcribed from page images. 055482,000011: 055483,000012: # This source code has been transcribed or otherwise adapted from 055484,000013: # digitized images of a hardcopy from the MIT Museum. The digitization 055485,000014: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 055486,000015: # the Museum. Many thanks to both. The images (with suitable reduction 055487,000016: # in storage size and consequent reduction in image quality as well) are 055488,000017: # available online at www.ibiblio.org/apollo. If for some reason you 055489,000018: # find that the images are illegible, contact me at info@sandroid.org 055490,000019: # about getting access to the (much) higher-quality images which Paul 055491,000020: # actually created. 055492,000021: 055493,000022: # Notations on the hardcopy document read, in part: 055494,000023: 055495,000024: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 055496,000025: # 16:27 JULY 14, 1969 055497,000026: 055498,000027: # Page 1303 055499,000028: 01,3526 BANK 01 055500,000029: 01,2000 SETLOC RESTART 055501,000030: 01,2000 BANK 055502,000031: 055503,000032: 01,3526 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK 055504,000033: 055505,000034: 01,3526 COUNT* $$/RSROU 055506,000035: 01,3526 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1 055507,000036: 01,3527 60000 DOUBLE # SAVE FOR INDEXING 055508,000037: 01,3530 54155 TS TEMP2G 055509,000038: 055510,000039: 01,3531 33770 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN 055511,000040: 01,3532 54157 TS TEMPSWCH # TABLE PHASE 055512,000041: 055513,000042: 01,3533 33565 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT 055514,000043: 01,3534 54707 TS GOLOC +2 # GROUP AFTER THIS 055515,000044: 055516,000045: 01,3535 30154 CA TEMPPHS 055517,000046: 01,3536 75007 MASK OCT1400 055518,000047: 01,3537 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART 055519,000048: 01,3540 13551 TCF ITSAVAR # IT'S A VARIABLE RESTART 055520,000049: 055521,000050: 01,3541 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART 055522,000051: 01,3542 10000 CCS A 055523,000052: 01,3543 13651 TCF ITSATBL # NO, IT'S A TABLE RESTART 055524,000053: 055525,000054: 01,3544 35024 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START 055526,000055: 01,3545 05105 TC FINDVAC # THE DISPLAY RESTART JOB 055527,000056: 01,3546 E3,1400 EBANK= LST1 055528,000057: 01,3546 03037 20103 2CADR INITDSP 055529,000058: 055530,000059: 01,3550 03565 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE 055531,000060: 055532,000061: 01,3551 75007 ITSAVAR MASK OCT1400 # IS IT TYPE B ? 055533,000062: 01,3552 10000 CCS A 055534,000063: 01,3553 13622 TCF ITSLIKEB # YES, IT IS TYPE B 055535,000064: 055536,000065: 01,3554 00006 EXTEND # STORES THE JOB (OR TASK) 2CADR FOR EXIT 055537,000066: 01,3555 50155 NDX TEMP2G 055538,000067: 01,3556 31437 DCA PHSNAME1 055539,000068: 01,3557 52706 DXCH GOLOC 055540,000069: 055541,000070: 01,3560 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCALL 055542,000071: 01,3561 74757 MASK OCT7 055543,000072: 01,3562 67746 AD MINUS2 055544,000073: 01,3563 10000 CCS A 055545,000074: 01,3564 13734 TCF ITSLNGCL # IT'S A LONGCALL 055546,000075: 055547,000076: 01,3565 04631 RTRNCADR TC SWRETURN # CAN'T GET HERE. 055548,000077: # Page 1304 055549,000078: 01,3566 13570 TCF ITSAWAIT 055550,000079: 055551,000080: 01,3567 13635 TCF ITSAJOB # IT'S A JOB 055552,000081: 055553,000082: 01,3570 33774 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL 055554,000083: 01,3571 54704 TS GOLOC -1 055555,000084: 055556,000085: 01,3572 50155 NDX TEMP2G # DIRECTLY STORED 055557,000086: 01,3573 31054 CA PHSPRDT1 055558,000087: 01,3574 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART 055559,000088: 01,3575 24000 INCR A # NO. 055560,000089: 01,3576 13601 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN 055561,000090: 055562,000091: 01,3577 15436 TCF ITSINDIR # STORED INDIRECTLY 055563,000092: 055564,000093: 01,3600 13620 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART 055565,000094: 055566,000095: # ***** THIS MUST BE IN FIXED FIXED ***** 055567,000096: 055568,000097: 5436 BLOCK 02 055569,000098: 4000 SETLOC FFTAG2 055570,000099: 4000 BANK 055571,000100: 055572,000101: 5436 COUNT* $$/RSROU 055573,000102: 5436 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS 055574,000103: 5437 22006 LXCH BB # SWITCHED ERASABLE 055575,000104: 055576,000105: 5440 50000 NDX A # GET THE TIME INDIRECTLY 055577,000106: 5441 30001 CA 1 055578,000107: 055579,000108: 5442 22006 LXCH BB # RESTORE THE BB AND GOLOC 055580,000109: 5443 22706 LXCH GOLOC +1 055581,000110: 055582,000111: 5444 13601 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN 055583,000112: 055584,000113: # ***** YOU MAY RETURN TO SWITCHED FIXED ***** 055585,000114: 055586,000115: 01,3601 BANK 01 055587,000116: 01,2000 SETLOC RESTART 055588,000117: 01,2000 BANK 055589,000118: 055590,000119: 01,3601 COUNT* $$/RSROU 055591,000120: 01,3601 40000 FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED 055592,000121: 01,3602 54001 TS L # AND SAVE 055593,000122: 01,3603 50155 NDX TEMP2G 055594,000123: 01,3604 41053 CS TBASE1 055595,000124: 01,3605 00006 EXTEND 055596,000125: 01,3606 60025 SU TIME1 055597,000126: 01,3607 10000 CCS A 055598,000127: 01,3610 40000 COM 055599,000128: # Page 1305 055600,000129: 01,3611 67731 AD OCT37776 055601,000130: 01,3612 64753 AD ONE 055602,000131: 01,3613 60001 AD L 055603,000132: 01,3614 10000 CCS A 055604,000133: 01,3615 34755 CA ZERO 055605,000134: 01,3616 13620 TCF +2 055606,000135: 01,3617 13620 TCF +1 055607,000136: 01,3620 64753 IMEDIATE AD ONE 055608,000137: 01,3621 00704 TC GOLOC -1 055609,000138: 01,3622 33565 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN 055610,000139: 01,3623 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE 055611,000140: 055612,000141: 01,3624 33771 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS 055613,000142: 01,3625 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE 055614,000143: 055615,000144: 01,3626 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE 055616,000145: 01,3627 76074 MASK OCT177 # PART OF THIS VARIABLE PHASE 055617,000146: 01,3630 54154 TS TEMPPHS 055618,000147: 055619,000148: 01,3631 00006 EXTEND 055620,000149: 01,3632 50155 NDX TEMP2G # OBTAIN THE JOB'S 2CADR 055621,000150: 01,3633 31437 DCA PHSNAME1 055622,000151: 01,3634 52706 DXCH GOLOC 055623,000152: 055624,000153: 01,3635 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET'S GO 055625,000154: 01,3636 31054 CA PHSPRDT1 055626,000155: 01,3637 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF IT'S 055627,000156: 01,3640 00006 EXTEND # A FINDVAC OR A NOVAC 055628,000157: 01,3641 63645 BZMF ITSNOVAC 055629,000158: 055630,000159: 01,3642 33773 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL. 055631,000160: 01,3643 56704 XCH GOLOC -1 # PICK UP PRIO 055632,000161: 01,3644 00704 TC GOLOC -1 # AND GO 055633,000162: 055634,000163: 01,3645 33775 ITSNOVAC CAF NOVACADR # NEGATIVE, 055635,000164: 01,3646 56704 XCH GOLOC -1 # SET UP NOVAC CALL, 055636,000165: 01,3647 40000 COM # CORRECT PRIO, 055637,000166: 01,3650 00704 TC GOLOC -1 # AND GO 055638,000167: 055639,000168: 01,3651 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN 055640,000169: 01,3652 10020 CCS CYR 055641,000170: 01,3653 13654 TCF +1 # IT'S EVEN 055642,000171: 01,3654 13752 TCF ITSEVEN 055643,000172: 055644,000173: 01,3655 33565 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A 055645,000174: 01,3656 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT 055646,000175: 055647,000176: 01,3657 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN 055648,000177: 01,3660 54021 TS SR # THE RESTART TABLES 055649,000178: 01,3661 60021 AD SR 055650,000179: # Page 1306 055651,000180: 01,3662 50155 NDX TEMP2G 055652,000181: 01,3663 62003 AD SIZETAB +1 055653,000182: 01,3664 54156 TS POINTER 055654,000183: 055655,000184: 01,3665 00006 CONTBL2 EXTEND # FIND OUT WHAT'S IN THE TABLE 055656,000185: 01,3666 50156 NDX POINTER 055657,000186: 01,3667 32002 DCA CADRTAB # GET THE 2CADR 055658,000187: 055659,000188: 01,3670 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION 055660,000189: 055661,000190: 01,3671 10000 CCS A # IS IT A JOB OR IT IT TIMED 055662,000191: 01,3672 24000 INCR A # POSITIVE, MUST BE A JOB 055663,000192: 01,3673 13746 TCF ITSAJOB2 055664,000193: 055665,000194: 01,3674 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL 055666,000195: 01,3675 54705 TS GOLOC # LET'S STORE THE CORRECT CADR 055667,000196: 055668,000197: 01,3676 33774 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST 055669,000198: 01,3677 54704 TS GOLOC -1 055670,000199: 055671,000200: 01,3700 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL 055672,000201: 01,3701 74742 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB 055673,000202: 01,3702 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7, 055674,000203: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT 055675,000204: # IN IMPORTANCE ANYWAY. BIT 4 055676,000205: 01,3703 13741 TCF ITSWTLST # IT IS A WAITLIST CALL 055677,000206: 055678,000207: 01,3704 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T 055679,000208: 01,3705 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL 055680,000209: 055681,000210: 01,3706 15445 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME 055682,000211: 055683,000212: # ***** THIS MUST BE IN FIXED FIXED ***** 055684,000213: 055685,000214: 5445 BLOCK 02 055686,000215: 4000 SETLOC FFTAG2 055687,000216: 4000 BANK 055688,000217: 055689,000218: 5445 COUNT* $$/RSROU 055690,000219: 5445 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK 055691,000220: 5446 22006 LXCH BB 055692,000221: 5447 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS 055693,000222: 055694,000223: 5450 00006 EXTEND # GET THE DELTA TIME 055695,000224: 5451 50000 NDX A 055696,000225: 5452 30001 DCA 0 055697,000226: 055698,000227: 5453 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK 055699,000228: 5454 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS 055700,000229: 5455 22706 LXCH GOLOC +1 # AND PRESERVE OUR L 055701,000230: # Page 1307 055702,000231: 5456 13707 TCF ITSLGCL2 # NOT LET'S PROCESS THIS LONGCALL 055703,000232: 055704,000233: # ***** YOU MAY RETURN TO SWITCHED FIXED ***** 055705,000234: 055706,000235: 01,3707 BANK 01 055707,000236: 01,2000 SETLOC RESTART 055708,000237: 01,2000 BANK 055709,000238: 055710,000239: 01,3707 COUNT* $$/RSROU 055711,000240: 01,3707 53154 ITSLGCL2 DXCH LONGTIME 055712,000241: 055713,000242: 01,3710 00006 EXTEND # CALCULATE TIME LEFT 055714,000243: 01,3711 40025 DCS TIME2 055715,000244: 01,3712 21154 DAS LONGTIME 055716,000245: 01,3713 00006 EXTEND 055717,000246: 01,3714 31152 DCA LONGBASE 055718,000247: 01,3715 21154 DAS LONGTIME 055719,000248: 055720,000249: 01,3716 11153 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED 055721,000250: 01,3717 13727 TCF LONGCLCL 055722,000251: 01,3720 13722 TCF +2 055723,000252: 01,3721 13615 TCF IMEDIATE -3 055724,000253: 01,3722 11154 CCS LONGTIME +1 055725,000254: 01,3723 13727 TCF LONGCLCL 055726,000255: 01,3724 13725 NOOP # CAN'T GET HERE ************ 055727,000256: 01,3725 13615 TCF IMEDIATE -3 055728,000257: 01,3726 13620 TCF IMEDIATE 055729,000258: 055730,000259: 01,3727 33772 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL 055731,000260: 01,3730 54704 TS GOLOC -1 055732,000261: 055733,000262: 01,3731 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL 055734,000263: 01,3732 31154 DCA LONGTIME 055735,000264: 01,3733 00704 TC GOLOC -1 055736,000265: 055737,000266: 01,3734 33774 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST 055738,000267: 01,3735 54704 TS GOLOC -1 055739,000268: 055740,000269: 01,3736 50155 NDX TEMP2G 055741,000270: 01,3737 41054 CS PHSPRDT1 # GET THE DELTA T ADDRESS 055742,000271: 055743,000272: 01,3740 15445 TCF ITSLGCL1 # NOW GET THE DELTA TIME 055744,000273: 055745,000274: 01,3741 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION 055746,000275: 01,3742 54706 TS GOLOC +1 055747,000276: 055748,000277: 01,3743 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED 055749,000278: 01,3744 32000 CA PRDTTAB # DIRECTOY OR INDIRECTLY 055750,000279: 055751,000280: 01,3745 13574 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED 055752,000281: 055753,000282: # Page 1308 055754,000283: 01,3746 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR 055755,000284: 055756,000285: 01,3747 50156 NDX POINTER # ADD THE PRIORITY AND LET'S GO 055757,000286: 01,3750 32000 CA PRDTTAB 055758,000287: 055759,000288: 01,3751 13637 TCF CHKNOVAC 055760,000289: 055761,000290: 01,3752 30157 ITSEVEN CA TEMPSWCH # SET FOR EITHER THE SECOND PART OF THE 055762,000291: 01,3753 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP 055763,000292: 055764,000293: 01,3754 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN 055765,000294: 01,3755 32002 CA SIZETAB # THE TABLE 055766,000295: 01,3756 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET'S SEE YOU DO 055767,000296: 01,3757 60154 AD TEMPPHS # BETTER IN TIME OR NUMBER OF LOCATIONS 055768,000297: 01,3760 60154 AD TEMPPHS 055769,000298: 01,3761 54156 TS POINTER 055770,000299: 055771,000300: 01,3762 13665 TCF CONTBL2 # NO PROCESS WHAT IS IN THE TABLE 055772,000301: 055773,000302: 01,3763 36245 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF 055774,000303: 01,3764 26156 ADS POINTER # THE TABLE 055775,000304: 055776,000305: 01,3765 33565 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE 055777,000306: 01,3766 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT 055778,000307: # GROUP 055779,000308: 01,3767 13665 TCF CONTBL2 # SO LET'S GET THE SECOND ENTRY IN THE TBL 055780,000309: 055781,000310: 01,3770 0154 TEMPPHS EQUALS MPAC 055782,000311: 01,3770 0155 TEMP2G EQUALS MPAC +1 055783,000312: 01,3770 0156 POINTER EQUALS MPAC +2 055784,000313: 01,3770 0157 TEMPSWCH EQUALS MPAC +3 055785,000314: 01,3770 0705 GOLOC EQUALS VAC5 +20D 055786,000315: 01,3770 7746 MINUS2 EQUALS NEG2 055787,000316: 01,3770 6074 OCT177 EQUALS LOW7 055788,000317: 055789,000318: 01,3770 03763 PHS2CADR GENADR PHSPART2 055790,000319: 01,3771 03541 PRT2CADR GENADR GETPART2 055791,000320: 01,3772 05277 LGCLCADR GENADR LONGCALL 055792,000321: 01,3773 05105 FVACCADR GENADR FINDVAC 055793,000322: 01,3774 05203 WTLTCADR GENADR WAITLIST 055794,000323: 01,3775 05072 NOVACADR GENADR NOVAC 055795,000324: 055796,000325: End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc