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. |
019923,000002: ## Copyright: Public domain.
019924,000003: ## Filename: T6-RUPT_PROGRAMS.agc
019925,000004: ## Purpose: A section of Sunburst revision 37, or Shepatin revision 0.
019926,000005: ## It is part of an early development version of the software
019927,000006: ## for Apollo Guidance Computer (AGC) on the unmanned Lunar
019928,000007: ## Module (LM) flight Apollo 5. Sunburst 37 was the program
019929,000008: ## upon which Don Eyles's offline development program Shepatin
019930,000009: ## was based; the listing herein transcribed was actually for
019931,000010: ## the equivalent revision 0 of Shepatin.
019932,000011: ## This file is intended to be a faithful transcription, except
019933,000012: ## that the code format has been changed to conform to the
019934,000013: ## requirements of the yaYUL assembler rather than the
019935,000014: ## original YUL assembler.
019936,000015: ## Reference: pp. 460-462
019937,000016: ## Assembler: yaYUL
019938,000017: ## Contact: Ron Burkey <info@sandroid.org>.
019939,000018: ## Website: www.ibiblio.org/apollo/index.html
019940,000019: ## Mod history: 2017-05-24 MAS Created from Sunburst 120.
019941,000020: ## 2017-05-30 HG Transcribed
019942,000021: ## 2017-06-22 RSB Proofed comment text with
019943,000022: ## octopus/ProoferComments.
019944,000023:
Page 460 |
019946,000025: # PROGRAM NAMES: (1) DOT6RUPT MOD. NO. 2 DATE: NOVEMBER 15, 1966
019947,000026:
019948,000027: # (2) T6JOBCHK
019949,000028:
019950,000029: # MODIFICATION BY: JONATHAN D. ADDELSTON (ADAMS ASSOCIATES)
019951,000030:
019952,000031: # THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.
019953,000032: # SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN
019954,000033: # ESTABLISHED AND MUST NOT BE TAMPERED WITH:
019955,000034: # 1. NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.
019956,000035: # 2. NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.
019957,000036: # 3. ONLY POSITIVE NUMBERS ARE ENTERED INTO TIME6, SO IT COUNTS DOWN TO -0 (MINUS ZERO) TO INTERRUPT.
019958,000037: # 4. IF -0 IS NOT IN TIME6 WHEN THE INTERRUPT OCCURS, THEN THE INTERRUPT HAS ALREADY BEEN PROCESSED.
019959,000038: # 5. ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK
019960,000039: # EVERY 6 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.
019961,000040:
019962,000041: # DOT6RUPT CALLING SEQUENCE:
019963,000042:
019964,000043: # REF 1 4004 52 011 0 DXCH ARUPT T6RUPT
019965,000044: # 4005 0 0006 1 EXTEND
019966,000045: # REF 1 4006 3 5045 0 DCA T6ADR
019967,000046: # 4007 52 006 0 DTCB
019968,000047:
019969,000048: # T6JOBCHK CALLING SEQUENCE:
019970,000049:
019971,000050: # REF 0 23,1000 0 4200 1 TC T6JOBCHK
019972,000051:
019973,000052: # SUBROUTINES CALLED: DOT6RUPT CALLS T6JOBCHK.
019974,000053:
019975,000054: # NORMAL EXIT MODES: DOT6RUPT TRANSFERS CONTROL TO RESUME.
019976,000055: # T6JOBCHK TRANSFERS CONTROL TO CALLER AT LOCATION AFTER CALL.
019977,000056:
019978,000057: # ALARM/ABORT MODES: NONE.
019979,000058:
019980,000059: # INPUT: TIME6,T6NEXT REGS,T6NEXTJT REGS.
019981,000060:
019982,000061: # OUTPUT: (SAME AS INPUT.)
019983,000062:
019984,000063: # DEBRIS: DOT6RUPT: NONE. T6JOBCHK: A,L
019985,000064:
019986,000065: # *** NOTE: AS OF MOD. NO. 2, T6NEXT AND T6NEXTJT LISTS ARE IN UNSWITCHED ERASABLE. ***
019987,000066:
Page 461 |
019989,000068:
019990,000069: 5037 BLOCK 02
019991,000070: 5037 1002 EBANK= T6NEXT
019992,000071:
019993,000072: 5037 1002 EBANK= T6NEXT
019994,000073: 5037 02077 34002 T6ADR 2CADR DOT6RUPT # 2CADR OF INTERRUPT PROCESSOR.
019995,000074:
019996,000075: 16,2077 BANK 16
019997,000076: 16,2077 1002 EBANK= T6NEXT
019998,000077:
019999,000078: 16,2077 22016 DOT6RUPT LXCH BANKRUPT # (INTERRUPT LEAD IN CONTINUED)
020000,000079: 16,2100 00006 EXTEND
020001,000080: 16,2101 22012 QXCH QRUPT
020002,000081:
020003,000082: 16,2102 05041 TC T6JOBCHK # CALL T6JOBCHK
020004,000083:
020005,000084: 16,2103 15751 TCF RESUME # END TIME6 RUPT
020006,000085:
020007,000086:
020008,000087:
020009,000088: 5041 BLOCK 02
020010,000089: 5041 1002 EBANK= T6NEXT
020011,000090:
020012,000091: 5041 10031 T6JOBCHK CCS TIME6 # CHECK TIME6 FOR WAITING T6RUPT:
020013,000092: 5042 00002 TC Q # NONE: CLOCK COUTING DOWN.
020014,000093: 5043 00002 TC Q # NONE: T6RUPT ALREADY PROCESSED.
020015,000094: 5044 00002 TC Q # NONE: INVALID VALUE. (POSSIBLE ABORT.)
020016,000095:
020017,000096: # CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E. WHEN A T6RUPT MUST BE PROCESSED).
020018,000097:
020019,000098: 5045 37761 T6JOB CAF ZERO # UPDATE ORDERED LIST OF TIME6 DT'S:
020020,000099: 5046 57003 XCH T6NEXT +1 # 1) PUSH FIRST ENTRY INTO TIME6.
020021,000100: 5047 57002 XCH T6NEXT # 2) PUSH SECOND ENTRY INTO FIRST PLACE.
020022,000101:
020023,000102: 5050 54031 TS TIME6 # 3) ZERO LAST (SECOND) DT IN LIST.
020024,000103:
020025,000104: 5051 10031 CCS TIME6 # TIME6 EITHER POSITIVE OR PLUS ZERO:
020026,000105: 5052 15055 TCF T6NZERO # (BRANCH IF TIME6 STILL ACTIVE.)
020027,000106:
020028,000107: 5053 31004 CAE T6NEXTJT # THESE ARE TRANSLATION JETS (NO DT),
020029,000108: 5054 16010 TCF WRITEJTS # DETERMINE CHANNEL AND WRITE.
020030,000109:
020031,000110: 5055 37737 T6NZERO CAF BIT15 # ENABLE TIME6 COUNTER TO START TIMING
020032,000111: 5056 00006 EXTEND # THIS JET FIRING (PROPER JETS NOT YET
020033,000112: 5057 05013 WOR 13 # WRITTEN INTO CHANNEL, BUT WILL BE SOON).
020034,000113:
020035,000114: 5060 37761 CAF ZERO # UPDATE ORDERED LIST OF JET POLICIES:
020036,000115: 5061 57006 XCH T6NEXTJT +2 # 1) LEAVE JETS TO GO ON NOW IN A.
020037,000116: 5062 57005 XCH T6NEXTJT +1 # 2) CYCLE LIST UP TOWARD TOP.
020038,000117: 5063 57004 XCH T6NEXTJT # 3) ZERO LAST ENTRY IN LIST.
020039,000118:
020040,000119: 5064 16010 TCF WRITEJTS # TEMP. FIX UNTIL NEXT REV: JON A.
020041,000120:
Page 462 |
020043,000122: # THE FOLLOWING JET-ON LOGIC MAY BE USED AS A SUBROUTINE (3 ENTRY POINTS):
020044,000123:
020045,000124: # FIRST, LET SGN(A) DETERMINE THE JET CHANNEL:
020046,000125: # POSITIVE IMPLIES P-AXIS POLICY.
020047,000126: # NEGATIVE IMPLIES Q,R-AXES POLICY.
020048,000127:
020049,000128: 6010 BLOCK 03
020050,000129:
020051,000130: 6010 00006 WRITEJTS EXTEND # TEST FOR CHANNEL TO WRITE POLICY IN:
020052,000131: 6011 66015 BZMF WRITEQR # NEG: Q,R-AXES JETS IN CHANNEL 5
020053,000132:
020054,000133: # SECOND, FOR P-AXIS JET POLICIES:
020055,000134:
020056,000135: 6012 00006 WRITEP EXTEND # POS: P-AXIS JETS IN CHANNEL 6
020057,000136:
020058,000137: 6013 01006 WRITE 6
020059,000138: 6014 00002 TC Q # RETURN.
020060,000139:
020061,000140: # THIRD, FOR Q,R-AXES JET POLICIES:
020062,000141:
020063,000142: 6015 00006 WRITEQR EXTEND # Q,R-AXES JETS IN CHANNEL 5
020064,000143: 6016 01005 WRITE 5
020065,000144: 6017 00002 TC Q # RETURN.
End of include-file T6-RUPT_PROGRAMS.agc. Parent file is MAIN.agc