Source Code
![]() |
These source-code files were obtained by digitally photographing
an Artemis 72 (Apollo 15-17 Command Module) program listing from a private
collection and then
modifying pre-existing Comanche 55 (Apollo 11) source files to
incorporate changes. Photography was by Ron Burkey, and transcription
was performed by a team of volunteers. Note that the page images
presented online are of reduced quality, and that additional images
may be available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 072 OF AGC PROGRAM ARTEMIS BY NASA 2021114-011 11:40 FEB. 26, 1971Note that the date is the date of the printout, not the date of the program revision. |
060581,000002: ## Copyright: Public domain.
060582,000003: ## Filename: RESTARTS_ROUTINE.agc
060583,000004: ## Purpose: Part of the source code for Artemis (i.e., Colossus 3),
060584,000005: ## build 072. This is for the Command Module's (CM)
060585,000006: ## Apollo Guidance Computer (AGC), for
060586,000007: ## Apollo 15-17.
060587,000008: ## Assembler: yaYUL
060588,000009: ## Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
060589,000010: ## Website: www.ibiblio.org/apollo/index.html
060590,000011: ## Page Scans: www.ibiblio.org/apollo/ScansForConversion/Artemis072/
060591,000012: ## Mod history: 2009-08-18 JL Adapted from corresponding Comanche 055 file.
060592,000013: ## 2010-02-02 JL Fixed page numbers.
060593,000014: ## 2010-02-20 RSB Un-##'d this header.
060594,000015: ## 2010-04-04 JL Added a missing # comment delimiter.
060595,000016: ## 2017-02-08 RSB Proofed comment text by diff'ing vs Comanche 55
060596,000017: ## and/or octopus/ProoferComments as most-appropriate.
060597,000018: ## 2017-03-14 RSB Comment-text fixes noted in proofing Luminary 116.
060598,000019:
![]() |
Page 1411 |
060600,000021: 01,2000 SETLOC RESTART
060601,000022: 01,2000 BANK
060602,000023:
060603,000024: 01,3467 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
060604,000025:
060605,000026: 01,3467 COUNT* $$/RSROU
060606,000027: 01,3467 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
060607,000028: 01,3470 60000 DOUBLE # SAVE FOR INDEXING
060608,000029: 01,3471 54155 TS TEMP2G
060609,000030:
060610,000031: 01,3472 33127 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
060611,000032: 01,3473 54157 TS TEMPSWCH # TABLE PHASE
060612,000033:
060613,000034: 01,3474 33526 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
060614,000035: 01,3475 54707 TS GOLOC +2 # GROUP AFTER THIS
060615,000036:
060616,000037: 01,3476 30154 CA TEMPPHS
060617,000038: 01,3477 75024 MASK OCT1400
060618,000039: 01,3500 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART
060619,000040: 01,3501 13512 TCF ITSAVAR # IT:S A VARIABLE RESTART
060620,000041:
060621,000042: 01,3502 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
060622,000043: 01,3503 10000 CCS A
060623,000044: 01,3504 13612 TCF ITSATBL # NO, ITS A TABLE RESTART
060624,000045:
060625,000046: 01,3505 35053 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
060626,000047: 01,3506 05135 FVACCADR TC FINDVAC # THE DISPLAY RESTART ROUTINE (=GENADR)
060627,000048: 01,3507 E3,1400 EBANK= LST1
060628,000049: 01,3507 03263 20063 2CADR INITDSP
060629,000050:
060630,000051:
060631,000052: 01,3511 03526 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
060632,000053:
060633,000054: 01,3512 75024 ITSAVAR MASK OCT1400 # IS IT TYPE B ?
060634,000055: 01,3513 10000 CCS A
060635,000056: 01,3514 13563 TCF ITSLIKEB # YES, IT IS TYPE B
060636,000057:
060637,000058: 01,3515 00006 EXTEND # STORE THE JOB (OR TASK) 2CADR FOR EXIT
060638,000059: 01,3516 50155 NDX TEMP2G
060639,000060: 01,3517 31437 DCA PHSNAME1
060640,000061: 01,3520 52706 DXCH GOLOC
060641,000062:
060642,000063: 01,3521 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCAL
060643,000064: 01,3522 74774 MASK OCT7
060644,000065: 01,3523 67701 AD MINUS2
060645,000066: 01,3524 10000 CCS A
060646,000067: 01,3525 13675 TCF ITSLNGCL # ITS A LONGCALL
060647,000068:
060648,000069: 01,3526 04651 RTRNCADR TC SWRETURN # CANT GET HERE
060649,000070: 01,3527 13531 TCF ITSAWAIT
![]() |
Page 1412 |
060651,000072: 01,3530 13576 TCF ITSAJOB # ITS A JOB
060652,000073:
060653,000074: 01,3531 33463 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
060654,000075: 01,3532 54704 TS GOLOC -1
060655,000076:
060656,000077: 01,3533 50155 NDX TEMP2G # DIRECTLY STORED
060657,000078: 01,3534 31260 CA PHSPRDT1
060658,000079: 01,3535 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
060659,000080: 01,3536 24000 INCR A # NO,
060660,000081: 01,3537 13542 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
060661,000082:
060662,000083: 01,3540 15470 TCF ITSINDIR # STORED INDIRECTLY
060663,000084:
060664,000085: 01,3541 13561 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
060665,000086:
060666,000087: # ***** THIS MUST BE IN FIXED FIXED *****
060667,000088:
060668,000089: 4000 SETLOC FFTAG2
060669,000090: 4000 BANK
060670,000091:
060671,000092: 5470 COUNT* $$/RSROU
060672,000093: 5470 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS
060673,000094: 5471 22006 LXCH BB # SWITCHED ERRASIBLE
060674,000095:
060675,000096: 5472 50000 NDX A # GET THE TIME INDIRECTLY
060676,000097: 5473 30001 CA 1
060677,000098:
060678,000099: 5474 22006 LXCH BB # RESTORE THE BB AND GOLOC
060679,000100: 5475 22706 LXCH GOLOC +1
060680,000101:
060681,000102: 5476 13542 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
060682,000103:
060683,000104: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
060684,000105:
060685,000106: 01,2000 SETLOC RESTART
060686,000107: 01,2000 BANK
060687,000108:
060688,000109: 01,3542 COUNT* $$/RSROU
060689,000110: 01,3542 40000 FINDTIME COM # MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
060690,000111: 01,3543 54001 TS L # AND SAVE
060691,000112: 01,3544 50155 NDX TEMP2G
060692,000113: 01,3545 41257 CS TBASE1
060693,000114: 01,3546 00006 EXTEND
060694,000115: 01,3547 60025 SU TIME1
060695,000116: 01,3550 10000 CCS A
060696,000117: 01,3551 40000 COM
060697,000118: 01,3552 67663 AD OCT37776
060698,000119: 01,3553 64770 AD ONE
060699,000120: 01,3554 60001 AD L
060700,000121: 01,3555 10000 CCS A
![]() |
Page 1413 |
060702,000123: 01,3556 34772 -3 CAF ZERO
060703,000124: 01,3557 13561 TCF +2
060704,000125: 01,3560 13561 TCF +1
060705,000126: 01,3561 64770 IMEDIATE AD ONE
060706,000127: 01,3562 00704 TC GOLOC -1
060707,000128: 01,3563 33526 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
060708,000129: 01,3564 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
060709,000130:
060710,000131: 01,3565 33133 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
060711,000132: 01,3566 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE
060712,000133:
060713,000134: 01,3567 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
060714,000135: 01,3570 76043 MASK OCT177 # PART OF THIS VARIABLE PHASE
060715,000136: 01,3571 54154 TS TEMPPHS
060716,000137:
060717,000138: 01,3572 00006 EXTEND
060718,000139: 01,3573 50155 NDX TEMP2G # OBTAIN THE JOB:S 2CADR
060719,000140: 01,3574 31437 DCA PHSNAME1
060720,000141: 01,3575 52706 DXCH GOLOC
060721,000142:
060722,000143: 01,3576 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET:S GO
060723,000144: 01,3577 31260 CA PHSPRDT1
060724,000145: 01,3600 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF ITS
060725,000146: 01,3601 00006 EXTEND # A FINDVAC OR A NOVAC
060726,000147: 01,3602 63606 BZMF ITSNOVAC
060727,000148:
060728,000149: 01,3603 33506 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
060729,000150: 01,3604 56704 XCH GOLOC -1 # PICK UP PRIO,
060730,000151: 01,3605 00704 TC GOLOC -1 # AND GO
060731,000152:
060732,000153: 01,3606 35310 ITSNOVAC CAF NOVACADR # NEGATIVE,
060733,000154: 01,3607 56704 XCH GOLOC -1 # SET UP NOVAC CALL,
060734,000155: 01,3610 40000 COM # CORRECT PRIO,
060735,000156: 01,3611 00704 TC GOLOC -1 # AND GO
060736,000157:
060737,000158: 01,3612 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
060738,000159: 01,3613 10020 CCS CYR
060739,000160: 01,3614 13615 TCF +1 # IT:S EVEN
060740,000161: 01,3615 13713 TCF ITSEVEN
060741,000162:
060742,000163: 01,3616 33526 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
060743,000164: 01,3617 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
060744,000165:
060745,000166: 01,3620 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
060746,000167: 01,3621 54021 TS SR # THE RESTART TABLES
060747,000168: 01,3622 60021 AD SR
060748,000169: 01,3623 50155 NDX TEMP2G
060749,000170: 01,3624 62001 AD SIZETAB +1
060750,000171: 01,3625 54156 TS POINTER
![]() |
Page 1414 |
060752,000173:
060753,000174: 01,3626 00006 CONTBL2 EXTEND # FIND OUT WHAT:S IN THE TABLE
060754,000175: 01,3627 50156 NDX POINTER
060755,000176: 01,3630 32002 DCA CADRTAB # GET THE 2CADR
060756,000177:
060757,000178: 01,3631 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION
060758,000179:
060759,000180: 01,3632 10000 CCS A # IS IT A JOB OR IS IT TIMED
060760,000181: 01,3633 24000 INCR A # POSITIVE, MUST BE A JOB
060761,000182: 01,3634 13707 TCF ITSAJOB2
060762,000183:
060763,000184: 01,3635 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
060764,000185: 01,3636 54705 TS GOLOC # LET-S STORE THE CORRECT CADR
060765,000186:
060766,000187: 01,3637 33463 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
060767,000188: 01,3640 54704 TS GOLOC -1
060768,000189:
060769,000190: 01,3641 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
060770,000191: 01,3642 74757 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
060771,000192: 01,3643 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
060772,000193: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
060773,000194: # IN IMPORTANCE ANYWAY. BIT 4
060774,000195: 01,3644 13702 TCF ITSWTLST # IT IS A WAITLIST CALL
060775,000196:
060776,000197: 01,3645 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T
060777,000198: 01,3646 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL
060778,000199:
060779,000200: 01,3647 15477 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
060780,000201:
060781,000202: # ***** THIS MUST BE IN FIXED FIXED *****
060782,000203:
060783,000204: 4000 SETLOC FFTAG2
060784,000205: 4000 BANK
060785,000206:
060786,000207: 5477 COUNT* $$/RSROU
060787,000208: 5477 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
060788,000209: 5500 22006 LXCH BB
060789,000210: 5501 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
060790,000211:
060791,000212: 5502 00006 EXTEND # GET THE DELTA TIME
060792,000213: 5503 50000 NDX A
060793,000214: 5504 30001 DCA 0
060794,000215: 5505 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK
060795,000216: 5506 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS
060796,000217: 5507 22706 LXCH GOLOC +1 # AND PRESERVE OUR L
060797,000218:
060798,000219: 5510 13650 TCF ITSLGCL2 # NOW LET:S PROCESS THIS LONGCALL
060799,000220:
060800,000221: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
060801,000222:
![]() |
Page 1415 |
060803,000224: 01,2000 SETLOC RESTART
060804,000225: 01,2000 BANK
060805,000226:
060806,000227: 01,3650 COUNT* $$/RSROU
060807,000228: 01,3650 53305 ITSLGCL2 DXCH LONGTIME
060808,000229:
060809,000230: 01,3651 00006 EXTEND # CALCULATE TIME LEFT
060810,000231: 01,3652 40025 DCS TIME2
060811,000232: 01,3653 21305 DAS LONGTIME
060812,000233: 01,3654 00006 EXTEND
060813,000234: 01,3655 31303 DCA LONGBASE
060814,000235: 01,3656 21305 DAS LONGTIME
060815,000236:
060816,000237: 01,3657 11304 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
060817,000238: 01,3660 13670 TCF LONGCLCL
060818,000239: 01,3661 13663 TCF +2
060819,000240: 01,3662 13556 TCF IMEDIATE -3
060820,000241: 01,3663 11305 CCS LONGTIME +1
060821,000242: 01,3664 13670 TCF LONGCLCL
060822,000243: 01,3665 13666 NOOP # CAN:T GET HERE *********
060823,000244: 01,3666 13556 TCF IMEDIATE -3
060824,000245: 01,3667 13561 TCF IMEDIATE
060825,000246:
060826,000247: 01,3670 33137 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
060827,000248: 01,3671 54704 TS GOLOC -1
060828,000249:
060829,000250: 01,3672 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL
060830,000251: 01,3673 31305 DCA LONGTIME
060831,000252: 01,3674 00704 TC GOLOC -1
060832,000253:
060833,000254: 01,3675 33463 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
060834,000255: 01,3676 54704 TS GOLOC -1
060835,000256:
060836,000257: 01,3677 50155 NDX TEMP2G
060837,000258: 01,3700 41260 CS PHSPRDT1 # GET THE DELTA T ADDRESS
060838,000259:
060839,000260: 01,3701 15477 TCF ITSLGCL1 # NOW GET THE DELTA TIME
060840,000261:
060841,000262: 01,3702 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
060842,000263: 01,3703 54706 TS GOLOC +1
060843,000264:
060844,000265: 01,3704 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
060845,000266: 01,3705 32000 CA PRDTTAB # DIRECTLY OR INDIRECTLY
060846,000267:
060847,000268: 01,3706 13535 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
060848,000269:
060849,000270: 01,3707 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR
060850,000271:
060851,000272: 01,3710 50156 NDX POINTER # ADD THE PRIORITY AND LET:S GO
060852,000273: 01,3711 32000 CA PRDTTAB
060853,000274:
![]() |
Page 1416 |
060855,000276: 01,3712 13600 TCF CHKNOVAC
060856,000277:
060857,000278: 01,3713 30157 ITSEVEN CA TEMPSWCH # SET UP FOR EITHER THE SECOND PART OF THE
060858,000279: 01,3714 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
060859,000280:
060860,000281: 01,3715 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
060861,000282: 01,3716 32000 CA SIZETAB # THE TABLE
060862,000283: 01,3717 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET:S SEE YOU DO
060863,000284: 01,3720 60154 AD TEMPPHS # BETTER IN TIME OR NUMBERR OF LOCATIONS
060864,000285: 01,3721 60154 AD TEMPPHS
060865,000286: 01,3722 54156 TS POINTER
060866,000287:
060867,000288: 01,3723 13626 TCF CONTBL2 # NOW PROCESS WHAT IS IN THE TABLE
060868,000289:
060869,000290: 01,3724 36214 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
060870,000291: 01,3725 26156 ADS POINTER # THE TABLE
060871,000292:
060872,000293: 01,3726 33526 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
060873,000294: 01,3727 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT
060874,000295: # GROUP
060875,000296: 01,3730 13626 TCF CONTBL2 # SO LET:S GET THE SECOND ENTRY IN THE TBL
060876,000297:
060877,000298: 01,3731 0154 TEMPPHS EQUALS MPAC
060878,000299: 01,3731 0155 TEMP2G EQUALS MPAC +1
060879,000300: 01,3731 0156 POINTER EQUALS MPAC +2
060880,000301: 01,3731 0157 TEMPSWCH EQUALS MPAC +3
060881,000302: 01,3731 7701 MINUS2 EQUALS NEG2
060882,000303: 01,3731 6043 OCT177 EQUALS LOW7
060883,000304:
End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc