Source Code
These source-code files were transcribed from scans made from Don Eyles's personal
copy of Luminary 069. They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Onno Hommes. The code was transcribed
from these scans by a team of volunteers who are referenced in the program
comments. Comments from the original source code are prefixed with a single '#' symbol,
whereas comments added later are prefixed by "##" or "###". In some cases, where
similar code blocks exist in previously-transcribed AGC programs (primarily
Luminary 99, from Apollo 11) those code blocks were used as a starting point and
then corrected to agree with the Luminary 69 scans. The full scans are available
at the Virtual AGC
project's collection at archive.org, while more-convenient reduced-size (but reduced-quality)
images are available at
the main Virtual AGC website. Report any errors noted by creating an
issue report at the Virtual AGC
project's GitHub repository. Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 069 OF AGC PROGRAM LUMINARY BY NASA 2021112-011 19:02 NOV. 25,1968Note that the date is the date of the printout, not the date of the program revision. |
043527,000002: ## Copyright: Public domain.
043528,000003: ## Filename: DOWN-TELEMETRY_PROGRAM.agc
043529,000004: ## Purpose: The main source file for Luminary revision 069.
043530,000005: ## It is part of the source code for the original release
043531,000006: ## of the flight software for the Lunar Module's (LM) Apollo
043532,000007: ## Guidance Computer (AGC) for Apollo 10. The actual flown
043533,000008: ## version was Luminary 69 revision 2, which included a
043534,000009: ## newer lunar gravity model and only affected module 2.
043535,000010: ## This file is intended to be a faithful transcription, except
043536,000011: ## that the code format has been changed to conform to the
043537,000012: ## requirements of the yaYUL assembler rather than the
043538,000013: ## original YUL assembler.
043539,000014: ## Reference: pp. 983-992
043540,000015: ## Assembler: yaYUL
043541,000016: ## Contact: Ron Burkey <info@sandroid.org>.
043542,000017: ## Website: www.ibiblio.org/apollo/index.html
043543,000018: ## Mod history: 2016-12-13 MAS Created from Luminary 99.
043544,000019: ## 2016-12-18 MAS Updated from comment-proofed Luminary 99 version.
043545,000020: ## 2017-01-04 RRB Updated for Luminary 69.
043546,000021: ## 2017-01-21 HG fix statement TCF WOTEST --> CA BIT7
043547,000022: ## 2017-01-28 RSB Proofed comment text using octopus/prooferComments
043548,000023: ## and fixed errors found.
043549,000024: ## 2017-03-13 RSB Comment-text fixes noted in proofing Luminary 116.
043550,000025: ## 2017-03-15 RSB Comment-text fixes identified in 5-way
043551,000026: ## side-by-side diff of Luminary 69/99/116/131/210.
043552,000027: ## 2021-05-30 ABS Removed WO1 symbol not present in scans.
043553,000028:
Page 983 |
043555,000030: # PROGRAM NAME - DOWN TELEMETRY PROGRAM
043556,000031: # MOD NO. - 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE
043557,000032: # PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.
043558,000033: # THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS.REFER TO DOWNLINK
043559,000034: # LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGE WILL NOT AFFECT THE GROUND PROCESSING
043560,000035: # OF DOWN TELEMETRY DATA.
043561,000036: # MOD BY - KILROY, SMITH, DEWITT
043562,000037: # DATE - 02OCT67
043563,000038: # AUTHORS - KILROY, SMITH, DEWITT, DEWOLF, FAGIN
043564,000039: # LOG SECTION - DOWN-TELEMETRY PROGRAM
043565,000040:
043566,000041: # FUNCTIONAL DESCRIPTION - THIS ROUTINE IS INITIATED BY TELEMETRY END
043567,000042: # PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS
043568,000043: # AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS
043569,000044: # EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE
043570,000045: # AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT
043571,000046: # CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE
043572,000047: # LGC IN SERIAL FASHION.
043573,000048: # THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS
043574,000049: # OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN
043575,000050: # CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE
043576,000051: # OF SENDING 200 AGC WORDS EVERY 2 SECONDS.
043577,000052: # CALLING SEQUENCE - NONE
043578,000053: # PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A
043579,000054: # RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH
043580,000055: # IN EFFECT IS A RESUME.
043581,000056: # SUBROUTINES CALLED - NONE
043582,000057: # NORMAL EXIT MODE - TCF RESUME
043583,000058: # ALARM OR ABORT EXIT MODE - NONE
043584,000059: # RESTART PROTECTION:
043585,000060: # ON A FRESH START AND RESTART THE 'STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY
043586,000061: # DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E. CURRENT CONTENTS OF DNLSTADR). THIS HAS THE
043587,000062: # EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN
043588,000063: # THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT
043589,000064: # DOWNLIST.
043590,000065: # ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.
043591,000066: # DOWNLINK LIST SELECTION:
043592,000067: # THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:
043593,000068: # 1. FRESH START
043594,000069: # 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED.
043595,000070: # 3. UPDATE PROGRAM (P27)
043596,000071: # 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G. AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62
043597,000072: # TRANSITION (COLOSSUS) ETC.).
043598,000073: # DOWNLINK LIST RULES AND LIMITATIONS:
043599,000074: # READ SECTION(S) WHICH FOLLOW 'DEBRIS' WRITEUP.
043600,000075: # OUTPUT - EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E. 200 LGC
043601,000076: # COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.
043602,000077: # ERASABLE INITIALIZATION REQUIRED - NONE
043603,000078: # 'DNTMGOTO' AND 'DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.
043604,000079: # DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) -
043605,000080: # LDATALST,DNTMBUFF TO DNTMBUFF +21D,TMINDEX,DNQ.
043606,000081:
Page 984
This page is empty |
043609,000084:
Page 985 |
043611,000086: # DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE
043612,000087: # RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.
043613,000088:
043614,000089: # NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:
043615,000090: # 1. DOWNLISTS. - DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE
043616,000091: # DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER
043617,000092: # EXECUTION.
043618,000093: # 2. EACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF
043619,000094: # SUBLISTS.
043620,000095: # 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER
043621,000096: # DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE
043622,000097: # CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.
043623,000098: # 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENOUS DATA WHICH MUST BE
043624,000099: # SAVED IN A BUFFER DURING ONE DOWNRUPT.
043625,000100: # 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END
043626,000101: # OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD
043627,000102: # IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.
043628,000103: # 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS
043629,000104: # CREATED FOR THE DOWNLIST PROGRAM.
043630,000105: # A. 1DNADR 1-WORD DOWNLIST ADDRESS.
043631,000106: # SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT
043632,000107: # HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.
043633,000108: # B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6.
043634,000109: # SAME AS 1DNADR, BUT WITH THE 4 UNUSED BITS OF THE ECADR FORMAT
043635,000110: # FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE-
043636,000111: # PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.
043637,000112: # C. DNCHAN DOWNLIST CHANNEL ADDRESS.
043638,000113: # SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO
043639,000114: # A PAIR OF CHANNELS FOR DOWN TELEMETRY.
043640,000115: # D. DNPTR DOWN TELEMETRY SUBLIST POINTER.
043641,000116: # SAME AS CAF BUT TAGGED AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST.
043642,000117: # CAUTION--- A DNPTR CANNOT BE USED IN A SUBLIST.
043643,000118: # 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E. CONTROL LIST) AND WHEN
043644,000119: # A '1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY).
043645,000120: # 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.
043646,000121:
043647,000122: # DOWNLINK LIST RESTRICTIONS:
043648,000123: # (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE
043649,000124: # DONE)
043650,000125: # 1. SNAPSHOT DOWNLIST:
043651,000126: # (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E. 1DNADR'S): 0, 400, 1000, 1400, 2000, 2400, 3000, 3400.
043652,000127: # (B) CAN CONTAIN ONLY 1DNADR'S
043653,000128: # 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A <DCA<SO DOWNLINK LISTS CANNOT CONTAIN THE
043654,000129: # EQUIVALENT OF THE FOLLOWING ECADRS (I.E. IDNADRS): 377, 777, 1377, 1777, 2377, 27777, 3377, 3777.
043655,000130: # (NOTE: THE TERM EQUIVALENT ' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)
043656,000131: # 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777
Page 986 |
043658,000133: # 4. THE '1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE
043659,000134: # CONTROL SECTION OF THE DOWNLIST.
043660,000135:
043661,000136: # 5. 'DNCHAN 0' CANNOT BE USED.
043662,000137:
043663,000138: # 6. 'DNPTR 0' CANNOT BE USED.
043664,000139:
043665,000140: # 7. DNPTR CANNOT APPEAR IN A SUBLIST.
043666,000141:
043667,000142: # EBANK SETTINGS
043668,000143: # IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS
043669,000144: # 'GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME
043670,000145: # SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.)
043671,000146: # THAT BITS15-12 OF EBANK ARE ZERO.
043672,000147:
043673,000148: # INITIALIZATION REQUIRED - TO INTERRUPT CURRENT LIST AND START A NEW ONE..
043674,000149: # 1. ADRES OF DOWNLINK LIST INTO DNLSTADR
043675,000150: # 2. NEGONE INTO SUBLIST
043676,000151: # 3. NEGONE INTO DNECADR
043677,000152:
043678,000153: 22,3647 BANK 22
043679,000154: 05,2000 SETLOC DOWNTELM
043680,000155: 05,2000 BANK
043681,000156:
043682,000157: 05,3430 0340 EBANK= DNTMBUFF
043683,000158:
043684,000159: 05,3430 COUNT* $$/DPROG
043685,000160: 05,3430 54016 DODOWNTM TS BANKRUPT
043686,000161: 05,3431 00006 EXTEND
043687,000162: 05,3432 22012 QXCH QRUPT # SAVE Q
043688,000163: 05,3433 34745 CA BIT7 # SET WORD ORDER CODE TO 1. EXCEPTION- AT
043689,000164: 05,3434 00006 EXTEND # THE BEGINNING OF EACH LIST THE WORD
043690,000165: 05,3435 05013 WOR CHAN13 # CODE WILL BE SET BACK TO 0.
043691,000166: 05,3436 00335 TC DNTMGOTO # GO TO APPROPRIATE PHASE OF PROGRAM
043692,000167:
043693,000168: 05,3437 37746 DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS
043694,000169: 05,3440 54337 TS SUBLIST # WORDS TO MINUS ONE
043695,000170: 05,3441 54336 TS DNECADR
043696,000171: 05,3442 33562 CA LDNPHAS2 # SET DNTMGOTO =O ALL SUBSEQUENT DOWNRUPTS
043697,000172: 05,3443 54335 TS DNTMGOTO # GO TO DNPHASE2
043698,000173: 05,3444 13460 TCF NEWLIST
043699,000174: 05,3445 10336 DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS
043700,000175: 05,3446 03575 DODNADR TC FETCH2WD # YES - THEN FETCH THE NEXT 2 SP WORDS
043701,000176: 05,3447 77753 MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR
043702,000177: 05,3450 13451 TCF +1 # (ECADR OF 3776 + 74001 = 77777)
043703,000178:
043704,000179: 05,3451 10337 CCS SUBLIST # IS THE SUBLIST IN CONTROL
043705,000180: 05,3452 13610 TCF NEXTINSL # YES
Page 987 |
043707,000182: 05,3453 74001 DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER
043708,000183:
043709,000184: 05,3454 30334 CHKLIST CA CTLIST
043710,000185: 05,3455 00006 EXTEND
043711,000186: 05,3456 63460 BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST
043712,000187: 05,3457 13465 TCF NEXTINCL
043713,000188: 05,3460 50332 NEWLIST INDEX DNLSTCOD
043714,000189: 05,3461 32441 CA DNTABLE # INITIALIZE CTLIST WITH
043715,000190: 05,3462 54334 TS CTLIST # STARTING ADDRESS OF NEW LIST
043716,000191: 05,3463 40332 CS DNLSTCOD
043717,000192: 05,3464 13700 TCF SENDID +3
043718,000193: 05,3465 50334 NEXTINCL INDEX CTLIST
043719,000194: 05,3466 30000 CA 0
043720,000195: 05,3467 10000 CCS A
043721,000196: 05,3470 24334 INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD
043722,000197: 05,3471 13475 TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0)
043723,000198: 05,3472 56334 XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING)
043724,000199: 05,3473 40000 COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA)
043725,000200: 05,3474 56334 XCH CTLIST # (ST IN )
043726,000201: 05,3475 24000 +4 INCR A # (CTLIST)
043727,000202: 05,3476 54336 TS DNECADR # SAVE DNADR
043728,000203: 05,3477 63447 AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR)
043729,000204: 05,3500 10000 CCS A
043730,000205: 05,3501 13505 TCF SETWO +1 # DON'T SET WORD ORDER CODE
043731,000206: 05,3502 47777 MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE)
043732,000207: 05,3503 13505 TCF SETWO +1 # DON'T SET WORD ORDER CODE
043733,000208: 05,3504 03527 SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO.
043734,000209: 05,3505 30336 +1 CA DNECADR # RELOAD A WITH THE DNADR.
043735,000210: 05,3506 63502 +2 AD MINB1314 # IS THIS A REGULAR DNADR?
043736,000211: 05,3507 00006 EXTEND
043737,000212: 05,3510 63575 BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO)
043738,000213: 05,3511 67740 AD MINB12 # NO- IS IT A POINTER (DNPTR) OR A
043739,000214: 05,3512 00006 EXTEND # CHANNEL(DNCHAN)
043740,000215: 05,3513 63533 BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO)
043741,000216:
043742,000217: 05,3514 00006 DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT S A CHANNEL
043743,000218: 05,3515 50336 INDEX DNECADR
043744,000219: 05,3516 44000 INDEX 0 -4000 # (EXECUTED AS READ)
043745,000220: 05,3517 54001 TS L
043746,000221: 05,3520 00006 TC 6 # (EXECUTED AS EXTEND)
043747,000222: 05,3521 50336 INDEX DNECADR
043748,000223: 05,3522 43777 INDEX 0 -4001 # (EXECUTED AS READ)
043749,000224: 05,3523 54336 TS DNECADR # SET DNECADR
043750,000225: 05,3524 37746 CA NEGONE # TO MINUS
043751,000226: 05,3525 56336 XCH DNECADR # WHILE PRESERVING A.
043752,000227: 05,3526 13623 TCF DNTMEXIT # GO SEND CHANNELS
043753,000228:
043754,000229: 05,3527 44745 WOZERO CS BIT7
043755,000230: 05,3530 00006 EXTEND
043756,000231: 05,3531 03013 WAND CHAN13 # SET WORD ORDER CODE TO ZERO
Page 988 |
043758,000233: 05,3532 00002 TC Q # RETURN TO CALLER
043759,000234:
043760,000235: 05,3533 50336 DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST
043761,000236: 05,3534 00000 0 0 # CLEAR AND ADD LIST ENTRY INTO A.
043762,000237: 05,3535 10000 CCS A # IS THIS A SNAPSHOT SUBLIST
043763,000238: 05,3536 30336 CA DNECADR # NO, IT IS A REGULAR SUBLIST.
043764,000239: 05,3537 13607 TCF DOSUBLST # A MUST NOT BE ZERO.
043765,000240:
043766,000241: 05,3540 56336 XCH DNECADR # YES, IT IS A SNAPSHOT SUBLIST.
043767,000242: 05,3541 54337 TS SUBLIST # C(DNECADR) INTO SUBLIST
043768,000243: 05,3542 34755 CAF ZERO # A INTO A
043769,000244: 05,3543 56336 XCH TMINDEX # (NOTE.. TMINDEX = DNECADR)
043770,000245:
043771,000246: # THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.
043772,000247: # THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.
043773,000248: # THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED
043774,000249: # TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.
043775,000250: # THESE RULES ARE......
043776,000251: # 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST
043777,000252: # 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.
043778,000253:
043779,000254: 05,3544 54003 SNAPLOOP TS EBANK # SET EBANK
043780,000255: 05,3545 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
043781,000256: 05,3546 00006 EXTEND
043782,000257: 05,3547 50000 INDEX A
043783,000258: 05,3550 E3,1401 EBANK= 1401
043784,000259: 05,3550 31402 DCA 1401 # PICK UP 2 SNAPSHOT WORDS.
043785,000260: 05,3551 0340 EBANK= DNTMBUFF
043786,000261: 05,3551 50336 INDEX TMINDEX
043787,000262: 05,3552 52341 DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER
043788,000263: 05,3553 24336 INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS.
043789,000264: 05,3554 24336 INCR TMINDEX
043790,000265: 05,3555 24337 SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT
043791,000266: 05,3556 50337 INDEX SUBLIST
043792,000267: 05,3557 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
043793,000268: 05,3560 10000 CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT.
043794,000269: 05,3561 13544 TCF SNAPLOOP # NOT LAST TWO.
043795,000270: 05,3562 03445 LDNPHAS2 GENADR DNPHASE2
043796,000271: 05,3563 54337 TS SUBLIST # YES, LAST. SAVE A.
043797,000272: 05,3564 37746 CA NEGONE # SET DNECADR AND
043798,000273: 05,3565 54336 TS DNECADR # SUBLIST POINTERS
043799,000274: 05,3566 56337 XCH SUBLIST # TO NEGATIVE VALUES.
043800,000275: 05,3567 54003 TS EBANK
043801,000276: 05,3570 74357 MASK LOW8
043802,000277: 05,3571 00006 EXTEND
043803,000278: 05,3572 50000 INDEX A
043804,000279: 05,3573 E3,1401 EBANK= 1401
043805,000280: 05,3573 31402 DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT.
Page 989 |
043807,000282: 05,3574 0340 EBANK= DNTMBUFF
043808,000283: 05,3574 13623 SNAPEND TCF DNTMEXIT # NOW GO SEND THEM.
043809,000284:
043810,000285: 05,3575 30336 FETCH2WD CA DNECADR
043811,000286: 05,3576 54003 TS EBANK # SET EBANK
043812,000287: 05,3577 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
043813,000288: 05,3600 54001 TS L
043814,000289: 05,3601 33453 CA DNADRDCR # DECREMENT COUNT AND ECADR
043815,000290: 05,3602 26336 ADS DNECADR
043816,000291: 05,3603 00006 EXTEND
043817,000292: 05,3604 50001 INDEX L
043818,000293: 05,3605 E3,1400 EBANK= 1400
043819,000294: 05,3605 31401 DCA 1400 # PICK UP 2 DATA WORDS
043820,000295: 05,3606 0340 EBANK= DNTMBUFF
043821,000296: 05,3606 13623 TCF DNTMEXIT # NOW GO SEND THEM.
043822,000297:
043823,000298: 05,3607 54337 DOSUBLST TS SUBLIST # SET SUBLIST POINTER
043824,000299: 05,3610 50337 NEXTINSL INDEX SUBLIST
043825,000300: 05,3611 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
043826,000301: 05,3612 10000 CCS A # IS IT THE END OF THE SUBLIST
043827,000302: 05,3613 24337 INCR SUBLIST # NO -
043828,000303: 05,3614 13620 TCF +4
043829,000304: 05,3615 54337 TS SUBLIST # SAVE A.
043830,000305: 05,3616 37746 CA NEGONE # SET SUBLIST TO MINUS
043831,000306: 05,3617 56337 XCH SUBLIST # RETRIEVE A.
043832,000307: 05,3620 24000 +4 INCR A
043833,000308: 05,3621 54336 TS DNECADR # SAVE DNADR
043834,000309: 05,3622 13506 TCF SETWO +2 # GO USE COMMON CODING (PROBLEMS WOULD
043835,000310: # OCCUR IF THE PROGRAM ENCOUNTERED A
043836,000311: # DNPTR NOW)
043837,000312:
043838,000313: 05,3623 00006 DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT
043839,000314: 05,3624 01034 WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35
043840,000315: 05,3625 30001 CA L # RESPECTIVELY
043841,000316: 05,3626 00006 TMEXITL EXTEND
043842,000317: 05,3627 01035 WRITE DNTM2
043843,000318: 05,3630 15270 TMRESUME TCF RESUME # EXIT TELEMETRY PROGRAM VIA RESUME.
043844,000319:
043845,000320: 05,3631 7740 MINB12 EQUALS -1/8
043846,000321: 05,3631 0336 DNECADR EQUALS TMINDEX
043847,000322: 05,3631 0334 CTLIST EQUALS LDATALST
043848,000323: 05,3631 0337 SUBLIST EQUALS DNQ
043849,000324:
Page 990 |
043851,000326: # SUBROUTINE NAME- DNDUMP
043852,000327: # FUNCTIONAL DESCRIPTION - TO SEND (DUMP) ALL ERASABLE STORAGE 'N' TIMES.(N=1 TO 4). BANKS ARE SENT ONE AT A TIME
043853,000328: # EACH BANK IS PRECEEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH
043854,000329: # EBANK. EBANKS ARE DUMPED IN ORDER (I.E. EBANK 0 FIRST, THEN EBANK1 ETC.)
043855,000330: # CALLING SEQUENCE- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.
043856,000331: # AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP
043857,000332: # WILL BEGIN.
043858,000333: # ONCE INITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY
043859,000334: # BY THE FOLLOWING:
043860,000335: # 1. A FRESH START
043861,000336: # 2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT). NOTE THAT DUMPCNT
043862,000337: # CAN BE ALTERED BY A V21N01.
043863,000338: # 3. AND INVOLUNTARILY BY A RESTART.
043864,000339: # NORMAL EXIT MODE - TCF DNPHASE1
043865,000340: # ALARM OR ABORT MODE - NONE
043866,000341: # *SUBROUTINES CALLED - NONE.
043867,000342: # ERASABLE INITIALIZATION REQUIRED -
043868,000343: # DUMPCNT OCT 20000 IF 4 COMPLETE ERASABLE DUMPS ARE DESIRED
043869,000344: # DUMPCNT OCT 10000 IF 2 COMPLETE ERASABLE DUMPS ARE DESIRED
043870,000345: # DUMPCNT OCT 04000 IF 1 COMPLETE ERASABLE DUMP IS DESIRED
043871,000346: # DEBRIS - DUMPLOC, DUMPSW, DNTMGOTO, EBANK AND CENTRAL REGISTERS
043872,000347: # TIMING - TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC
043873,000348: # TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100
043874,000349: # THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS
043875,000350:
043876,000351: # STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM -
043877,000352: # (REMINDER - THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)
043878,000353: # DOWNLIST W
043879,000354: # WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS
043880,000355: # 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)
043881,000356: # 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS)
043882,000357: # 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD
043883,000358: # 4 TIME1 14120 1 TIME IN CENTISECONDS
043884,000359: # 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)
043885,000360: # 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)
043886,000361: # 7 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)
043887,000362: # . 1
043888,000363: # . 1
043889,000364: # . 1
043890,000365: # 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)
043891,000366:
043892,000367: # NOTE- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.
043893,000368: # THE BIT STRUCTURE OF DUMPLOC IS FOLLOWS---
043894,000369: # X = NOT USED
043895,000370: # X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2 OR 3 WHICH MEANS THAT
043896,000371: # COMPLETE ERASABLE DUMP NUMBER 1,2,3 OR 4 RESPECTIVELY IS IN PROGRESS)
043897,000372: # EEE = EBANK BITS
043898,000373: # RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK.
043899,000374:
Page 991 |
043901,000376: 05,3631 34755 DNDUMPI CA ZERO # INITIALIZE DOWNLINK
043902,000377: 05,3632 54336 TS DUMPLOC # ERASABLE DUMP
043903,000378: 05,3633 03675 +2 TC SENDID # GO SEND ID AND SYNCH BITS
043904,000379: 05,3634 33643 CA LDNDUMP1 # SET DNTMGOTO
043905,000380: 05,3635 54335 TS DNTMGOTO # TO LOCATION FOR NEXT PASS
043906,000381: 05,3636 30025 CA TIME1 # PLACE TIME1
043907,000382: 05,3637 56001 XCH L # INTO L
043908,000383: 05,3640 30336 CA DUMPLOC # AND ECADR OF THIS EBANK INTO A
043909,000384: 05,3641 13623 TCF DNTMEXIT # SEND DUMPLOC AND TIME1
043910,000385:
043911,000386: 05,3642 03644 LDNDUMP ADRES DNDUMP
043912,000387: 05,3643 03657 LDNDUMP1 ADRES DNDUMP1
043913,000388:
043914,000389: 05,3644 34752 DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC
043915,000390: 05,3645 26336 ADS DUMPLOC # TO NEXT DP WORD TO BE
043916,000391: 05,3646 74357 MASK LOW8 # DUMPED AND SAVE IT.
043917,000392: 05,3647 10000 CCS A # IS THIS THE BEGINNING OF A NEW EBANK
043918,000393: 05,3650 13661 TCF DNDUMP2 # NO- THEN CONTINUE DUMPING
043919,000394: 05,3651 30336 CA DUMPLOC # YES- IS THIS THE END OF THE
043920,000395: 05,3652 70333 MASK DUMPCNT # N TH (N = 1 TO 4) COMPLETE ERASABLE
043921,000396: 05,3653 77721 MASK PRIO34 # DUMP (BIT14 FOR 4, BIT13 FOR 2 OR BIT12
043922,000397: 05,3654 10000 CCS A # FOR 1 COMPLETE ERASABLE DUMP(S)).
043923,000398: 05,3655 13437 TCF DNPHASE1 # YES- START SENDING INTERRUPTED DOWNLIST
043924,000399: # AGAIN
043925,000400: 05,3656 13633 TCF DNDUMPI +2 # NO- GO BACK AND INITIALIZE NEXT BANK
043926,000401:
043927,000402: 05,3657 33642 DNDUMP1 CA LDNDUMP # SET DNTMGOTO
043928,000403: 05,3660 54335 TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK
043929,000404:
043930,000405: 05,3661 30336 DNDUMP2 CA DUMPLOC
043931,000406: 05,3662 54003 TS EBANK # SET EBANK
043932,000407: 05,3663 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS.
043933,000408: 05,3664 54002 TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK
043934,000409: 05,3665 34754 CA NEG0 # UP ERASABLE REGISTERS SO THAT EDITING
043935,000410: 05,3666 54001 TS L # REGISTERS 20-23 WILL NOT BE ALTERED.)
043936,000411: 05,3667 50002 INDEX Q
043937,000412: 05,3670 E3,1400 EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR
043938,000413: 05,3670 71401 MASK 1401 # OF ERASABLE REGISTERS.
043939,000414: 05,3671 56001 XCH L
043940,000415: 05,3672 50002 INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR
043941,000416: 05,3673 71400 MASK 1400 # OF ERASABLE REGISTERS.
043942,000417: 05,3674 0340 EBANK= DNTMBUFF
043943,000418: 05,3674 13623 TCF DNTMEXIT # GO SEND THEM
043944,000419:
043945,000420: 05,3675 00006 SENDID EXTEND # **ENTRANCE USED BY ERASABLE DUMP PROG.**
043946,000421: 05,3676 22335 QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO
043947,000422: 05,3677 35011 CAF ERASID # TO LOCATION FOLLOWING :TC SENDID:
043948,000423:
043949,000424: 05,3700 54001 TS L # **ENTRANCE USED BY REGULAR DOWNLINK PG**
Page 992 |
043951,000426: 05,3701 03527 TC WOZERO # GO SET WORD ORDER CODE TO ZERO
043952,000427: 05,3702 32065 CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L
043953,000428: 05,3703 56001 XCH L # AND ID BACK INTO A
043954,000429: 05,3704 13623 TCF DNTMEXIT # SEND DOWNLIST ID CODE(S).
043955,000430:
End of include-file DOWN-TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc