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