Source Code

These source-code files are part of a reconstructed copy of Skylark 048, the Block II Command Module (CM) Apollo Guidance Computer (AGC) software for the Skylab-2, Skylab-3, Skylab-4, and Apollo-Soyuz Test Project missions.

They have been created via disassembly of binary dumps of the original core rope memory modules actually flown on Skylab-2, part numbers 2010802-541, 2010802-551, 2010802-561, 2010802-571, 2010802-581, and 2010802-591. Access to these modules was provided by the New Mexico Museum of Space History, who we are much indebted to.

The source code for the Apollo 15, 16, and 17 software, Artemis 072, was used as a starting point. Heavy use was made of TRW 4900.5-244, Programmed Guidance Equations for Skylark Command Module Earth Orbital Program, dated 14 February 1972. This document contains pseudocode of essentially all of Skylark, using original program labels which have been copied for this source reconstruction.

Since only binary dumps (rather than listings) of Skylark are available as source material, all comments and labels are approximate. They have been taken from the Programmed Guidance Equations or other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing.

045007,000002:                                                                                                  ## Copyright:   Public domain.
045008,000003:                                                                                                  ## Filename:    DOWN-TELEMETRY_PROGRAM.agc
045009,000004:                                                                                                  ## Purpose:     A section of Skylark revision 048.
045010,000005:                                                                                                  ##              It is part of the source code for the Apollo Guidance Computer (AGC)
045011,000006:                                                                                                  ##              for Skylab-2, Skylab-3, Skylab-4, and ASTP. No original listings of
045012,000007:                                                                                                  ##              this software are available; instead, this file was created via
045013,000008:                                                                                                  ##              disassembly of dumps of the core rope modules actually flown on
045014,000009:                                                                                                  ##              Skylab-2. Access to these modules was provided by the New Mexico
045015,000010:                                                                                                  ##              Museum of Space History.
045016,000011:                                                                                                  ## Assembler:   yaYUL
045017,000012:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
045018,000013:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
045019,000014:                                                                                                  ## Mod history: 2023-09-04 MAS  Created from Artemis 072.
045020,000015: 
045021,000016:                                                                                                  #  PROGRAM NAME- DOWN TELEMETRY PROGRAM
045022,000017:                                                                                                  #  MOD NO.- 0      TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE
045023,000018:                                                                                                  #                  PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.
045024,000019:                                                                                                  #                  THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS. REFER TO DOWNLINK
045025,000020:                                                                                                  #                  LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGE WILL NOT AFFECT THE GROUND PROCESSING
045026,000021:                                                                                                  #                  OF DOWN TELEMETRY DATA.
045027,000022:                                                                                                  #  MOD BY-  KILROY, SMITH, DEWITT
045028,000023:                                                                                                  #  MOD BY - DENSMORE - JUNE 1969 - ELIMINATE ERASABLE DUMP COUNT
045029,000024:                                                                                                  #  DATE-    02 OCT 67
045030,000025:                                                                                                  #  AUTHORS- KILROY, SMITH, DEWITT, DEWOLF, FAGIN
045031,000026:                                                                                                  #  LOG SECTION- DOWN-TELEMETRY PROGRAM
045032,000027:                                                                                                  #  FUNCTIONAL DESCRIPTION- THIS ROUTINE IS INITIATED BY TELEMETRY END
045033,000028:                                                                                                  #           PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS
045034,000029:                                                                                                  #           AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS
045035,000030:                                                                                                  #           EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE
045036,000031:                                                                                                  #           AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT
045037,000032:                                                                                                  #           CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE
045038,000033:                                                                                                  #           LGC IN SERIAL FASHION.
045039,000034:                                                                                                  #           THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS
045040,000035:                                                                                                  #           OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN
045041,000036:                                                                                                  #           CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE
045042,000037:                                                                                                  #           OF SENDING 200 AGC WORDS EVERY 2 SECONDS.
045043,000038:                                                                                                  #  CALLING SEQUENCE- NONE
045044,000039:                                                                                                  #           PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A
045045,000040:                                                                                                  #           RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH
045046,000041:                                                                                                  #           IN EFFECT IS A RESUME.
045047,000042:                                                                                                  #  SUBROUTINES CALLED- NONE
045048,000043:                                                                                                  #  NORMAL EXIT MODE- TCF RESUME
045049,000044:                                                                                                  #  ALARM OR ABORT EXIT MODE- NONE
045050,000045:                                                                                                  #  RESTART PROTECTION:
045051,000046:                                                                                                  #           ON A FRESH START AND RESTART THE 'STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY
045052,000047:                                                                                                  #           DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E. CURRENT CONTENTS OF DNLSTADR). THIS HAS THE
045053,000048:                                                                                                  #           EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN
045054,000049:                                                                                                  #           THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT
045055,000050:                                                                                                  #           DOWNLIST.
045056,000051:                                                                                                  #           ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.
045057,000052:                                                                                                  #  DOWNLINK LIST SELECTION:
045058,000053:                                                                                                  #           THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:
045059,000054:                                                                                                  #           1. FRESH START
045060,000055:                                                                                                  #           2. V37EXXE  WHERE XX = THE MAJOR MODE BEING SELECTED.
045061,000056:                                                                                                  #           3. UPDATE PROGRAM (P27)
045062,000057:                                                                                                  #           4.   NON-V37 SELECTABLE TYPE PROGRAMS (E.G. AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62
045063,000058:                                                                                                  #                TRANSITION (COLOSSUS) ETC.).
045064,000059:                                                                                                  #  DOWNLINK LIST RULES AND LIMITATIONS:
045065,000060:                                                                                                  #           READ SECTION(S) WHICH FOLLOW 'DEBRIS' WRITEUP.
045066,000061:                                                                                                  #  OUTPUT-  EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E. 200 LGC
045067,000062:                                                                                                  #           COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.
045068,000063:                                                                                                  #  ERASABLE INITIALIZATION REQUIRED- NONE
045069,000064:                                                                                                  #           'DNTMGOTO' AND 'DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.
045070,000065:                                                                                                  #  DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM)-
045071,000066:                                                                                                  #           LDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ.
045072,000067: 
045073,000068:                                                                                                  #  DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE
045074,000069:                                                                                                  #  RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.
045075,000070: 
045076,000071:                                                                                                  #  NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:
045077,000072:                                                                                                  #  1. DOWNLISTS. - DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE
045078,000073:                                                                                                  #     DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER
045079,000074:                                                                                                  #     EXECUTION.
045080,000075:                                                                                                  #  2. EACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF
045081,000076:                                                                                                  #     SUBLISTS.
045082,000077:                                                                                                  #  3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER
045083,000078:                                                                                                  #     DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE
045084,000079:                                                                                                  #     CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.
045085,000080:                                                                                                  #  4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENOUS DATA WHICH MUST BE
045086,000081:                                                                                                  #     SAVED IN A BUFFER DURING ONE DOWNRUPT.
045087,000082:                                                                                                  #  5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END
045088,000083:                                                                                                  #     OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD
045089,000084:                                                                                                  #     IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.
045090,000085:                                                                                                  #  6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS
045091,000086:                                                                                                  #     CREATED FOR THE DOWNLIST PROGRAM.
045092,000087:                                                                                                  #     A. 1DNADR                  1-WORD DOWNLIST ADDRESS.
045093,000088:                                                                                                  #         SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT
045094,000089:                                                                                                  #         HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.
045095,000090:                                                                                                  #     B. 2DNADR - 6DNADR         N-WORD DOWNLIST ADDRESS, N = 2 - 6.
045096,000091:                                                                                                  #         SAME AS 1DNADR, BUT WITH THE 4 UNUSED BITS OF THE ECADR FORMAT
045097,000092:                                                                                                  #         FILLED IN WITH 0001-0101.  USED TO POINT TO A LIST OF N DOUBLE-
045098,000093:                                                                                                  #         PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.
045099,000094:                                                                                                  #     C. DNCHAN                  DOWNLIST CHANNEL ADDRESS.
045100,000095:                                                                                                  #         SAME AS 1DNADR, BUT WITH PREFIX BITS 0111.  USED TO POINT TO
045101,000096:                                                                                                  #         A PAIR OF CHANNELS FOR DOWN TELEMETRY.
045102,000097:                                                                                                  #     D. DNPTR                   DOWN TELEMETRY SUBLIST POINTER.
045103,000098:                                                                                                  #         SAME AS CAF BUT TAGGED AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST.
045104,000099:                                                                                                  #         CAUTION--- A DNPTR CANNOT BE USED IN A SUBLIST.
045105,000100:                                                                                                  #  7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E. CONTROL LIST) AND WHEN
045106,000101:                                                                                                  #     A '1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY).
045107,000102:                                                                                                  #  8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.
045108,000103: 
045109,000104:                                                                                                  #  DOWNLINK LIST RESTRICTIONS:
045110,000105:                                                                                                  #    (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE
045111,000106:                                                                                                  #    DONE)
045112,000107: 
045113,000108:                                                                                                  #  1. SNAPSHOT DOWNLIST:
045114,000109:                                                                                                  #    (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E. 1DNADR'S): 0, 400, 1000, 1400, 2000, 2400, 3000, 3400.
045115,000110:                                                                                                  #    (B) CAN CONTAIN ONLY 1DNADR'S
045116,000111: 
045117,000112:                                                                                                  #  2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A <DCA<SO DOWNLINK LISTS CANNOT CONTAIN THE
045118,000113:                                                                                                  #     EQUIVALENT OF THE FOLLOWING ECADRS (I.E. IDNADRS): 377, 777, 1377, 1777, 2377, 27777, 3377, 3777.
045119,000114: 
045120,000115:                                                                                                  #     (NOTE: THE TERM EQUIVALENT ' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)
045121,000116: 
045122,000117:                                                                                                  #  3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777
045123,000118:                                                                                                  #  4. THE '1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE
045124,000119:                                                                                                  #     CONTROL SECTION OF THE DOWNLIST.
045125,000120: 
045126,000121:                                                                                                  #  5. 'DNCHAN 0' CANNOT BE USED.
045127,000122: 
045128,000123:                                                                                                  #  6. 'DNPTR 0' CANNOT BE USED.
045129,000124: 
045130,000125:                                                                                                  #  7. DNPTR CANNOT APPEAR IN A SUBLIST.
045131,000126: 
045132,000127:                                                                                                  #  EBANK SETTINGS
045133,000128:                                                                                                  #        IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS
045134,000129:                                                                                                  #        'GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME
045135,000130:                                                                                                  #        SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.)
045136,000131:                                                                                                  #        THAT BITS 15-12 OF EBANK ARE ZERO.
045137,000132:                                                                                                  #  INITIALIZATION REQUIRED- TO INTERRUPT CURRENT LIST AND START A NEW ONE..
045138,000133:                                                                                                  #        1.      ADRES OF DOWNLINK LIST INTO DNLSTADR
045139,000134:                                                                                                  #        2.      NEGONE INTO SUBLIST
045140,000135:                                                                                                  #        3.      NEGONE INTO DNECADR
045141,000136: 
045142,000137:    4000                                           SETLOC   FFTAG12                               
045143,000138:    4000                                           BANK                                           
045144,000139: 
045145,000140:    4632     0337                                  EBANK=   DNTMBUFF                              
045146,000141: 
045147,000142:    4632                                           COUNT*   $$/DPROG                              
045148,000143:    4632           54016        DODOWNTM           TS       BANKRUPT                              
045149,000144:    4633           00006                           EXTEND                                         
045150,000145:    4634           22012                           QXCH     QRUPT                                 #  SAVE Q
045151,000146:    4635           34773                           CA       BIT7                                  #  SET WORD ORDER CODE TO 1. EXCEPTION- AT
045152,000147:    4636           00006                           EXTEND                                         
045153,000148:    4637           02013                           RAND     CHAN13                                
045154,000149:    4640           10000                           CCS      A                                     
045155,000150:    4641           00334                           TC       DNTMGOTO                              
045156,000151:    4642           04553                           TC       C13STALL                              
045157,000152:    4643           34773                           CA       BIT7                                  
045158,000153:    4644           00006                           EXTEND                                         #  THE BEGINNING OF EACH LIST THE WORD
045159,000154:    4645           05013                           WOR      CHAN13                                #  CODE WILL BE SET BACK TO 0.
045160,000155:    4646           00334                           TC       DNTMGOTO                              #  GOTO APPROPRIATE PHASE OF PROGRAM
045161,000156: 
045162,000157: 05,2000                                           SETLOC   DOWNTELM                              
045163,000158: 05,2000                                           BANK                                           
045164,000159: 
045165,000160: 05,3444                                           COUNT*   $$/DPROG                              
045166,000161: 05,3444           37702        DNPHASE1           CA       NEGONE                                #  INITIALIZE ALL CONTROL WORDS
045167,000162: 05,3445           54336                           TS       SUBLIST                               #  WORDS TO MINUS ONE
045168,000163: 05,3446           54335                           TS       DNECADR                               
045169,000164: 05,3447           33572                           CA       LDNPHAS2                              #  SET DNTMGOTO =O ALL SUBSEQUENT DOWNRUPTS
045170,000165: 05,3450           54334                           TS       DNTMGOTO                              #  GO TO DNPHASE2
045171,000166: 05,3451           13465                           TCF      NEWLIST                               
045172,000167: 05,3452           10335        DNPHASE2           CCS      DNECADR                               #  SENDING OF DATA IN PROGRESS
045173,000168: 05,3453           03605        DODNADR            TC       FETCH2WD                              #  YES - THEN FETCH THE NEXT 2 SP WORDS
045174,000169: 05,3454           77753        MINTIME2           -1DNADR  TIME2                                 #  NEGATIVE OF TIME2 1DNADR
045175,000170: 05,3455           13456                           TCF      +1                                    #  (ECADR OF 3776 + 74001 = 77777)
045176,000171: 
045177,000172: 05,3456           10336                           CCS      SUBLIST                               #  IS THE SUBLIST IN CONTROL
045178,000173: 05,3457           13620                           TCF      NEXTINSL                              #  YES
045179,000174: 05,3460           74001        DNADRDCR           OCT      74001                                 #  DNADR COUNT AND ECADR DECREMENTER
045180,000175: 
045181,000176: 05,3461           30333        CHKLIST            CA       CTLIST                                
045182,000177: 05,3462           00006                           EXTEND                                         
045183,000178: 05,3463           63465                           BZMF     NEWLIST                               #  IT WILL BE NEGATIVE AT END OF LIST
045184,000179: 05,3464           13472                           TCF      NEXTINCL                              
045185,000180: 05,3465           50332        NEWLIST            INDEX    DNLSTCOD                              
045186,000181: 05,3466           32300                           CA       DNTABLE                               #  INITIALIZE CTLIST WITH
045187,000182: 05,3467           54333                           TS       CTLIST                                #    STARTING ADDRESS OF NEW LIST
045188,000183: 05,3470           40332                           CS       DNLSTCOD                              
045189,000184: 05,3471           13707                           TCF      SENDID     +3                         
045190,000185: 05,3472           50333        NEXTINCL           INDEX    CTLIST                                
045191,000186: 05,3473           30000                           CA       0                                     
045192,000187: 05,3474           10000                           CCS      A                                     
045193,000188: 05,3475           24333                           INCR     CTLIST                                #  SET POINTER TO PICK UP NEXT CTLIST WORD
045194,000189: 05,3476           13502                           TCF      +4                                    #  ON NEXT ENTRY TO PROG. (A SHOULD NOT =0)
045195,000190: 05,3477           56333                           XCH      CTLIST                                #  SET CTLIST TO NEGATIVE AND PLACE(CODING)
045196,000191: 05,3500           40000                           COM                                            #  UNCOMPLEMENTED DNADR INTO A.    (FOR LA)
045197,000192: 05,3501           56333                           XCH      CTLIST                                #                                  (ST IN )
045198,000193: 05,3502           24000                 +4        INCR     A                                     #                                  (CTLIST)
045199,000194: 05,3503           54335                           TS       DNECADR                               #  SAVE DNADR
045200,000195: 05,3504           63454                           AD       MINTIME2                              #  TEST FOR TIME2 (NEG. OF ECADR)
045201,000196: 05,3505           10000                           CCS      A                                     
045202,000197: 05,3506           13512                           TCF      SETWO      +1                         #  DON'T SET WORD ORDER CODE
045203,000198: 05,3507           47777        MINB1314           OCT      47777                                 #  MINUS BIT 13 AND 14  (CAN'T GET HERE)
045204,000199: 05,3510           13512                           TCF      SETWO      +1                         #  DON'T SET WORD ORDER CODE
045205,000200: 05,3511           03534        SETWO              TC       WOZERO                                #  GO SET WORD ORDER CODE TO ZERO.
045206,000201: 05,3512           30335                 +1        CA       DNECADR                               #  RELOAD A WITH THE DNADR.
045207,000202: 05,3513           63507                 +2        AD       MINB1314                              #  IS THIS A REGULAR DNADR?
045208,000203: 05,3514           00006                           EXTEND                                         
045209,000204: 05,3515           63605                           BZMF     FETCH2WD                              #  YES. (A MUST NEVER BE ZERO)
045210,000205: 05,3516           67674                           AD       MINB12                                #  NO- IS IT A POINTER (DNPTR) OR A
045211,000206: 05,3517           00006                           EXTEND                                         #      CHANNEL(DNCHAN)
045212,000207: 05,3520           63543                           BZMF     DODNPTR                               #  IT'S A POINTER. (A MUST NEVER BE ZERO)
045213,000208: 
045214,000209: 05,3521           00006        DODNCHAN           TC       6                                     #  (EXECUTED AS EXTEND) IT S A CHANNEL
045215,000210: 05,3522           50335                           INDEX    DNECADR                               
045216,000211: 05,3523           44000                           INDEX    0          -4000                      #  (EXECUTED AS READ)
045217,000212: 05,3524           54001                           TS       L                                     
045218,000213: 05,3525           00006                           TC       6                                     #  (EXECUTED AS EXTEND)
045219,000214: 05,3526           50335                           INDEX    DNECADR                               
045220,000215: 05,3527           43777                           INDEX    0          -4001                      #  (EXECUTED AS READ)
045221,000216: 05,3530           54335                           TS       DNECADR                               #  SET DNECADR
045222,000217: 05,3531           37702                           CA       NEGONE                                #      TO MINUS
045223,000218: 05,3532           56335                           XCH      DNECADR                               #          WHILE PRESERVING A.
045224,000219: 05,3533           13633                           TCF      DNTMEXIT                              #  GO SEND CHANNELS
045225,000220: 
045226,000221: 05,3534           00006        WOZERO             EXTEND                                         
045227,000222: 05,3535           22070                           QXCH     RUPTREG1                              
045228,000223: 05,3536           04553                           TC       C13STALL                              
045229,000224: 05,3537           44773                           CS       BIT7                                  
045230,000225: 05,3540           00006                           EXTEND                                         
045231,000226: 05,3541           03013                           WAND     CHAN13                                #  SET WORD ORDER CODE TO ZERO
045232,000227: 05,3542           00070                           TC       RUPTREG1                              #  RETURN TO CALLER
045233,000228: 
045234,000229: 05,3543           50335        DODNPTR            INDEX    DNECADR                               #  DNECADR CONTAINS ADRES OF SUBLIST
045235,000230: 05,3544           00000                           0        0                                     #  CLEAR AND ADD LIST ENTRY INTO A.
045236,000231: 05,3545           10000                           CCS      A                                     #  IS THIS A SNAPSHOT SUBLIST
045237,000232: 05,3546           30335                           CA       DNECADR                               #  NO, IT IS A REGULAR SUBLIST.
045238,000233: 05,3547           13617                           TCF      DOSUBLST                              #  A MUST NOT BE ZERO.
045239,000234: 
045240,000235: 05,3550           56335                           XCH      DNECADR                               #  YES, IT IS A SNAPSHOT SUBLIST.
045241,000236: 05,3551           54336                           TS       SUBLIST                               #  C(DNECADR) INTO SUBLIST
045242,000237: 05,3552           35003                           CAF      ZERO                                  #       A     INTO   A
045243,000238: 05,3553           56335                           XCH      TMINDEX                               #  (NOTE.. TMINDEX = DNECADR)
045244,000239: 
045245,000240:                                                                                                  #  THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.
045246,000241:                                                                                                  #  THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.
045247,000242:                                                                                                  #  THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED
045248,000243:                                                                                                  #  TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.
045249,000244:                                                                                                  #  THESE RULES ARE......
045250,000245:                                                                                                  #        1.      ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST
045251,000246:                                                                                                  #        2.      THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.
045252,000247: 
045253,000248: 05,3554           54003        SNAPLOOP           TS       EBANK                                 #  SET EBANK
045254,000249: 05,3555           74350                           MASK     LOW8                                  #  ISOLATE RELATIVE ADDRESS
045255,000250: 05,3556           00006                           EXTEND                                         
045256,000251: 05,3557           50000                           INDEX    A                                     
045257,000252: 05,3560  E3,1401                                  EBANK=   1401                                  
045258,000253: 05,3560           31402                           DCA      1401                                  #  PICK UP 2 SNAPSHOT WORDS.
045259,000254: 05,3561     0337                                  EBANK=   DNTMBUFF                              
045260,000255: 05,3561           50335                           INDEX    TMINDEX                               
045261,000256: 05,3562           52340                           DXCH     DNTMBUFF                              #  STORE 2 SNAPSHOT WORDS IN BUFFER
045262,000257: 05,3563           24335                           INCR     TMINDEX                               #  SET BUFFER INDEX FOR NEXT 2 WORDS.
045263,000258: 05,3564           24335                           INCR     TMINDEX                               
045264,000259: 05,3565           24336        SNAPAGN            INCR     SUBLIST                               #  SET POINTER TO NEXT 2 WORDS OF SNAPSHOT
045265,000260: 05,3566           50336                           INDEX    SUBLIST                               
045266,000261: 05,3567           00000                           0        0                                     #  = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
045267,000262: 05,3570           10000                           CCS      A                                     #  TEST FOR LAST TWO WORDS OF SNAPSHOT.
045268,000263: 05,3571           13554                           TCF      SNAPLOOP                              #  NOT LAST TWO.
045269,000264: 05,3572           03452        LDNPHAS2           GENADR   DNPHASE2                              
045270,000265: 05,3573           54336                           TS       SUBLIST                               #  YES, LAST.  SAVE A.
045271,000266: 05,3574           37702                           CA       NEGONE                                #  SET DNECADR AND
045272,000267: 05,3575           54335                           TS       DNECADR                               #      SUBLIST POINTERS
045273,000268: 05,3576           56336                           XCH      SUBLIST                               #          TO NEGATIVE VALUES.
045274,000269: 05,3577           54003                           TS       EBANK                                 
045275,000270: 05,3600           74350                           MASK     LOW8                                  
045276,000271: 05,3601           00006                           EXTEND                                         
045277,000272: 05,3602           50000                           INDEX    A                                     
045278,000273: 05,3603  E3,1401                                  EBANK=   1401                                  
045279,000274: 05,3603           31402                           DCA      1401                                  #  PICK UP FIRST 2 WORDS OF SNAPSHOT.
045280,000275: 05,3604     0337                                  EBANK=   DNTMBUFF                              
045281,000276: 05,3604           13633        SNAPEND            TCF      DNTMEXIT                              #     NOW GO SEND THEM.
045282,000277: 
045283,000278: 05,3605           30335        FETCH2WD           CA       DNECADR                               
045284,000279: 05,3606           54003                           TS       EBANK                                 #  SET EBANK
045285,000280: 05,3607           74350                           MASK     LOW8                                  #  ISOLATE RELATIVE ADDRESS
045286,000281: 05,3610           54001                           TS       L                                     
045287,000282: 05,3611           33460                           CA       DNADRDCR                              #  DECREMENT COUNT AND ECADR
045288,000283: 05,3612           26335                           ADS      DNECADR                               
045289,000284: 05,3613           00006                           EXTEND                                         
045290,000285: 05,3614           50001                           INDEX    L                                     
045291,000286: 05,3615  E3,1400                                  EBANK=   1400                                  
045292,000287: 05,3615           31401                           DCA      1400                                  #  PICK UP 2 DATA WORDS
045293,000288: 05,3616     0337                                  EBANK=   DNTMBUFF                              
045294,000289: 05,3616           13633                           TCF      DNTMEXIT                              #     NOW GO SEND THEM.
045295,000290: 
045296,000291: 05,3617           54336        DOSUBLST           TS       SUBLIST                               #  SET SUBLIST POINTER
045297,000292: 05,3620           50336        NEXTINSL           INDEX    SUBLIST                               
045298,000293: 05,3621           00000                           0        0                                     #  = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
045299,000294: 05,3622           10000                           CCS      A                                     #  IS IT THE END OF THE SUBLIST
045300,000295: 05,3623           24336                           INCR     SUBLIST                               #  NO-
045301,000296: 05,3624           13630                           TCF      +4                                    
045302,000297: 05,3625           54336                           TS       SUBLIST                               #  SAVE A.
045303,000298: 05,3626           37702                           CA       NEGONE                                #  SET SUBLIST TO MINUS
045304,000299: 05,3627           56336                           XCH      SUBLIST                               #  RETRIEVE A.
045305,000300: 05,3630           24000                 +4        INCR     A                                     
045306,000301: 05,3631           54335                           TS       DNECADR                               #  SAVE DNADR
045307,000302: 05,3632           13513                           TCF      SETWO      +2                         #  GO USE COMMON CODING (PROBLEMS WOULD
045308,000303:                                                                                                  #  OCCUR IF THE PROGRAM ENCOUNTERED A
045309,000304:                                                                                                  #  DNPTR NOW)
045310,000305: 
045311,000306: 05,3633           00006        DNTMEXIT           EXTEND                                         #  DOWN-TELEMETRY EXIT
045312,000307: 05,3634           01034                           WRITE    DNTM1                                 #  TO SEND A + L TO CHANNELS 34 + 35
045313,000308: 05,3635           30001                           CA       L                                     #  RESPECTIVELY
045314,000309: 05,3636           00006        TMEXITL            EXTEND                                         
045315,000310: 05,3637           01035                           WRITE    DNTM2                                 
045316,000311: 05,3640           15336        TMRESUME           TCF      RESUME                                #  EXIT TELEMETRY PROGRAM VIA RESUME.
045317,000312: 05,3641     7674               MINB12             EQUALS   -1/8                                  
045318,000313: 
045319,000314:                                                                                                  #  SUBROUTINE NAME- DNDUMP
045320,000315:                                                                                                  #  FUNCTIONAL DESCRIPTION - TO SEND (DUMP) ALL 8 BANKS OF ERASABLE STORAGE TWICE.  BANKS ARE SENT ONE AT A TIME
045321,000316:                                                                                                  #        EACH BANK IS PRECEEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH
045322,000317:                                                                                                  #        EBANK. EBANKS ARE DUMPED IN ORDER (I.E. EBANK 0 FIRST, THEN EBANK1 ETC.)
045323,000318:                                                                                                  #  CALLING SEQUENCE- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.
045324,000319:                                                                                                  #        AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP
045325,000320:                                                                                                  #        WILL BEGIN.
045326,000321:                                                                                                  #        ONCE INITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY
045327,000322:                                                                                                  #        BY THE FOLLOWING:
045328,000323:                                                                                                  #        1. A FRESH START
045329,000324:                                                                                                  #        2. COMPLETION OF BOTH COMPLETE DUMPS
045330,000325:                                                                                                  #        3. AND INVOLUNTARILY BY A RESTART.
045331,000326:                                                                                                  #  NORMAL EXIT MODE- TCF DNPHASE1
045332,000327:                                                                                                  #  ALARM OR ABORT MODE- NONE
045333,000328:                                                                                                  #  *SUBROUTINES CALLED- NONE.
045334,000329:                                                                                                  #  ERASABLE INITIALIZATION REQUIRED-
045335,000330:                                                                                                  #        NONE
045336,000331:                                                                                                  #  DEBRIS- DUMPLOC, DUMPSW, DNTMGOTO, EBANK AND CENTRAL REGISTERS
045337,000332:                                                                                                  #  TIMING-    TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)* (WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC
045338,000333:                                                                                                  #             TIME (IN SECS) =  (   4    )*(    8    )* (    256     +     4   )  /     100
045339,000334:                                                                                                  #        THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS
045340,000335: 
045341,000336:                                                                                                  #  STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM-
045342,000337:                                                                                                  #        (REMINDER- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)
045343,000338:                                                                                                  #        DOWNLIST                                W
045344,000339:                                                                                                  #          WORD  TAKEN FROM CONTENTS OF  EXAMPLE O       COMMENTS
045345,000340: 
045346,000341:                                                                                                  #            1   ERASID                   0177X  0       DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)
045347,000342:                                                                                                  #            2   LOWIDCOD                 77340  1       DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS)
045348,000343:                                                                                                  #            3   DUMPLOC                  13400  1       (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD
045349,000344:                                                                                                  #            4   TIME1                    14120  1       TIME IN CENTISECONDS
045350,000345:                                                                                                  #            5   FIRST WORD OF EBANK X    03400  1       IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)
045351,000346:                                                                                                  #            6   2ND   WORD OF EBANK X    00142  1       IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)
045352,000347:                                                                                                  #            7   3RD   WORD OF EBANK X    00142  1       IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)
045353,000348:                                                                                                  #            .                                   1
045354,000349:                                                                                                  #            .                                   1
045355,000350:                                                                                                  #            .                                   1
045356,000351:                                                                                                  #           260D 256TH WORD OF EBANK X    03777  1       IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)
045357,000352: 
045358,000353:                                                                                                  #  NOTE- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.
045359,000354:                                                                                                  #        THE BIT STRUCTURE OF DUMPLOC IS FOLLOWS---
045360,000355:                                                                                                  #                                               X = NOT USED
045361,000356:                                                                                                  #                X ABC EEE RRRRRRRR           ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2 OR 3 WHICH MEANS THAT
045362,000357:                                                                                                  #                                                   COMPLETE ERASABLE DUMP NUMBER 1,2,3 OR 4 RESPECTIVELY IS IN PROGRESS)
045363,000358:                                                                                                  #                                             EEE = EBANK BITS
045364,000359:                                                                                                  #                                        RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK.
045365,000360: 
045366,000361: 05,3641           35003        DNDUMPI            CA       ZERO                                  #  INITIALIZE DOWNLINK
045367,000362: 05,3642           54335                           TS       DUMPLOC                               #  ERASABLE DUMP
045368,000363: 05,3643           03704                 +2        TC       SENDID                                #  GO SEND ID AND SYNCH BITS
045369,000364: 05,3644           33653                           CA       LDNDUMP1                              #  SET DNTMGOTO
045370,000365: 05,3645           54334                           TS       DNTMGOTO                              #  TO LOCATION FOR NEXT PASS
045371,000366: 05,3646           30025                           CA       TIME1                                 #  PLACE TIME1
045372,000367: 05,3647           56001                           XCH      L                                     #  INTO L
045373,000368: 05,3650           30335                           CA       DUMPLOC                               #  AND ECADR OF THIS EBANK INTO A
045374,000369: 05,3651           13633                           TCF      DNTMEXIT                              #  SEND DUMPLOC AND TIME1
045375,000370: 
045376,000371: 05,3652           03654        LDNDUMP            ADRES    DNDUMP                                
045377,000372: 05,3653           03666        LDNDUMP1           ADRES    DNDUMP1                               
045378,000373: 
045379,000374: 05,3654           35000        DNDUMP             CA       TWO                                   #  INCREMENT ECADR IN DUMPLOC
045380,000375: 05,3655           26335                           ADS      DUMPLOC                               #  TO NEXT DP WORD TO BE
045381,000376: 05,3656           74350                           MASK     LOW8                                  #  DUMPED AND SAVE IT.
045382,000377: 05,3657           10000                           CCS      A                                     #  IS THIS THE BEGINNING OF A NEW EBANK
045383,000378: 05,3660           13670                           TCF      DNDUMP2                               #  NO- THEN CONTINUE DUMPING
045384,000379: 05,3661           30335                           CA       DUMPLOC                               #  YES- IS THIS THE END OF THE
045385,000380: 05,3662           74765                           MASK     BIT13                                 #  SECOND COMPLETE ERASABLE DUMP?
045386,000381: 05,3663           00006                           EXTEND                                         
045387,000382: 05,3664           13643                           BZF      DNDUMPI    +2                         #  NO - GO BACK AND INITIALIZE NEXT BANK
045388,000383: 05,3665           13444                           TCF      DNPHASE1                              #  YES - SEND DOWNLIST AGAIN
045389,000384: 05,3666           33652        DNDUMP1            CA       LDNDUMP                               #  SET DNTMGOTO
045390,000385: 05,3667           54334                           TS       DNTMGOTO                              #  FOR WORDS 3 TO 256D OF CURRENT EBANK
045391,000386: 
045392,000387: 05,3670           30335        DNDUMP2            CA       DUMPLOC                               
045393,000388: 05,3671           54003                           TS       EBANK                                 #  SET EBANK
045394,000389: 05,3672           74350                           MASK     LOW8                                  #  ISOLATE RELATIVE ADDRESS.
045395,000390: 05,3673           54002                           TS       Q                                     #  (NOTE: MASK INSTRUCTION IS USED TO PICK
045396,000391: 05,3674           35002                           CA       NEG0                                  #  UP ERASABLE REGISTERS SO THAT EDITING
045397,000392: 05,3675           54001                           TS       L                                     #  REGISTERS 20-23 WILL NOT BE ALTERED.)
045398,000393: 05,3676           50002                           INDEX    Q                                     
045399,000394: 05,3677  E3,1400                                  EBANK=   1400                                  #  PICK UP LOW ORDER REGISTER OF PAIR
045400,000395: 05,3677           71401                           MASK     1401                                  #  OF ERASABLE REGISTERS.
045401,000396: 05,3700           56001                           XCH      L                                     
045402,000397: 05,3701           50002                           INDEX    Q                                     #  PICK UP HIGH ORDER REGISTER OF PAIR
045403,000398: 05,3702           71400                           MASK     1400                                  #  OF ERASABLE REGISTERS.
045404,000399: 05,3703     0337                                  EBANK=   DNTMBUFF                              
045405,000400: 05,3703           13633                           TCF      DNTMEXIT                              #  GO SEND THEM
045406,000401: 
045407,000402: 05,3704           00006        SENDID             EXTEND                                         #  **ENTRANCE USED BY ERASABLE DUMP PROG.**
045408,000403: 05,3705           22334                           QXCH     DNTMGOTO                              #  SET DNTMGOTO SO NEXT TIME PROG WILL GO
045409,000404: 05,3706           35053                           CAF      ERASID                                #  TO LOCATION FOLLOWING :TC SENDID:
045410,000405: 
045411,000406: 05,3707           54061                 +3        TS       ITEMP1                                #  ** ENTRANCE USED BY REGULAR DOWNLINK
045412,000407:                                                                                                  #                              PROGRAM  **
045413,000408: 05,3710           03534                           TC       WOZERO                                #  GO SET WORD ORDER CODE TO ZERO
045414,000409: 05,3711           32000                           CAF      LOWIDCOD                              #  PLACE SPECIAL ID CODE INTO L
045415,000410: 05,3712           56001                           XCH      L                                     #  AND ID BACK INTO A
045416,000411: 05,3713           30061                           CA       ITEMP1                                
045417,000412: 05,3714           13633                           TCF      DNTMEXIT                              #  SEND DOWNLIST ID CODE(S).
045418,000413: 
045419,000414: 

End of include-file DOWN-TELEMETRY_PROGRAM.agc.  Parent file is MAIN.agc