Source Code
These source-code files are part of a reconstructed copy of Corona 261, the
final, flown release of the Block I Command Module (CM) Apollo Guidance Computer
(AGC) software for the AS-202 mission.
They have been created via disassembly of binary dumps of the original core rope memory modules actually flown on the mission, part numbers 1003733-171, 1003733-241, 1003733-191, 1003733-211, 1003733-221, and 1003733-241. The source code for the Apollo 4 and 6 software, Solarium 55, was used as a starting point, since it was directly derived from Corona and (at least in theory) only minimally modified. Since only binary dumps (rather than listings) of Corona are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
005750,000002: ## Copyright: Public domain.
005751,000003: ## Filename: DOWN-TELEMETRY_PROGRAM.agc
005752,000004: ## Purpose: A section of Corona revision 261.
005753,000005: ## It is part of the source code for the Apollo Guidance Computer
005754,000006: ## (AGC) for AS-202. No original listings of this software are
005755,000007: ## available; instead, this file was created via disassembly of
005756,000008: ## the core rope modules actually flown on the mission.
005757,000009: ## Assembler: yaYUL
005758,000010: ## Contact: Ron Burkey <info@sandroid.org>.
005759,000011: ## Website: www.ibiblio.org/apollo/index.html
005760,000012: ## Mod history: 2023-05-27 MAS Created from Solarium 55.
005761,000013: ## 2023-06-17 MAS Updated for Corona.
005762,000014:
005763,000015:
005764,000016: # TELEMETRY PROCESSOR
005765,000017: # --------- ---------
005766,000018:
005767,000019: # THE FOLLOWING TELEMETRY PROGRAM IS DESIGNED TO TRANSMIT TELEMETRY DATA VIA OUT4 WHEN AN ENDPULSE
005768,000020: # FROM THE NORTH AMERICAN TELEMETRY PROGRAMMER TRIGGERS INTERRUPT 6, WHICH INITIATES THIS ROUTINE. IT OPERATES
005769,000021: # IN CONJUNCTION WITH (BUT ASYNCHRONOUSLY FROM) THE T4RUPT PROGRAM, WHICH IS INITATED EVERY 60 MS, VIA INTERRUPT
005770,000022: # 3.
005771,000023:
005772,000024:
005773,000025: 2377 BANK 1
005774,000026: 2377 10670 DOWNRUPT CCS TELCOUNT # PNZ IS NORMAL SETTING - +0 INDICATES
005775,000027: 2400 02407 TC DOWNTMOK # TM FAILURE SINCE ENDPULSES ARE OCCURING
005776,000028: 2401 02567 TC TMFAIL # TOO FREQUENTLY. THE COUNTER IS SET TO +7
005777,000029:
005778,000030: 2402 44505 CS BIT10 # BLOCK TM ENDPULSES UNTIL ERROR RESET
005779,000031: 2403 70011 MASK OUT1 # COMMAND IS GIVEN.
005780,000032: 2404 64505 AD BIT10
005781,000033: 2405 50011 TS OUT1
005782,000034:
005783,000035: 2406 02266 TC NBRESUME # BY DSRUPT EVERY 120 MS.
005784,000036:
005785,000037: 2407 50670 DOWNTMOK TS TELCOUNT # NORMAL MODE - STORE DECREMENTED COUNT.
005786,000038: 2410 00673 TC DNTMGOTO # JUMP TO APPROPRIATE DOWNLINK PHASE.
005787,000039:
005788,000040: # IN PHASE 7, SEND REQUIRED NUMBER OF DUMMY MARKS, ENTERING PHASE 1 WHEN FINISHED. ANY REAL MARKERS
005789,000041: # OCCURING HERE WILL NOT BE SENT UNTIL PHASE 3.
005790,000042:
005791,000043: 2411 10676 DNPHASE7 CCS MARKERCT # REDUCE TO ZERO.
005792,000044: 2412 02537 TC DUMMARK
005793,000045:
005794,000046: # PHASE 1 SENDS LIST ID AND SETS UP PHASE 2.
005795,000047:
005796,000048: 2413 32551 DNPHASE1 CAF LPHASE2
005797,000049: 2414 50673 TS DNTMGOTO
005798,000050: 2415 32557 CAF LTHCOMA # NUMBER OF WORDS IN COMMON LIST A.
005799,000051: 2416 50674 TS TMINDEX
005800,000052: 2417 40672 CS DNLSTADR # CHANGES IN DNLSTADR NOT HONORED UNTIL
005801,000053: 2420 40000 COM # THIS PHASE.
005802,000054: 2421 50671 TS LDATALST
005803,000055: 2422 74302 MASK LOW11
005804,000056: 2423 64170 AD 60K # AT FOD'S REQUEST.
005805,000057: 2424 02543 TC W.O.=1
005806,000058:
005807,000059:
005808,000060: # PHASE 2 SENDS COMMON LIST A: DSPTAB, T2, T1, I/O, CDUS, ETC. NO MARKERS ARE INTERSPERSED WITH THE DATA.
005809,000061:
005810,000062: 2425 10674 DNPHASE2 CCS TMINDEX # SEE IF MORE DATA TO BE SENT.
005811,000063: 2426 02505 TC PHASE2A
005812,000064:
005813,000065: 2427 32552 CAF LPHASE3 # IF NOT, BEGIN PHASE 3.
005814,000066: 2430 50673 TS DNTMGOTO
005815,000067: 2431 34473 CAF NOMRKRS # NUMBER OF MARKERS/SECOND.
005816,000068: 2432 50676 TS MARKERCT
005817,000069: 2433 32561 CAF LTHLSTA # NUMBER WORDS IN PARTICULAR LISTS A.
005818,000070: 2434 50674 TS TMINDEX
005819,000071:
005820,000072: # PHASE 3 - SEND DOWN PARTICULAR LIST A WITH REAL MARKERS INTER-LEAVED.
005821,000073:
005822,000074: 2435 10675 DNPHASE3 CCS TMMARKER # SEE IF ANY MARKERS TO BE SENT.
005823,000075: 2436 02536 TC DOMARKER
005824,000076:
005825,000077: 2437 10674 CCS TMINDEX # SEND DOWN PART. LIST A ENTRY IF ANY.
005826,000078: 2440 02517 TC PHASE36A # (COMMON TO PHASES 3 AND 6.)
005827,000079:
005828,000080: 2441 32553 CAF LPHASE4 # END OF PHASE 3, START PHASE 4.
005829,000081: 2442 50673 TS DNTMGOTO
005830,000082:
005831,000083: # PHASE 4: SEND DUMMY MARKERS UNTIL MARKERCT = 0.
005832,000084:
005833,000085: 2443 10676 DNPHASE4 CCS MARKERCT # (NONE MAY BE REQUIRED)
005834,000086: 2444 02537 TC DUMMARK
005835,000087:
005836,000088: 2445 32554 CAF LPHASE5 # END OF PHASE 4 - BEGIN PHASE 5.
005837,000089: 2446 50673 TS DNTMGOTO
005838,000090: 2447 32560 CAF LTHCOMB # NUMBER OF WORDS IN COMMON LIST B - 1.
005839,000091:
005840,000092: # PHASE 5: SEND COMMON LIST B WITH NO MARKERS INTER-LEAVED.
005841,000093:
005842,000094: 2450 50674 PHASE5A TS TMINDEX # (ENTERS HERE FIRST TIME ONLY).
005843,000095: 2451 20000 INDEX A
005844,000096: 2452 22610 INDEX COMLSTB
005845,000097: 2453 40000 CS 0
005846,000098: 2454 02511 TC DATADWNF
005847,000099:
005848,000100: 2455 10674 DNPHASE5 CCS TMINDEX # NORMAL PHASE 5 ENTRY.
005849,000101: 2456 02450 TC PHASE5A
005850,000102:
005851,000103:
005852,000104: # AT END OF PHASE 5, BEGIN PHASE 6. THE ADDRESS OF PARTICULAR LIST B IMMEDIATELY PRECEEDS
005853,000105: # PARTICULAR LIST A.
005854,000106:
005855,000107: 2457 32555 CAF LPHASE6
005856,000108: 2460 50673 TS DNTMGOTO
005857,000109: 2461 32562 CAF LTHLSTB # NUMBER OF WORDS IN PARTICULAR LISTS B.
005858,000110: 2462 50674 TS TMINDEX
005859,000111: 2463 34473 CAF NOMRKRS
005860,000112: 2464 50676 TS MARKERCT
005861,000113:
005862,000114: 2465 32566 CAF LISTBANK # GET ADDRESS OF PART. LIST B.
005863,000115: 2466 30015 XCH BANKREG
005864,000116: 2467 30671 XCH LDATALST
005865,000117: 2470 64335 AD MINUS1
005866,000118: 2471 20000 INDEX A
005867,000119: 2472 40000 CS 0 # SO WE CAN RUN IN ERASABLE.
005868,000120: 2473 40000 COM
005869,000121: 2474 30671 XCH LDATALST
005870,000122: 2475 50015 TS BANKREG
005871,000123:
005872,000124: # PHASE 6: PARTICULAR LIST B AND REAL MARKERS.
005873,000125:
005874,000126: 2476 10675 DNPHASE6 CCS TMMARKER
005875,000127: 2477 02536 TC DOMARKER
005876,000128:
005877,000129: 2500 10674 CCS TMINDEX
005878,000130: 2501 02517 TC PHASE36A
005879,000131:
005880,000132: 2502 32556 CAF LPHASE7 # SWITCH TO PHASE 7 TO SUPPLY REQUIRED
005881,000133: 2503 50673 TS DNTMGOTO # NUMBER OF DUMMY MARKS.
005882,000134: 2504 02411 TC DNPHASE7
005883,000135:
005884,000136:
005885,000137: # OUT OF SEQUENCE ROUTINES.
005886,000138:
005887,000139: 2505 50674 PHASE2A TS TMINDEX # SELECT DATA WORD FOR COMMON LIST A IN
005888,000140: 2506 20000 INDEX A # IN FIXED-FIXED.
005889,000141: 2507 22574 INDEX COMLSTA
005890,000142: 2510 40000 CS 0
005891,000143: 2511 40000 DATADWNF COM # PHASE 5 (COMMON LIST B) EXITS HERE.
005892,000144: 2512 50014 TS OUT4
005893,000145: 2513 44506 CS BIT9
005894,000146: 2514 70011 MASK OUT1
005895,000147: 2515 50011 TS OUT1
005896,000148: 2516 02266 TC NBRESUME # NO BANK SWITCH REQUIRED.
005897,000149:
005898,000150: 2517 50674 PHASE36A TS TMINDEX # PHASES 3 AND 6 (PARTICULAR DATA LISTS)
005899,000151: 2520 32566 CAF LISTBANK # EXIT HERE
005900,000152: 2521 30015 XCH BANKREG
005901,000153: 2522 50030 TS BANKRUPT # PARTICULAR LISTS IN SWITCHED BANK.
005902,000154:
005903,000155: 2523 10671 CCS LDATALST # (SAVES 2 MCT).
005904,000156: 2524 60674 AD TMINDEX
005905,000157: 2525 20000 INDEX A
005906,000158: 2526 20001 INDEX 1 # (1 COMPENSATES FOR ABOVE CCS.)
005907,000159: 2527 40000 CS 0
005908,000160: 2530 40000 COM
005909,000161: 2531 50014 TS OUT4
005910,000162: 2532 44506 CS BIT9
005911,000163: 2533 70011 MASK OUT1
005912,000164: 2534 50011 TS OUT1
005913,000165: 2535 02264 TC RESUME
005914,000166:
005915,000167: 2536 10676 DOMARKER CCS MARKERCT # COME HERE TO SHIP DOWN REAL MARKER.
005916,000168: 2537 50676 DUMMARK TS MARKERCT # REDUCE MARKERCT (NEVER IS ZERO ABOVE).
005917,000169: 2540 35501 CAF ZERO
005918,000170: 2541 30675 XCH TMMARKER
005919,000171: 2542 62563 AD DN74K # AT FOD'S REQUEST.
005920,000172: 2543 50014 W.O.=1 TS OUT4 # PHASE 1 EXITS HERE.
005921,000173: 2544 44506 CS BIT9
005922,000174: 2545 70011 MASK OUT1
005923,000175: 2546 64506 AD BIT9
005924,000176: 2547 50011 TS OUT1
005925,000177: 2550 02266 TC NBRESUME
005926,000178:
005927,000179:
005928,000180: # CONSTANTS.
005929,000181:
005930,000182: 2551 02425 LPHASE2 ADRES DNPHASE2 # ADDRESSES FOR DNTMGOTO.
005931,000183: 2552 02435 LPHASE3 ADRES DNPHASE3
005932,000184: 2553 02443 LPHASE4 ADRES DNPHASE4
005933,000185: 2554 02455 LPHASE5 ADRES DNPHASE5
005934,000186: 2555 02476 LPHASE6 ADRES DNPHASE6
005935,000187: 2556 02411 LPHASE7 ADRES DNPHASE7
005936,000188:
005937,000189: 2557 00032 LTHCOMA DEC 26 B-14 # LENGTH OF COMMON LIST A.
005938,000190: 2560 00015 LTHCOMB DEC 13 B-14 # LENGTH OF COMMON LIST B - 1.
005939,000191: 2561 00025 LTHLSTA DEC 21 B-14 # PARTICULAR LIST A.
005940,000192: 2562 00040 LTHLSTB DEC 32 B-14 # PARTICULAR LIST B.
005941,000193: 2563 74000 DN74K OCT 74000
005942,000194: 2564 4473 NOMRKRS EQUALS THREE
005943,000195:
005944,000196: 2564 06067 LDNLST1 ADRES 202LSTA1
005945,000197: 2565 06001 LDNLST2 ADRES 202LSTA2
005946,000198: 2566 20067 LISTBANK CADR 202LSTA1
005947,000199:
005948,000200: # SUBROUTINE COMMON TO UPLINK AND DOWNLINK TO TURN ON THE TM FAIL LIGHT.
005949,000201:
005950,000202: 2567 44513 TMFAIL CS BIT4
005951,000203: 2570 70011 MASK OUT1
005952,000204: 2571 64513 AD BIT4
005953,000205: 2572 50011 TS OUT1
005954,000206: 2573 00001 TC Q
005955,000207:
005956,000208:
005957,000209: # COMMON LISTS A AND B.
005958,000210:
005959,000211: 2574 00051 COMLSTA ADRES CDUZ # 27
005960,000212: 2575 00050 ADRES CDUY # 26
005961,000213: 2576 00047 ADRES CDUX # 25
005962,000214: 2577 00647 ADRES FLAGWRD2 # 24
005963,000215: 2600 00646 ADRES FLAGWRD1 # 23
005964,000216: 2601 00645 ADRES STATE # 22
005965,000217: 2602 00011 ADRES OUT1 # 21
005966,000218: 2603 00007 ADRES IN3 # 20
005967,000219: 2604 00006 ADRES IN2 # 19
005968,000220: 2605 00004 ADRES IN0 # 18
005969,000221: 2606 00036 ADRES TIME1 # 17
005970,000222: 2607 00035 ADRES TIME2 # 16
005971,000223:
005972,000224: 2610 00725 COMLSTB ADRES DSPTAB +13D # 15/65
005973,000225: 2611 00724 ADRES DSPTAB +12D # 14/64
005974,000226: 2612 00723 ADRES DSPTAB +11D # 13/63
005975,000227: 2613 00722 ADRES DSPTAB +10D # 12/62
005976,000228: 2614 00721 ADRES DSPTAB +9D # 11/61
005977,000229: 2615 00720 ADRES DSPTAB +8D # 10/60
005978,000230: 2616 00717 ADRES DSPTAB +7 # 9/59
005979,000231: 2617 00716 ADRES DSPTAB +6 # 8/58
005980,000232: 2620 00715 ADRES DSPTAB +5 # 7/57
005981,000233: 2621 00714 ADRES DSPTAB +4 # 6/56
005982,000234: 2622 00713 ADRES DSPTAB +3 # 5/55
005983,000235: 2623 00712 ADRES DSPTAB +2 # 4/54
005984,000236: 2624 00711 ADRES DSPTAB +1 # 3/53
005985,000237: 2625 00710 ADRES DSPTAB # 2/52
005986,000238:
005987,000239:
005988,000240: # PARTICULAR DATA LISTS FOR FLIGHT 202. LIST 1 PROVIDES DATA FOR THE ENTIRE FLIGHT EXCEPT DURING
005989,000241: # STATE VECTOR UPDATES, FOR WHICH LIST 2 IS USED.
005990,000242:
005991,000243: 10,6000 SETLOC 20000
005992,000244:
005993,000245: 10,6000 06010 ADRES 202LSTB2
005994,000246: 10,6001 01123 202LSTA2 ADRES STCNTR
005995,000247: 10,6002 06114 ADRES DNSPARE
005996,000248: 10,6003 06114 ADRES DNSPARE
005997,000249: 10,6004 06114 ADRES DNSPARE
005998,000250: 10,6005 06114 ADRES DNSPARE
005999,000251: 10,6006 06114 ADRES DNSPARE
006000,000252: 10,6007 06114 ADRES DNSPARE
006001,000253: 10,6010 01115 202LSTB2 ADRES STBUFF +13D
006002,000254: 10,6011 01114 ADRES STBUFF +12D
006003,000255: 10,6012 01113 ADRES STBUFF +11D
006004,000256: 10,6013 01112 ADRES STBUFF +10D
006005,000257: 10,6014 01111 ADRES STBUFF +9D
006006,000258: 10,6015 01110 ADRES STBUFF +8D
006007,000259: 10,6016 01107 ADRES STBUFF +7
006008,000260: 10,6017 01106 ADRES STBUFF +6
006009,000261: 10,6020 01105 ADRES STBUFF +5
006010,000262: 10,6021 01104 ADRES STBUFF +4
006011,000263: 10,6022 01103 ADRES STBUFF +3
006012,000264: 10,6023 01102 ADRES STBUFF +2
006013,000265: 10,6024 01101 ADRES STBUFF +1
006014,000266: 10,6025 01100 ADRES STBUFF
006015,000267: 10,6026 01211 202LSTB1 ADRES TAVEGON +1 # COMMON TO LISTS 1 AND 2
006016,000268: 10,6027 01210 ADRES TAVEGON
006017,000269: 10,6030 01227 ADRES VAVEGON +5
006018,000270: 10,6031 01226 ADRES VAVEGON +4
006019,000271: 10,6032 01225 ADRES VAVEGON +3
006020,000272: 10,6033 01224 ADRES VAVEGON +2
006021,000273: 10,6034 01223 ADRES VAVEGON +1
006022,000274: 10,6035 01222 ADRES VAVEGON
006023,000275: 10,6036 01221 ADRES RAVEGON +5
006024,000276: 10,6037 01220 ADRES RAVEGON +4
006025,000277: 10,6040 01217 ADRES RAVEGON +3
006026,000278: 10,6041 01216 ADRES RAVEGON +2
006027,000279: 10,6042 01215 ADRES RAVEGON +1
006028,000280: 10,6043 01214 ADRES RAVEGON
006029,000281: 10,6044 01463 ADRES TCUTOFF +1 # EVENT TIME
006030,000282: 10,6045 01462 ADRES TCUTOFF
006031,000283: 10,6046 01467 ADRES TIME1GR
006032,000284: 10,6047 01466 ADRES TIME2GR
006033,000285:
006034,000286: 10,6050 01465 ADRES PIPTIME +1
006035,000287: 10,6051 01464 ADRES PIPTIME
006036,000288: 10,6052 01000 ADRES VN +5
006037,000289: 10,6053 00777 ADRES VN +4
006038,000290: 10,6054 00776 ADRES VN +3
006039,000291: 10,6055 00775 ADRES VN +2
006040,000292: 10,6056 00774 ADRES VN +1
006041,000293: 10,6057 00773 ADRES VN
006042,000294: 10,6060 00772 ADRES RN +5
006043,000295: 10,6061 00771 ADRES RN +4
006044,000296: 10,6062 00770 ADRES RN +3
006045,000297: 10,6063 00767 ADRES RN +2
006046,000298: 10,6064 00766 ADRES RN +1
006047,000299: 10,6065 00765 ADRES RN
006048,000300:
006049,000301: 10,6066 06026 ADRES 202LSTB1
006050,000302: 10,6067 01457 202LSTA1 ADRES TFF +1
006051,000303: 10,6070 01456 ADRES TFF
006052,000304: 10,6071 01113 ADRES VRECT +5
006053,000305: 10,6072 01112 ADRES VRECT +4
006054,000306: 10,6073 01111 ADRES VRECT +3
006055,000307: 10,6074 01110 ADRES VRECT +2
006056,000308: 10,6075 01107 ADRES VRECT +1
006057,000309: 10,6076 01106 ADRES VRECT
006058,000310: 10,6077 01105 ADRES RRECT +5
006059,000311: 10,6100 01104 ADRES RRECT +4
006060,000312: 10,6101 01103 ADRES RRECT +3
006061,000313: 10,6102 01102 ADRES RRECT +2
006062,000314: 10,6103 01101 ADRES RRECT +1
006063,000315: 10,6104 01100 ADRES RRECT
006064,000316: 10,6105 00702 ADRES THETAD +2
006065,000317: 10,6106 00701 ADRES THETAD +1
006066,000318: 10,6107 00700 ADRES THETAD
006067,000319: 10,6110 01005 ADRES DELVX +4
006068,000320: 10,6111 01003 ADRES DELVX +2
006069,000321: 10,6112 01001 ADRES DELVX
006070,000322: 10,6113 01075 ADRES REDOCNTR
006071,000323:
006072,000324: 10,6114 52525 DNSPARE OCT 52525 # AT FOD'S REQUEST.
End of include-file DOWN-TELEMETRY_PROGRAM.agc. Parent file is MAIN.agc