Source Code

046817,000001: # Copyright: Public domain. 046818,000002: # Filename: DOWN_TELEMETRY_PROGRAM.agc 046819,000003: # Purpose: Part of the source code for Colossus, build 249. 046820,000004: # It is part of the source code for the Command Module's (CM) 046821,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 046822,000006: # Assembler: yaYUL 046823,000007: # Reference: Starts on p. 1075 of 1701.pdf. 046824,000008: # Contact: Ron Burkey <info@sandroid.org>. 046825,000009: # Website: www.ibiblio.org/apollo. 046826,000010: # Mod history: 08/28/04 RSB. Adapted from corresponding Luminary 131 file. 046827,000011: 046828,000012: # The contents of the "Colossus249" files, in general, are transcribed 046829,000013: # from a scanned document obtained from MIT's website, 046830,000014: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 046831,000015: # document read, in part: 046832,000016: 046833,000017: # Assemble revision 249 of AGC program Colossus by NASA 046834,000018: # 2021111-041. October 28, 1968. 046835,000019: 046836,000020: # This AGC program shall also be referred to as 046837,000021: # Colossus 1A 046838,000022: 046839,000023: # Prepared by 046840,000024: # Massachussets Institute of Technology 046841,000025: # 75 Cambridge Parkway 046842,000026: # Cambridge, Massachusetts 046843,000027: # under NASA contract NAS 9-4065. 046844,000028: 046845,000029: # Refer directly to the online document mentioned above for further information. 046846,000030: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 046847,000031: 046848,000032: # In some cases, where the source code for Luminary 131 overlaps that of 046849,000033: # Colossus 249, this code is instead copied from the corresponding Luminary 131 046850,000034: # source file, and then is proofed to incorporate any changes. 046851,000035: 046852,000036: # Page 1075 046853,000037: # PROGRAM NAME -- DOWN TELEMETRY PROGRAM 046854,000038: # MOD NO. -- 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE 046855,000039: # PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE. 046856,000040: # THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS. REFER TO DOWNLINK 046857,000041: # LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGES WILL NOT AFFECT THE GROUND PROCESSING 046858,000042: # OF DOWN TELEMETRY DATA. 046859,000043: # MOD BY -- KILROY, SMITH, DEWITT 046860,000044: # DATE -- 02 OCT 67 046861,000045: # AUTHORS -- KILROY, SMITH, DWWITT, DEWOLF, FAGIN 046862,000046: # LOG SECTION -- DOWN-TELEMETRY PROGRAM 046863,000047: 046864,000048: # FUNCTIONAL DESCRIPTION -- THIS ROUTINE IS INITIATED BY TELEMETRY END 046865,000049: # PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS 046866,000050: # AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS 046867,000051: # EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE 046868,000052: # AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT 046869,000053: # CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE 046870,000054: # LGC IN SERIAL FASHION. 046871,000055: 046872,000056: # THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS 046873,000057: # OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN 046874,000058: # CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE 046875,000059: # OF SENDING 200 AGC WORDS EVERY 2 SECONDS. 046876,000060: 046877,000061: # CALLING SEQUENCE -- NONE 046878,000062: # PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A 046879,000063: # RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH 046880,000064: # IN EFFECT IS A RESUME. 046881,000065: 046882,000066: # SUBROUTINES CALLED -- NONE 046883,000067: 046884,000068: # NORMAL EXIT MODE -- TCF RESUME 046885,000069: 046886,000070: # ALARM OR ABORT EXIT MODE -- NONE 046887,000071: 046888,000072: # RESTART PROTECTION: 046889,000073: # ON A FRESH START AND RESTART THE `STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY 046890,000074: # DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E., CURRENT CONTENTS OF DNLSTADR). THIS HAS THE 046891,000075: # EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN 046892,000076: # THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT 046893,000077: # DOWNLIST. 046894,000078: 046895,000079: # ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35. 046896,000080: 046897,000081: # DOWNLINK LIST SELECTION: 046898,000082: # THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING: 046899,000083: # 1. FRESH START 046900,000084: # 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED. 046901,000085: # 3. UPDATE PROGRAM (P27) 046902,000086: # 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G., AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62 046903,000087: # TRANSITIONS (COLOSSUS) ETC.). 046904,000088: 046905,000089: # DOWNLINK LIST RULES AND LIMITATIONS: 046906,000090: # READ SECTION(S) WHICH FOLLOW `DEBRIS' WRITEUP. 046907,000091: 046908,000092: # OUTPUT -- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E., 200 LGC 046909,000093: # COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK. 046910,000094: 046911,000095: # ERASABLE INITIALIZATION REQUIRED -- NONE 046912,000096: # `DNTMGOTO' AND `DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM. 046913,000097: 046914,000098: # DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) -- 046915,000099: # LDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ. 046916,000100: # Page 1076 046917,000101: # (No source on this page of the original assembly listing.) 046918,000102: 046919,000103: # Page 1077 046920,000104: # DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE 046921,000105: # RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER. 046922,000106: 046923,000107: # NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM: 046924,000108: # 1. DOWNLISTS. DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE 046925,000109: # DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER 046926,000110: # EXECUTION. 046927,000111: # 2. EACH DOWNLINK LIST CONSISTES OF A CONTROL LIST AND A NUMBER OF 046928,000112: # SUBLISTS. 046929,000113: # 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER 046930,000114: # DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE 046931,000115: # CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS. 046932,000116: # 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENEOUS DATA WHICH MUST BE 046933,000117: # SAVED IN A BUFFER DURING ONE DOWNRUPT. 046934,000118: # 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END 046935,000119: # OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD 046936,000120: # IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER. 046937,000121: # 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS 046938,000122: # CREATED FOR THE DOWNLIST PROGRAM. 046939,000123: # A. 1DNADR 1-WORD DOWNLIST ADDRESS. 046940,000124: # SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT 046941,000125: # HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY. 046942,000126: # B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6. 046943,000127: # SAME AS 1DNADR, BUT WTIH THE 4 UNUSED BITS OF THE ECADR FORMAT 046944,000128: # FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE- 046945,000129: # PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY. 046946,000130: # C. DNCHAN DOWNLIST CHANNEL ADDRESS. 046947,000131: # SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO 046948,000132: # A PAIR OF CHANNELS FOR DOWN TELEMETRY. 046949,000133: # D. DNPTR DOWN-TELEMETRY SUBLIST POINTER. 046950,000134: # SAME AS CAF BUT TAGGES AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST. 046951,000135: # CAUTION --- A DNPTR CANNOT BE USED IN A SUBLIST. 046952,000136: # 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN 046953,000137: # A `1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY). 046954,000138: # 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK. 046955,000139: 046956,000140: # DOWNLIST LIST RESTRICTIONS: 046957,000141: # (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE 046958,000142: # DONE) 046959,000143: # 1. SNAPSHOT DOWNLIST: 046960,000144: # (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E., 1DNADR'S): Q, 400, 1000, 1400, 2000, 2400, 3000, 3400. 046961,000145: # (B) CAN CONTAIN ONLY 1DNADR'S 046962,000146: # 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A DCA SO DOWNLINK LISTS CANNOT CONTAIN THE 046963,000147: # EQUIVALENT OF THE FOLLOWING ECADRS (I.E., IDNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777. 046964,000148: # (NOTE: TE TERM `EQUIVALENT' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS) 046965,000149: # 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777 046966,000150: # Page 1078 046967,000151: # 4. THE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINT PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE 046968,000152: # CONTROL SECTION OF THE DOWNLIST. 046969,000153: # 5. `DNCHAN 0' CANNOT BE USED. 046970,000154: # 6. `DNPTR 0' CANNOT BE USED. 046971,000155: # 7. DNPTR CANNOT APPEAR IN A SUBLIST. 046972,000156: 046973,000157: # EBANK SETTINGS 046974,000158: # IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS 046975,000159: # `GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME 046976,000160: # SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.) 046977,000161: # THAT BITS 15-12 OF EBANK ARE ZERO. 046978,000162: 046979,000163: # INITIALIZATION REQUIRED -- TO INTERRUPT CURRENT LIST AND START A NEW ONE. 046980,000164: # 1. ADRES OF DOWNLINK LIST INTO DNLSTADR 046981,000165: # 2. NEGONE INTO SUBLIST 046982,000166: # 3. NEGONE INTO DNECADR 046983,000167: 046984,000168: 22,3505 BANK 22 046985,000169: 05,2000 SETLOC DOWNTELM 046986,000170: 05,2000 BANK 046987,000171: 046988,000172: 05,3342 0340 EBANK= DNTMBUFF 046989,000173: 046990,000174: 05,3342 COUNT 05/DPROG 046991,000175: 046992,000176: 05,3342 54016 DODOWNTM TS BANKRUPT 046993,000177: 05,3343 00006 EXTEND 046994,000178: 05,3344 22012 QXCH QRUPT # SAVE Q 046995,000179: 05,3345 34704 CA BIT7 # SET WORD ORDER CODE TO 1. EXCEPTION: AT 046996,000180: 05,3346 00006 EXTEND # THE BEGINNING OF EACH LIST THE WORD 046997,000181: 05,3347 05013 WOR CHAN13 # CODE WILL BE SET BACK TO 0. 046998,000182: 05,3350 00335 TC DNTMGOTO # GOTO APPROPRIATE PHASE OF PROGRAM 046999,000183: 047000,000184: 05,3351 37716 DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS 047001,000185: 05,3352 54337 TS SUBLIST # WORDS TO MINUS ONE 047002,000186: 05,3353 54336 TS DNECADR 047003,000187: 05,3354 33474 CA LDNPHAS2 # SET DNTMGOTO = 0 ALL SUSEQUENT DOWRUPTS 047004,000188: 05,3355 54335 TS DNTMGOTO # GO TO DNPHASE2 047005,000189: 05,3356 13372 TCF NEWLIST 047006,000190: 05,3357 10336 DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS 047007,000191: 05,3360 03507 DODNADR TC FETCH2WD # YES -- THEN FETCH THE NEXT 2 SP WORDS 047008,000192: 05,3361 77753 MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR 047009,000193: 05,3362 13363 TCF +1 # (ECADR OF 3776 + 74001 = 77777) 047010,000194: 047011,000195: 05,3363 10337 CCS SUBLIST # IS THE SUBLIST IN CONTROL 047012,000196: # Page 1079 047013,000197: 05,3364 13522 TCF NEXTINSL # YES 047014,000198: 05,3365 74001 DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER 047015,000199: 047016,000200: 05,3366 30334 CHKLIST CA CTLIST 047017,000201: 05,3367 00006 EXTEND 047018,000202: 05,3370 63372 BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST 047019,000203: 05,3371 13377 TCF NEXTINCL 047020,000204: 05,3372 50332 NEWLIST INDEX DNLSTCOD 047021,000205: 05,3373 32342 CA DNTABLE # INITIALIZE CTLIST WITH 047022,000206: 05,3374 54334 TS CTLIST # STARTING ADDRESS OF NEW LIST 047023,000207: 05,3375 40332 CS DNLSTCOD 047024,000208: 05,3376 13612 TCF SENDID +3 047025,000209: 05,3377 50334 NEXTINCL INDEX CTLIST 047026,000210: 05,3400 30000 CA 0 047027,000211: 05,3401 10000 CCS A 047028,000212: 05,3402 24334 INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD 047029,000213: 05,3403 13407 TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0) 047030,000214: 05,3404 56334 XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING) 047031,000215: 05,3405 40000 COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA) 047032,000216: 05,3406 56334 XCH CTLIST # (ST IN ) 047033,000217: 05,3407 24000 +4 INCR A # (CTLIST) 047034,000218: 05,3410 54336 TS DNECADR # SAVE DNADR 047035,000219: 05,3411 63361 AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR) 047036,000220: 05,3412 10000 CCS A 047037,000221: 05,3413 13417 TCF SETWO +1 # DON'T SET WORD ORDER CODE 047038,000222: 05,3414 47777 MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE) 047039,000223: 05,3415 13417 TCF SETWO +1 # DON'T SET WORD ORDER CODE 047040,000224: 05,3416 03441 SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO. 047041,000225: 05,3417 30336 +1 CA DNECADR # RELOAD A WITH THE DNADR. 047042,000226: 05,3420 63414 +2 AD MINB1314 # IS THIS A REGULAR DNADR? 047043,000227: 05,3421 00006 EXTEND 047044,000228: 05,3422 63507 BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO) 047045,000229: 05,3423 67710 AD MINB12 # NO. IS IT A POINTER (DNPTR) OR A 047046,000230: 05,3424 00006 EXTEND # CHANNEL(DNCHAN) 047047,000231: 05,3425 63445 BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO) 047048,000232: 047049,000233: 05,3426 00006 DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT'S A CHANNEL 047050,000234: 05,3427 50336 INDEX DNECADR 047051,000235: 05,3430 44000 INDEX 0 -4000 # (EXECUTED AS READ) 047052,000236: 05,3431 54001 TS L 047053,000237: 05,3432 00006 TC 6 # (EXECUTED AS EXTEND) 047054,000238: 05,3433 50336 INDEX DNECADR 047055,000239: 05,3434 43777 INDEX 0 -4001 # (EXECUTED AS READ) 047056,000240: 05,3435 54336 TS DNECADR # SET DNECADR 047057,000241: 05,3436 37716 CA NEGONE # TO MINUS 047058,000242: 05,3437 56336 XCH DNECADR # WHILE PRESERVING A. 047059,000243: 05,3440 13535 TCF DNTMEXIT # GO SEND CHANNELS 047060,000244: 047061,000245: 05,3441 44704 WOZERO CS BIT7 047062,000246: 05,3442 00006 EXTEND 047063,000247: # Page 1080 047064,000248: 05,3443 03013 WAND CHAN13 # SET WORD ORDER CODE TO ZERO 047065,000249: 05,3444 00002 TC Q # RETURN TO CALLER 047066,000250: 047067,000251: 05,3445 50336 DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST 047068,000252: 05,3446 00000 0 0 # CLEAR AND ADD LIST ENTRY INTO A. 047069,000253: 05,3447 10000 CCS A # IS THIS A SNAPSHOT SUBLIST 047070,000254: 05,3450 30336 CA DNECADR # NO, IT IS A REGULAR SUBLIST. 047071,000255: 05,3451 13521 TCF DOSUBLST # A MUST NOT BE ZERO. 047072,000256: 047073,000257: 05,3452 56336 XCH DNECADR # YES. IT IS A SNAPSHOT SUBLIST. 047074,000258: 05,3453 54337 TS SUBLIST # C(DNECADR) INTO SUBLIST 047075,000259: 05,3454 34714 CAF ZERO # A INTO A 047076,000260: 05,3455 56336 XCH TMINDEX # (NOTE: TMINDEX = DNECADR) 047077,000261: 047078,000262: # THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS. 047079,000263: # THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY. 047080,000264: # THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED 047081,000265: # TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST. 047082,000266: # THESE RULES ARE ...... 047083,000267: # 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST 047084,000268: # 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK. 047085,000269: 047086,000270: 05,3456 54003 SNAPLOOP TS EBANK # SET EBANK 047087,000271: 05,3457 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS 047088,000272: 05,3460 00006 EXTEND 047089,000273: 05,3461 50000 INDEX A 047090,000274: 05,3462 E3,1401 EBANK= 1401 047091,000275: 05,3462 31402 DCA 1401 # PICK UP 2 SNAPSHOT WORDS. 047092,000276: 05,3463 0340 EBANK= DNTMBUFF 047093,000277: 05,3463 50336 INDEX TMINDEX 047094,000278: 05,3464 52341 DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER 047095,000279: 05,3465 24336 INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS. 047096,000280: 05,3466 24336 INCR TMINDEX 047097,000281: 05,3467 24337 SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT 047098,000282: 05,3470 50337 INDEX SUBLIST 047099,000283: 05,3471 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST) 047100,000284: 05,3472 10000 CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT. 047101,000285: 05,3473 13456 TCF SNAPLOOP # NOT LAST TWO. 047102,000286: 05,3474 03357 LDNPHAS2 GENADR DNPHASE2 047103,000287: 05,3475 54337 TS SUBLIST # YES, LAST. SAVE A. 047104,000288: 05,3476 37716 CA NEGONE # SET DNECADR AND 047105,000289: 05,3477 54336 TS DNECADR # SUBLIST POINTERS 047106,000290: 05,3500 56337 XCH SUBLIST # TO NEGATIVE VALUES 047107,000291: 05,3501 54003 TS EBANK 047108,000292: 05,3502 74373 MASK LOW8 047109,000293: 05,3503 00006 EXTEND 047110,000294: 05,3504 50000 INDEX A 047111,000295: 05,3505 E3,1401 EBANK= 1401 047112,000296: # Page 1081 047113,000297: 05,3505 31402 DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT. 047114,000298: 05,3506 0340 EBANK= DNTMBUFF 047115,000299: 05,3506 13535 SNAPEND TCF DNTMEXIT # NOW TO SEND THEM. 047116,000300: 047117,000301: 05,3507 30336 FETCH2WD CA DNECADR 047118,000302: 05,3510 54003 TS EBANK # SET EBANK 047119,000303: 05,3511 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS 047120,000304: 05,3512 54001 TS L 047121,000305: 05,3513 33365 CA DNADRDCR # DECREMENT COUNT AND ECADR 047122,000306: 05,3514 26336 ADS DNECADR 047123,000307: 05,3515 00006 EXTEND 047124,000308: 05,3516 50001 INDEX L 047125,000309: 05,3517 E3,1400 EBANK= 1400 047126,000310: 05,3517 31401 DCA 1400 # PICK UP 2 DATA WORDS 047127,000311: 05,3520 0340 EBANK= DNTMBUFF 047128,000312: 05,3520 13535 TCF DNTMEXIT # NOW GO SEND THEM. 047129,000313: 047130,000314: 05,3521 54337 DOSUBLST TS SUBLIST # SET SUBLIST POINTER 047131,000315: 05,3522 50337 NEXTINSL INDEX SUBLIST 047132,000316: 05,3523 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST) 047133,000317: 05,3524 10000 CCS A # IS IT THE END OF THE SUBLIST 047134,000318: 05,3525 24337 INCR SUBLIST # NO -- 047135,000319: 05,3526 13532 TCF +4 047136,000320: 05,3527 54337 TS SUBLIST # SAVE A. 047137,000321: 05,3530 37716 CA NEGONE # SET SUBLIST TO MINUS 047138,000322: 05,3531 56337 XCH SUBLIST # RETRIEVE A. 047139,000323: 05,3532 24000 +4 INCR A 047140,000324: 05,3533 54336 TS DNECADR # SAVE DNADR 047141,000325: 05,3534 13420 TCF SETWO +2 # GO USE COMMON CODING (PROLEMS WOULD 047142,000326: # OCCUR IF THE PROGRAM ENCOUNTERED A 047143,000327: # DNPTR NOW) 047144,000328: 047145,000329: 05,3535 00006 DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT 047146,000330: 05,3536 01034 WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35 047147,000331: 05,3537 30001 CA L # RESPECTIVELY 047148,000332: 05,3540 00006 TMEXITL EXTEND 047149,000333: 05,3541 01035 WRITE DNTM2 047150,000334: 05,3542 15222 TMRESUME TCF RESUME # EXIT TELEMTRY PROGRAM VIA RESUME. 047151,000335: 047152,000336: 05,3543 7710 MINB12 EQUALS -1/8 047153,000337: 05,3543 0336 DNECADR EQUALS TMINDEX 047154,000338: 05,3543 0334 CTLIST EQUALS LDATALST 047155,000339: 05,3543 0337 SUBLIST EQUALS DNQ 047156,000340: 047157,000341: # Page 1082 047158,000342: # SUBROUTINE NAME -- DNDUMP 047159,000343: 047160,000344: # FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL 8 BANKS OF ERASABLE STORAGE TWICE. BANKS ARE SENT ONE AT A TIME 047161,000345: # EACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH 047162,000346: # EBANK. EBANKS ARE DUMPED IN ORDER (I.E., EBANK 0 FIRST, THEN EBANK1 ETC.) 047163,000347: 047164,000348: # CALLING SEQUENCE -- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP. 047165,000349: # AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP 047166,000350: # WILL BEGIN. 047167,000351: 047168,000352: # ONCE INITITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY 047169,000353: # BY THE FOLLOWING: 047170,000354: 047171,000355: # 1. A FRESH START 047172,000356: # 2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT). NOTE THAT DUMPCNT 047173,000357: # CAN BE ALTERED BY A V21N01. 047174,000358: # 3. AND INVOLUNTARILY BY A RESTART. 047175,000359: 047176,000360: # NORMAL EXIT MODE -- TCF DNPHASE1 047177,000361: 047178,000362: # ALARM OR ABORT MODE -- NONE 047179,000363: 047180,000364: # *SUBROUTINES CALLED -- NONE 047181,000365: 047182,000366: # ERASABLE INITIALIZATION REQUIRED -- 047183,000367: # DUMPCNT OCT 20000 IF 4 COMPLETE ERASABLE DUMPS ARE DESIRED 047184,000368: # DUMPCNT OCT 10000 IF 2 COMPLETE ERASABLE DUMPS ARE DESIRED 047185,000369: # DUMPCNT OCT 04000 IF 1 COMPLETE ERASABLE DUMP IS DESIRED 047186,000370: 047187,000371: # DEBRIS -- DUMPLOC, DUMPSW, DNTMGOTO, EBANK, AND CENTRAL REGISTERS 047188,000372: 047189,000373: # TIMING -- TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC 047190,000374: # TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100 047191,000375: # THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS 047192,000376: 047193,000377: # STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM -- 047194,000378: # (REMINDER -- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP) 047195,000379: 047196,000380: # DOWNLIST W 047197,000381: # WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS 047198,000382: # 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM) 047199,000383: # 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS) 047200,000384: # 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD 047201,000385: # 4 TIME1 14120 1 TIME IN CENTISECONDS 047202,000386: # 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400) 047203,000387: # 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401) 047204,000388: # 7. 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402) 047205,000389: # . 047206,000390: # . 047207,000391: # . 047208,000392: # 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777) 047209,000393: 047210,000394: # NOTE -- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT. 047211,000395: # THE BIT STRUCTURE OF DUMPLOC IS FOLLOW -- 047212,000396: # X = NOT USED 047213,000397: # X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT 047214,000398: # COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS) 047215,000399: # EEE = EBANK BITS 047216,000400: # RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK 047217,000401: 047218,000402: # Page 1083 047219,000403: 05,3543 34714 DNDUMPI CA ZERO # INITIALIZE DOWNLINK 047220,000404: 05,3544 54336 TS DUMPLOC # ERASABLE DUMP 047221,000405: 05,3545 03607 +2 TC SENDID # GO SEND ID AND SYNCH BITS 047222,000406: 05,3546 33555 CA LDNDUMP1 # SET DNTMGOTO 047223,000407: 05,3547 54335 TS DNTMGOTO # TO LOCATION FOR NEXT PASS 047224,000408: 05,3550 30025 CA TIME1 # PLACE TIME1 047225,000409: 05,3551 56001 XCH L # INTO L 047226,000410: 05,3552 30336 CA DUMPLOC # AND ECADR OF THIS EBANK INTO A 047227,000411: 05,3553 13535 TCF DNTMEXIT # SEND DUMPLOC AND TIME1 047228,000412: 047229,000413: 05,3554 03556 LDNDUMP ADRES DNDUMP 047230,000414: 05,3555 03571 LDNDUMP1 ADRES DNDUMP1 047231,000415: 047232,000416: 05,3556 34711 DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC 047233,000417: 05,3557 26336 ADS DUMPLOC # TO NEXT DP WORD TO BE 047234,000418: 05,3560 74373 MASK LOW8 # DUMPED AND SAVE IT. 047235,000419: 05,3561 10000 CCS A # IS THIS THE BEGINNING OF A NEW EBANK 047236,000420: 05,3562 13573 TCF DNDUMP2 # NO -- THEN CONTINUE DUMPING 047237,000421: 05,3563 30336 CA DUMPLOC # YES -- IS THIS THE END OF THE 047238,000422: 05,3564 70333 MASK DUMPCNT # N-TH(N = 1 TO 4) COMPLETE ERASABLE 047239,000423: 05,3565 77671 MASK PRIO34 # DUMP(BIT14 FOR 4, BIT13 FOR 2 OR BIT12 047240,000424: 05,3566 10000 CCS A # FOR 1 COMPLETE ERASABLE DUMP(S)). 047241,000425: 05,3567 13351 TCF DNPHASE1 # YES -- SEND DOWNLIST AGAIN 047242,000426: # AGAIN 047243,000427: 05,3570 13545 TCF DNDUMPI +2 # NO -- GO BACK AND INITIALZE NEXT BANK 047244,000428: 047245,000429: 05,3571 33554 DNDUMP1 CA LDNDUMP # SET DNTMGOTO 047246,000430: 05,3572 54335 TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK 047247,000431: 047248,000432: 05,3573 30336 DNDUMP2 CA DUMPLOC 047249,000433: 05,3574 54003 TS EBANK # SET EBANK 047250,000434: 05,3575 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS. 047251,000435: 05,3576 54002 TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK 047252,000436: 05,3577 34713 CA NEG0 # UP ERASABLE REGISTERS TO THAT EDITING 047253,000437: 05,3600 54001 TS L # REGISTERS 20-23 WILL NOT BE ALTERED.) 047254,000438: 05,3601 50002 INDEX Q 047255,000439: 05,3602 E3,1400 EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR 047256,000440: 05,3602 71401 MASK 1401 # OF ERASABLE REGISTERS. 047257,000441: 05,3603 56001 XCH L 047258,000442: 05,3604 50002 INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR 047259,000443: 05,3605 71400 MASK 1400 # OF ERASABLE REGISTERS. 047260,000444: 05,3606 0340 EBANK= DNTMBUFF 047261,000445: 05,3606 13535 TCF DNTMEXIT # GO SEND THEM 047262,000446: 047263,000447: 05,3607 00006 SENDID EXTEND # ** ENTRANCE USED BY ERASABLE DUMP PROG. ** 047264,000448: 05,3610 22335 QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO 047265,000449: 05,3611 34747 CAF ERASID # TO LOCATION FOLLOWING `TC SENDID' 047266,000450: 047267,000451: 05,3612 54001 TS L # ** ENTRANCE USED BY REGULAR DOWNLINK PG ** 047268,000452: # Page 1084 047269,000453: 05,3613 03441 TC WOZERO # GO SET WORD ORDER CODE TO ZERO 047270,000454: 05,3614 32000 CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L 047271,000455: 05,3615 56001 XCH L # AND ID BACK INTO A 047272,000456: 05,3616 13535 TCF DNTMEXIT # SEND DOWNLIST ID CODE(S). 047273,000457: 047274,000458: 047275,000459: End of include-file DOWN-TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc