Source Code

048266,000001: # Copyright: Public domain. 048267,000002: # Filename: DOWN-TELEMETRY_PROGRAM.agc 048268,000003: # Purpose: Part of the source code for Comanche, build 055. It 048269,000004: # is part of the source code for the Command Module's 048270,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11. 048271,000006: # Assembler: yaYUL 048272,000007: # Reference: pp. 1093-1102 048273,000008: # Contact: Ron Burkey <info@sandroid.org> 048274,000009: # Website: http://www.ibiblio.org/apollo. 048275,000010: # Mod history: 2009-05-08 RSB Adapted from Colossus249/ file of same name 048276,000011: # and page images. Corrected various typos 048277,000012: # in the transcription of program comments, 048278,000013: # and these should be back-ported to 048279,000014: # Colossus249. 048280,000015: 048281,000016: # The contents of the "Comanche055" files, in general, are transcribed 048282,000017: # from scanned documents. 048283,000018: 048284,000019: # Assemble revision 055 of AGC program Comanche by NASA 048285,000020: # 2021113-051. April 1, 1969. 048286,000021: 048287,000022: # This AGC program shall also be referred to as Colossus 2A 048288,000023: 048289,000024: # Prepared by 048290,000025: # Massachussets Institute of Technology 048291,000026: # 75 Cambridge Parkway 048292,000027: # Cambridge, Massachusetts 048293,000028: 048294,000029: # under NASA contract NAS 9-4065. 048295,000030: 048296,000031: # Refer directly to the online document mentioned above for further 048297,000032: # information. Please report any errors to info@sandroid.org. 048298,000033: 048299,000034: # Page 1093 048300,000035: # PROGRAM NAME -- DOWN TELEMETRY PROGRAM 048301,000036: # MOD NO. -- 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE 048302,000037: # PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE. 048303,000038: # THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS. REFER TO DOWNLINK 048304,000039: # LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGES WILL NOT AFFECT THE GROUND PROCESSING 048305,000040: # OF DOWN TELEMETRY DATA. 048306,000041: # MOD BY -- KILROY, SMITH, DEWITT 048307,000042: # DATE -- 02 OCT 67 048308,000043: # AUTHORS -- KILROY, SMITH, DWWITT, DEWOLF, FAGIN 048309,000044: # LOG SECTION -- DOWN-TELEMETRY PROGRAM 048310,000045: 048311,000046: # FUNCTIONAL DESCRIPTION -- THIS ROUTINE IS INITIATED BY TELEMETRY END 048312,000047: # PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS 048313,000048: # AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS 048314,000049: # EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE 048315,000050: # AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT 048316,000051: # CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE 048317,000052: # LGC IN SERIAL FASHION. 048318,000053: 048319,000054: # THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS 048320,000055: # OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN 048321,000056: # CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE 048322,000057: # OF SENDING 200 AGC WORDS EVERY 2 SECONDS. 048323,000058: 048324,000059: # CALLING SEQUENCE -- NONE 048325,000060: # PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A 048326,000061: # RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH 048327,000062: # IN EFFECT IS A RESUME. 048328,000063: 048329,000064: # SUBROUTINES CALLED -- NONE 048330,000065: 048331,000066: # NORMAL EXIT MODE -- TCF RESUME 048332,000067: 048333,000068: # ALARM OR ABORT EXIT MODE -- NONE 048334,000069: 048335,000070: # RESTART PROTECTION: 048336,000071: # ON A FRESH START AND RESTART THE `STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY 048337,000072: # DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E., CURRENT CONTENTS OF DNLSTADR). THIS HAS THE 048338,000073: # EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN 048339,000074: # THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT 048340,000075: # DOWNLIST. 048341,000076: 048342,000077: # ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35. 048343,000078: 048344,000079: # DOWNLINK LIST SELECTION: 048345,000080: # THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING: 048346,000081: # 1. FRESH START 048347,000082: # 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED. 048348,000083: # 3. UPDATE PROGRAM (P27) 048349,000084: # 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G., AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62 048350,000085: # TRANSITIONS (COLOSSUS) ETC.). 048351,000086: 048352,000087: # DOWNLINK LIST RULES AND LIMITATIONS: 048353,000088: # READ SECTION(S) WHICH FOLLOW `DEBRIS' WRITEUP. 048354,000089: 048355,000090: # OUTPUT -- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E., 200 LGC 048356,000091: # COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK. 048357,000092: 048358,000093: # ERASABLE INITIALIZATION REQUIRED -- NONE 048359,000094: # `DNTMGOTO' AND `DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM. 048360,000095: 048361,000096: # DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) -- 048362,000097: # LDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ. 048363,000098: # Page 1094 048364,000099: # (No source on this page of the original assembly listing.) 048365,000100: 048366,000101: # Page 1095 048367,000102: # DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE 048368,000103: # RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER. 048369,000104: 048370,000105: # NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM: 048371,000106: # 1. DOWNLISTS. DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE 048372,000107: # DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER 048373,000108: # EXECUTION. 048374,000109: # 2. EACH DOWNLINK LIST CONSISTES OF A CONTROL LIST AND A NUMBER OF 048375,000110: # SUBLISTS. 048376,000111: # 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER 048377,000112: # DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE 048378,000113: # CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS. 048379,000114: # 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENEOUS DATA WHICH MUST BE 048380,000115: # SAVED IN A BUFFER DURING ONE DOWNRUPT. 048381,000116: # 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END 048382,000117: # OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD 048383,000118: # IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER. 048384,000119: # 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS 048385,000120: # CREATED FOR THE DOWNLIST PROGRAM. 048386,000121: # A. 1DNADR 1-WORD DOWNLIST ADDRESS. 048387,000122: # SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT 048388,000123: # HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY. 048389,000124: # B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6. 048390,000125: # SAME AS 1DNADR, BUT WTIH THE 4 UNUSED BITS OF THE ECADR FORMAT 048391,000126: # FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE- 048392,000127: # PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY. 048393,000128: # C. DNCHAN DOWNLIST CHANNEL ADDRESS. 048394,000129: # SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO 048395,000130: # A PAIR OF CHANNELS FOR DOWN TELEMETRY. 048396,000131: # D. DNPTR DOWN-TELEMETRY SUBLIST POINTER. 048397,000132: # SAME AS CAF BUT TAGGES AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST. 048398,000133: # CAUTION --- A DNPTR CANNOT BE USED IN A SUBLIST. 048399,000134: # 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN 048400,000135: # A `1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY). 048401,000136: # 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK. 048402,000137: 048403,000138: # DOWNLIST LIST RESTRICTIONS: 048404,000139: # (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE 048405,000140: # DONE) 048406,000141: # 1. SNAPSHOT DOWNLIST: 048407,000142: # (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E., 1DNADR'S): Q, 400, 1000, 1400, 2000, 2400, 3000, 3400. 048408,000143: # (B) CAN CONTAIN ONLY 1DNADR'S 048409,000144: # 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A DCA SO DOWNLINK LISTS CANNOT CONTAIN THE 048410,000145: # EQUIVALENT OF THE FOLLOWING ECADRS (I.E., IDNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777. 048411,000146: # (NOTE: TE TERM `EQUIVALENT' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS) 048412,000147: # 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777 048413,000148: # Page 1096 048414,000149: # 4. THE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINT PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE 048415,000150: # CONTROL SECTION OF THE DOWNLIST. 048416,000151: # 5. `DNCHAN 0' CANNOT BE USED. 048417,000152: # 6. `DNPTR 0' CANNOT BE USED. 048418,000153: # 7. DNPTR CANNOT APPEAR IN A SUBLIST. 048419,000154: 048420,000155: # EBANK SETTINGS 048421,000156: # IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS 048422,000157: # `GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME 048423,000158: # SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.) 048424,000159: # THAT BITS 15-12 OF EBANK ARE ZERO. 048425,000160: 048426,000161: # INITIALIZATION REQUIRED -- TO INTERRUPT CURRENT LIST AND START A NEW ONE. 048427,000162: # 1. ADRES OF DOWNLINK LIST INTO DNLSTADR 048428,000163: # 2. NEGONE INTO SUBLIST 048429,000164: # 3. NEGONE INTO DNECADR 048430,000165: 048431,000166: 22,3510 BANK 22 048432,000167: 05,2000 SETLOC DOWNTELM 048433,000168: 05,2000 BANK 048434,000169: 048435,000170: 05,3521 0340 EBANK= DNTMBUFF 048436,000171: 048437,000172: 05,3521 COUNT 05/DPROG 048438,000173: 048439,000174: 05,3521 54016 DODOWNTM TS BANKRUPT 048440,000175: 05,3522 00006 EXTEND 048441,000176: 05,3523 22012 QXCH QRUPT # SAVE Q 048442,000177: 05,3524 35011 CA BIT7 # SET WORD ORDER CODE TO 1. EXCEPTION: AT 048443,000178: 05,3525 00006 EXTEND # THE BEGINNING OF EACH LIST THE WORD 048444,000179: 05,3526 05013 WOR CHAN13 # CODE WILL BE SET BACK TO 0. 048445,000180: 05,3527 00335 TC DNTMGOTO # GOTO APPROPRIATE PHASE OF PROGRAM 048446,000181: 048447,000182: 05,3530 37716 DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS 048448,000183: 05,3531 54337 TS SUBLIST # WORDS TO MINUS ONE 048449,000184: 05,3532 54336 TS DNECADR 048450,000185: 05,3533 33653 CA LDNPHAS2 # SET DNTMGOTO = 0 ALL SUSEQUENT DOWRUPTS 048451,000186: 05,3534 54335 TS DNTMGOTO # GO TO DNPHASE2 048452,000187: 05,3535 13551 TCF NEWLIST 048453,000188: 05,3536 10336 DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS 048454,000189: 05,3537 03666 DODNADR TC FETCH2WD # YES -- THEN FETCH THE NEXT 2 SP WORDS 048455,000190: 05,3540 77753 MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR 048456,000191: 05,3541 13542 TCF +1 # (ECADR OF 3776 + 74001 = 77777) 048457,000192: 048458,000193: 05,3542 10337 CCS SUBLIST # IS THE SUBLIST IN CONTROL 048459,000194: # Page 1097 048460,000195: 05,3543 13701 TCF NEXTINSL # YES 048461,000196: 05,3544 74001 DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER 048462,000197: 048463,000198: 05,3545 30334 CHKLIST CA CTLIST 048464,000199: 05,3546 00006 EXTEND 048465,000200: 05,3547 63551 BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST 048466,000201: 05,3550 13556 TCF NEXTINCL 048467,000202: 05,3551 50332 NEWLIST INDEX DNLSTCOD 048468,000203: 05,3552 32335 CA DNTABLE # INITIALIZE CTLIST WITH 048469,000204: 05,3553 54334 TS CTLIST # STARTING ADDRESS OF NEW LIST 048470,000205: 05,3554 40332 CS DNLSTCOD 048471,000206: 05,3555 13771 TCF SENDID +3 048472,000207: 05,3556 50334 NEXTINCL INDEX CTLIST 048473,000208: 05,3557 30000 CA 0 048474,000209: 05,3560 10000 CCS A 048475,000210: 05,3561 24334 INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD 048476,000211: 05,3562 13566 TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0) 048477,000212: 05,3563 56334 XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING) 048478,000213: 05,3564 40000 COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA) 048479,000214: 05,3565 56334 XCH CTLIST # (ST IN ) 048480,000215: 05,3566 24000 +4 INCR A # (CTLIST) 048481,000216: 05,3567 54336 TS DNECADR # SAVE DNADR 048482,000217: 05,3570 63540 AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR) 048483,000218: 05,3571 10000 CCS A 048484,000219: 05,3572 13576 TCF SETWO +1 # DON'T SET WORD ORDER CODE 048485,000220: 05,3573 47777 MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE) 048486,000221: 05,3574 13576 TCF SETWO +1 # DON'T SET WORD ORDER CODE 048487,000222: 05,3575 03620 SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO. 048488,000223: 05,3576 30336 +1 CA DNECADR # RELOAD A WITH THE DNADR. 048489,000224: 05,3577 63573 +2 AD MINB1314 # IS THIS A REGULAR DNADR? 048490,000225: 05,3600 00006 EXTEND 048491,000226: 05,3601 63666 BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO) 048492,000227: 05,3602 67710 AD MINB12 # NO. IS IT A POINTER (DNPTR) OR A 048493,000228: 05,3603 00006 EXTEND # CHANNEL(DNCHAN) 048494,000229: 05,3604 63624 BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO) 048495,000230: 048496,000231: 05,3605 00006 DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT'S A CHANNEL 048497,000232: 05,3606 50336 INDEX DNECADR 048498,000233: 05,3607 44000 INDEX 0 -4000 # (EXECUTED AS READ) 048499,000234: 05,3610 54001 TS L 048500,000235: 05,3611 00006 TC 6 # (EXECUTED AS EXTEND) 048501,000236: 05,3612 50336 INDEX DNECADR 048502,000237: 05,3613 43777 INDEX 0 -4001 # (EXECUTED AS READ) 048503,000238: 05,3614 54336 TS DNECADR # SET DNECADR 048504,000239: 05,3615 37716 CA NEGONE # TO MINUS 048505,000240: 05,3616 56336 XCH DNECADR # WHILE PRESERVING A. 048506,000241: 05,3617 13714 TCF DNTMEXIT # GO SEND CHANNELS 048507,000242: 048508,000243: 05,3620 45011 WOZERO CS BIT7 048509,000244: 05,3621 00006 EXTEND 048510,000245: # Page 1098 048511,000246: 05,3622 03013 WAND CHAN13 # SET WORD ORDER CODE TO ZERO 048512,000247: 05,3623 00002 TC Q # RETURN TO CALLER 048513,000248: 048514,000249: 05,3624 50336 DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST 048515,000250: 05,3625 00000 0 0 # CLEAR AND ADD LIST ENTRY INTO A. 048516,000251: 05,3626 10000 CCS A # IS THIS A SNAPSHOT SUBLIST 048517,000252: 05,3627 30336 CA DNECADR # NO, IT IS A REGULAR SUBLIST. 048518,000253: 05,3630 13700 TCF DOSUBLST # A MUST NOT BE ZERO. 048519,000254: 048520,000255: 05,3631 56336 XCH DNECADR # YES. IT IS A SNAPSHOT SUBLIST. 048521,000256: 05,3632 54337 TS SUBLIST # C(DNECADR) INTO SUBLIST 048522,000257: 05,3633 35021 CAF ZERO # A INTO A 048523,000258: 05,3634 56336 XCH TMINDEX # (NOTE: TMINDEX = DNECADR) 048524,000259: 048525,000260: # THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS. 048526,000261: # THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY. 048527,000262: # THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED 048528,000263: # TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST. 048529,000264: # THESE RULES ARE ...... 048530,000265: # 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST 048531,000266: # 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK. 048532,000267: 048533,000268: 05,3635 54003 SNAPLOOP TS EBANK # SET EBANK 048534,000269: 05,3636 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS 048535,000270: 05,3637 00006 EXTEND 048536,000271: 05,3640 50000 INDEX A 048537,000272: 05,3641 E3,1401 EBANK= 1401 048538,000273: 05,3641 31402 DCA 1401 # PICK UP 2 SNAPSHOT WORDS. 048539,000274: 05,3642 0340 EBANK= DNTMBUFF 048540,000275: 05,3642 50336 INDEX TMINDEX 048541,000276: 05,3643 52341 DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER 048542,000277: 05,3644 24336 INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS. 048543,000278: 05,3645 24336 INCR TMINDEX 048544,000279: 05,3646 24337 SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT 048545,000280: 05,3647 50337 INDEX SUBLIST 048546,000281: 05,3650 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST) 048547,000282: 05,3651 10000 CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT. 048548,000283: 05,3652 13635 TCF SNAPLOOP # NOT LAST TWO. 048549,000284: 05,3653 03536 LDNPHAS2 GENADR DNPHASE2 048550,000285: 05,3654 54337 TS SUBLIST # YES, LAST. SAVE A. 048551,000286: 05,3655 37716 CA NEGONE # SET DNECADR AND 048552,000287: 05,3656 54336 TS DNECADR # SUBLIST POINTERS 048553,000288: 05,3657 56337 XCH SUBLIST # TO NEGATIVE VALUES 048554,000289: 05,3660 54003 TS EBANK 048555,000290: 05,3661 74373 MASK LOW8 048556,000291: 05,3662 00006 EXTEND 048557,000292: 05,3663 50000 INDEX A 048558,000293: 05,3664 E3,1401 EBANK= 1401 048559,000294: # Page 1099 048560,000295: 05,3664 31402 DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT. 048561,000296: 05,3665 0340 EBANK= DNTMBUFF 048562,000297: 05,3665 13714 SNAPEND TCF DNTMEXIT # NOW GO SEND THEM. 048563,000298: 048564,000299: 05,3666 30336 FETCH2WD CA DNECADR 048565,000300: 05,3667 54003 TS EBANK # SET EBANK 048566,000301: 05,3670 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS 048567,000302: 05,3671 54001 TS L 048568,000303: 05,3672 33544 CA DNADRDCR # DECREMENT COUNT AND ECADR 048569,000304: 05,3673 26336 ADS DNECADR 048570,000305: 05,3674 00006 EXTEND 048571,000306: 05,3675 50001 INDEX L 048572,000307: 05,3676 E3,1400 EBANK= 1400 048573,000308: 05,3676 31401 DCA 1400 # PICK UP 2 DATA WORDS 048574,000309: 05,3677 0340 EBANK= DNTMBUFF 048575,000310: 05,3677 13714 TCF DNTMEXIT # NOW GO SEND THEM. 048576,000311: 048577,000312: 05,3700 54337 DOSUBLST TS SUBLIST # SET SUBLIST POINTER 048578,000313: 05,3701 50337 NEXTINSL INDEX SUBLIST 048579,000314: 05,3702 00000 0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST) 048580,000315: 05,3703 10000 CCS A # IS IT THE END OF THE SUBLIST 048581,000316: 05,3704 24337 INCR SUBLIST # NO -- 048582,000317: 05,3705 13711 TCF +4 048583,000318: 05,3706 54337 TS SUBLIST # SAVE A. 048584,000319: 05,3707 37716 CA NEGONE # SET SUBLIST TO MINUS 048585,000320: 05,3710 56337 XCH SUBLIST # RETRIEVE A. 048586,000321: 05,3711 24000 +4 INCR A 048587,000322: 05,3712 54336 TS DNECADR # SAVE DNADR 048588,000323: 05,3713 13577 TCF SETWO +2 # GO USE COMMON CODING (PROBLEMS WOULD 048589,000324: # OCCUR IF THE PROGRAM ENCOUNTERED A 048590,000325: # DNPTR NOW) 048591,000326: 048592,000327: 05,3714 00006 DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT 048593,000328: 05,3715 01034 WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35 048594,000329: 05,3716 30001 CA L # RESPECTIVELY 048595,000330: 05,3717 00006 TMEXITL EXTEND 048596,000331: 05,3720 01035 WRITE DNTM2 048597,000332: 05,3721 15333 TMRESUME TCF RESUME # EXIT TELEMTRY PROGRAM VIA RESUME. 048598,000333: 048599,000334: 05,3722 7710 MINB12 EQUALS -1/8 048600,000335: 05,3722 0336 DNECADR EQUALS TMINDEX 048601,000336: 05,3722 0334 CTLIST EQUALS LDATALST 048602,000337: 05,3722 0337 SUBLIST EQUALS DNQ 048603,000338: 048604,000339: # Page 1100 048605,000340: # SUBROUTINE NAME -- DNDUMP 048606,000341: 048607,000342: # FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL 8 BANKS OF ERASABLE STORAGE TWICE. BANKS ARE SENT ONE AT A TIME 048608,000343: # EACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH 048609,000344: # EBANK. EBANKS ARE DUMPED IN ORDER (I.E., EBANK 0 FIRST, THEN EBANK1 ETC.) 048610,000345: 048611,000346: # CALLING SEQUENCE -- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP. 048612,000347: # AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP 048613,000348: # WILL BEGIN. 048614,000349: 048615,000350: # ONCE INITITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY 048616,000351: # BY THE FOLLOWING: 048617,000352: 048618,000353: # 1. A FRESH START 048619,000354: # 2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT). NOTE THAT DUMPCNT 048620,000355: # CAN BE ALTERED BY A V21N01. 048621,000356: # 3. AND INVOLUNTARILY BY A RESTART. 048622,000357: 048623,000358: # NORMAL EXIT MODE -- TCF DNPHASE1 048624,000359: 048625,000360: # ALARM OR ABORT MODE -- NONE 048626,000361: 048627,000362: # *SUBROUTINES CALLED -- NONE 048628,000363: 048629,000364: # ERASABLE INITIALIZATION REQUIRED -- 048630,000365: # DUMPCNT OCT 20000 IF 4 COMPLETE ERASABLE DUMPS ARE DESIRED 048631,000366: # DUMPCNT OCT 10000 IF 2 COMPLETE ERASABLE DUMPS ARE DESIRED 048632,000367: # DUMPCNT OCT 04000 IF 1 COMPLETE ERASABLE DUMP IS DESIRED 048633,000368: 048634,000369: # DEBRIS -- DUMPLOC, DUMPSW, DNTMGOTO, EBANK, AND CENTRAL REGISTERS 048635,000370: 048636,000371: # TIMING -- TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC 048637,000372: # TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100 048638,000373: # THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS 048639,000374: 048640,000375: # STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM -- 048641,000376: # (REMINDER -- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP) 048642,000377: 048643,000378: # DOWNLIST W 048644,000379: # WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS 048645,000380: # 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM) 048646,000381: # 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS) 048647,000382: # 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD 048648,000383: # 4 TIME1 14120 1 TIME IN CENTISECONDS 048649,000384: # 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400) 048650,000385: # 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401) 048651,000386: # 7. 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402) 048652,000387: # . 048653,000388: # . 048654,000389: # . 048655,000390: # 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777) 048656,000391: 048657,000392: # NOTE -- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT. 048658,000393: # THE BIT STRUCTURE OF DUMPLOC IS FOLLOW -- 048659,000394: # X = NOT USED 048660,000395: # X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT 048661,000396: # COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS) 048662,000397: # EEE = EBANK BITS 048663,000398: # RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK 048664,000399: 048665,000400: # Page 1101 048666,000401: 05,3722 35021 DNDUMPI CA ZERO # INITIALIZE DOWNLINK 048667,000402: 05,3723 54336 TS DUMPLOC # ERASABLE DUMP 048668,000403: 05,3724 03766 +2 TC SENDID # GO SEND ID AND SYNCH BITS 048669,000404: 05,3725 33734 CA LDNDUMP1 # SET DNTMGOTO 048670,000405: 05,3726 54335 TS DNTMGOTO # TO LOCATION FOR NEXT PASS 048671,000406: 05,3727 30025 CA TIME1 # PLACE TIME1 048672,000407: 05,3730 56001 XCH L # INTO L 048673,000408: 05,3731 30336 CA DUMPLOC # AND ECADR OF THIS EBANK INTO A 048674,000409: 05,3732 13714 TCF DNTMEXIT # SEND DUMPLOC AND TIME1 048675,000410: 048676,000411: 05,3733 03735 LDNDUMP ADRES DNDUMP 048677,000412: 05,3734 03750 LDNDUMP1 ADRES DNDUMP1 048678,000413: 048679,000414: 05,3735 35016 DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC 048680,000415: 05,3736 26336 ADS DUMPLOC # TO NEXT DP WORD TO BE 048681,000416: 05,3737 74373 MASK LOW8 # DUMPED AND SAVE IT. 048682,000417: 05,3740 10000 CCS A # IS THIS THE BEGINNING OF A NEW EBANK 048683,000418: 05,3741 13752 TCF DNDUMP2 # NO -- THEN CONTINUE DUMPING 048684,000419: 05,3742 30336 CA DUMPLOC # YES -- IS THIS THE END OF THE 048685,000420: 05,3743 70333 MASK DUMPCNT # N-TH(N = 1 TO 4) COMPLETE ERASABLE 048686,000421: 05,3744 77671 MASK PRIO34 # DUMP(BIT14 FOR 4, BIT13 FOR 2 OR BIT12 048687,000422: 05,3745 10000 CCS A # FOR 1 COMPLETE ERASABLE DUMP(S)). 048688,000423: 05,3746 13530 TCF DNPHASE1 # YES -- SEND DOWNLIST AGAIN 048689,000424: # AGAIN 048690,000425: 05,3747 13724 TCF DNDUMPI +2 # NO -- GO BACK AND INITIALZE NEXT BANK 048691,000426: 048692,000427: 05,3750 33733 DNDUMP1 CA LDNDUMP # SET DNTMGOTO 048693,000428: 05,3751 54335 TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK 048694,000429: 048695,000430: 05,3752 30336 DNDUMP2 CA DUMPLOC 048696,000431: 05,3753 54003 TS EBANK # SET EBANK 048697,000432: 05,3754 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS. 048698,000433: 05,3755 54002 TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK 048699,000434: 05,3756 35020 CA NEG0 # UP ERASABLE REGISTERS TO THAT EDITING 048700,000435: 05,3757 54001 TS L # REGISTERS 20-23 WILL NOT BE ALTERED.) 048701,000436: 05,3760 50002 INDEX Q 048702,000437: 05,3761 E3,1400 EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR 048703,000438: 05,3761 71401 MASK 1401 # OF ERASABLE REGISTERS. 048704,000439: 05,3762 56001 XCH L 048705,000440: 05,3763 50002 INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR 048706,000441: 05,3764 71400 MASK 1400 # OF ERASABLE REGISTERS. 048707,000442: 05,3765 0340 EBANK= DNTMBUFF 048708,000443: 05,3765 13714 TCF DNTMEXIT # GO SEND THEM 048709,000444: 048710,000445: 05,3766 00006 SENDID EXTEND # ** ENTRANCE USED BY ERASABLE DUMP PROG. ** 048711,000446: 05,3767 22335 QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO 048712,000447: 05,3770 35054 CAF ERASID # TO LOCATION FOLLOWING `TC SENDID' 048713,000448: 048714,000449: 05,3771 54001 TS L # ** ENTRANCE USED BY REGULAR DOWNLINK PG ** 048715,000450: # Page 1102 048716,000451: 05,3772 03620 TC WOZERO # GO SET WORD ORDER CODE TO ZERO 048717,000452: 05,3773 32000 CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L 048718,000453: 05,3774 56001 XCH L # AND ID BACK INTO A 048719,000454: 05,3775 13714 TCF DNTMEXIT # SEND DOWNLIST ID CODE(S). 048720,000455: 048721,000456: 048722,000457: End of include-file DOWN-TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc