Source Code
These source-code files are part of a reconstructed copy of Luminary 69/2,
the flown, final release of the Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction is based on the source code of Luminary 69 — i.e., the initial, unflown version, "revision 0" — of which a contemporary listing was available. The code was then updated by incorporating the differences between Luminary 69 and Luminary 69/2, known from other contemporary documentation. The only such difference is the implementation in Luminary 69/2 of the "R-2 Lunar Potential Model", the source code for which was taken from program Luminary 99/1 (Apollo 11 LM), of which a contemporary listing was also available. Finally, the now-reconstructed Luminary 69/2 was then validated by assembling it to executable form and verifying that its memory banks had the correct checksums, known from still other contemporary documentation. Note that page numbers in the reconstructed code match those in the original Luminary 69 program listing, or in the ORBITAL INTEGRATION log section, in Luminary 99/1. Page numbers would certainly differ somewhat in a contemporary Luminary 69/2 listing. Moreover, annotations that were not present in the contemporary source code have been added to the reconstructed code to justify each change in Luminary 69/2 relative to Luminary 69. Here's a guide to the Apollo documentation referenced in those annotations:
|
043233,000002: ## Copyright: Public domain.
043234,000003: ## Filename: DOWN-TELEMETRY_PROGRAM.agc
043235,000004: ## Purpose: A section of LUM69 revision 2.
043236,000005: ## It is part of the reconstructed source code for the flown
043237,000006: ## version of the flight software for the Lunar Module's (LM)
043238,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
043239,000008: ## been recreated from a copy of Luminary revsion 069, using
043240,000009: ## changes present in Luminary 099 which were described in
043241,000010: ## Luminary memos 75 and 78. The code has been adapted such
043242,000011: ## that the resulting bugger words exactly match those specified
043243,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
043244,000013: ## relatively high confidence that the reconstruction is correct.
043245,000014: ## Reference: pp. 983-992
043246,000015: ## Assembler: yaYUL
043247,000016: ## Contact: Ron Burkey <info@sandroid.org>.
043248,000017: ## Website: www.ibiblio.org/apollo/index.html
043249,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
043250,000019: ## 2021-05-30 ABS Removed WO1 symbol not present in scans.
043251,000020:
Page 983 |
043253,000022: # PROGRAM NAME - DOWN TELEMETRY PROGRAM
043254,000023: # MOD NO. - 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE
043255,000024: # PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.
043256,000025: # THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS.REFER TO DOWNLINK
043257,000026: # LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGE WILL NOT AFFECT THE GROUND PROCESSING
043258,000027: # OF DOWN TELEMETRY DATA.
043259,000028: # MOD BY - KILROY, SMITH, DEWITT
043260,000029: # DATE - 02OCT67
043261,000030: # AUTHORS - KILROY, SMITH, DEWITT, DEWOLF, FAGIN
043262,000031: # LOG SECTION - DOWN-TELEMETRY PROGRAM
043263,000032:
043264,000033: # FUNCTIONAL DESCRIPTION - THIS ROUTINE IS INITIATED BY TELEMETRY END
043265,000034: # PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS
043266,000035: # AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS
043267,000036: # EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE
043268,000037: # AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT
043269,000038: # CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE
043270,000039: # LGC IN SERIAL FASHION.
043271,000040: # THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS
043272,000041: # OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN
043273,000042: # CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE
043274,000043: # OF SENDING 200 AGC WORDS EVERY 2 SECONDS.
043275,000044: # CALLING SEQUENCE - NONE
043276,000045: # PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A
043277,000046: # RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH
043278,000047: # IN EFFECT IS A RESUME.
043279,000048: # SUBROUTINES CALLED - NONE
043280,000049: # NORMAL EXIT MODE - TCF RESUME
043281,000050: # ALARM OR ABORT EXIT MODE - NONE
043282,000051: # RESTART PROTECTION:
043283,000052: # ON A FRESH START AND RESTART THE 'STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY
043284,000053: # DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E. CURRENT CONTENTS OF DNLSTADR). THIS HAS THE
043285,000054: # EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN
043286,000055: # THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT
043287,000056: # DOWNLIST.
043288,000057: # ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.
043289,000058: # DOWNLINK LIST SELECTION:
043290,000059: # THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:
043291,000060: # 1. FRESH START
043292,000061: # 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED.
043293,000062: # 3. UPDATE PROGRAM (P27)
043294,000063: # 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G. AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62
043295,000064: # TRANSITION (COLOSSUS) ETC.).
043296,000065: # DOWNLINK LIST RULES AND LIMITATIONS:
043297,000066: # READ SECTION(S) WHICH FOLLOW 'DEBRIS' WRITEUP.
043298,000067: # OUTPUT - EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E. 200 LGC
043299,000068: # COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.
043300,000069: # ERASABLE INITIALIZATION REQUIRED - NONE
043301,000070: # 'DNTMGOTO' AND 'DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.
043302,000071: # DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) -
043303,000072: # LDATALST,DNTMBUFF TO DNTMBUFF +21D,TMINDEX,DNQ.
043304,000073:
Page 984
This page is empty |
043307,000076:
Page 985 |
043309,000078: # DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE
043310,000079: # RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.
043311,000080:
043312,000081: # NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:
043313,000082: # 1. DOWNLISTS. - DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE
043314,000083: # DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER
043315,000084: # EXECUTION.
043316,000085: # 2. EACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF
043317,000086: # SUBLISTS.
043318,000087: # 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER
043319,000088: # DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE
043320,000089: # CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.
043321,000090: # 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENOUS DATA WHICH MUST BE
043322,000091: # SAVED IN A BUFFER DURING ONE DOWNRUPT.
043323,000092: # 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END
043324,000093: # OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD
043325,000094: # IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.
043326,000095: # 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS
043327,000096: # CREATED FOR THE DOWNLIST PROGRAM.
043328,000097: # A. 1DNADR 1-WORD DOWNLIST ADDRESS.
043329,000098: # SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT
043330,000099: # HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.
043331,000100: # B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6.
043332,000101: # SAME AS 1DNADR, BUT WITH THE 4 UNUSED BITS OF THE ECADR FORMAT
043333,000102: # FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE-
043334,000103: # PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.
043335,000104: # C. DNCHAN DOWNLIST CHANNEL ADDRESS.
043336,000105: # SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO
043337,000106: # A PAIR OF CHANNELS FOR DOWN TELEMETRY.
043338,000107: # D. DNPTR DOWN TELEMETRY SUBLIST POINTER.
043339,000108: # SAME AS CAF BUT TAGGED AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST.
043340,000109: # CAUTION--- A DNPTR CANNOT BE USED IN A SUBLIST.
043341,000110: # 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E. CONTROL LIST) AND WHEN
043342,000111: # A '1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY).
043343,000112: # 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.
043344,000113:
043345,000114: # DOWNLINK LIST RESTRICTIONS:
043346,000115: # (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE
043347,000116: # DONE)
043348,000117: # 1. SNAPSHOT DOWNLIST:
043349,000118: # (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E. 1DNADR'S): 0, 400, 1000, 1400, 2000, 2400, 3000, 3400.
043350,000119: # (B) CAN CONTAIN ONLY 1DNADR'S
043351,000120: # 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A <DCA<SO DOWNLINK LISTS CANNOT CONTAIN THE
043352,000121: # EQUIVALENT OF THE FOLLOWING ECADRS (I.E. IDNADRS): 377, 777, 1377, 1777, 2377, 27777, 3377, 3777.
043353,000122: # (NOTE: THE TERM EQUIVALENT ' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)
043354,000123: # 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777
Page 986 |
043356,000125: # 4. THE '1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE
043357,000126: # CONTROL SECTION OF THE DOWNLIST.
043358,000127:
043359,000128: # 5. 'DNCHAN 0' CANNOT BE USED.
043360,000129:
043361,000130: # 6. 'DNPTR 0' CANNOT BE USED.
043362,000131:
043363,000132: # 7. DNPTR CANNOT APPEAR IN A SUBLIST.
043364,000133:
043365,000134: # EBANK SETTINGS
043366,000135: # IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS
043367,000136: # 'GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME
043368,000137: # SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.)
043369,000138: # THAT BITS15-12 OF EBANK ARE ZERO.
043370,000139:
043371,000140: # INITIALIZATION REQUIRED - TO INTERRUPT CURRENT LIST AND START A NEW ONE..
043372,000141: # 1. ADRES OF DOWNLINK LIST INTO DNLSTADR
043373,000142: # 2. NEGONE INTO SUBLIST
043374,000143: # 3. NEGONE INTO DNECADR
043375,000144:
043376,000145: 22,3647 BANK 22
043377,000146: 05,2000 SETLOC DOWNTELM
043378,000147: 05,2000 BANK
043379,000148:
043380,000149: 05,3430 0340 EBANK= DNTMBUFF
043381,000150:
043382,000151: 05,3430 COUNT* $$/DPROG
043383,000152: 05,3430 54016 DODOWNTM TS BANKRUPT
043384,000153: 05,3431 00006 EXTEND
043385,000154: 05,3432 22012 QXCH QRUPT # SAVE Q
043386,000155: 05,3433 34745 CA BIT7 # SET WORD ORDER CODE TO 1. EXCEPTION- AT
043387,000156: 05,3434 00006 EXTEND # THE BEGINNING OF EACH LIST THE WORD
043388,000157: 05,3435 05013 WOR CHAN13 # CODE WILL BE SET BACK TO 0.
043389,000158: 05,3436 00335 TC DNTMGOTO # GO TO APPROPRIATE PHASE OF PROGRAM
043390,000159:
043391,000160: 05,3437 37746 DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS
043392,000161: 05,3440 54337 TS SUBLIST # WORDS TO MINUS ONE
043393,000162: 05,3441 54336 TS DNECADR
043394,000163: 05,3442 33562 CA LDNPHAS2 # SET DNTMGOTO =O ALL SUBSEQUENT DOWNRUPTS
043395,000164: 05,3443 54335 TS DNTMGOTO # GO TO DNPHASE2
043396,000165: 05,3444 13460 TCF NEWLIST
043397,000166: 05,3445 10336 DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS
043398,000167: 05,3446 03575 DODNADR TC FETCH2WD # YES - THEN FETCH THE NEXT 2 SP WORDS
043399,000168: 05,3447 77753 MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR
043400,000169: 05,3450 13451 TCF +1 # (ECADR OF 3776 + 74001 = 77777)
043401,000170:
043402,000171: 05,3451 10337 CCS SUBLIST # IS THE SUBLIST IN CONTROL
043403,000172: 05,3452 13610 TCF NEXTINSL # YES
Page 987 |
043405,000174: 05,3453 74001 DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER
043406,000175:
043407,000176: 05,3454 30334 CHKLIST CA CTLIST
043408,000177: 05,3455 00006 EXTEND
043409,000178: 05,3456 63460 BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST
043410,000179: 05,3457 13465 TCF NEXTINCL
043411,000180: 05,3460 50332 NEWLIST INDEX DNLSTCOD
043412,000181: 05,3461 32441 CA DNTABLE # INITIALIZE CTLIST WITH
043413,000182: 05,3462 54334 TS CTLIST # STARTING ADDRESS OF NEW LIST
043414,000183: 05,3463 40332 CS DNLSTCOD
043415,000184: 05,3464 13700 TCF SENDID +3
043416,000185: 05,3465 50334 NEXTINCL INDEX CTLIST
043417,000186: 05,3466 30000 CA 0
043418,000187: 05,3467 10000 CCS A
043419,000188: 05,3470 24334 INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD
043420,000189: 05,3471 13475 TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0)
043421,000190: 05,3472 56334 XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING)
043422,000191: 05,3473 40000 COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA)
043423,000192: 05,3474 56334 XCH CTLIST # (ST IN )
043424,000193: 05,3475 24000 +4 INCR A # (CTLIST)
043425,000194: 05,3476 54336 TS DNECADR # SAVE DNADR
043426,000195: 05,3477 63447 AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR)
043427,000196: 05,3500 10000 CCS A
043428,000197: 05,3501 13505 TCF SETWO +1 # DON'T SET WORD ORDER CODE
043429,000198: 05,3502 47777 MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE)
043430,000199: 05,3503 13505 TCF SETWO +1 # DON'T SET WORD ORDER CODE
043431,000200: 05,3504 03527 SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO.
043432,000201: 05,3505 30336 +1 CA DNECADR # RELOAD A WITH THE DNADR.
043433,000202: 05,3506 63502 +2 AD MINB1314 # IS THIS A REGULAR DNADR?
043434,000203: 05,3507 00006 EXTEND
043435,000204: 05,3510 63575 BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO)
043436,000205: 05,3511 67740 AD MINB12 # NO- IS IT A POINTER (DNPTR) OR A
043437,000206: 05,3512 00006 EXTEND # CHANNEL(DNCHAN)
043438,000207: 05,3513 63533 BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO)
043439,000208:
043440,000209: 05,3514 00006 DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT S A CHANNEL
043441,000210: 05,3515 50336 INDEX DNECADR
043442,000211: 05,3516 44000 INDEX 0 -4000 # (EXECUTED AS READ)
043443,000212: 05,3517 54001 TS L
043444,000213: 05,3520 00006 TC 6 # (EXECUTED AS EXTEND)
043445,000214: 05,3521 50336 INDEX DNECADR
043446,000215: 05,3522 43777 INDEX 0 -4001 # (EXECUTED AS READ)
043447,000216: 05,3523 54336 TS DNECADR # SET DNECADR
043448,000217: 05,3524 37746 CA NEGONE # TO MINUS
043449,000218: 05,3525 56336 XCH DNECADR # WHILE PRESERVING A.
043450,000219: 05,3526 13623 TCF DNTMEXIT # GO SEND CHANNELS
043451,000220:
043452,000221: 05,3527 44745 WOZERO CS BIT7
043453,000222: 05,3530 00006 EXTEND
043454,000223: 05,3531 03013 WAND CHAN13 # SET WORD ORDER CODE TO ZERO
Page 988 |
043456,000225: 05,3532 00002 TC Q # RETURN TO CALLER
043457,000226:
043458,000227: 05,3533 50336 DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST
043459,000228: 05,3534 00000 0 0 # CLEAR AND ADD LIST ENTRY INTO A.
043460,000229: 05,3535 10000 CCS A # IS THIS A SNAPSHOT SUBLIST
043461,000230: 05,3536 30336 CA DNECADR # NO, IT IS A REGULAR SUBLIST.
043462,000231: 05,3537 13607 TCF DOSUBLST # A MUST NOT BE ZERO.
043463,000232:
043464,000233: 05,3540 56336 XCH DNECADR # YES, IT IS A SNAPSHOT SUBLIST.
043465,000234: 05,3541 54337 TS SUBLIST # C(DNECADR) INTO SUBLIST
043466,000235: 05,3542 34755 CAF ZERO # A INTO A
043467,000236: 05,3543 56336 XCH TMINDEX # (NOTE.. TMINDEX = DNECADR)
043468,000237:
043469,000238: # THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.
043470,000239: # THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.
043471,000240: # THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED
043472,000241: # TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.
043473,000242: # THESE RULES ARE......
043474,000243: # 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST
043475,000244: # 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.
043476,000245:
043477,000246: 05,3544 54003 SNAPLOOP TS EBANK # SET EBANK
043478,000247: 05,3545 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
043479,000248: 05,3546 00006 EXTEND
043480,000249: 05,3547 50000 INDEX A
043481,000250: 05,3550 E3,1401 EBANK= 1401
043482,000251: 05,3550 31402 DCA 1401 # PICK UP 2 SNAPSHOT WORDS.
043483,000252: 05,3551 0340 EBANK= DNTMBUFF
043484,000253: 05,3551 50336 INDEX TMINDEX
043485,000254: 05,3552 52341 DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER
043486,000255: 05,3553 24336 INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS.
043487,000256: 05,3554 24336 INCR TMINDEX
043488,000257: 05,3555 24337 SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT
043489,000258: 05,3556 50337 INDEX SUBLIST
043490,000259: 05,3557 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
043491,000260: 05,3560 10000 CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT.
043492,000261: 05,3561 13544 TCF SNAPLOOP # NOT LAST TWO.
043493,000262: 05,3562 03445 LDNPHAS2 GENADR DNPHASE2
043494,000263: 05,3563 54337 TS SUBLIST # YES, LAST. SAVE A.
043495,000264: 05,3564 37746 CA NEGONE # SET DNECADR AND
043496,000265: 05,3565 54336 TS DNECADR # SUBLIST POINTERS
043497,000266: 05,3566 56337 XCH SUBLIST # TO NEGATIVE VALUES.
043498,000267: 05,3567 54003 TS EBANK
043499,000268: 05,3570 74357 MASK LOW8
043500,000269: 05,3571 00006 EXTEND
043501,000270: 05,3572 50000 INDEX A
043502,000271: 05,3573 E3,1401 EBANK= 1401
043503,000272: 05,3573 31402 DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT.
Page 989 |
043505,000274: 05,3574 0340 EBANK= DNTMBUFF
043506,000275: 05,3574 13623 SNAPEND TCF DNTMEXIT # NOW GO SEND THEM.
043507,000276:
043508,000277: 05,3575 30336 FETCH2WD CA DNECADR
043509,000278: 05,3576 54003 TS EBANK # SET EBANK
043510,000279: 05,3577 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
043511,000280: 05,3600 54001 TS L
043512,000281: 05,3601 33453 CA DNADRDCR # DECREMENT COUNT AND ECADR
043513,000282: 05,3602 26336 ADS DNECADR
043514,000283: 05,3603 00006 EXTEND
043515,000284: 05,3604 50001 INDEX L
043516,000285: 05,3605 E3,1400 EBANK= 1400
043517,000286: 05,3605 31401 DCA 1400 # PICK UP 2 DATA WORDS
043518,000287: 05,3606 0340 EBANK= DNTMBUFF
043519,000288: 05,3606 13623 TCF DNTMEXIT # NOW GO SEND THEM.
043520,000289:
043521,000290: 05,3607 54337 DOSUBLST TS SUBLIST # SET SUBLIST POINTER
043522,000291: 05,3610 50337 NEXTINSL INDEX SUBLIST
043523,000292: 05,3611 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
043524,000293: 05,3612 10000 CCS A # IS IT THE END OF THE SUBLIST
043525,000294: 05,3613 24337 INCR SUBLIST # NO -
043526,000295: 05,3614 13620 TCF +4
043527,000296: 05,3615 54337 TS SUBLIST # SAVE A.
043528,000297: 05,3616 37746 CA NEGONE # SET SUBLIST TO MINUS
043529,000298: 05,3617 56337 XCH SUBLIST # RETRIEVE A.
043530,000299: 05,3620 24000 +4 INCR A
043531,000300: 05,3621 54336 TS DNECADR # SAVE DNADR
043532,000301: 05,3622 13506 TCF SETWO +2 # GO USE COMMON CODING (PROBLEMS WOULD
043533,000302: # OCCUR IF THE PROGRAM ENCOUNTERED A
043534,000303: # DNPTR NOW)
043535,000304:
043536,000305: 05,3623 00006 DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT
043537,000306: 05,3624 01034 WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35
043538,000307: 05,3625 30001 CA L # RESPECTIVELY
043539,000308: 05,3626 00006 TMEXITL EXTEND
043540,000309: 05,3627 01035 WRITE DNTM2
043541,000310: 05,3630 15270 TMRESUME TCF RESUME # EXIT TELEMETRY PROGRAM VIA RESUME.
043542,000311:
043543,000312: 05,3631 7740 MINB12 EQUALS -1/8
043544,000313: 05,3631 0336 DNECADR EQUALS TMINDEX
043545,000314: 05,3631 0334 CTLIST EQUALS LDATALST
043546,000315: 05,3631 0337 SUBLIST EQUALS DNQ
043547,000316:
Page 990 |
043549,000318: # SUBROUTINE NAME- DNDUMP
043550,000319: # FUNCTIONAL DESCRIPTION - TO SEND (DUMP) ALL ERASABLE STORAGE 'N' TIMES.(N=1 TO 4). BANKS ARE SENT ONE AT A TIME
043551,000320: # EACH BANK IS PRECEEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH
043552,000321: # EBANK. EBANKS ARE DUMPED IN ORDER (I.E. EBANK 0 FIRST, THEN EBANK1 ETC.)
043553,000322: # CALLING SEQUENCE- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.
043554,000323: # AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP
043555,000324: # WILL BEGIN.
043556,000325: # ONCE INITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY
043557,000326: # BY THE FOLLOWING:
043558,000327: # 1. A FRESH START
043559,000328: # 2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT). NOTE THAT DUMPCNT
043560,000329: # CAN BE ALTERED BY A V21N01.
043561,000330: # 3. AND INVOLUNTARILY BY A RESTART.
043562,000331: # NORMAL EXIT MODE - TCF DNPHASE1
043563,000332: # ALARM OR ABORT MODE - NONE
043564,000333: # *SUBROUTINES CALLED - NONE.
043565,000334: # ERASABLE INITIALIZATION REQUIRED -
043566,000335: # DUMPCNT OCT 20000 IF 4 COMPLETE ERASABLE DUMPS ARE DESIRED
043567,000336: # DUMPCNT OCT 10000 IF 2 COMPLETE ERASABLE DUMPS ARE DESIRED
043568,000337: # DUMPCNT OCT 04000 IF 1 COMPLETE ERASABLE DUMP IS DESIRED
043569,000338: # DEBRIS - DUMPLOC, DUMPSW, DNTMGOTO, EBANK AND CENTRAL REGISTERS
043570,000339: # TIMING - TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC
043571,000340: # TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100
043572,000341: # THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS
043573,000342:
043574,000343: # STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM -
043575,000344: # (REMINDER - THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)
043576,000345: # DOWNLIST W
043577,000346: # WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS
043578,000347: # 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)
043579,000348: # 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS)
043580,000349: # 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD
043581,000350: # 4 TIME1 14120 1 TIME IN CENTISECONDS
043582,000351: # 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)
043583,000352: # 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)
043584,000353: # 7 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)
043585,000354: # . 1
043586,000355: # . 1
043587,000356: # . 1
043588,000357: # 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)
043589,000358:
043590,000359: # NOTE- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.
043591,000360: # THE BIT STRUCTURE OF DUMPLOC IS FOLLOWS---
043592,000361: # X = NOT USED
043593,000362: # X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2 OR 3 WHICH MEANS THAT
043594,000363: # COMPLETE ERASABLE DUMP NUMBER 1,2,3 OR 4 RESPECTIVELY IS IN PROGRESS)
043595,000364: # EEE = EBANK BITS
043596,000365: # RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK.
043597,000366:
Page 991 |
043599,000368: 05,3631 34755 DNDUMPI CA ZERO # INITIALIZE DOWNLINK
043600,000369: 05,3632 54336 TS DUMPLOC # ERASABLE DUMP
043601,000370: 05,3633 03675 +2 TC SENDID # GO SEND ID AND SYNCH BITS
043602,000371: 05,3634 33643 CA LDNDUMP1 # SET DNTMGOTO
043603,000372: 05,3635 54335 TS DNTMGOTO # TO LOCATION FOR NEXT PASS
043604,000373: 05,3636 30025 CA TIME1 # PLACE TIME1
043605,000374: 05,3637 56001 XCH L # INTO L
043606,000375: 05,3640 30336 CA DUMPLOC # AND ECADR OF THIS EBANK INTO A
043607,000376: 05,3641 13623 TCF DNTMEXIT # SEND DUMPLOC AND TIME1
043608,000377:
043609,000378: 05,3642 03644 LDNDUMP ADRES DNDUMP
043610,000379: 05,3643 03657 LDNDUMP1 ADRES DNDUMP1
043611,000380:
043612,000381: 05,3644 34752 DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC
043613,000382: 05,3645 26336 ADS DUMPLOC # TO NEXT DP WORD TO BE
043614,000383: 05,3646 74357 MASK LOW8 # DUMPED AND SAVE IT.
043615,000384: 05,3647 10000 CCS A # IS THIS THE BEGINNING OF A NEW EBANK
043616,000385: 05,3650 13661 TCF DNDUMP2 # NO- THEN CONTINUE DUMPING
043617,000386: 05,3651 30336 CA DUMPLOC # YES- IS THIS THE END OF THE
043618,000387: 05,3652 70333 MASK DUMPCNT # N TH (N = 1 TO 4) COMPLETE ERASABLE
043619,000388: 05,3653 77721 MASK PRIO34 # DUMP (BIT14 FOR 4, BIT13 FOR 2 OR BIT12
043620,000389: 05,3654 10000 CCS A # FOR 1 COMPLETE ERASABLE DUMP(S)).
043621,000390: 05,3655 13437 TCF DNPHASE1 # YES- START SENDING INTERRUPTED DOWNLIST
043622,000391: # AGAIN
043623,000392: 05,3656 13633 TCF DNDUMPI +2 # NO- GO BACK AND INITIALIZE NEXT BANK
043624,000393:
043625,000394: 05,3657 33642 DNDUMP1 CA LDNDUMP # SET DNTMGOTO
043626,000395: 05,3660 54335 TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK
043627,000396:
043628,000397: 05,3661 30336 DNDUMP2 CA DUMPLOC
043629,000398: 05,3662 54003 TS EBANK # SET EBANK
043630,000399: 05,3663 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS.
043631,000400: 05,3664 54002 TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK
043632,000401: 05,3665 34754 CA NEG0 # UP ERASABLE REGISTERS SO THAT EDITING
043633,000402: 05,3666 54001 TS L # REGISTERS 20-23 WILL NOT BE ALTERED.)
043634,000403: 05,3667 50002 INDEX Q
043635,000404: 05,3670 E3,1400 EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR
043636,000405: 05,3670 71401 MASK 1401 # OF ERASABLE REGISTERS.
043637,000406: 05,3671 56001 XCH L
043638,000407: 05,3672 50002 INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR
043639,000408: 05,3673 71400 MASK 1400 # OF ERASABLE REGISTERS.
043640,000409: 05,3674 0340 EBANK= DNTMBUFF
043641,000410: 05,3674 13623 TCF DNTMEXIT # GO SEND THEM
043642,000411:
043643,000412: 05,3675 00006 SENDID EXTEND # **ENTRANCE USED BY ERASABLE DUMP PROG.**
043644,000413: 05,3676 22335 QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO
043645,000414: 05,3677 35011 CAF ERASID # TO LOCATION FOLLOWING :TC SENDID:
043646,000415:
043647,000416: 05,3700 54001 TS L # **ENTRANCE USED BY REGULAR DOWNLINK PG**
Page 992 |
043649,000418: 05,3701 03527 TC WOZERO # GO SET WORD ORDER CODE TO ZERO
043650,000419: 05,3702 32065 CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L
043651,000420: 05,3703 56001 XCH L # AND ID BACK INTO A
043652,000421: 05,3704 13623 TCF DNTMEXIT # SEND DOWNLIST ID CODE(S).
043653,000422:
End of include-file DOWN-TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc