Source Code
056188,000002: ## Copyright: Public domain.
056189,000003: ## Filename: RESTARTS_ROUTINE.agc
056190,000004: ## Purpose: A section of Luminary revision 210.
056191,000005: ## It is part of the source code for the Lunar Module's (LM)
056192,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
056193,000007: ## This file is intended to be a faithful transcription, except
056194,000008: ## that the code format has been changed to conform to the
056195,000009: ## requirements of the yaYUL assembler rather than the
056196,000010: ## original YUL assembler.
056197,000011: ## Reference: pp. 1300-1305
056198,000012: ## Assembler: yaYUL
056199,000013: ## Contact: Ron Burkey <info@sandroid.org>.
056200,000014: ## Website: www.ibiblio.org/apollo/index.html
056201,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
056202,000016: ## 2016-12-03 JS Compared to Luminary210 images. Updated where needed.
056203,000017: ## 2016-12-26 RSB Comment-text proofed using ProoferComments
056204,000018: ## and corrected errors found.
056205,000019: ## 2017-03-14 RSB Comment-text fixes noted in proofing Luminary 116.
056206,000020:
![]() |
Page 1300 |
056208,000022: 01,3530 BANK 01
056209,000023: 01,2000 SETLOC RESTART
056210,000024: 01,2000 BANK
056211,000025:
056212,000026: 01,3530 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
056213,000027:
056214,000028: 01,3530 COUNT* $$/RSROU
056215,000029: 01,3530 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
056216,000030: 01,3531 60000 DOUBLE # SAVE FOR INDEXING
056217,000031: 01,3532 54155 TS TEMP2G
056218,000032:
056219,000033: 01,3533 33772 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
056220,000034: 01,3534 54157 TS TEMPSWCH # TABLE PHASE
056221,000035:
056222,000036: 01,3535 33567 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
056223,000037: 01,3536 54707 TS GOLOC +2 # GROUP AFTER THIS
056224,000038:
056225,000039: 01,3537 30154 CA TEMPPHS
056226,000040: 01,3540 75000 MASK OCT1400
056227,000041: 01,3541 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART
056228,000042: 01,3542 13553 TCF ITSAVAR # IT:S A VARIABLE RESTART
056229,000043:
056230,000044: 01,3543 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
056231,000045: 01,3544 10000 CCS A
056232,000046: 01,3545 13653 TCF ITSATBL # NO, ITS A TABLE RESTART
056233,000047:
056234,000048: 01,3546 35015 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
056235,000049: 01,3547 05076 TC FINDVAC # THE DISPLAY RESTART JOB
056236,000050: 01,3550 E3,1400 EBANK= LST1
056237,000051: 01,3550 03051 20103 2CADR INITDSP
056238,000052:
056239,000053: 01,3552 03567 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
056240,000054:
056241,000055: 01,3553 75000 ITSAVAR MASK OCT1400 # IS IT TYPE B ?
056242,000056: 01,3554 10000 CCS A
056243,000057: 01,3555 13624 TCF ITSLIKEB # YES,IT IS TYPE B
056244,000058:
056245,000059: 01,3556 00006 EXTEND # STORE THE JOB (OR TASK) 2CADR FOR EXIT
056246,000060: 01,3557 50155 NDX TEMP2G
056247,000061: 01,3560 31437 DCA PHSNAME1
056248,000062: 01,3561 52706 DXCH GOLOC
056249,000063:
056250,000064: 01,3562 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCAL
056251,000065: 01,3563 74750 MASK OCT7
056252,000066: 01,3564 67767 AD MINUS2
056253,000067: 01,3565 10000 CCS A
056254,000068: 01,3566 13736 TCF ITSLNGCL # ITS A LONGCALL
056255,000069:
056256,000070: 01,3567 04622 RTRNCADR TC SWRETURN # CANT GET HERE
056257,000071:
![]() |
Page 1301 |
056259,000073: 01,3570 13572 TCF ITSAWAIT
056260,000074:
056261,000075: 01,3571 13637 TCF ITSAJOB # ITS A JOB
056262,000076:
056263,000077: 01,3572 34343 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
056264,000078: 01,3573 54704 TS GOLOC -1
056265,000079:
056266,000080: 01,3574 50155 NDX TEMP2G # DIRECTLY STORED
056267,000081: 01,3575 31053 CA PHSPRDT1
056268,000082: 01,3576 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
056269,000083: 01,3577 24000 INCR A # NO,
056270,000084: 01,3600 13603 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
056271,000085:
056272,000086: 01,3601 15440 TCF ITSINDIR # STORED INDIRECTLY
056273,000087:
056274,000088: 01,3602 13622 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
056275,000089:
056276,000090: # ***** THIS MUST BE IN FIXED FIXED *****
056277,000091:
056278,000092: 5440 BLOCK 02
056279,000093: 4000 SETLOC FFTAG2
056280,000094: 4000 BANK
056281,000095:
056282,000096: 5440 COUNT* $$/RSROU
056283,000097: 5440 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS
056284,000098: 5441 22006 LXCH BB # SWITCHED ERRASIBLE
056285,000099:
056286,000100: 5442 50000 NDX A # GET THE TIME INDIRECTLY
056287,000101: 5443 30001 CA 1
056288,000102:
056289,000103: 5444 22006 LXCH BB # RESTORE THE BB AND GOLOC
056290,000104: 5445 22706 LXCH GOLOC +1
056291,000105:
056292,000106: 5446 13603 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
056293,000107:
056294,000108: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
056295,000109:
056296,000110: 01,3603 BANK 01
056297,000111: 01,2000 SETLOC RESTART
056298,000112: 01,2000 BANK
056299,000113:
056300,000114: 01,3603 COUNT* $$/RSROU
056301,000115: 01,3603 40000 FINDTIME COM # MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
056302,000116: 01,3604 54001 TS L # AND SAVE
056303,000117: 01,3605 50155 NDX TEMP2G
056304,000118: 01,3606 41052 CS TBASE1
056305,000119: 01,3607 00006 EXTEND
056306,000120: 01,3610 60025 SU TIME1
056307,000121: 01,3611 10000 CCS A
056308,000122: 01,3612 40000 COM
056309,000123:
![]() |
Page 1302 |
056311,000125: 01,3613 67752 AD OCT37776
056312,000126: 01,3614 64744 AD ONE
056313,000127: 01,3615 60001 AD L
056314,000128: 01,3616 10000 CCS A
056315,000129: 01,3617 34746 CA ZERO
056316,000130: 01,3620 13622 TCF +2
056317,000131: 01,3621 13622 TCF +1
056318,000132: 01,3622 64744 IMEDIATE AD ONE
056319,000133: 01,3623 00704 TC GOLOC -1
056320,000134: 01,3624 33567 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
056321,000135: 01,3625 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
056322,000136:
056323,000137: 01,3626 33773 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
056324,000138: 01,3627 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE
056325,000139:
056326,000140: 01,3630 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
056327,000141: 01,3631 76115 MASK OCT177 # PART OF THIS VARIABLE PHASE
056328,000142: 01,3632 54154 TS TEMPPHS
056329,000143:
056330,000144: 01,3633 00006 EXTEND
056331,000145: 01,3634 50155 NDX TEMP2G # OBTAIN THE JOB:S 2CADR
056332,000146: 01,3635 31437 DCA PHSNAME1
056333,000147: 01,3636 52706 DXCH GOLOC
056334,000148:
056335,000149: 01,3637 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET:S GO
056336,000150: 01,3640 31053 CA PHSPRDT1
056337,000151: 01,3641 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF ITS
056338,000152: 01,3642 00006 EXTEND # A FINDVAC OR A NOVAC
056339,000153: 01,3643 63647 BZMF ITSNOVAC
056340,000154:
056341,000155: 01,3644 34345 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
056342,000156: 01,3645 56704 XCH GOLOC -1 # PICK UP PRIO,
056343,000157: 01,3646 00704 TC GOLOC -1 # AND GO
056344,000158:
056345,000159: 01,3647 34342 ITSNOVAC CAF NOVACADR # NEGATIVE,
056346,000160: 01,3650 56704 XCH GOLOC -1 # SET UP NOVAC CALL,
056347,000161: 01,3651 40000 COM # CORRECT PRIO,
056348,000162: 01,3652 00704 TC GOLOC -1 # AND GO
056349,000163:
056350,000164: 01,3653 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
056351,000165: 01,3654 10020 CCS CYR
056352,000166: 01,3655 13656 TCF +1 # IT:S EVEN
056353,000167: 01,3656 13754 TCF ITSEVEN
056354,000168:
056355,000169: 01,3657 33567 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
056356,000170: 01,3660 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
056357,000171:
056358,000172: 01,3661 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
056359,000173: 01,3662 54021 TS SR # THE RESTART TABLES
056360,000174: 01,3663 60021 AD SR
056361,000175:
![]() |
Page 1303 |
056363,000177: 01,3664 50155 NDX TEMP2G
056364,000178: 01,3665 62003 AD SIZETAB +1
056365,000179: 01,3666 54156 TS POINTER
056366,000180:
056367,000181: 01,3667 00006 CONTBL2 EXTEND # FIND OUT WHAT:S IN THE TABLE
056368,000182: 01,3670 50156 NDX POINTER
056369,000183: 01,3671 32002 DCA CADRTAB # GET THE 2CADR
056370,000184:
056371,000185: 01,3672 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION
056372,000186:
056373,000187: 01,3673 10000 CCS A # IS IT A JOB OR IS IT TIMED
056374,000188: 01,3674 24000 INCR A # POSITIVE, MUST BE A JOB
056375,000189: 01,3675 13750 TCF ITSAJOB2
056376,000190:
056377,000191: 01,3676 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
056378,000192: 01,3677 54705 TS GOLOC # LET-S STORE THE CORRECT CADR
056379,000193:
056380,000194: 01,3700 34343 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
056381,000195: 01,3701 54704 TS GOLOC -1
056382,000196:
056383,000197: 01,3702 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
056384,000198: 01,3703 74733 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
056385,000199: 01,3704 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
056386,000200: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
056387,000201: # IN IMPORTANCE ANYWAY. BIT 4
056388,000202: 01,3705 13743 TCF ITSWTLST # IT IS A WAITLIST CALL
056389,000203:
056390,000204: 01,3706 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T
056391,000205: 01,3707 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL
056392,000206:
056393,000207: 01,3710 15447 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
056394,000208:
056395,000209: # ***** THIS MUST BE IN FIXED FIXED *****
056396,000210:
056397,000211: 5447 BLOCK 02
056398,000212: 4000 SETLOC FFTAG2
056399,000213: 4000 BANK
056400,000214:
056401,000215: 5447 COUNT* $$/RSROU
056402,000216: 5447 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
056403,000217: 5450 22006 LXCH BB
056404,000218: 5451 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
056405,000219:
056406,000220: 5452 00006 EXTEND # GET THE DELTA TIME
056407,000221: 5453 50000 NDX A
056408,000222: 5454 30001 DCA 0
056409,000223:
056410,000224: 5455 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK
056411,000225: 5456 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS
056412,000226: 5457 22706 LXCH GOLOC +1 # AND PRESERVE OUR L
056413,000227:
![]() |
Page 1304 |
056415,000229: 5460 13711 TCF ITSLGCL2 # NOW LET:S PROCESS THIS LONGCALL
056416,000230:
056417,000231: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
056418,000232:
056419,000233: 01,3711 BANK 01
056420,000234: 01,2000 SETLOC RESTART
056421,000235: 01,2000 BANK
056422,000236:
056423,000237: 01,3711 COUNT* $$/RSROU
056424,000238: 01,3711 53153 ITSLGCL2 DXCH LONGTIME
056425,000239:
056426,000240: 01,3712 00006 EXTEND # CALCULATE TIME LEFT
056427,000241: 01,3713 40025 DCS TIME2
056428,000242: 01,3714 21153 DAS LONGTIME
056429,000243: 01,3715 00006 EXTEND
056430,000244: 01,3716 31151 DCA LONGBASE
056431,000245: 01,3717 21153 DAS LONGTIME
056432,000246:
056433,000247: 01,3720 11152 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
056434,000248: 01,3721 13731 TCF LONGCLCL
056435,000249: 01,3722 13724 TCF +2
056436,000250: 01,3723 13617 TCF IMEDIATE -3
056437,000251: 01,3724 11153 CCS LONGTIME +1
056438,000252: 01,3725 13731 TCF LONGCLCL
056439,000253: 01,3726 13727 NOOP # CAN:T GET HERE *********
056440,000254: 01,3727 13617 TCF IMEDIATE -3
056441,000255: 01,3730 13622 TCF IMEDIATE
056442,000256:
056443,000257: 01,3731 33774 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
056444,000258: 01,3732 54704 TS GOLOC -1
056445,000259:
056446,000260: 01,3733 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL
056447,000261: 01,3734 31153 DCA LONGTIME
056448,000262: 01,3735 00704 TC GOLOC -1
056449,000263:
056450,000264: 01,3736 34343 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
056451,000265: 01,3737 54704 TS GOLOC -1
056452,000266:
056453,000267: 01,3740 50155 NDX TEMP2G
056454,000268: 01,3741 41053 CS PHSPRDT1 # GET THE DELTA T ADDRESS
056455,000269:
056456,000270: 01,3742 15447 TCF ITSLGCL1 # NOW GET THE DELTA TIME
056457,000271:
056458,000272: 01,3743 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
056459,000273: 01,3744 54706 TS GOLOC +1
056460,000274:
056461,000275: 01,3745 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
056462,000276: 01,3746 32000 CA PRDTTAB # DIRECTLY OR INDIRECTLY
056463,000277:
056464,000278: 01,3747 13576 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
056465,000279:
![]() |
Page 1305 |
056467,000281: 01,3750 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR
056468,000282:
056469,000283: 01,3751 50156 NDX POINTER # ADD THE PRIORITY AND LET:S GO
056470,000284: 01,3752 32000 CA PRDTTAB
056471,000285:
056472,000286: 01,3753 13641 TCF CHKNOVAC
056473,000287:
056474,000288: 01,3754 30157 ITSEVEN CA TEMPSWCH # SET UP FOR EITHER THE SECOND PART OF THE
056475,000289: 01,3755 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
056476,000290:
056477,000291: 01,3756 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
056478,000292: 01,3757 32002 CA SIZETAB # THE TABLE
056479,000293: 01,3760 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET:S SEE YOU DO
056480,000294: 01,3761 60154 AD TEMPPHS # BETTER IN TIME OR NUMBERR OF LOCATIONS
056481,000295: 01,3762 60154 AD TEMPPHS
056482,000296: 01,3763 54156 TS POINTER
056483,000297:
056484,000298: 01,3764 13667 TCF CONTBL2 # NOW PROCESS WHAT IS IN THE TABLE
056485,000299:
056486,000300: 01,3765 36266 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
056487,000301: 01,3766 26156 ADS POINTER # THE TABLE
056488,000302:
056489,000303: 01,3767 33567 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
056490,000304: 01,3770 54707 TS GOLOC +2 # EVEN TABLE , SO AFTER IT GET THE NEXT
056491,000305: # GROUP
056492,000306: 01,3771 13667 TCF CONTBL2 # SO LET:S GET THE SECOND ENTRY IN THE TBL
056493,000307:
056494,000308: 01,3772 0154 TEMPPHS EQUALS MPAC
056495,000309: 01,3772 0155 TEMP2G EQUALS MPAC +1
056496,000310: 01,3772 0156 POINTER EQUALS MPAC +2
056497,000311: 01,3772 0157 TEMPSWCH EQUALS MPAC +3
056498,000312: 01,3772 7767 MINUS2 EQUALS NEG2
056499,000313: 01,3772 6115 OCT177 EQUALS LOW7
056500,000314:
056501,000315: 01,3772 03765 PHS2CADR GENADR PHSPART2
056502,000316: 01,3773 03543 PRT2CADR GENADR GETPART2
056503,000317: 01,3774 05301 LGCLCADR GENADR LONGCALL
056504,000318: 01,3775 4345 FVACCADR = TCFINDVC
056505,000319: 01,3775 4343 WTLTCADR = TCWAIT
056506,000320: 01,3775 4342 NOVACADR = TCNOVAC
056507,000321:
056508,000322:
End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc