Source Code

042778,000001: # Copyright: Public domain. 042779,000002: # Filename: DOWN_TELEMETRY_PROGRAM.agc 042780,000003: # Purpose: Part of the source code for Luminary 1A build 099. 042781,000004: # It is part of the source code for the Lunar Module's (LM) 042782,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 042783,000006: # Assembler: yaYUL 042784,000007: # Contact: Ron Burkey <info@sandroid.org>. 042785,000008: # Website: www.ibiblio.org/apollo. 042786,000009: # Pages: 988-997 042787,000010: # Mod history: 2009-05-24 RSB Adapted from the corresponding 042788,000011: # Luminary131 file, using page 042789,000012: # images from Luminary 1A. 042790,000013: # 2011-01-06 JL Fixed pseudo-label indentation. 042791,000014: 042792,000015: # This source code has been transcribed or otherwise adapted from 042793,000016: # digitized images of a hardcopy from the MIT Museum. The digitization 042794,000017: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 042795,000018: # the Museum. Many thanks to both. The images (with suitable reduction 042796,000019: # in storage size and consequent reduction in image quality as well) are 042797,000020: # available online at www.ibiblio.org/apollo. If for some reason you 042798,000021: # find that the images are illegible, contact me at info@sandroid.org 042799,000022: # about getting access to the (much) higher-quality images which Paul 042800,000023: # actually created. 042801,000024: 042802,000025: # Notations on the hardcopy document read, in part: 042803,000026: 042804,000027: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 042805,000028: # 16:27 JULY 14, 1969 042806,000029: 042807,000030: # Page 988 042808,000031: # PROGRAM NAME -- DOWN TELEMETRY PROGRAM 042809,000032: # MOD NO. -- 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE 042810,000033: # PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE. 042811,000034: # THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS. REFER TO DOWNLINK 042812,000035: # LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGE WILL NOT AFFECT THE GROUND PROCESSING 042813,000036: # OF DOWN TELEMETRY DATA. 042814,000037: # MOD BY -- KILROY, SMITH, DEWITT 042815,000038: # DATE -- 02 OCT 67 042816,000039: # AUTHORS -- KILROY, SMITH, DWWITT, DEWOLF, FAGIN 042817,000040: # LOG SECTION -- DOWN-TELEMETRY PROGRAM 042818,000041: 042819,000042: # FUNCTIONAL DESCRIPTION -- THIS ROUTINE IS INITIATED BY TELEMETRY END 042820,000043: # PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS 042821,000044: # AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS 042822,000045: # EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE 042823,000046: # AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT 042824,000047: # CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE 042825,000048: # LGC IN SERIAL FASHION. 042826,000049: 042827,000050: # THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS 042828,000051: # OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN 042829,000052: # CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE 042830,000053: # OF SENDING 200 AGC WORDS EVERY 2 SECONDS. 042831,000054: 042832,000055: # CALLING SEQUENCE -- NONE 042833,000056: # PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A 042834,000057: # RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH 042835,000058: # IN EFFECT IS A RESUME. 042836,000059: 042837,000060: # SUBROUTINES CALLED -- NONE 042838,000061: 042839,000062: # NORMAL EXIT MODE -- TCF RESUME 042840,000063: 042841,000064: # ALARM OR ABORT EXIT MODE -- NONE 042842,000065: 042843,000066: # RESTART PROTECTION: 042844,000067: # ON A FRESH START AND RESTART THE `STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY 042845,000068: # DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E., CURRENT CONTENTS OF DNLSTADR). THIS HAS THE 042846,000069: # EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN 042847,000070: # THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT 042848,000071: # DOWNLIST. 042849,000072: 042850,000073: # ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35. 042851,000074: 042852,000075: # DOWNLINK LIST SELECTION: 042853,000076: # THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING: 042854,000077: # 1. FRESH START 042855,000078: # 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED. 042856,000079: # 3. UPDATE PROGRAM (P27) 042857,000080: # 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G., AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62 042858,000081: # TRANSITION (COLOSSUS) ETC.). 042859,000082: 042860,000083: # DOWNLINK LIST RULES AND LIMITATIONS: 042861,000084: # READ SECTION(S) WHICH FOLLOW `DEBRIS' WRITEUP. 042862,000085: 042863,000086: # OUTPUT -- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E., 200 LGC 042864,000087: # COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK. 042865,000088: 042866,000089: # ERASABLE INITIALIZATION REQUIRED -- NONE 042867,000090: # `DNTMGOTO' AND `DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM. 042868,000091: 042869,000092: # DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) -- 042870,000093: # LDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ. 042871,000094: # Page 989 (empty page) 042872,000095: # Page 990 042873,000096: # DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE 042874,000097: # RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER. 042875,000098: 042876,000099: # NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM: 042877,000100: # 1. DOWNLISTS. DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE 042878,000101: # DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER 042879,000102: # EXECUTION. 042880,000103: # 2. EACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF 042881,000104: # SUBLISTS. 042882,000105: # 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER 042883,000106: # DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE 042884,000107: # CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS. 042885,000108: # 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENEOUS DATA WHICH MUST BE 042886,000109: # SAVED IN A BUFFER DURING ONE DOWNRUPT. 042887,000110: # 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END 042888,000111: # OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD 042889,000112: # IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER. 042890,000113: # 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS 042891,000114: # CREATED FOR THE DOWNLIST PROGRAM. 042892,000115: # A. 1DNADR 1-WORD DOWNLIST ADDRESS. 042893,000116: # SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT 042894,000117: # HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY. 042895,000118: # B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6. 042896,000119: # SAME AS 1DNADR, BUT WTIH THE 4 UNUSED BITS OF THE ECADR FORMAT 042897,000120: # FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE- 042898,000121: # PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY. 042899,000122: # C. DNCHAN DOWNLIST CHANNEL ADDRESS. 042900,000123: # SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO 042901,000124: # A PAIR OF CHANNELS FOR DOWN TELEMETRY. 042902,000125: # D. DNPTR DOWN-TELEMETRY SUBLIST POINTER. 042903,000126: # SAME AS CAF BUT TAGGED AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST. 042904,000127: # CAUTION --- A DNPTR CANNOT BE USED IN A SUBLIST. 042905,000128: # 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN 042906,000129: # A `1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY). 042907,000130: # 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK. 042908,000131: 042909,000132: # DOWNLIST LIST RESTRICTIONS: 042910,000133: # (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE 042911,000134: # DONE) 042912,000135: # 1. SNAPSHOT DOWNLIST: 042913,000136: # (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E., 1DNADR'S): Q, 400, 1000, 1400, 2000, 2400, 3000, 3400. 042914,000137: # (B) CAN CONTAIN ONLY 1DNADR'S 042915,000138: # 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A DCA SO DOWNLINK LISTS CANNOT CONTAIN THE 042916,000139: # EQUIVALENT OF THE FOLLOWING ECADRS (I.E., 1DNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777. 042917,000140: # (NOTE: THE TERM `EQUIVALENT' MEANT THAT THE 1DNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS) 042918,000141: # 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777 042919,000142: # Page 991 042920,000143: # 4. THE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE 042921,000144: # CONTROL SECTION OF THE DOWNLIST. 042922,000145: # 5. `DNCHAN 0' CANNOT BE USED. 042923,000146: # 6. `DNPTR 0' CANNOT BE USED. 042924,000147: # 7. DNPTR CANNOT APPEAR IN A SUBLIST. 042925,000148: 042926,000149: # EBANK SETTINGS 042927,000150: # IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS 042928,000151: # `GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME 042929,000152: # SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.) 042930,000153: # THAT BITS 15-12 OF EBANK ARE ZERO. 042931,000154: 042932,000155: # INITIALIZATION REQUIRED -- TO INTERRUPT CURRENT LIST AND START A NEW ONE. 042933,000156: # 1. ADRES OF DOWNLINK LIST INTO DNLSTADR 042934,000157: # 2. NEGONE INTO SUBLIST 042935,000158: # 3. NEGONE INTO DNECADR 042936,000159: 042937,000160: 22,3711 BANK 22 042938,000161: 05,2000 SETLOC DOWNTELM 042939,000162: 05,2000 BANK 042940,000163: 042941,000164: 05,3506 0340 EBANK= DNTMBUFF 042942,000165: 042943,000166: 05,3506 COUNT* $$/DPROG 042944,000167: 05,3506 54016 DODOWNTM TS BANKRUPT 042945,000168: 05,3507 00006 EXTEND 042946,000169: 05,3510 22012 QXCH QRUPT # SAVE Q 042947,000170: 05,3511 13763 TCF WOTEST 042948,000171: 05,3512 00006 WO1 EXTEND # SET WORD ORDER BIT TO 1 ONLY IF IT 042949,000172: 05,3513 05013 WOR CHAN13 # ALREADY ISN'T 042950,000173: 05,3514 00335 TC DNTMGOTO # GOTO APPROPRIATE PHASE OF PROGRAM 042951,000174: 042952,000175: 05,3515 37747 DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS 042953,000176: 05,3516 54337 TS SUBLIST # WORDS TO MINUS ONE 042954,000177: 05,3517 54336 TS DNECADR 042955,000178: 05,3520 33640 CA LDNPHAS2 # SET DNTMGOTO = 0 ALL SUSEQUENT DOWRUPTS 042956,000179: 05,3521 54335 TS DNTMGOTO # GO TO DNPHASE2 042957,000180: 05,3522 13536 TCF NEWLIST 042958,000181: 05,3523 10336 DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS 042959,000182: 05,3524 03653 DODNADR TC FETCH2WD # YES -- THEN FETCH THE NEXT 2 SP WORDS 042960,000183: 05,3525 77753 MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR 042961,000184: 05,3526 13527 TCF +1 # (ECADR OF 3776 + 74001 = 77777) 042962,000185: 042963,000186: 05,3527 10337 CCS SUBLIST # IS THE SUBLIST IN CONTROL 042964,000187: 05,3530 13666 TCF NEXTINSL # YES 042965,000188: # Page 992 042966,000189: 05,3531 74001 DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER 042967,000190: 042968,000191: 05,3532 30334 CHKLIST CA CTLIST 042969,000192: 05,3533 00006 EXTEND 042970,000193: 05,3534 63536 BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST 042971,000194: 05,3535 13543 TCF NEXTINCL 042972,000195: 05,3536 50332 NEWLIST INDEX DNLSTCOD 042973,000196: 05,3537 32441 CA DNTABLE # INITIALIZE CTLIST WITH 042974,000197: 05,3540 54334 TS CTLIST # STARTING ADDRESS OF NEW LIST 042975,000198: 05,3541 40332 CS DNLSTCOD 042976,000199: 05,3542 13756 TCF SENDID +3 042977,000200: 05,3543 50334 NEXTINCL INDEX CTLIST 042978,000201: 05,3544 30000 CA 0 042979,000202: 05,3545 10000 CCS A 042980,000203: 05,3546 24334 INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD 042981,000204: 05,3547 13553 TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0) 042982,000205: 05,3550 56334 XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING) 042983,000206: 05,3551 40000 COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA) 042984,000207: 05,3552 56334 XCH CTLIST # (ST IN ) 042985,000208: 05,3553 24000 +4 INCR A # (CTLIST) 042986,000209: 05,3554 54336 TS DNECADR # SAVE DNADR 042987,000210: 05,3555 63525 AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR) 042988,000211: 05,3556 10000 CCS A 042989,000212: 05,3557 13563 TCF SETWO +1 # DON'T SET WORD ORDER CODE 042990,000213: 05,3560 47777 MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE) 042991,000214: 05,3561 13563 TCF SETWO +1 # DON'T SET WORD ORDER CODE 042992,000215: 05,3562 03605 SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO. 042993,000216: 05,3563 30336 +1 CA DNECADR # RELOAD A WITH THE DNADR. 042994,000217: 05,3564 63560 +2 AD MINB1314 # IS THIS A REGULAR DNADR? 042995,000218: 05,3565 00006 EXTEND 042996,000219: 05,3566 63653 BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO) 042997,000220: 05,3567 67741 AD MINB12 # NO. IS IT A POINTER (DNPTR) OR A 042998,000221: 05,3570 00006 EXTEND # CHANNEL(DNCHAN) 042999,000222: 05,3571 63611 BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO) 043000,000223: 043001,000224: 05,3572 00006 DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT'S A CHANNEL 043002,000225: 05,3573 50336 INDEX DNECADR 043003,000226: 05,3574 44000 INDEX 0 -4000 # (EXECUTED AS READ) 043004,000227: 05,3575 54001 TS L 043005,000228: 05,3576 00006 TC 6 # (EXECUTED AS EXTEND) 043006,000229: 05,3577 50336 INDEX DNECADR 043007,000230: 05,3600 43777 INDEX 0 -4001 # (EXECUTED AS READ) 043008,000231: 05,3601 54336 TS DNECADR # SET DNECADR 043009,000232: 05,3602 37747 CA NEGONE # TO MINUS 043010,000233: 05,3603 56336 XCH DNECADR # WHILE PRESERVING A. 043011,000234: 05,3604 13701 TCF DNTMEXIT # GO SEND CHANNELS 043012,000235: 043013,000236: 05,3605 44745 WOZERO CS BIT7 043014,000237: 05,3606 00006 EXTEND 043015,000238: 05,3607 03013 WAND CHAN13 # SET WORD ORDER CODE TO ZERO 043016,000239: # Page 993 043017,000240: 05,3610 00002 TC Q # RETURN TO CALLER 043018,000241: 043019,000242: 05,3611 50336 DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST 043020,000243: 05,3612 00000 0 0 # CLEAR AND ADD LIST ENTRY INTO A. 043021,000244: 05,3613 10000 CCS A # IS THIS A SNAPSHOT SUBLIST 043022,000245: 05,3614 30336 CA DNECADR # NO, IT IS A REGULAR SUBLIST. 043023,000246: 05,3615 13665 TCF DOSUBLST # A MUST NOT BE ZERO. 043024,000247: 043025,000248: 05,3616 56336 XCH DNECADR # YES. IT IS A SNAPSHOT SUBLIST. 043026,000249: 05,3617 54337 TS SUBLIST # C(DNECADR) INTO SUBLIST 043027,000250: 05,3620 34755 CAF ZERO # A INTO A 043028,000251: 05,3621 56336 XCH TMINDEX # (NOTE: TMINDEX = DNECADR) 043029,000252: 043030,000253: # THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS. 043031,000254: # THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY. 043032,000255: # THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED 043033,000256: # TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST. 043034,000257: # THESE RULES ARE ...... 043035,000258: # 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST 043036,000259: # 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK. 043037,000260: 043038,000261: 05,3622 54003 SNAPLOOP TS EBANK # SET EBANK 043039,000262: 05,3623 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS 043040,000263: 05,3624 00006 EXTEND 043041,000264: 05,3625 50000 INDEX A 043042,000265: 05,3626 E3,1401 EBANK= 1401 043043,000266: 05,3626 31402 DCA 1401 # PICK UP 2 SNAPSHOT WORDS. 043044,000267: 05,3627 0340 EBANK= DNTMBUFF 043045,000268: 05,3627 50336 INDEX TMINDEX 043046,000269: 05,3630 52341 DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER 043047,000270: 05,3631 24336 INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS. 043048,000271: 05,3632 24336 INCR TMINDEX 043049,000272: 05,3633 24337 SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT 043050,000273: 05,3634 50337 INDEX SUBLIST 043051,000274: 05,3635 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST) 043052,000275: 05,3636 10000 CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT. 043053,000276: 05,3637 13622 TCF SNAPLOOP # NOT LAST TWO. 043054,000277: 05,3640 03523 LDNPHAS2 GENADR DNPHASE2 043055,000278: 05,3641 54337 TS SUBLIST # YES, LAST. SAVE A. 043056,000279: 05,3642 37747 CA NEGONE # SET DNECADR AND 043057,000280: 05,3643 54336 TS DNECADR # SUBLIST POINTERS 043058,000281: 05,3644 56337 XCH SUBLIST # TO NEGATIVE VALUES 043059,000282: 05,3645 54003 TS EBANK 043060,000283: 05,3646 74357 MASK LOW8 043061,000284: 05,3647 00006 EXTEND 043062,000285: 05,3650 50000 INDEX A 043063,000286: 05,3651 E3,1401 EBANK= 1401 043064,000287: 05,3651 31402 DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT. 043065,000288: # Page 994 043066,000289: 05,3652 0340 EBANK= DNTMBUFF 043067,000290: 05,3652 13701 SNAPEND TCF DNTMEXIT # NOW TO SEND THEM. 043068,000291: 043069,000292: 05,3653 30336 FETCH2WD CA DNECADR 043070,000293: 05,3654 54003 TS EBANK # SET EBANK 043071,000294: 05,3655 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS 043072,000295: 05,3656 54001 TS L 043073,000296: 05,3657 33531 CA DNADRDCR # DECREMENT COUNT AND ECADR 043074,000297: 05,3660 26336 ADS DNECADR 043075,000298: 05,3661 00006 EXTEND 043076,000299: 05,3662 50001 INDEX L 043077,000300: 05,3663 E3,1400 EBANK= 1400 043078,000301: 05,3663 31401 DCA 1400 # PICK UP 2 DATA WORDS 043079,000302: 05,3664 0340 EBANK= DNTMBUFF 043080,000303: 05,3664 13701 TCF DNTMEXIT # NOW GO SEND THEM. 043081,000304: 043082,000305: 05,3665 54337 DOSUBLST TS SUBLIST # SET SUBLIST POINTER 043083,000306: 05,3666 50337 NEXTINSL INDEX SUBLIST 043084,000307: 05,3667 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST) 043085,000308: 05,3670 10000 CCS A # IS IT THE END OF THE SUBLIST 043086,000309: 05,3671 24337 INCR SUBLIST # NO -- 043087,000310: 05,3672 13676 TCF +4 043088,000311: 05,3673 54337 TS SUBLIST # SAVE A. 043089,000312: 05,3674 37747 CA NEGONE # SET SUBLIST TO MINUS 043090,000313: 05,3675 56337 XCH SUBLIST # RETRIEVE A. 043091,000314: 05,3676 24000 +4 INCR A 043092,000315: 05,3677 54336 TS DNECADR # SAVE DNADR 043093,000316: 05,3700 13564 TCF SETWO +2 # GO USE COMMON CODING (PROLEMS WOULD 043094,000317: # OCCUR IF THE PROGRAM ENCOUNTERED A 043095,000318: # DNPTR NOW) 043096,000319: 043097,000320: 05,3701 00006 DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT 043098,000321: 05,3702 01034 WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35 043099,000322: 05,3703 30001 CA L # RESPECTIVELY 043100,000323: 05,3704 00006 TMEXITL EXTEND 043101,000324: 05,3705 01035 WRITE DNTM2 043102,000325: 05,3706 15270 TMRESUME TCF RESUME # EXIT TELEMTRY PROGRAM VIA RESUME. 043103,000326: 043104,000327: 05,3707 7741 MINB12 EQUALS -1/8 043105,000328: 05,3707 0336 DNECADR EQUALS TMINDEX 043106,000329: 05,3707 0334 CTLIST EQUALS LDATALST 043107,000330: 05,3707 0337 SUBLIST EQUALS DNQ 043108,000331: 043109,000332: # Page 995 043110,000333: # SUBROUTINE NAME -- DNDUMP 043111,000334: 043112,000335: # FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL ERASABLE STORAGE 'N' TIMES. (N=1 TO 4). BANKS ARE SENT ONE AT A TIME 043113,000336: # EACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH 043114,000337: # EBANK. EBANKS ARE DUMPED IN ORDER (I.E., EBANK 0 FIRST, THEN EBANK1 ETC.) 043115,000338: 043116,000339: # CALLING SEQUENCE -- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP. 043117,000340: # AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP 043118,000341: # WILL BEGIN. 043119,000342: 043120,000343: # ONCE INITITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY 043121,000344: # BY THE FOLLOWING: 043122,000345: 043123,000346: # 1. A FRESH START 043124,000347: # 2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT). NOTE THAT DUMPCNT 043125,000348: # CAN BE ALTERED BY A V21N01. 043126,000349: # 3. AND INVOLUNTARILY BY A RESTART. 043127,000350: 043128,000351: # NORMAL EXIT MODE -- TCF DNPHASE1 043129,000352: 043130,000353: # ALARM OR ABORT MODE -- NONE 043131,000354: 043132,000355: # *SUBROUTINES CALLED -- NONE 043133,000356: 043134,000357: # ERASABLE INITIALIZATION REQUIRED -- 043135,000358: # DUMPCNT OCT 20000 IF 4 COMPLETE ERASABLE DUMPS ARE DESIRED 043136,000359: # DUMPCNT OCT 10000 IF 2 COMPLETE ERASABLE DUMPS ARE DESIRED 043137,000360: # DUMPCNT OCT 04000 IF 1 COMPLETE ERASABLE DUMP IS DESIRED 043138,000361: 043139,000362: # DEBRIS -- DUMPLOC, DUMPSW, DNTMGOTO, EBANK, AND CENTRAL REGISTERS 043140,000363: 043141,000364: # TIMING -- TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC 043142,000365: # TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100 043143,000366: # THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS 043144,000367: 043145,000368: # STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM -- 043146,000369: # (REMINDER -- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP) 043147,000370: 043148,000371: # DOWNLIST W 043149,000372: # WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS 043150,000373: # 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM) 043151,000374: # 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS) 043152,000375: # 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD 043153,000376: # 4 TIME1 14120 1 TIME IN CENTISECONDS 043154,000377: # 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400) 043155,000378: # 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401) 043156,000379: # 7 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402) 043157,000380: # . 043158,000381: # . 043159,000382: # . 043160,000383: # 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777) 043161,000384: 043162,000385: # NOTE -- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT. 043163,000386: # THE BIT STRUCTURE OF DUMPLOC IS FOLLOW -- 043164,000387: # X = NOT USED 043165,000388: # X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT 043166,000389: # COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS) 043167,000390: # EEE = EBANK BITS 043168,000391: # RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK 043169,000392: 043170,000393: # Page 996 043171,000394: 05,3707 34755 DNDUMPI CA ZERO # INITIALIZE DOWNLINK 043172,000395: 05,3710 54336 TS DUMPLOC # ERASABLE DUMP 043173,000396: 05,3711 03753 +2 TC SENDID # GO SEND ID AND SYNCH BITS 043174,000397: 05,3712 33721 CA LDNDUMP1 # SET DNTMGOTO 043175,000398: 05,3713 54335 TS DNTMGOTO # TO LOCATION FOR NEXT PASS 043176,000399: 05,3714 30025 CA TIME1 # PLACE TIME1 043177,000400: 05,3715 56001 XCH L # INTO L 043178,000401: 05,3716 30336 CA DUMPLOC # AND ECADR OF THIS EBANK INTO A 043179,000402: 05,3717 13701 TCF DNTMEXIT # SEND DUMPLOC AND TIME1 043180,000403: 043181,000404: 05,3720 03722 LDNDUMP ADRES DNDUMP 043182,000405: 05,3721 03735 LDNDUMP1 ADRES DNDUMP1 043183,000406: 043184,000407: 05,3722 34752 DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC 043185,000408: 05,3723 26336 ADS DUMPLOC # TO NEXT DP WORD TO BE 043186,000409: 05,3724 74357 MASK LOW8 # DUMPED AND SAVE IT. 043187,000410: 05,3725 10000 CCS A # IS THIS THE BEGINNING OF A NEW EBANK 043188,000411: 05,3726 13737 TCF DNDUMP2 # NO -- THEN CONTINUE DUMPING 043189,000412: 05,3727 30336 CA DUMPLOC # YES -- IS THIS THE END OF THE 043190,000413: 05,3730 70333 MASK DUMPCNT # N TH (N = 1 TO 4) COMPLETE ERASABLE 043191,000414: 05,3731 77722 MASK PRIO34 # DUMP (BIT14 FOR 4, BIT13 FOR 2 OR BIT12 043192,000415: 05,3732 10000 CCS A # FOR 1 COMPLETE ERASABLE DUMP(S)). 043193,000416: 05,3733 13515 TCF DNPHASE1 # YES -- START SENDING INTERRUPTED DOWNLIST 043194,000417: # AGAIN 043195,000418: 05,3734 13711 TCF DNDUMPI +2 # NO -- GO BACK AND INITIALIZE NEXT BANK 043196,000419: 043197,000420: 05,3735 33720 DNDUMP1 CA LDNDUMP # SET DNTMGOTO 043198,000421: 05,3736 54335 TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK 043199,000422: 043200,000423: 05,3737 30336 DNDUMP2 CA DUMPLOC 043201,000424: 05,3740 54003 TS EBANK # SET EBANK 043202,000425: 05,3741 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS. 043203,000426: 05,3742 54002 TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK 043204,000427: 05,3743 34754 CA NEG0 # UP ERASABLE REGISTERS SO THAT EDITING 043205,000428: 05,3744 54001 TS L # REGISTERS 20-23 WILL NOT BE ALTERED.) 043206,000429: 05,3745 50002 INDEX Q 043207,000430: 05,3746 E3,1400 EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR 043208,000431: 05,3746 71401 MASK 1401 # OF ERASABLE REGISTERS. 043209,000432: 05,3747 56001 XCH L 043210,000433: 05,3750 50002 INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR 043211,000434: 05,3751 71400 MASK 1400 # OF ERASABLE REGISTERS. 043212,000435: 05,3752 0340 EBANK= DNTMBUFF 043213,000436: 05,3752 13701 TCF DNTMEXIT # GO SEND THEM 043214,000437: 043215,000438: 05,3753 00006 SENDID EXTEND # ** ENTRANCE USED BY ERASABLE DUMP PROG. ** 043216,000439: 05,3754 22335 QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO 043217,000440: 05,3755 35011 CAF ERASID # TO LOCATION FOLLOWING `TC SENDID' 043218,000441: 043219,000442: 05,3756 54001 TS L # ** ENTRANCE USED BY REGULAR DOWNLINK PG ** 043220,000443: # Page 997 043221,000444: 05,3757 03605 TC WOZERO # GO SET WORD ORDER CODE TO ZERO 043222,000445: 05,3760 32065 CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L 043223,000446: 05,3761 56001 XCH L # AND ID BACK INTO A 043224,000447: 05,3762 13701 TCF DNTMEXIT # SEND DOWNLIST ID CODE(S). 043225,000448: 043226,000449: 05,3763 34745 WOTEST CA BIT7 # AT THE BEGINNING OF THE LIST THE WORD 043227,000450: 05,3764 00006 EXTEND # ORDER BIT WILL BE SET BACK TO ZERO 043228,000451: 05,3765 02013 RAND CHAN13 043229,000452: 05,3766 10000 CCS A 043230,000453: 05,3767 00335 TC DNTMGOTO 043231,000454: 05,3770 34745 CA BIT7 043232,000455: 05,3771 13512 TCF WO1 043233,000456: End of include-file DOWN_TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc