Source Code
These source-code files were transcribed from a printout in Don Eyles's personal
collection, scanned by archive.org, and financially sponsored by Peter McDermott.
A team of volunteers performed the transcription and proof-reading. The scanned
page images are available at
the Virtual AGC Project website, as well as higher-quality (but much larger)
images at
the Virtual AGC Project's collection in the Internet Archive. Report any problems by creating
"issues" at
the Virtual AGC Project's GitHub Repository. Notations on the program listing read, in part: YUL SYSTEM FOR AGC: NEW PROGRAM SHEPATIN BY EYLES DEC 13, 1966 THIS PROGRAM WAS ASSEMBLED AS A VERSION OF REVISION 37 OF PROGRAM SUNBURST BY LEM GROUPNote that the date is the date of the printout, not the date of the program revision. |
033591,000002: ## Copyright: Public domain.
033592,000003: ## Filename: LMP_COMMAND_ROUTINES.agc
033593,000004: ## Purpose: A section of Sunburst revision 37, or Shepatin revision 0.
033594,000005: ## It is part of an early development version of the software
033595,000006: ## for Apollo Guidance Computer (AGC) on the unmanned Lunar
033596,000007: ## Module (LM) flight Apollo 5. Sunburst 37 was the program
033597,000008: ## upon which Don Eyles's offline development program Shepatin
033598,000009: ## was based; the listing herein transcribed was actually for
033599,000010: ## the equivalent revision 0 of Shepatin.
033600,000011: ## This file is intended to be a faithful transcription, except
033601,000012: ## that the code format has been changed to conform to the
033602,000013: ## requirements of the yaYUL assembler rather than the
033603,000014: ## original YUL assembler.
033604,000015: ## Reference: pp. 746-747
033605,000016: ## Assembler: yaYUL
033606,000017: ## Contact: Ron Burkey <info@sandroid.org>.
033607,000018: ## Website: www.ibiblio.org/apollo/index.html
033608,000019: ## Mod history: 2017-05-24 MAS Created from Sunburst 120.
033609,000020: ## 2017-06-08 HG Transcribed
033610,000021: ## 2017-06-23 RSB Proofed comment text with
033611,000022: ## octopus/ProoferComments.
033612,000023:
Page 746 |
033614,000025: # THE FOLLOWING SUBROUTINES ALLOW MISSION PROGRAMS TO REQUEST LMP (LEM MISSION PROGRAMMER) OUTPUTS.
033615,000026:
033616,000027: # THE PROPER DECIMAL CODE IS ENTERED INTO A TABLE AND FROM THENCE TO CHANNEL 10 VIA T4RUPT AND ARE INCLUDED IN
033617,000028: # THE DOWNLINK.
033618,000029:
033619,000030: # FOUR ROUTINES ARE PROVIDED:
033620,000031:
033621,000032: # TC 1LMP CALLED UNDER EXEC OR RUPT. DELIVERS CODE
033622,000033: # DEC LMPCODE AND RETURNS IMMEDIATELY.
033623,000034:
033624,000035: # TC 2LMP SAME AS 1LMP BUT TWO CODES ARE
033625,000036: # DEC LMPCODE1 SENT.
033626,000037: # DEC LMPCODE2
033627,000038:
033628,000039: # TC 1LMP+DT ASSUMES CALLED AS PART OF WAITLIST TASK.
033629,000040: # DEC LMPCODE DELIVERS LMP CODE, DOES A VARDELAY FOR
033630,000041: # DEC DT DT, AND THEN RETURNS UNDER WL CONTROL.
033631,000042:
033632,000043: # TC 2LMP+DT SAME AS 1LMP+DT BUT TWO CODES SENT.
033633,000044: # DEC LMPCODE1
033634,000045: # DEC LMPCODE2
033635,000046: # DEC DT
033636,000047:
033637,000048: # WARNING ***** PROGRAMS UNDER EXEC WHICH CALL 1LMP + 2LMP MUST FIRST
033638,000049:
033639,000050: # INHIBIT INTERRUPT....RETURNS STILL INHIBITED.
033640,000051:
033641,000052:
033642,000053:
033643,000054: 5065 BLOCK 02
033644,000055: 5065 50002 2LMP INDEX Q # PICK UP 1ST CODE
033645,000056: 5066 30000 CA 0
033646,000057: 5067 24002 INCR Q
033647,000058: 5070 22002 LXCH Q # SAVE 2ND CODE ADDRESS IN L
033648,000059:
033649,000060: 5071 LMPGROUP EQUALS 2
033650,000061: 5071 1115 LMPTBASE EQUALS TBASE2
033651,000062:
033652,000063: 5071 1102 LMPPHASE EQUALS PHASE2
033653,000064:
033654,000065: 5071 05076 TC STORCOM -1 # TO STORE IN BUFFER AND UPDATE POINTER
033655,000066:
033656,000067: 5072 22002 LXCH Q # RETREIVE 2ND CODE ADDRESS FROM L.
033657,000068:
033658,000069: 5073 50002 1LMP INDEX Q
033659,000070: 5074 30000 CA 0 # GET LMP CODE
033660,000071: 5075 24002 INCR Q # SET RETURN.
033661,000072: 5076 67737 AD BIT15 # SET SIGN TO SHOW NEW COMMAND IN BUFFER
033662,000073:
033663,000074: 5077 51142 STORCOM INDEX LMPIN
033664,000075: 5100 55132 TS LMPCMD # INSERT IN NEXT SLOT IN BUFFER
033665,000076:
033666,000077: 5101 11142 UPLMPIN CCS LMPIN # UPDATE POINTER
033667,000078:
Page 747 |
033669,000080: 5102 15104 TCF +2
033670,000081: 5103 37757 CAF SEVEN
033671,000082: 5104 55142 TS LMPIN
033672,000083: 5105 00002 TC Q
033673,000084:
033674,000085: 5106 50002 2LMP+DT INDEX Q
033675,000086: 5107 30000 CA 0 # PICK UP 1ST CODE
033676,000087: 5110 24002 INCR Q
033677,000088: 5111 22002 LXCH Q # 2ND CODE ADDRESS IN L.
033678,000089:
033679,000090: 5112 05076 TC STORCOM -1 # STORE IN BUFFER AND UPDATE POINTER
033680,000091:
033681,000092: 5113 15115 TCF +2
033682,000093:
033683,000094: 5114 00006 1LMP+DT EXTEND # SAVE RETURN FOR RESTARTS
033684,000095: 5115 23145 QXCH LMPRET # IS LXCH IF FROM ABOVE
033685,000096: 5116 30006 CA BBANK
033686,000097: 5117 55146 TS LMPBBANK
033687,000098:
033688,000099: 5120 00006 EXTEND
033689,000100: 5121 51145 INDEX LMPRET
033690,000101: 5122 30001 DCA 0 # PICK UP CODE AND DT
033691,000102: 5123 05076 TC STORCOM -1 # GO TO STORE CODE AND UPDATE POINTER
033692,000103:
033693,000104: 5124 23147 LXCH SAVDT # SAVE FOR RESTART
033694,000105: 5125 04147 TC PHASCHNG # RESTART PROTECT DELAY
033695,000106: 5126 47012 OCT 47012
033696,000107: 5127 76630 -GENADR SAVDT
033697,000108: 5130 1115 EBANK= TBASE2
033698,000109: 5130 05136 04002 2CADR LMPRST
033699,000110:
033700,000111: 5132 31147 CA SAVDT # WAIT DT SECONDS
033701,000112: 5133 05722 TC VARDELAY
033702,000113:
033703,000114: 5134 51145 LMPEXIT INDEX LMPRET
033704,000115: 5135 00002 TC 2
033705,000116:
033706,000117: 5136 31146 LMPRST CA LMPBBANK # LMP+DT RESTARTS COME HERE
033707,000118: 5137 54006 TS BBANK # AFTER DELAY.
033708,000119: 5140 05134 TC LMPEXIT
End of include-file LMP_COMMAND_ROUTINES.agc. Parent file is MAIN.agc