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 GROUP
Note 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