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