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