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