Source Code

These source-code files were transcribed from scans made from Don Eyles's personal copy of BURST120 (SUNBURST 120). They were scanned at archive.org's Boston facility, and the scanning was sponsored by Mike Stewart. The code was transcribed from these scans by a team of volunteers who are referenced in the program comments. Comments from the original source code are in ALL-CAPS, whereas comments added later in transcription are in Mixed-Case. In some cases, where similar code blocks exist in previously-transcribed AGC programs (primarily Luminary 99, from Apollo 11) those code blocks were used as a starting point and then corrected to agree with the BURST120 scans. The full scans are available at the Virtual AGC project's collection at archive.org, while more-convenient reduced-size (but reduced-quality) images are available at the main Virtual AGC website. Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository. Notations on the program listing read, in part:

	YUL SYSTEM FOR AGC: REVISION 0 OF PROGRAM BURST120 
	BY NASA 2021106-031 DEC 7, 1967

	THIS LISTING IS A COPY OF A VERSION OF THE PROGRAM INTENDED 
	FOR USE IN THE ON-BOARD PRIMARY GUIDANCE COMPUTER IN THE 
	UNMANNED FLIGHT OF APOLLO LUNAR MODULE 1 --- THE AS206 MISSION.
Note that the date is the date of the printout, not the date of the program revision.

020054,000002:                                                                                                  ## Copyright:    Public domain.
020055,000003:                                                                                                  ## Filename:     T6-RUPT_PROGRAMS.agc
020056,000004:                                                                                                  ## Purpose:      A module for revision 0 of BURST120 (Sunburst). It
020057,000005:                                                                                                  ##               is part of the source code for the Lunar Module's
020058,000006:                                                                                                  ##               (LM) Apollo Guidance Computer (AGC) for Apollo 5.
020059,000007:                                                                                                  ## Assembler:    yaYUL
020060,000008:                                                                                                  ## Contact:      Ron Burkey <info@sandroid.org>.
020061,000009:                                                                                                  ## Website:      www.ibiblio.org/apollo/index.html
020062,000010:                                                                                                  ## Mod history:  2016-09-30 RSB  Created draft version.
020063,000011:                                                                                                  ##               2016-10-21 HG   Transcribed
020064,000012:                                                                                                  ##               2016-12-05 RSB  Comment-proofing with octopus/ProoferComments
020065,000013:                                                                                                  ##                               completed, changes made.
020066,000014: 

Page 483

