Source Code
|
These source-code files are part of a reconstructed copy of LUM69 Revision 2, the
flown Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction began with source code of Luminary 69 revision 0 previously transcribed from a digitized copy of that program. The code was then updated by back-porting the R-2 lunar potential model from previously-transcribed source code of Luminary 99. These required changes were described in the original Luminary memos 75 and 78. The reconstructed code was verified by matching memory-bank checksums to those listed in drawing 2021152G. Note that page numbers in the reconstructed code match those on the Luminary 069 printout, although the added code would likely have changed page numbers for a real LUM69 Revision 2 listing. Comments from the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository. |
055810,000002: ## Copyright: Public domain.
055811,000003: ## Filename: RESTARTS_ROUTINE.agc
055812,000004: ## Purpose: A section of LUM69 revision 2.
055813,000005: ## It is part of the reconstructed source code for the flown
055814,000006: ## version of the flight software for the Lunar Module's (LM)
055815,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
055816,000008: ## been recreated from a copy of Luminary revsion 069, using
055817,000009: ## changes present in Luminary 099 which were described in
055818,000010: ## Luminary memos 75 and 78. The code has been adapted such
055819,000011: ## that the resulting bugger words exactly match those specified
055820,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
055821,000013: ## relatively high confidence that the reconstruction is correct.
055822,000014: ## Reference: pp. 1297-1302
055823,000015: ## Assembler: yaYUL
055824,000016: ## Contact: Ron Burkey <info@sandroid.org>.
055825,000017: ## Website: www.ibiblio.org/apollo/index.html
055826,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
055827,000019:
|
Page 1297 |
055829,000021: 01,3523 BANK 01
055830,000022: 01,2000 SETLOC RESTART
055831,000023: 01,2000 BANK
055832,000024:
055833,000025: 01,3523 E3,1436 EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
055834,000026:
055835,000027: 01,3523 COUNT* $$/RSROU
055836,000028: 01,3523 30161 RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
055837,000029: 01,3524 60000 DOUBLE # SAVE FOR INDEXING
055838,000030: 01,3525 54155 TS TEMP2G
055839,000031:
055840,000032: 01,3526 33765 CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
055841,000033: 01,3527 54157 TS TEMPSWCH # TABLE PHASE
055842,000034:
055843,000035: 01,3530 33562 CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
055844,000036: 01,3531 54707 TS GOLOC +2 # GROUP AFTER THIS
055845,000037:
055846,000038: 01,3532 30154 CA TEMPPHS
055847,000039: 01,3533 75007 MASK OCT1400
055848,000040: 01,3534 10000 CCS A # IS IT A VARIABLE OR TABLE RESTART
055849,000041: 01,3535 13546 TCF ITSAVAR # IT:S A VARIABLE RESTART
055850,000042:
055851,000043: 01,3536 10154 GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
055852,000044: 01,3537 10000 CCS A
055853,000045: 01,3540 13646 TCF ITSATBL # NO, ITS A TABLE RESTART
055854,000046:
055855,000047: 01,3541 35024 CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
055856,000048: 01,3542 05105 TC FINDVAC # THE DISPLAY RESTART JOB
055857,000049: 01,3543 E3,1400 EBANK= LST1
055858,000050: 01,3543 02712 20103 2CADR INITDSP
055859,000051:
055860,000052: 01,3545 03562 TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
055861,000053:
055862,000054: 01,3546 75007 ITSAVAR MASK OCT1400 # IS IT TYPE B ?
055863,000055: 01,3547 10000 CCS A
055864,000056: 01,3550 13617 TCF ITSLIKEB # YES, IT IS TYPE B
055865,000057:
055866,000058: 01,3551 00006 EXTEND # STORE THE JOB (OR TASK) 2CADR FOR EXIT
055867,000059: 01,3552 50155 NDX TEMP2G
055868,000060: 01,3553 31437 DCA PHSNAME1
055869,000061: 01,3554 52706 DXCH GOLOC
055870,000062:
055871,000063: 01,3555 30154 CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCAL
055872,000064: 01,3556 74757 MASK OCT7
055873,000065: 01,3557 67745 AD MINUS2
055874,000066: 01,3560 10000 CCS A
055875,000067: 01,3561 13731 TCF ITSLNGCL # ITS A LONGCALL
055876,000068:
055877,000069: 01,3562 04631 RTRNCADR TC SWRETURN # CANT GET HERE
|
Page 1298 |
055879,000071: 01,3563 13565 TCF ITSAWAIT
055880,000072:
055881,000073: 01,3564 13632 TCF ITSAJOB # ITS A JOB
055882,000074:
055883,000075: 01,3565 33771 ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
055884,000076: 01,3566 54704 TS GOLOC -1
055885,000077:
055886,000078: 01,3567 50155 NDX TEMP2G # DIRECTLY STORED
055887,000079: 01,3570 31054 CA PHSPRDT1
055888,000080: 01,3571 10000 TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
055889,000081: 01,3572 24000 INCR A # NO,
055890,000082: 01,3573 13576 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
055891,000083:
055892,000084: 01,3574 15436 TCF ITSINDIR # STORED INDIRECTLY
055893,000085:
055894,000086: 01,3575 13615 TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
055895,000087:
055896,000088: # ***** THIS MUST BE IN FIXED FIXED *****
055897,000089:
055898,000090: 5436 BLOCK 02
055899,000091: 4000 SETLOC FFTAG2
055900,000092: 4000 BANK
055901,000093:
055902,000094: 5436 COUNT* $$/RSROU
055903,000095: 5436 22706 ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS
055904,000096: 5437 22006 LXCH BB # SWITCHED ERRASIBLE
055905,000097:
055906,000098: 5440 50000 NDX A # GET THE TIME INDIRECTLY
055907,000099: 5441 30001 CA 1
055908,000100:
055909,000101: 5442 22006 LXCH BB # RESTORE THE BB AND GOLOC
055910,000102: 5443 22706 LXCH GOLOC +1
055911,000103:
055912,000104: 5444 13576 TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
055913,000105:
055914,000106: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
055915,000107:
055916,000108: 01,3576 BANK 01
055917,000109: 01,2000 SETLOC RESTART
055918,000110: 01,2000 BANK
055919,000111:
055920,000112: 01,3576 COUNT* $$/RSROU
055921,000113: 01,3576 40000 FINDTIME COM # MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
055922,000114: 01,3577 54001 TS L # AND SAVE
055923,000115: 01,3600 50155 NDX TEMP2G
055924,000116: 01,3601 41053 CS TBASE1
055925,000117: 01,3602 00006 EXTEND
055926,000118: 01,3603 60025 SU TIME1
055927,000119: 01,3604 10000 CCS A
055928,000120: 01,3605 40000 COM
|
Page 1299 |
055930,000122: 01,3606 67730 AD OCT37776
055931,000123: 01,3607 64753 AD ONE
055932,000124: 01,3610 60001 AD L
055933,000125: 01,3611 10000 CCS A
055934,000126: 01,3612 34755 CA ZERO
055935,000127: 01,3613 13615 TCF +2
055936,000128: 01,3614 13615 TCF +1
055937,000129: 01,3615 64753 IMEDIATE AD ONE
055938,000130: 01,3616 00704 TC GOLOC -1
055939,000131: 01,3617 33562 ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
055940,000132: 01,3620 54157 TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
055941,000133:
055942,000134: 01,3621 33766 CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
055943,000135: 01,3622 54707 TS GOLOC +2 # VARIABLE TYPE OF PHASE
055944,000136:
055945,000137: 01,3623 30154 CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
055946,000138: 01,3624 76073 MASK OCT177 # PART OF THIS VARIABLE PHASE
055947,000139: 01,3625 54154 TS TEMPPHS
055948,000140:
055949,000141: 01,3626 00006 EXTEND
055950,000142: 01,3627 50155 NDX TEMP2G # OBTAIN THE JOB:S 2CADR
055951,000143: 01,3630 31437 DCA PHSNAME1
055952,000144: 01,3631 52706 DXCH GOLOC
055953,000145:
055954,000146: 01,3632 50155 ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET:S GO
055955,000147: 01,3633 31054 CA PHSPRDT1
055956,000148: 01,3634 54704 CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF ITS
055957,000149: 01,3635 00006 EXTEND # A FINDVAC OR A NOVAC
055958,000150: 01,3636 63642 BZMF ITSNOVAC
055959,000151:
055960,000152: 01,3637 33770 CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
055961,000153: 01,3640 56704 XCH GOLOC -1 # PICK UP PRIO,
055962,000154: 01,3641 00704 TC GOLOC -1 # AND GO
055963,000155:
055964,000156: 01,3642 33772 ITSNOVAC CAF NOVACADR # NEGATIVE,
055965,000157: 01,3643 56704 XCH GOLOC -1 # SET UP NOVAC CALL,
055966,000158: 01,3644 40000 COM # CORRECT PRIO,
055967,000159: 01,3645 00704 TC GOLOC -1 # AND GO
055968,000160:
055969,000161: 01,3646 54020 ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
055970,000162: 01,3647 10020 CCS CYR
055971,000163: 01,3650 13651 TCF +1 # IT:S EVEN
055972,000164: 01,3651 13747 TCF ITSEVEN
055973,000165:
055974,000166: 01,3652 33562 CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
055975,000167: 01,3653 54707 TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
055976,000168:
055977,000169: 01,3654 30154 CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
055978,000170: 01,3655 54021 TS SR # THE RESTART TABLES
055979,000171: 01,3656 60021 AD SR
|
Page 1300 |
055981,000173: 01,3657 50155 NDX TEMP2G
055982,000174: 01,3660 62003 AD SIZETAB +1
055983,000175: 01,3661 54156 TS POINTER
055984,000176:
055985,000177: 01,3662 00006 CONTBL2 EXTEND # FIND OUT WHAT:S IN THE TABLE
055986,000178: 01,3663 50156 NDX POINTER
055987,000179: 01,3664 32002 DCA CADRTAB # GET THE 2CADR
055988,000180:
055989,000181: 01,3665 22706 LXCH GOLOC +1 # STORE THE BB INFORMATION
055990,000182:
055991,000183: 01,3666 10000 CCS A # IS IT A JOB OR IS IT TIMED
055992,000184: 01,3667 24000 INCR A # POSITIVE, MUST BE A JOB
055993,000185: 01,3670 13743 TCF ITSAJOB2
055994,000186:
055995,000187: 01,3671 24000 INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
055996,000188: 01,3672 54705 TS GOLOC # LET-S STORE THE CORRECT CADR
055997,000189:
055998,000190: 01,3673 33771 CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
055999,000191: 01,3674 54704 TS GOLOC -1
056000,000192:
056001,000193: 01,3675 30706 CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
056002,000194: 01,3676 74742 MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
056003,000195: 01,3677 10000 CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
056004,000196: # 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
056005,000197: # IN IMPORTANCE ANYWAY. BIT 4
056006,000198: 01,3700 13736 TCF ITSWTLST # IT IS A WAITLIST CALL
056007,000199:
056008,000200: 01,3701 50156 NDX POINTER # OBTAIN THE ORIGINAL DELTA T
056009,000201: 01,3702 32000 CA PRDTTAB # ADDRESS FOR THIS LONGCALL
056010,000202:
056011,000203: 01,3703 15445 TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
056012,000204:
056013,000205: # ***** THIS MUST BE IN FIXED FIXED *****
056014,000206:
056015,000207: 5445 BLOCK 02
056016,000208: 4000 SETLOC FFTAG2
056017,000209: 4000 BANK
056018,000210:
056019,000211: 5445 COUNT* $$/RSROU
056020,000212: 5445 22706 ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
056021,000213: 5446 22006 LXCH BB
056022,000214: 5447 22706 LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
056023,000215:
056024,000216: 5450 00006 EXTEND # GET THE DELTA TIME
056025,000217: 5451 50000 NDX A
056026,000218: 5452 30001 DCA 0
056027,000219:
056028,000220: 5453 22706 LXCH GOLOC +1 # RESTORE OUR E AND F BANK
056029,000221: 5454 22006 LXCH BB # RESTORE THE TASKS E AND F BANKS
056030,000222: 5455 22706 LXCH GOLOC +1 # AND PRESERVE OUR L
|
Page 1301 |
056032,000224: 5456 13704 TCF ITSLGCL2 # NOW LET:S PROCESS THIS LONGCALL
056033,000225:
056034,000226: # ***** YOU MAY RETURN TO SWITCHED FIXED *****
056035,000227:
056036,000228: 01,3704 BANK 01
056037,000229: 01,2000 SETLOC RESTART
056038,000230: 01,2000 BANK
056039,000231:
056040,000232: 01,3704 COUNT* $$/RSROU
056041,000233: 01,3704 53154 ITSLGCL2 DXCH LONGTIME
056042,000234:
056043,000235: 01,3705 00006 EXTEND # CALCULATE TIME LEFT
056044,000236: 01,3706 40025 DCS TIME2
056045,000237: 01,3707 21154 DAS LONGTIME
056046,000238: 01,3710 00006 EXTEND
056047,000239: 01,3711 31152 DCA LONGBASE
056048,000240: 01,3712 21154 DAS LONGTIME
056049,000241:
056050,000242: 01,3713 11153 CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
056051,000243: 01,3714 13724 TCF LONGCLCL
056052,000244: 01,3715 13717 TCF +2
056053,000245: 01,3716 13612 TCF IMEDIATE -3
056054,000246: 01,3717 11154 CCS LONGTIME +1
056055,000247: 01,3720 13724 TCF LONGCLCL
056056,000248: 01,3721 13722 NOOP # CAN:T GET HERE *********
056057,000249: 01,3722 13612 TCF IMEDIATE -3
056058,000250: 01,3723 13615 TCF IMEDIATE
056059,000251:
056060,000252: 01,3724 33767 LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
056061,000253: 01,3725 54704 TS GOLOC -1
056062,000254:
056063,000255: 01,3726 00006 EXTEND # PREPARE OUR ENTRY TO LONGCALL
056064,000256: 01,3727 31154 DCA LONGTIME
056065,000257: 01,3730 00704 TC GOLOC -1
056066,000258:
056067,000259: 01,3731 33771 ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
056068,000260: 01,3732 54704 TS GOLOC -1
056069,000261:
056070,000262: 01,3733 50155 NDX TEMP2G
056071,000263: 01,3734 41054 CS PHSPRDT1 # GET THE DELTA T ADDRESS
056072,000264:
056073,000265: 01,3735 15445 TCF ITSLGCL1 # NOW GET THE DELTA TIME
056074,000266:
056075,000267: 01,3736 40706 ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
056076,000268: 01,3737 54706 TS GOLOC +1
056077,000269:
056078,000270: 01,3740 50156 NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
056079,000271: 01,3741 32000 CA PRDTTAB # DIRECTLY OR INDIRECTLY
056080,000272:
056081,000273: 01,3742 13571 TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
056082,000274:
|
Page 1302 |
056084,000276: 01,3743 56705 ITSAJOB2 XCH GOLOC # STORE THE CADR
056085,000277:
056086,000278: 01,3744 50156 NDX POINTER # ADD THE PRIORITY AND LET:S GO
056087,000279: 01,3745 32000 CA PRDTTAB
056088,000280:
056089,000281: 01,3746 13634 TCF CHKNOVAC
056090,000282:
056091,000283: 01,3747 30157 ITSEVEN CA TEMPSWCH # SET UP FOR EITHER THE SECOND PART OF THE
056092,000284: 01,3750 54707 TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
056093,000285:
056094,000286: 01,3751 50155 NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
056095,000287: 01,3752 32002 CA SIZETAB # THE TABLE
056096,000288: 01,3753 60154 AD TEMPPHS # THIS MAY LOOK BAD BUT LET:S SEE YOU DO
056097,000289: 01,3754 60154 AD TEMPPHS # BETTER IN TIME OR NUMBERR OF LOCATIONS
056098,000290: 01,3755 60154 AD TEMPPHS
056099,000291: 01,3756 54156 TS POINTER
056100,000292:
056101,000293: 01,3757 13662 TCF CONTBL2 # NOW PROCESS WHAT IS IN THE TABLE
056102,000294:
056103,000295: 01,3760 36244 PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
056104,000296: 01,3761 26156 ADS POINTER # THE TABLE
056105,000297:
056106,000298: 01,3762 33562 CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
056107,000299: 01,3763 54707 TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT
056108,000300: # GROUP
056109,000301: 01,3764 13662 TCF CONTBL2 # SO LET:S GET THE SECOND ENTRY IN THE TBL
056110,000302:
056111,000303: 01,3765 0154 TEMPPHS EQUALS MPAC
056112,000304: 01,3765 0155 TEMP2G EQUALS MPAC +1
056113,000305: 01,3765 0156 POINTER EQUALS MPAC +2
056114,000306: 01,3765 0157 TEMPSWCH EQUALS MPAC +3
056115,000307: 01,3765 0705 GOLOC EQUALS VAC5 +20D
056116,000308: 01,3765 7745 MINUS2 EQUALS NEG2
056117,000309: 01,3765 6073 OCT177 EQUALS LOW7
056118,000310:
056119,000311: 01,3765 03760 PHS2CADR GENADR PHSPART2
056120,000312: 01,3766 03536 PRT2CADR GENADR GETPART2
056121,000313: 01,3767 05277 LGCLCADR GENADR LONGCALL
056122,000314: 01,3770 05105 FVACCADR GENADR FINDVAC
056123,000315: 01,3771 05203 WTLTCADR GENADR WAITLIST
056124,000316: 01,3772 05072 NOVACADR GENADR NOVAC
056125,000317:
056126,000318:
End of include-file RESTARTS_ROUTINE.agc. Parent file is MAIN.agc