Source Code
041521,000001: # Copyright: Public domain.
041522,000002: # Filename: DOWN_TELEMETRY_PROGRAM.agc
041523,000003: # Purpose: A section of Luminary 1C, revision 131.
041524,000004: # It is part of the source code for the Lunar Module's (LM)
041525,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
041526,000006: # This file is intended to be a faithful transcription, except
041527,000007: # that the code format has been changed to conform to the
041528,000008: # requirements of the yaYUL assembler rather than the
041529,000009: # original YUL assembler.
041530,000010: # Reference: pp. 987-998 of 1729.pdf.
041531,000011: # Contact: Ron Burkey <info@sandroid.org>.
041532,000012: # Website: www.ibiblio.org/apollo/index.html
041533,000013: # Mod history: 05/29/03 RSB. Began transcribing.
041534,000014: # 05/14/05 RSB Corrected website reference above.
041535,000015:
041536,000016: # Page 987
041537,000017: # PROGRAM NAME -- DOWN TELEMETRY PROGRAM
041538,000018: # MOD NO. -- 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE
041539,000019: # PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.
041540,000020: # THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS. REFER TO DOWNLINK
041541,000021: # LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGES WILL NOT AFFECT THE GROUND PROCESSING
041542,000022: # OF DOWN TELEMETRY DATA.
041543,000023: # MOD BY -- KILROY, SMITH, DEWITT
041544,000024: # DATE -- 02 OCT 67
041545,000025: # AUTHORS -- KILROY, SMITH, DWWITT, DEWOLF, FAGIN
041546,000026: # LOG SECTION -- DOWN-TELEMETRY PROGRAM
041547,000027:
041548,000028: # FUNCTIONAL DESCRIPTION -- THIS ROUTINE IS INITIATED BY TELEMETRY END
041549,000029: # PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS
041550,000030: # AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS
041551,000031: # EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE
041552,000032: # AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT
041553,000033: # CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE
041554,000034: # LGC IN SERIAL FASHION.
041555,000035:
041556,000036: # THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS
041557,000037: # OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN
041558,000038: # CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE
041559,000039: # OF SENDING 200 AGC WORDS EVERY 2 SECONDS.
041560,000040:
041561,000041: # CALLING SEQUENCE -- NONE
041562,000042: # PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A
041563,000043: # RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH
041564,000044: # IN EFFECT IS A RESUME.
041565,000045:
041566,000046: # SUBROUTINES CALLED -- NONE
041567,000047:
041568,000048: # NORMAL EXIT MODE -- TCF RESUME
041569,000049:
041570,000050: # ALARM OR ABORT EXIT MODE -- NONE
041571,000051:
041572,000052: # RESTART PROTECTION:
041573,000053: # ON A FRESH START AND RESTART THE `STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY
041574,000054: # DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E., CURRENT CONTENTS OF DNLSTADR). THIS HAS THE
041575,000055: # EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN
041576,000056: # THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT
041577,000057: # DOWNLIST.
041578,000058:
041579,000059: # ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.
041580,000060:
041581,000061: # DOWNLINK LIST SELECTION:
041582,000062: # THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:
041583,000063: # 1. FRESH START
041584,000064: # 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED.
041585,000065: # 3. UPDATE PROGRAM (P27)
041586,000066: # 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G., AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62
041587,000067: # TRANSITIONS (COLOSSUS) ETC.).
041588,000068:
041589,000069: # DOWNLINK LIST RULES AND LIMITATIONS:
041590,000070: # READ SECTION(S) WHICH FOLLOW `DEBRIS' WRITEUP.
041591,000071:
041592,000072: # OUTPUT -- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E., 200 LGC
041593,000073: # COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.
041594,000074:
041595,000075: # ERASABLE INITIALIZATION REQUIRED -- NONE
041596,000076: # `DNTMGOTO' AND `DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.
041597,000077:
041598,000078: # DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) --
041599,000079: # LDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ.
041600,000080: # Page 988
041601,000081: # (No source on this page of the original assembly listing.)
041602,000082:
041603,000083: # Page 989
041604,000084: # DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE
041605,000085: # RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.
041606,000086:
041607,000087: # NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:
041608,000088: # 1. DOWNLISTS. DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE
041609,000089: # DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER
041610,000090: # EXECUTION.
041611,000091: # 2. EACH DOWNLINK LIST CONSISTES OF A CONTROL LIST AND A NUMBER OF
041612,000092: # SUBLISTS.
041613,000093: # 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER
041614,000094: # DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE
041615,000095: # CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.
041616,000096: # 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENEOUS DATA WHICH MUST BE
041617,000097: # SAVED IN A BUFFER DURING ONE DOWNRUPT.
041618,000098: # 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END
041619,000099: # OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD
041620,000100: # IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.
041621,000101: # 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS
041622,000102: # CREATED FOR THE DOWNLIST PROGRAM.
041623,000103: # A. 1DNADR 1-WORD DOWNLIST ADDRESS.
041624,000104: # SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT
041625,000105: # HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.
041626,000106: # B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6.
041627,000107: # SAME AS 1DNADR, BUT WTIH THE 4 UNUSED BITS OF THE ECADR FORMAT
041628,000108: # FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE-
041629,000109: # PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.
041630,000110: # C. DNCHAN DOWNLIST CHANNEL ADDRESS.
041631,000111: # SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO
041632,000112: # A PAIR OF CHANNELS FOR DOWN TELEMETRY.
041633,000113: # D. DNPTR DOWN-TELEMETRY SUBLIST POINTER.
041634,000114: # SAME AS CAF BUT TAGGES AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST.
041635,000115: # CAUTION --- A DNPTR CANNOT BE USED IN A SUBLIST.
041636,000116: # 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN
041637,000117: # A `1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY).
041638,000118: # 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.
041639,000119:
041640,000120: # DOWNLIST LIST RESTRICTIONS:
041641,000121: # (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE
041642,000122: # DONE)
041643,000123: # 1. SNAPSHOT DOWNLIST:
041644,000124: # (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E., 1DNADR'S): Q, 400, 1000, 1400, 2000, 2400, 3000, 3400.
041645,000125: # (B) CAN CONTAIN ONLY 1DNADR'S
041646,000126: # 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A DCA SO DOWNLINK LISTS CANNOT CONTAIN THE
041647,000127: # EQUIVALENT OF THE FOLLOWING ECADRS (I.E., IDNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777.
041648,000128: # (NOTE: TE TERM `EQUIVALENT' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)
041649,000129: # 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777
041650,000130: # Page 990
041651,000131: # 4. THE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINT PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE
041652,000132: # CONTROL SECTION OF THE DOWNLIST.
041653,000133: # 5. `DNCHAN 0' CANNOT BE USED.
041654,000134: # 6. `DNPTR 0' CANNOT BE USED.
041655,000135: # 7. DNPTR CANNOT APPEAR IN A SUBLIST.
041656,000136:
041657,000137: # EBANK SETTINGS
041658,000138: # IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS
041659,000139: # `GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME
041660,000140: # SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.)
041661,000141: # THAT BITS 15-12 OF EBANK ARE ZERO.
041662,000142:
041663,000143: # INITIALIZATION REQUIRED -- TO INTERRUPT CURRENT LIST AND START A NEW ONE.
041664,000144: # 1. ADRES OF DOWNLINK LIST INTO DNLSTADR
041665,000145: # 2. NEGONE INTO SUBLIST
041666,000146: # 3. NEGONE INTO DNECADR
041667,000147:
041668,000148: 22,3711 BANK 22
041669,000149: 05,2000 SETLOC DOWNTELM
041670,000150: 05,2000 BANK
041671,000151:
041672,000152: 05,3505 0340 EBANK= DNTMBUFF
041673,000153: 05,3505 COUNT* $$/DPROG
041674,000154: 05,3505 54016 DODOWNTM TS BANKRUPT
041675,000155: 05,3506 00006 EXTEND
041676,000156: 05,3507 22012 QXCH QRUPT # SAVE Q
041677,000157: 05,3510 34745 CA BIT7 # AT THE BEGINNING OF THE LIST THE WORD
041678,000158: 05,3511 00006 EXTEND # ORDER BIT WILL BE SET BACK TO ZERO.
041679,000159: 05,3512 02013 RAND CHAN13
041680,000160: 05,3513 10000 CCS A
041681,000161: 05,3514 00335 TC DNTMGOTO
041682,000162: 05,3515 06022 TC C13STALL
041683,000163: 05,3516 34745 CA BIT7
041684,000164: 05,3517 00006 EXTEND # SET WORD ORDER BIT TO 1 ONLY IF IT
041685,000165: 05,3520 05013 WOR CHAN13 # ALREADY ISN'T
041686,000166: 05,3521 00335 TC DNTMGOTO # GOTO APPROPRIATE PHASE OF PROGRAM
041687,000167:
041688,000168: 05,2000 SETLOC DOWNTELM
041689,000169: 05,2000 BANK
041690,000170:
041691,000171: 05,3522 37752 DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS
041692,000172: 05,3523 54337 TS SUBLIST # WORDS TO MINUS ONE
041693,000173: 05,3524 54336 TS DNECADR
041694,000174: 05,3525 33652 CA LDNPHAS2 # SET DNTMGOTO = 0 ALL SUSEQUENT DOWRUPTS
041695,000175: # Page 991
041696,000176: 05,3526 54335 TS DNTMGOTO # GO TO DNPHASE2
041697,000177: 05,3527 13543 TCF NEWLIST
041698,000178: 05,3530 10336 DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS
041699,000179: 05,3531 03665 DODNADR TC FETCH2WD # YES -- THEN FETCH THE NEXT 2 SP WORDS
041700,000180: 05,3532 77753 MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR
041701,000181: 05,3533 13534 TCF +1 # (ECADR OF 3776 + 74001 = 77777)
041702,000182:
041703,000183: 05,3534 10337 CCS SUBLIST # IS THE SUBLIST IN CONTROL
041704,000184: 05,3535 13700 TCF NEXTINSL # YES
041705,000185: 05,3536 74001 DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER
041706,000186:
041707,000187: 05,3537 30334 CHKLIST CA CTLIST
041708,000188: 05,3540 00006 EXTEND
041709,000189: 05,3541 63543 BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST
041710,000190: 05,3542 13550 TCF NEXTINCL
041711,000191: 05,3543 50333 NEWLIST INDEX DNLSTCOD
041712,000192: 05,3544 32441 CA DNTABLE # INITIALIZE CTLIST WITH
041713,000193: 05,3545 54334 TS CTLIST # STARTING ADDRESS OF NEW LIST
041714,000194: 05,3546 40333 CS DNLSTCOD
041715,000195: 05,3547 13767 TCF SENDID +3
041716,000196: 05,3550 50334 NEXTINCL INDEX CTLIST
041717,000197: 05,3551 30000 CA 0
041718,000198: 05,3552 10000 CCS A
041719,000199: 05,3553 24334 INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD
041720,000200: 05,3554 13560 TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0)
041721,000201: 05,3555 56334 XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING)
041722,000202: 05,3556 40000 COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA)
041723,000203: 05,3557 56334 XCH CTLIST # (ST IN )
041724,000204: 05,3560 24000 +4 INCR A # (CTLIST)
041725,000205: 05,3561 54336 TS DNECADR # SAVE DNADR
041726,000206: 05,3562 63532 AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR)
041727,000207: 05,3563 10000 CCS A
041728,000208: 05,3564 13570 TCF SETWO +1 # DON'T SET WORD ORDER CODE
041729,000209: 05,3565 47777 MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE)
041730,000210: 05,3566 13570 TCF SETWO +1 # DON'T SET WORD ORDER CODE
041731,000211: 05,3567 03612 SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO.
041732,000212: 05,3570 30336 +1 CA DNECADR # RELOAD A WITH THE DNADR.
041733,000213: 05,3571 63565 +2 AD MINB1314 # IS THIS A REGULAR DNADR?
041734,000214: 05,3572 00006 EXTEND
041735,000215: 05,3573 63665 BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO)
041736,000216: 05,3574 67744 AD MINB12 # NO. IS IT A POINTER (DNPTR) OR A
041737,000217: 05,3575 00006 EXTEND # CHANNEL(DNCHAN)
041738,000218: 05,3576 63623 BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO)
041739,000219:
041740,000220: 05,3577 00006 DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT'S A CHANNEL
041741,000221: 05,3600 50336 INDEX DNECADR
041742,000222: 05,3601 44000 INDEX 0 -4000 # (EXECUTED AS READ)
041743,000223: 05,3602 54001 TS L
041744,000224: 05,3603 00006 TC 6 # (EXECUTED AS EXTEND)
041745,000225: 05,3604 50336 INDEX DNECADR
041746,000226: # Page 992
041747,000227: 05,3605 43777 INDEX 0 -4001 # (EXECUTED AS READ)
041748,000228: 05,3606 54336 TS DNECADR # SET DNECADR
041749,000229: 05,3607 37752 CA NEGONE # TO MINUS
041750,000230: 05,3610 56336 XCH DNECADR # WHILE PRESERVING A.
041751,000231: 05,3611 13713 TCF DNTMEXIT # GO SEND CHANNELS
041752,000232:
041753,000233: 05,3612 00006 WOZERO EXTEND
041754,000234: 05,3613 23265 QXCH C13QSAV
041755,000235: 05,3614 22070 LXCH RUPTREG1
041756,000236: 05,3615 06022 TC C13STALL
041757,000237:
041758,000238: 05,3616 22070 LXCH RUPTREG1
041759,000239: 05,3617 44745 CS BIT7
041760,000240: 05,3620 00006 EXTEND
041761,000241: 05,3621 03013 WAND CHAN13 # SET WORD ORDER CODE TO ZERO
041762,000242: 05,3622 01265 TC C13QSAV
041763,000243:
041764,000244: 05,3623 50336 DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST
041765,000245: 05,3624 00000 0 0 # CLEAR AND ADD LIST ENTRY INTO A.
041766,000246: 05,3625 10000 CCS A # IS THIS A SNAPSHOT SUBLIST
041767,000247: 05,3626 30336 CA DNECADR # NO, IT IS A REGULAR SUBLIST.
041768,000248: 05,3627 13677 TCF DOSUBLST # A MUST NOT BE ZERO.
041769,000249:
041770,000250: 05,3630 56336 XCH DNECADR # YES. IT IS A SNAPSHOT SUBLIST.
041771,000251: 05,3631 54337 TS SUBLIST # C(DNECADR) INTO SUBLIST
041772,000252: 05,3632 34755 CAF ZERO # A INTO A
041773,000253: 05,3633 56336 XCH TMINDEX # (NOTE: TMINDEX = DNECADR)
041774,000254:
041775,000255: # THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.
041776,000256: # THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.
041777,000257: # THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED
041778,000258: # TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.
041779,000259: # THESE RULES ARE ......
041780,000260: # 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST
041781,000261: # 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.
041782,000262:
041783,000263: 05,3634 54003 SNAPLOOP TS EBANK # SET EBANK
041784,000264: 05,3635 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
041785,000265: 05,3636 00006 EXTEND
041786,000266: 05,3637 50000 INDEX A
041787,000267: 05,3640 E3,1401 EBANK= 1401
041788,000268: 05,3640 31402 DCA 1401 # PICK UP 2 SNAPSHOT WORDS.
041789,000269: 05,3641 0340 EBANK= DNTMBUFF
041790,000270: 05,3641 50336 INDEX TMINDEX
041791,000271: 05,3642 52341 DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER
041792,000272: 05,3643 24336 INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS.
041793,000273: 05,3644 24336 INCR TMINDEX
041794,000274: 05,3645 24337 SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT
041795,000275: # Page 993
041796,000276: 05,3646 50337 INDEX SUBLIST
041797,000277: 05,3647 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
041798,000278: 05,3650 10000 CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT.
041799,000279: 05,3651 13634 TCF SNAPLOOP # NOT LAST TWO.
041800,000280: 05,3652 03530 LDNPHAS2 GENADR DNPHASE2
041801,000281: 05,3653 54337 TS SUBLIST # YES, LAST. SAVE A.
041802,000282: 05,3654 37752 CA NEGONE # SET DNECADR AND
041803,000283: 05,3655 54336 TS DNECADR # SUBLIST POINTERS
041804,000284: 05,3656 56337 XCH SUBLIST # TO NEGATIVE VALUES
041805,000285: 05,3657 54003 TS EBANK
041806,000286: 05,3660 74357 MASK LOW8
041807,000287: 05,3661 00006 EXTEND
041808,000288: 05,3662 50000 INDEX A
041809,000289: 05,3663 E3,1401 EBANK= 1401
041810,000290: 05,3663 31402 DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT.
041811,000291: 05,3664 0340 EBANK= DNTMBUFF
041812,000292: 05,3664 13713 SNAPEND TCF DNTMEXIT # NOW TO SEND THEM.
041813,000293:
041814,000294: 05,3665 30336 FETCH2WD CA DNECADR
041815,000295: 05,3666 54003 TS EBANK # SET EBANK
041816,000296: 05,3667 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
041817,000297: 05,3670 54001 TS L
041818,000298: 05,3671 33536 CA DNADRDCR # DECREMENT COUNT AND ECADR
041819,000299: 05,3672 26336 ADS DNECADR
041820,000300: 05,3673 00006 EXTEND
041821,000301: 05,3674 50001 INDEX L
041822,000302: 05,3675 E3,1400 EBANK= 1400
041823,000303: 05,3675 31401 DCA 1400 # PICK UP 2 DATA WORDS
041824,000304: 05,3676 0340 EBANK= DNTMBUFF
041825,000305: 05,3676 13713 TCF DNTMEXIT # NOW GO SEND THEM.
041826,000306:
041827,000307: 05,3677 54337 DOSUBLST TS SUBLIST # SET SUBLIST POINTER
041828,000308: 05,3700 50337 NEXTINSL INDEX SUBLIST
041829,000309: 05,3701 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
041830,000310: 05,3702 10000 CCS A # IS IT THE END OF THE SUBLIST
041831,000311: 05,3703 24337 INCR SUBLIST # NO --
041832,000312: 05,3704 13710 TCF +4
041833,000313: 05,3705 54337 TS SUBLIST # SAVE A.
041834,000314: 05,3706 37752 CA NEGONE # SET SUBLIST TO MINUS
041835,000315: 05,3707 56337 XCH SUBLIST # RETRIEVE A.
041836,000316: 05,3710 24000 +4 INCR A
041837,000317: 05,3711 54336 TS DNECADR # SAVE DNADR
041838,000318: 05,3712 13571 TCF SETWO +2 # GO USE COMMON CODING (PROLEMS WOULD
041839,000319: # OCCUR IF THE PROGRAM ENCOUNTERED A
041840,000320: # DNPTR NOW)
041841,000321:
041842,000322: 05,3713 00006 DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT
041843,000323: 05,3714 01034 WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35
041844,000324: 05,3715 30001 CA L # RESPECTIVELY
041845,000325: 05,3716 00006 TMEXITL EXTEND
041846,000326: # Page 994
041847,000327: 05,3717 01035 WRITE DNTM2
041848,000328: 05,3720 15270 TMRESUME TCF RESUME # EXIT TELEMTRY PROGRAM VIA RESUME.
041849,000329:
041850,000330: 05,3721 7744 MINB12 EQUALS -1/8
041851,000331: 05,3721 0336 DNECADR EQUALS TMINDEX
041852,000332: 05,3721 0334 CTLIST EQUALS LDATALST
041853,000333: 05,3721 0337 SUBLIST EQUALS DNQ
041854,000334:
041855,000335: # MOD BY -- DENSMORE -- JUNE 1969 -- ELIMINATE ERASABLE DUMP COUNT
041856,000336:
041857,000337: # Page 996
041858,000338: # SUBROUTINE NAME -- DNDUMP
041859,000339:
041860,000340: # FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL 8 BANKS OF ERASABLE STORAGE TWICE. BANKS ARE SENT ONE AT A TIME
041861,000341: # EACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH
041862,000342: # EBANK. EBANKS ARE DUMPED IN ORDER (I.E., EBANK 0 FIRST, THEN EBANK1 ETC.)
041863,000343:
041864,000344: # CALLING SEQUENCE -- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.
041865,000345: # AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP
041866,000346: # WILL BEGIN.
041867,000347:
041868,000348: # ONCE INITITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY
041869,000349: # BY THE FOLLOWING:
041870,000350:
041871,000351: # 1. A FRESH START
041872,000352: # 2. COMPLETION OF BOTH COMPLETE DUMPS
041873,000353: # 3. AND INVOLUNTARILY BY A RESTART.
041874,000354:
041875,000355: # NORMAL EXIT MODE -- TCF DNPHASE1
041876,000356:
041877,000357: # ALARM OR ABORT MODE -- NONE
041878,000358:
041879,000359: # *SUBROUTINES CALLED -- NONE
041880,000360:
041881,000361: # ERASABLE INITIALIZATION REQUIRED --
041882,000362: # NONE
041883,000363:
041884,000364: # DEBRIS -- DUMPLOC, DUMPSW, DNTMGOTO, EBANK, AND CENTRAL REGISTERS
041885,000365:
041886,000366: # TIMING -- TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC
041887,000367: # TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100
041888,000368: # THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS
041889,000369:
041890,000370: # STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM --
041891,000371: # (REMINDER -- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)
041892,000372:
041893,000373: # DOWNLIST W
041894,000374: # WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS
041895,000375: # 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)
041896,000376: # 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS)
041897,000377: # 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD
041898,000378: # 4 TIME1 14120 1 TIME IN CENTISECONDS
041899,000379: # 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)
041900,000380: # 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)
041901,000381: # 7. 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)
041902,000382: # .
041903,000383: # .
041904,000384: # .
041905,000385: # 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)
041906,000386:
041907,000387: # NOTE -- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.
041908,000388: # THE BIT STRUCTURE OF DUMPLOC IS FOLLOW --
041909,000389: # X = NOT USED
041910,000390: # X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT
041911,000391: # COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS)
041912,000392: # EEE = EBANK BITS
041913,000393: # RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK
041914,000394:
041915,000395: 05,3721 34755 DNDUMPI CA ZERO # INITIALIZE DOWNLINK
041916,000396: 05,3722 54336 TS DUMPLOC # ERASABLE DUMP
041917,000397: 05,3723 03764 +2 TC SENDID # GO SEND ID AND SYNCH BITS
041918,000398:
041919,000399: # Page 996
041920,000400: 05,3724 33733 CA LDNDUMP1 # SET DNTMGOTO
041921,000401: 05,3725 54335 TS DNTMGOTO # TO LOCATION FOR NEXT PASS
041922,000402: 05,3726 30025 CA TIME1 # PLACE TIME1
041923,000403: 05,3727 56001 XCH L # INTO L
041924,000404: 05,3730 30336 CA DUMPLOC # AND ECADR OF THIS EBANK INTO A
041925,000405: 05,3731 13713 TCF DNTMEXIT # SEND DUMPLOC AND TIME1
041926,000406:
041927,000407: 05,3732 03734 LDNDUMP ADRES DNDUMP
041928,000408: 05,3733 03746 LDNDUMP1 ADRES DNDUMP1
041929,000409:
041930,000410: 05,3734 34752 DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC
041931,000411: 05,3735 26336 ADS DUMPLOC # TO NEXT DP WORD TO BE
041932,000412: 05,3736 74357 MASK LOW8 # DUMPED AND SAVE IT.
041933,000413: 05,3737 10000 CCS A # IS THIS THE BEGINNING OF A NEW EBANK
041934,000414: 05,3740 13750 TCF DNDUMP2 # NO -- THEN CONTINUE DUMPING
041935,000415: 05,3741 30336 CA DUMPLOC # YES -- IS THIS THE END OF THE
041936,000416: 05,3742 74737 MASK BIT13 # SECOND COMPLETE ERASABLE DUMP?
041937,000417: 05,3743 00006 EXTEND
041938,000418: 05,3744 13723 BZF DNDUMPI +2 # NO -- GO BACK AND INITIALIZE NEXT BANK
041939,000419: 05,3745 13522 TCF DNPHASE1 # YES -- SEND DOWNLIST AGAIN
041940,000420: 05,3746 33732 DNDUMP1 CA LDNDUMP # SET DNTMGOTO
041941,000421: 05,3747 54335 TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK
041942,000422:
041943,000423: 05,3750 30336 DNDUMP2 CA DUMPLOC
041944,000424: 05,3751 54003 TS EBANK # SET EBANK
041945,000425: 05,3752 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS.
041946,000426: 05,3753 54002 TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK
041947,000427: 05,3754 34754 CA NEG0 # UP ERASABLE REGISTERS TO THAT EDITING
041948,000428: 05,3755 54001 TS L # REGISTERS 20-23 WILL NOT BE ALTERED.)
041949,000429: 05,3756 50002 INDEX Q
041950,000430: 05,3757 E3,1400 EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR
041951,000431: 05,3757 71401 MASK 1401 # OF ERASABLE REGISTERS.
041952,000432: 05,3760 56001 XCH L
041953,000433: 05,3761 50002 INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR
041954,000434: 05,3762 71400 MASK 1400 # OF ERASABLE REGISTERS.
041955,000435: 05,3763 0340 EBANK= DNTMBUFF
041956,000436: 05,3763 13713 TCF DNTMEXIT # GO SEND THEM
041957,000437:
041958,000438: 05,3764 00006 SENDID EXTEND # ** ENTRANCE USED BY ERASABLE DUMP PROG. **
041959,000439: 05,3765 22335 QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO
041960,000440: 05,3766 35011 CAF ERASID # TO LOCATION FOLLOWING `TC SENDID'
041961,000441:
041962,000442: 05,3767 54001 TS L # ** ENTRANCE USED BY REGULAR DOWNLINK PG **
041963,000443: 05,3770 03612 TC WOZERO # GO SET WORD ORDER CODE TO ZERO
041964,000444: 05,3771 32065 CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L
041965,000445: 05,3772 56001 XCH L # AND ID BACK INTO A
041966,000446: 05,3773 13713 TCF DNTMEXIT # SEND DOWNLIST ID CODE(S).
041967,000447:
End of include-file DOWN_TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc