Source Code
These source-code files were obtained by digitally photographing
a Solarium 55 (Apollo 6) program listing from the American Computer Museum in
Bozeman, Montana. Photography was by Ron Burkey, with assistance from
museum curator George Keremedjiev and Montana
State University curator Kim Scott. The listing originally belonged to Eldon C. Hall,
who donated it to the museum. Volunteers then manually typed in the
source code or else modified similar pre-existing Colossus 249
(Apollo 9) source files to incorporate changes, although this transcription was
principally done by Jim Lawton and corrected by Ron Burkey.
Notations on the program listing read, in part:YUL SYSTEM FOR AGC4: REVISION 0 OF PROGRAM SOLRUM55 BY NASA 1021108-021 DEC. 4, 1966Note that the date is the date of the printout, not the date of the program revision. Due to statements by Jay Sampson, the original contractor from AC Electronics who created Solarium 54 (Apollo 4) from the earlier Corona (AS-202 mission) program, it is believed that Solarium 54 and Solarium 55 (Apollo 6) are actually identical programs. The change in numbering, from 54 to 55, is believed to be for some administrative purpose. Thus, it is believed that the source-code represented here is equally appropriate for both Apollo 4 and Apollo 6 missions. |
005973,000002: ## Copyright: Public domain.
005974,000003: ## Filename: DOWN-TELEMETRY_PROGRAM.agc
005975,000004: ## Purpose: Part of the source code for Solarium build 55. This
005976,000005: ## is for the Command Module's (CM) Apollo Guidance
005977,000006: ## Computer (AGC), for Apollo 6.
005978,000007: ## Assembler: yaYUL --block1
005979,000008: ## Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
005980,000009: ## Website: www.ibiblio.org/apollo/index.html
005981,000010: ## Page Scans: www.ibiblio.org/apollo/ScansForConversion/Solarium055/
005982,000011: ## Mod history: 2009-09-29 JL Created.
005983,000012: ## 2016-08-19 RSB Typo.
005984,000013: ## 2016-12-28 RSB Proofed comment text using octopus/ProoferComments,
005985,000014: ## and fixed errors found.
005986,000015:
Page 151 |
005988,000017:
005989,000018: # TELEMETRY PROCESSOR
005990,000019: # --------- ---------
005991,000020:
005992,000021: # THE FOLLOWING TELEMETRY PROGRAM IS DESIGNED TO TRANSMIT TELEMETRY DATA VIA OUT4 WHEN AN ENDPULSE
005993,000022: # FROM THE NORTH AMERICAN TELEMETRY PROGRAMMER TRIGGERS INTERRUPT 6, WHICH INITIATES THIS ROUTINE. IT OPERATES
005994,000023: # IN CONJUNCTION WITH (BUT ASYNCHRONOUSLY FROM) THE T4RUPT PROGRAM, WHICH IS INITATED EVERY 60 MS, VIA INTERRUPT
005995,000024: # 3.
005996,000025:
005997,000026:
005998,000027: 2377 BANK 1
005999,000028: 2377 10670 DOWNRUPT CCS TELCOUNT # PNZ IS NORMAL SETTING - +0 INDICATES
006000,000029: 2400 02407 TC DOWNTMOK # TM FAILURE SINCE ENDPULSES ARE OCCURING
006001,000030: 2401 02571 TC TMFAIL # TOO FREQUENTLY. THE COUNTER IS SET TO +7
006002,000031:
006003,000032: 2402 44505 CS BIT10 # BLOCK TM ENDPULSES UNTIL ERROR RESET
006004,000033: 2403 70011 MASK OUT1 # COMMAND IS GIVEN.
006005,000034: 2404 64505 AD BIT10
006006,000035: 2405 50011 TS OUT1
006007,000036:
006008,000037: 2406 02266 TC NBRESUME # BY DSRUPT EVERY 120 MS.
006009,000038:
006010,000039: 2407 50670 DOWNTMOK TS TELCOUNT # NORMAL MODE - STORE DECREMENTED COUNT.
006011,000040: 2410 00673 TC DNTMGOTO # JUMP TO APPROPRIATE DOWNLINK PHASE.
006012,000041:
006013,000042: # IN PHASE 7, SEND REQUIRED NUMBER OF DUMMY MARKS, ENTERING PHASE 1 WHEN FINISHED. ANY REAL MARKERS
006014,000043: # OCCURING HERE WILL NOT BE SENT UNTIL PHASE 3.
006015,000044:
006016,000045: 2411 10676 DNPHASE7 CCS MARKERCT # REDUCE TO ZERO.
006017,000046: 2412 02541 TC DUMMARK
006018,000047:
006019,000048: # PHASE 1 SENDS LIST ID AND SETS UP PHASE 2.
006020,000049:
006021,000050: 2413 32553 DNPHASE1 CAF LPHASE2
006022,000051: 2414 50673 TS DNTMGOTO
006023,000052: 2415 32561 CAF LTHCOMA # NUMBER OF WORDS IN COMMON LIST A.
006024,000053: 2416 50674 TS TMINDEX
006025,000054: 2417 40672 CS DNLSTADR # CHANGES IN DNLSTADR NOT HONORED UNTIL
006026,000055: 2420 40000 COM # THIS PHASE.
006027,000056: 2421 50671 TS LDATALST
006028,000057: 2422 74302 MASK LOW11
006029,000058: 2423 64170 AD 60K # AT FOD'S REQUEST.
006030,000059: 2424 02545 TC W.O.=1
006031,000060:
Page 152 |
006033,000062:
006034,000063: # PHASE 2 SENDS COMMON LIST A: DSPTAB, T2, T1, I/O, CDUS, ETC. NO MARKERS ARE INTERSPERSED WITH THE DATA.
006035,000064:
006036,000065: 2425 10674 DNPHASE2 CCS TMINDEX # SEE IF MORE DATA TO BE SENT.
006037,000066: 2426 02505 TC PHASE2A
006038,000067:
006039,000068: 2427 32554 CAF LPHASE3 # IF NOT, BEGIN PHASE 3.
006040,000069: 2430 50673 TS DNTMGOTO
006041,000070: 2431 34473 CAF NOMRKRS # NUMBER OF MARKERS/SECOND.
006042,000071: 2432 50676 TS MARKERCT
006043,000072: 2433 32563 CAF LTHLSTA # NUMBER WORDS IN PARTICULAR LISTS A.
006044,000073: 2434 50674 TS TMINDEX
006045,000074:
006046,000075: # PHASE 3 - SEND DOWN PARTICULAR LIST A WITH REAL MARKERS INTER-LEAVED.
006047,000076:
006048,000077: 2435 10675 DNPHASE3 CCS TMMARKER # SEE IF ANY MARKERS TO BE SENT.
006049,000078: 2436 02536 TC DOMARKER
006050,000079:
006051,000080: 2437 10674 CCS TMINDEX # SEND DOWN PART. LIST A ENTRY IF ANY.
006052,000081: 2440 02517 TC PHASE36A # (COMMON TO PHASES 3 AND 6.)
006053,000082:
006054,000083: 2441 32555 CAF LPHASE4 # END OF PHASE 3, START PHASE 4.
006055,000084: 2442 50673 TS DNTMGOTO
006056,000085:
006057,000086: # PHASE 4: SEND DUMMY MARKERS UNTIL MARKERCT = 0.
006058,000087:
006059,000088: 2443 10676 DNPHASE4 CCS MARKERCT # (NONE MAY BE REQUIRED)
006060,000089: 2444 02541 TC DUMMARK
006061,000090:
006062,000091: 2445 32556 CAF LPHASE5 # END OF PHASE 4 - BEGIN PHASE 5.
006063,000092: 2446 50673 TS DNTMGOTO
006064,000093: 2447 32562 CAF LTHCOMB # NUMBER OF WORDS IN COMMON LIST B - 1.
006065,000094:
006066,000095: # PHASE 5: SEND COMMON LIST B WITH NO MARKERS INTER-LEAVED.
006067,000096:
006068,000097: 2450 50674 PHASE5A TS TMINDEX # (ENTERS HERE FIRST TIME ONLY).
006069,000098: 2451 20000 INDEX A
006070,000099: 2452 22612 INDEX COMLSTB
006071,000100: 2453 40000 CS 0
006072,000101: 2454 02511 TC DATADWNF
006073,000102:
006074,000103: 2455 10674 DNPHASE5 CCS TMINDEX # NORMAL PHASE 5 ENTRY.
006075,000104: 2456 02450 TC PHASE5A
006076,000105:
Page 153 |
006078,000107:
006079,000108: # AT END OF PHASE 5, BEGIN PHASE 6. THE ADDRESS OF PARTICULAR LIST B IMMEDIATELY PRECEEDS
006080,000109: # PARTICULAR LIST A.
006081,000110:
006082,000111: 2457 32557 CAF LPHASE6
006083,000112: 2460 50673 TS DNTMGOTO
006084,000113: 2461 32564 CAF LTHLSTB # NUMBER OF WORDS IN PARTICULAR LISTS B.
006085,000114: 2462 50674 TS TMINDEX
006086,000115: 2463 34473 CAF NOMRKRS
006087,000116: 2464 50676 TS MARKERCT
006088,000117:
006089,000118: 2465 32570 CAF LISTBANK # GET ADDRESS OF PART. LIST B.
006090,000119: 2466 30015 XCH BANKREG
006091,000120: 2467 30671 XCH LDATALST
006092,000121: 2470 64335 AD MINUS1
006093,000122: 2471 20000 INDEX A
006094,000123: 2472 40000 CS 0 # SO WE CAN RUN IN ERASABLE.
006095,000124: 2473 40000 COM
006096,000125: 2474 30671 XCH LDATALST
006097,000126: 2475 50015 TS BANKREG
006098,000127:
006099,000128: # PHASE 6: PARTICULAR LIST B AND REAL MARKERS.
006100,000129:
006101,000130: 2476 10675 DNPHASE6 CCS TMMARKER
006102,000131: 2477 02536 TC DOMARKER
006103,000132:
006104,000133: 2500 10674 CCS TMINDEX
006105,000134: 2501 02517 TC PHASE36A
006106,000135:
006107,000136: 2502 32560 CAF LPHASE7 # SWITCH TO PHASE 7 TO SUPPLY REQUIRED
006108,000137: 2503 50673 TS DNTMGOTO # NUMBER OF DUMMY MARKS.
006109,000138: 2504 02411 TC DNPHASE7
006110,000139:
Page 154 |
006112,000141:
006113,000142: # OUT OF SEQUENCE ROUTINES.
006114,000143:
006115,000144: 2505 50674 PHASE2A TS TMINDEX # SELECT DATA WORD FOR COMMON LIST A IN
006116,000145: 2506 20000 INDEX A # IN FIXED-FIXED.
006117,000146: 2507 22576 INDEX COMLSTA
006118,000147: 2510 40000 CS 0
006119,000148: 2511 40000 DATADWNF COM # PHASE 5 (COMMON LIST B) EXITS HERE.
006120,000149: 2512 50014 TS OUT4
006121,000150: 2513 44506 CS BIT9
006122,000151: 2514 70011 MASK OUT1
006123,000152: 2515 50011 TS OUT1
006124,000153: 2516 02266 TC NBRESUME # NO BANK SWITCH REQUIRED.
006125,000154:
006126,000155: 2517 50674 PHASE36A TS TMINDEX # PHASES 3 AND 6 (PARTICULAR DATA LISTS)
006127,000156: 2520 32570 CAF LISTBANK # EXIT HERE
006128,000157: 2521 30015 XCH BANKREG
006129,000158: 2522 50030 TS BANKRUPT # PARTICULAR LISTS IN SWITCHED BANK.
006130,000159:
006131,000160: 2523 10671 CCS LDATALST # (SAVES 2 MCT).
006132,000161: 2524 60674 AD TMINDEX
006133,000162: 2525 20000 INDEX A
006134,000163: 2526 20001 INDEX 1 # (1 COMPENSATES FOR ABOVE CCS.)
006135,000164: 2527 40000 CS 0
006136,000165: 2530 40000 COM
006137,000166: 2531 50014 TS OUT4
006138,000167: 2532 44506 CS BIT9
006139,000168: 2533 70011 MASK OUT1
006140,000169: 2534 50011 TS OUT1
006141,000170: 2535 02264 TC RESUME
006142,000171:
006143,000172: 2536 10676 DOMARKER CCS MARKERCT # COME HERE TO SHIP DOWN REAL MARKER.
006144,000173: 2537 02541 TC +2 # PROTECT AGAINST TOO MANY TMMARKERS
006145,000174: 2540 00001 TC Q # BEING SENT DOWN WITHIN ONE SECOND
006146,000175: 2541 50676 DUMMARK TS MARKERCT # REDUCE MARKERCT (NEVER IS ZERO ABOVE).
006147,000176: 2542 35501 CAF ZERO
006148,000177: 2543 30675 XCH TMMARKER
006149,000178: 2544 62565 AD DN74K # AT FOD'S REQUEST.
006150,000179: 2545 50014 W.O.=1 TS OUT4 # PHASE 1 EXITS HERE.
006151,000180: 2546 44506 CS BIT9
006152,000181: 2547 70011 MASK OUT1
006153,000182: 2550 64506 AD BIT9
006154,000183: 2551 50011 TS OUT1
006155,000184: 2552 02266 TC NBRESUME
006156,000185:
Page 155 |
006158,000187:
006159,000188: # CONSTANTS.
006160,000189:
006161,000190: 2553 02425 LPHASE2 ADRES DNPHASE2 # ADDRESSES FOR DNTMGOTO.
006162,000191: 2554 02435 LPHASE3 ADRES DNPHASE3
006163,000192: 2555 02443 LPHASE4 ADRES DNPHASE4
006164,000193: 2556 02455 LPHASE5 ADRES DNPHASE5
006165,000194: 2557 02476 LPHASE6 ADRES DNPHASE6
006166,000195: 2560 02411 LPHASE7 ADRES DNPHASE7
006167,000196:
006168,000197: 2561 00032 LTHCOMA DEC 26 B-14 # LENGTH OF COMMON LIST A.
006169,000198: 2562 00015 LTHCOMB DEC 13 B-14 # LENGTH OF COMMON LIST B - 1.
006170,000199: 2563 00025 LTHLSTA DEC 21 B-14 # PARTICULAR LIST A.
006171,000200: 2564 00040 LTHLSTB DEC 32 B-14 # PARTICULAR LIST B.
006172,000201: 2565 74000 DN74K OCT 74000
006173,000202: 2566 4473 NOMRKRS EQUALS THREE
006174,000203:
006175,000204: 2566 06067 LDNLST1 ADRES 501LSTA1
006176,000205: 2567 06001 LDNLST2 ADRES 501LSTA2
006177,000206: 2570 20067 LISTBANK CADR 501LSTA1
006178,000207:
006179,000208: # SUBROUTINE COMMON TO UPLINK AND DOWNLINK TO TURN ON THE TM FAIL LIGHT.
006180,000209:
006181,000210: 2571 44513 TMFAIL CS BIT4
006182,000211: 2572 70011 MASK OUT1
006183,000212: 2573 64513 AD BIT4
006184,000213: 2574 50011 TS OUT1
006185,000214: 2575 00001 TC Q
006186,000215:
Page 156 |
006188,000217:
006189,000218: # COMMON LISTS A AND B.
006190,000219:
006191,000220: 2576 00051 COMLSTA ADRES CDUZ # 27
006192,000221: 2577 00050 ADRES CDUY # 26
006193,000222: 2600 00047 ADRES CDUX # 25
006194,000223: 2601 00647 ADRES FLAGWRD2 # 24
006195,000224: 2602 00646 ADRES FLAGWRD1 # 23
006196,000225: 2603 00645 ADRES STATE # 22
006197,000226: 2604 00011 ADRES OUT1 # 21
006198,000227: 2605 00007 ADRES IN3 # 20
006199,000228: 2606 00006 ADRES IN2 # 19
006200,000229: 2607 00004 ADRES IN0 # 18
006201,000230: 2610 00036 ADRES TIME1 # 17
006202,000231: 2611 00035 ADRES TIME2 # 16
006203,000232:
006204,000233: 2612 00725 COMLSTB ADRES DSPTAB +13D # 15/65
006205,000234: 2613 00724 ADRES DSPTAB +12D # 14/64
006206,000235: 2614 00723 ADRES DSPTAB +11D # 13/63
006207,000236: 2615 00722 ADRES DSPTAB +10D # 12/62
006208,000237: 2616 00721 ADRES DSPTAB +9D # 11/61
006209,000238: 2617 00720 ADRES DSPTAB +8D # 10/60
006210,000239: 2620 00717 ADRES DSPTAB +7 # 9/59
006211,000240: 2621 00716 ADRES DSPTAB +6 # 8/58
006212,000241: 2622 00715 ADRES DSPTAB +5 # 7/57
006213,000242: 2623 00714 ADRES DSPTAB +4 # 6/56
006214,000243: 2624 00713 ADRES DSPTAB +3 # 5/55
006215,000244: 2625 00712 ADRES DSPTAB +2 # 4/54
006216,000245: 2626 00711 ADRES DSPTAB +1 # 3/53
006217,000246: 2627 00710 ADRES DSPTAB # 2/52
006218,000247:
Page 157 |
006220,000249:
006221,000250: # PARTICULAR DATA LISTS FOR FLIGHT 501. LIST 1 PROVIDES DATA FOR THE ENTIRE FLIGHT EXCEPT DURING
006222,000251: # STATE VECTOR UPDATES, FOR WHICH LIST 2 IS USED.
006223,000252:
006224,000253: 10,6000 SETLOC 20000
006225,000254:
006226,000255: 10,6000 06006 ADRES 501LSTB2
006227,000256: 10,6001 01117 501LSTA2 ADRES COMPNUMB
006228,000257: 10,6002 01116 ADRES UPOLDMD
006229,000258: 10,6003 06114 ADRES DNSPARE
006230,000259: 10,6004 06114 ADRES DNSPARE
006231,000260: 10,6005 06114 ADRES DNSPARE
006232,000261: 10,6006 01115 501LSTB2 ADRES STBUFF +13D
006233,000262: 10,6007 01114 ADRES STBUFF +12D
006234,000263: 10,6010 01113 ADRES STBUFF +11D
006235,000264: 10,6011 01112 ADRES STBUFF +10D
006236,000265: 10,6012 01111 ADRES STBUFF +9D
006237,000266: 10,6013 01110 ADRES STBUFF +8D
006238,000267: 10,6014 01107 ADRES STBUFF +7
006239,000268: 10,6015 01106 ADRES STBUFF +6
006240,000269: 10,6016 01105 ADRES STBUFF +5
006241,000270: 10,6017 01104 ADRES STBUFF +4
006242,000271: 10,6020 01103 ADRES STBUFF +3
006243,000272: 10,6021 01102 ADRES STBUFF +2
006244,000273: 10,6022 01101 ADRES STBUFF +1
006245,000274: 10,6023 01100 ADRES STBUFF
006246,000275: 10,6024 01123 ADRES STCNTR
006247,000276: 10,6025 06114 ADRES DNSPARE
006248,000277: 10,6026 01211 501LSTB1 ADRES TAVEGON +1 # COMMON TO LISTS 1 AND 2
006249,000278: 10,6027 01210 ADRES TAVEGON
006250,000279: 10,6030 01227 ADRES VAVEGON +5
006251,000280: 10,6031 01226 ADRES VAVEGON +4
006252,000281: 10,6032 01225 ADRES VAVEGON +3
006253,000282: 10,6033 01224 ADRES VAVEGON +2
006254,000283: 10,6034 01223 ADRES VAVEGON +1
006255,000284: 10,6035 01222 ADRES VAVEGON
006256,000285: 10,6036 01221 ADRES RAVEGON +5
006257,000286: 10,6037 01220 ADRES RAVEGON +4
006258,000287: 10,6040 01217 ADRES RAVEGON +3
006259,000288: 10,6041 01216 ADRES RAVEGON +2
006260,000289: 10,6042 01215 ADRES RAVEGON +1
006261,000290: 10,6043 01214 ADRES RAVEGON
006262,000291: 10,6044 01463 ADRES TCUTOFF +1 # EVENT TIME
006263,000292: 10,6045 01462 ADRES TCUTOFF
006264,000293: 10,6046 01467 ADRES TIME1GR
006265,000294: 10,6047 01466 ADRES TIME2GR
006266,000295:
006267,000296: 10,6050 01465 ADRES PIPTIME +1
006268,000297: 10,6051 01464 ADRES PIPTIME
006269,000298: 10,6052 01000 ADRES VN +5
006270,000299: 10,6053 00777 ADRES VN +4
Page 158 |
006272,000301: 10,6054 00776 ADRES VN +3
006273,000302: 10,6055 00775 ADRES VN +2
006274,000303: 10,6056 00774 ADRES VN +1
006275,000304: 10,6057 00773 ADRES VN
006276,000305: 10,6060 00772 ADRES RN +5
006277,000306: 10,6061 00771 ADRES RN +4
006278,000307: 10,6062 00770 ADRES RN +3
006279,000308: 10,6063 00767 ADRES RN +2
006280,000309: 10,6064 00766 ADRES RN +1
006281,000310: 10,6065 00765 ADRES RN
006282,000311:
006283,000312: 10,6066 06026 ADRES 501LSTB1
006284,000313: 10,6067 01457 501LSTA1 ADRES TFF +1
006285,000314: 10,6070 01456 ADRES TFF
006286,000315: 10,6071 01113 ADRES VRECT +5
006287,000316: 10,6072 01112 ADRES VRECT +4
006288,000317: 10,6073 01111 ADRES VRECT +3
006289,000318: 10,6074 01110 ADRES VRECT +2
006290,000319: 10,6075 01107 ADRES VRECT +1
006291,000320: 10,6076 01106 ADRES VRECT
006292,000321: 10,6077 01105 ADRES RRECT +5
006293,000322: 10,6100 01104 ADRES RRECT +4
006294,000323: 10,6101 01103 ADRES RRECT +3
006295,000324: 10,6102 01102 ADRES RRECT +2
006296,000325: 10,6103 01101 ADRES RRECT +1
006297,000326: 10,6104 01100 ADRES RRECT
006298,000327: 10,6105 00702 ADRES THETAD +2
006299,000328: 10,6106 00701 ADRES THETAD +1
006300,000329: 10,6107 00700 ADRES THETAD
006301,000330: 10,6110 01005 ADRES DELVX +4
006302,000331: 10,6111 01003 ADRES DELVX +2
006303,000332: 10,6112 01001 ADRES DELVX
006304,000333: 10,6113 01075 ADRES REDOCNTR
006305,000334:
006306,000335: 10,6114 52525 DNSPARE OCT 52525 # AT FOD'S REQUEST.
End of include-file DOWN-TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc