Source Code

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