020068,000016:                                                                                                  #  PROGRAM NAMES: (1) DOT6RUPT     MOD. NO. 4  DATE: FEBRUARY 9. 1967
020069,000017: 
020070,000018:                                                                                                  #                 (2) T6JOBCHK
020071,000019: 
020072,000020:                                                                                                  #  MODIFICATION BY: JONATHAN D. ADDELSTON (ADAMS ASSOCIATES)
020073,000021: 
020074,000022:                                                                                                  #  THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.
020075,000023:                                                                                                  #  SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN
020076,000024:                                                                                                  #  ESTABLISHED AND MUST NOT BE TAMPERED WITH:
020077,000025:                                                                                                  #           1. NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.
020078,000026:                                                                                                  #           2. NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.
020079,000027:                                                                                                  #           3. ONLY POSITIVE NUMBERS ARE ENTERED INTO TIME6, SO IT COUNTS DOWN TO -0 (MINUS ZERO) TO INTERRUPT.
020080,000028:                                                                                                  #           4. IF -0 IS NOT IN TIME6 WHEN THE INTERRUPT OCCURS, THEN THE INTERRUPT HAS ALREADY BEEN PROCESSED.
020081,000029:                                                                                                  #           5. ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK
020082,000030:                                                                                                  #              EVERY 6 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.
020083,000031: 
020084,000032:                                                                                                  #  DOT6RUPT CALLING SEQUENCE:
020085,000033: 
020086,000034:                                                                                                  #  REF   1                 4004  52 011 0           DXCH   ARUPT           T6RUPT
020087,000035:                                                                                                  #                          4005  0 0006 1           EXTEND
020088,000036:                                                                                                  #  REF   1                 4006  3 5045 0           DCA    T6ADR
020089,000037:                                                                                                  #                          4007  52 006 0           DTCB
020090,000038: 
020091,000039:                                                                                                  #  T6JOBCHK CALLING SEQUENCE:
020092,000040: 
020093,000041:                                                                                                  #  REF   0              23,1000  0 4200 1           TC     T6JOBCHK
020094,000042: 
020095,000043:                                                                                                  #  SUBROUTINES CALLED:   DOT6RUPT CALLS T6JOBCHK.
020096,000044: 
020097,000045:                                                                                                  #  NORMAL EXIT MODES:    DOT6RUPT TRANSFERS CONTROL TO RESUME.
020098,000046:                                                                                                  #                        T6JOBCHK TRANSFERS CONTROL TO CALLER AT LOCATION AFTER CALL.
020099,000047: 
020100,000048:                                                                                                  #  ALARM/ABORT MODES:    NONE.
020101,000049: 
020102,000050:                                                                                                  #  INPUT: TIME6,T6NEXT REGS,T6NEXTJT REGS.
020103,000051: 
020104,000052:                                                                                                  #  OUTPUT: (SAME AS INPUT.)
020105,000053: 
020106,000054:                                                                                                  #  DEBRIS: DOT6RUPT: NONE.  T6JOBCHK: A,L
020107,000055:                                                                                                  #  *** NOTE: AS OF MOD. NO. 2, T6NEXT AND T6NEXTJT LISTS ARE IN UNSWITCHED ERASABLE. ***
020108,000056: 

Page 484

020110,000058: 
020111,000059:    5050                                           BLOCK    02                                    
020112,000060:    5050     1002                                  EBANK=   T6NEXT                                
020113,000061: 
020114,000062:    5050     1002                                  EBANK=   T6NEXT                                
020115,000063:    5050           02000 34062  T6ADR              2CADR    DOT6RUPT                              #  2CADR OF INTERRUPT PROCESSOR.
020116,000064: 
020117,000065: 16,2000                                           BANK     16                                    
020118,000066: 16,2000     1002                                  EBANK=   T6NEXT                                
020119,000067: 
020120,000068: 16,2000           22016        DOT6RUPT           LXCH     BANKRUPT                              #  (INTERRUPT LEAD IN CONTINUED)
020121,000069: 16,2001           00006                           EXTEND                                         
020122,000070: 16,2002           22012                           QXCH     QRUPT                                 
020123,000071: 
020124,000072: 16,2003           06013                           TC       T6JOBCHK                              #  CALL T6JOBCHK
020125,000073: 
020126,000074: 16,2004           15733                           TCF      RESUME                                #  END TIME6 RUPT
020127,000075: 
020128,000076: 
020129,000077: 
020130,000078:    6013                                           BLOCK    03                                    
020131,000079:    6013     1002                                  EBANK=   T6NEXT                                
020132,000080: 
020133,000081:    6013           10031        T6JOBCHK           CCS      TIME6                                 #  CHECK TIME6 FOR WAITING T6RUPT:
020134,000082:    6014           00002                           TC       Q                                     #  NONE: CLOCK COUTING DOWN.
020135,000083:    6015           00002                           TC       Q                                     #  NONE: T6RUPT ALREADY PROCESSED.
020136,000084:    6016           00002                           TC       Q                                     #  NONE: INVALID VALUE. (POSSIBLE ABORT.)
020137,000085: 
020138,000086:                                                                                                  #  CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E. WHEN A T6RUPT MUST BE PROCESSED).
020139,000087: 
020140,000088:    6017           37743        T6JOB              CAF      POSMAX                                #  DISABLE CLOCK: NEEDED SINCE RUPT OCCURS
020141,000089:    6020           00006                           EXTEND                                         #  1 DINC AFTER T6 = 77777.  FOR 625 MUSECS
020142,000090:    6021           03013                           WAND     13                                    #  MUST NOT HAVE T6 = +0 WITH ENABLE SET.
020143,000091: 
020144,000092:    6022           37767                           CAF      ZERO                                  #  UPDATE ORDERED LIST OF T6NEXT REGISTERS
020145,000093:    6023           57003                           XCH      T6NEXT     +1                         #  1) PUSH FIRST ENTRY INTO TIME6.
020146,000094:    6024           57002                           XCH      T6NEXT                                #  2) PUSH SECOND ENTRY INTO FIRST PLACE.
020147,000095:    6025           54031                           TS       TIME6                                 #  3) ZERO LAST (SECOND) DT IN LIST.
020148,000096: 
020149,000097:    6026           10031                           CCS      TIME6                                 #  TIME6 EITHER POSITIVE OR PLUS ZERO:
020150,000098:    6027           16032                           TCF      T6NZERO                               #  (BRANCH IF TIME6 STILL ACTIVE.)
020151,000099: 
020152,000100:    6030           31004                           CAE      T6NEXTJT                              #  THESE ARE TRANSLATION JETS (NO DT),
020153,000101:    6031           16041                           TCF      WRITEJTS                              #  DETERMINE CHANNEL AND WRITE.
020154,000102: 
020155,000103:    6032           37745        T6NZERO            CAF      BIT15                                 #  ENABLE TIME6 COUNTER TO START TIMING
020156,000104:    6033           00006                           EXTEND                                         #  THIS JET FIRING (PROPER JETS NOT YET
020157,000105:    6034           05013                           WOR      13                                    #  WRITTEN INTO CHANNEL, BUT WILL BE SOON).
020158,000106: 
020159,000107:    6035           37767                           CAF      ZERO                                  #  UPDATE ORDERED LIST OF JET POLICIES:
020160,000108:    6036           57006                           XCH      T6NEXTJT   +2                         #  1) LEAVE JETS TO GO ON NOW IN A.
020161,000109: 

