Source Code
![]() |
These source-code files derive from a printout of Luminary 210 (Apollo 15-17
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Jim Lawton, and transcribed to source code by a
team of volunteers. This colorized, syntax-highlighted form was created
by assembling that transcribed source code. Note that the full page images
are available on the
Virtual AGC project page at archive.org, while reduced-size images
are presented at the VirtualAGC project website. Report or fix any
transcription errors at
the Virtual AGC project code repository. Notations on the program listing read, in part: GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY BY NASA 2021112-161 17:11 MAR. 19,1971Note that the date is the date of the printout, not the date of the program revision. |
060466,000002: ## Copyright: Public domain.
060467,000003: ## Filename: T6-RUPT_PROGRAMS.agc
060468,000004: ## Purpose: A section of Luminary revision 210.
060469,000005: ## It is part of the source code for the Lunar Module's (LM)
060470,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
060471,000007: ## This file is intended to be a faithful transcription, except
060472,000008: ## that the code format has been changed to conform to the
060473,000009: ## requirements of the yaYUL assembler rather than the
060474,000010: ## original YUL assembler.
060475,000011: ## Reference: pp. 1400-1402
060476,000012: ## Assembler: yaYUL
060477,000013: ## Contact: Ron Burkey <info@sandroid.org>.
060478,000014: ## Website: www.ibiblio.org/apollo/index.html
060479,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
060480,000016: ## 2016-11-30 RRB Updated from Luminary210 images.
060481,000017: ## 2016-12-26 RSB Comment-text proofed using ProoferComments
060482,000018: ## and corrected errors found.
060483,000019:
![]() |
Page 1400 |
060485,000021: # PROGRAM NAMES: (1) T6JOBCHK MOD. NO. 5 OCTOBER 2, 1967
060486,000022: # (2) DOT6RUPT
060487,000023: # MODIFICATION BY: LOWELL G HULL (A.C.ELECTRONICS)
060488,000024:
060489,000025: # THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.
060490,000026: # SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN
060491,000027: # ESTABLISHED AND MUST NOT BE TAMPERED WITH:
060492,000028: # 1. NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.
060493,000029: # 2. NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.
060494,000030: # 3. TO USE TIME6, THE FOLLOWING SEQUENCE IS ALWAYS EMPLOYED:
060495,000031: # A. A POSITIVE (NON-ZERO) NUMBER IS STORED IN TIME6.
060496,000032: # B. THE TIME6 CLOCK IS ENABLED.
060497,000033: # C. TIME6 IS INTERROGATED AND IS:
060498,000034: # I. NEVER FOUND NEGATIVE (NON-ZERO) OR +0.
060499,000035: # II. SOMETIMES FOUND POSITIVE (BETWEEN 1 AND 240D) INDICATING THAT IT IS ACTIVE.
060500,000036: # III. SOMETIMES FOUND POSMAX INDICATING THAT IT IS INACTIVE AND NOT ENABLED.
060501,000037: # IV. SOMETIMES FOUND NEGATIVE ZERO INDICATING THAT:
060502,000038: # A. A T6RUPT IS ABOUT TO OCCUR AT THE NEXT DINC, OR
060503,000039: # B. A T6RUPT IS WAITING IN THE PRIORITY CHAIN, OR
060504,000040: # C. A T6RUPT IS IN PROCESS NOW.
060505,000041: # 4. ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK
060506,000042: # EVERY 5 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.
060507,000043:
060508,000044: # (5. PROGRAM JTLST, IN Q,R-AXES, HANDLES THE INPUT LIST.)
060509,000045:
060510,000046: # T6JOBCHK CALLING SEQUENCE:
060511,000047: # L TC T6JOBCHK
060512,000048: # L+1 (RETURN)
060513,000049:
060514,000050: # DOT6RUPT CALLING SEQUENCE:
060515,000051: # DXCH ARUPT T6RUPT LEAD IN AT LOCATION 4004.
060516,000052: # EXTEND
060517,000053: # DCA T6ADR
060518,000054: # DTCB
060519,000055:
060520,000056: # SUBROUTINES CALLED: DOT6RUPT CALLS T6JOBCHK.
060521,000057:
060522,000058: # NORMAL EXIT MODES: T6JOBCHK RETURNS TO L +1.
060523,000059: # DOT6RUPT TRANSFERS CONTROL TO RESUME.
060524,000060:
060525,000061: # ALARM/ABORT MODES: NONE.
060526,000062:
060527,000063: # INPUT: TIME6 NXT6ADR OUTPUT: TIME6 NXT6ADR CHANNEL 5
060528,000064: # T6NEXT T6NEXT +1 T6NEXT T6NEXT +1 CHANNEL 6
060529,000065: # T6FURTHA T6FURTHA +1 T6FURTHA T6FURTHA +1 BIT15/CH13
060530,000066:
060531,000067: # DEBRIS: T6JOBCHK CLOBBERS A. DOT6RUPT CLOBBERS NOTHING.
060532,000068:
060533,000069: 5747 BLOCK 02
![]() |
Page 1401 |
060535,000071: 17,2055 BANK 17
060536,000072: 17,2000 SETLOC DAPS2
060537,000073: 17,2000 BANK
060538,000074: 17,2055 E6,1466 EBANK= T6NEXT
060539,000075: 17,2055 COUNT* $$/DAPT6
060540,000076:
060541,000077: 17,2055 10031 T6JOBCHK CCS TIME6 # CHECK TIME6 FOR WAITING T6RUPT:
060542,000078: 17,2056 00002 TC Q # NONE: CLOCK COUTING DOWN.
060543,000079: 17,2057 05701 TC CCSHOLE
060544,000080: 17,2060 05701 TC CCSHOLE
060545,000081:
060546,000082: # CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E. WHEN A T6RUPT MUST BE PROCESSED).
060547,000083:
060548,000084: 17,2061 34724 T6JOB CA POSMAX
060549,000085: 17,2062 22007 ZL
060550,000086: 17,2063 53471 DXCH T6FURTHA
060551,000087: 17,2064 53467 DXCH T6NEXT
060552,000088: 17,2065 23465 LXCH NXT6ADR
060553,000089: 17,2066 54031 TS TIME6
060554,000090:
060555,000091: 17,2067 67746 AD PRIO37
060556,000092: 17,2070 54000 TS A
060557,000093: 17,2071 12075 TCF ENABLET6
060558,000094: 17,2072 34724 CA POSMAX
060559,000095: 17,2073 54031 TS TIME6
060560,000096: 17,2074 12115 TCF GOCH56
060561,000097: 17,2075 00006 ENABLET6 EXTEND
060562,000098: 17,2076 23265 QXCH C13QSAV
060563,000099: 17,2077 22070 LXCH RUPTREG1
060564,000100: 17,2100 06040 TC C13STALL
060565,000101: 17,2101 00006 EXTEND
060566,000102: 17,2102 23265 QXCH C13QSAV
060567,000103: 17,2103 22070 LXCH RUPTREG1
060568,000104: 17,2104 34726 CAF BIT15
060569,000105: 17,2105 00006 EXTEND
060570,000106: 17,2106 05013 WOR CHAN13
060571,000107: 17,2107 31466 CA T6NEXT
060572,000108: 17,2110 67746 AD PRIO37
060573,000109: 17,2111 54000 TS A
060574,000110: 17,2112 12115 TCF GOCH56
060575,000111: 17,2113 34724 CA POSMAX
060576,000112: 17,2114 55466 TS T6NEXT
060577,000113: 17,2115 50001 GOCH56 INDEX L
060578,000114: 17,2116 15747 TCF WRITEP -1
060579,000115:
060580,000116: 5747 BLOCK 02
060581,000117: 4000 SETLOC FFTAG9
060582,000118: 4000 BANK
060583,000119: 5747 E6,1634 EBANK= CDUXD
060584,000120: 5747 COUNT* $$/DAPT6
![]() |
Page 1402 |
060586,000122: 5747 31472 CA NEXTP
060587,000123: 5750 00006 WRITEP EXTEND
060588,000124: 5751 01006 WRITE CHAN6
060589,000125: 5752 00002 TC Q
060590,000126:
060591,000127: 5753 31473 CA NEXTU
060592,000128: 5754 54001 WRITEU TS L
060593,000129: 5755 45770 CS 00314OCT
060594,000130: 5756 00006 EXTEND
060595,000131: 5757 02005 RAND CHAN5
060596,000132: 5760 60001 AD L
060597,000133: 5761 00006 EXTEND
060598,000134: 5762 01005 WRITE CHAN5
060599,000135: 5763 00002 TC Q
060600,000136:
060601,000137: 5764 31474 CA NEXTV
060602,000138: 5765 54001 WRITEV TS L
060603,000139: 5766 35770 CA 00314OCT
060604,000140: 5767 15756 TCF -9D
060605,000141: 5770 00314 00314OCT OCT 00314
060606,000142:
060607,000143: 17,2117 BANK 17
060608,000144: 17,2000 SETLOC DAPS2
060609,000145: 17,2000 BANK
060610,000146:
060611,000147: 17,2117 E6,1466 EBANK= T6NEXT
060612,000148: 17,2117 COUNT* $$/DAPT6
060613,000149:
060614,000150: 17,2117 22016 DOT6RUPT LXCH BANKRUPT # (INTERRUPT LEAD INS CONTINUED)
060615,000151: 17,2120 00006 EXTEND
060616,000152: 17,2121 22012 QXCH QRUPT
060617,000153:
060618,000154: 17,2122 02055 TC T6JOBCHK # CALL T6JOBCHK.
060619,000155:
060620,000156: 17,2123 15272 TCF RESUME # END TIME6 INTERRUPT PROCESSOR.
End of include-file T6-RUPT_PROGRAMS.agc. Parent file is MAIN.agc