Page 485

020163,000111:    6037           57005                           XCH      T6NEXTJT   +1                         #  2) CYCLE LIST UP TOWARD TOP.
020164,000112:    6040           57004                           XCH      T6NEXTJT                              #  3) ZERO LAST ENTRY IN LIST.
020165,000113: 

Page 486

020167,000115:                                                                                                  #  THE FOLLOWING JET-ON LOGIC MAY BE USED AS A SUBROUTINE (3 ENTRY POINTS):
020168,000116: 
020169,000117:                                                                                                  #  FIRST, LET SGN(A) DETERMINE THE JET CHANNEL:
020170,000118:                                                                                                  #           POSITIVE IMPLIES P-AXIS POLICY.
020171,000119:                                                                                                  #           NEGATIVE IMPLIES Q,R-AXES POLICY.
020172,000120: 
020173,000121:    6041           00006        WRITEJTS           EXTEND                                         #  TEST FOR CHANNEL TO WRITE POLICY IN:
020174,000122:    6042           66046                           BZMF     WRITEQR                               #  NEG: Q,R-AXES JETS IN CHANNEL 5
020175,000123: 
020176,000124:                                                                                                  #  SECOND, FOR P-AXIS JET POLICIES:
020177,000125: 
020178,000126:    6043           00006        WRITEP             EXTEND                                         #  POS: P-AXIS   JETS IN CHANNEL 6
020179,000127:    6044           01006                           WRITE    6                                     
020180,000128:    6045           00002                           TC       Q                                     #  RETURN.
020181,000129: 
020182,000130:                                                                                                  #  THIRD, FOR Q,R-AXES JET POLICIES:
020183,000131: 
020184,000132:    6046           00006        WRITEQR            EXTEND                                         #  Q,R-AXES JETS IN CHANNEL 5
020185,000133:    6047           01005                           WRITE    5                                     
020186,000134:    6050           00002                           TC       Q                                     #  RETURN.

End of include-file T6-RUPT_PROGRAMS.agc.  Parent file is MAIN.agc