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. |
011359,000002: ## Copyright: Public domain.
011360,000003: ## Filename: INTER-BANK_COMMUNICATION.agc
011361,000004: ## Purpose: Part of the source code for Solarium build 55. This
011362,000005: ## is for the Command Module's (CM) Apollo Guidance
011363,000006: ## Computer (AGC), for Apollo 6.
011364,000007: ## Assembler: yaYUL --block1
011365,000008: ## Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
011366,000009: ## Website: www.ibiblio.org/apollo/index.html
011367,000010: ## Page Scans: www.ibiblio.org/apollo/ScansForConversion/Solarium055/
011368,000011: ## Mod history: 2009-09-15 JL Created.
011369,000012: ## 2016-08-19 RSB Typos.
011370,000013: ## 2016-12-28 RSB Proofed comment text using octopus/ProoferComments,
011371,000014: ## but no errors found.
011372,000015:
Page 290 |
011374,000017:
011375,000018: # THE FOLLOWING SUBROUTINES ARE INTENDED TO FACILITATE INTER-BANK COMMUNICATION. ROUTINES ARE PROVIDED
011376,000019: # FOR JUMPING TO A LOCATION IN ANOTHER BANK, CALLING A SUBROUTINE IN ANOTHER BANK, AND OBTAINING DATA FROM ANOTHER
011377,000020: # BANK. IN ADDITION, A ROUTINE IS PROVIDED FOR MAKING UP A RETURN_ADDRESS CADR FOR USE BY THE CALLED SUBROUTINE.
011378,000021:
011379,000022: 5654 BANK 2
011380,000023: 5654 50062 BANKCALL TS ADDRWD # SUBROUTINE CALL WITH TRANSMISSION BOTH
011381,000024: 5655 30001 XCH Q # WAYS IN A. THE CADR OF THE CALLED
011382,000025: 5656 64516 AD ONE # ROUTINE SHOULD IMMEDIATELY FOLLOW THE
011383,000026: 5657 50001 TS Q # TC BANKCALL.
011384,000027: 5660 20000 INDEX A
011385,000028: 5661 27777 CAF 0 -1 # PICK UP CADR AND FALL INTO SWCALL.
011386,000029:
011387,000030: 5662 50071 SWCALL TS TEMQS # SWCALL IS ALOS USED TO CALL SUBROUTINES
011388,000031: 5663 30015 XCH BANKREG # IN OTHER BANKS, BUT THE CADR ARRIVES IN
011389,000032: 5664 50072 TS BANKTEM # A. DATA MAY BE TRANSMITTED BACK TO THE
011390,000033: 5665 30001 XCH Q # CALLING PROGRAM IN A, HOWEVER.
011391,000034: 5666 30071 XCH TEMQS # RETURN INFORMATION NOW COMPLETE.
011392,000035: 5667 50114 TS ESCAPE
011393,000036: 5670 72667 MASK 70K # PROVISION FOR CALLING A ROUTINE IN
011394,000037: 5671 10000 CCS A # FIXED-FIXED (OF QUESTIONABLE VALUE).
011395,000038: 5672 05674 TC +2 # SPECIAL TREATMENT REQUIRED IF NON-ZERO.
011396,000039: 5673 05676 TC +3 # INPUT CADR OK AS IS.
011397,000040:
011398,000041: 5674 40015 CS BANKREG # FORM PROPER 12 BIT ADDRESS.
011399,000042: 5675 64373 AD 6K
011400,000043: 5676 60114 +3 AD ESCAPE # PROPER CADRS COME HERE WITH C(A) = 0.
011401,000044: 5677 30062 XCH ADDRWD # SO A CAN TRANSMIT WITH BANKCALL.
011402,000045: 5700 20062 INDEX ADDRWD
011403,000046: 5701 00000 TC 0 # SETTING Q TO SWRETURN.
011404,000047:
011405,000048: 5702 30072 SWRETURN XCH BANKTEM # RETURN TO CALLER, TRANSMITTING THROUGH A
011406,000049: 5703 50015 TS BANKREG
011407,000050: 5704 30072 XCH BANKTEM # RESTORE A AS UPON ARRIVAL TO SWRETURN.
011408,000051: 5705 00071 TC TEMQS # RETURN.
011409,000052:
Page 291 |
011411,000054:
011412,000055: 5706 35501 MAKECADR CAF ZERO # LEAVES RETURN-ADDRESS CADR (AS SET BY
011413,000056: 5707 60071 AD TEMQS # SWCALL OR BANKCALL) IN ADDRWD.
011414,000057: 5710 50062 TS ADDRWD
011415,000058: 5711 62165 AD 32K # SEE IF BANK INFORMATION NEEDED (USUAL).
011416,000059: 5712 50034 TS OVCTR
011417,000060: 5713 00001 TC Q # ADDRWD SET OK IF NO OVERFLOW (IN FF).
011418,000061:
011419,000062: 5714 30034 XCH OVCTR # CONTAINS LOW 10 BITS ONLY.
011420,000063: 5715 60072 AD BANKTEM
011421,000064: 5716 50062 TS ADDRWD # RETURN CADR NOW COMPLETE.
011422,000065: 5717 00001 TC Q
011423,000066:
011424,000067: 5720 2165 32K EQUALS PRIO32
011425,000068: 5720 30001 POSTJUMP XCH Q # ONE-WAY BANK TO BANK JUMP, WITH NO
011426,000069: 5721 20000 INDEX A # RETURN ADDRESS. THIS VERSION TRANSMITS
011427,000070: 5722 30000 CAF 0 # THROUGH A IF DESIRED.
011428,000071:
011429,000072: 5723 50015 BANKJUMP TS BANKREG # SAME AS ABOVE ONLY ADDRESS ARRIVES IN A.
011430,000073: 5724 74606 MASK LOW10 # BANKJUMP AND POSTJUMP MAY BE USED IN
011431,000074: 5725 30001 XCH Q # INTERRUPT OR UNDER EXEC, BUT BANKCALL
011432,000075: 5726 20001 INDEX Q # AND SWCALL MAY BE USED ONLY UNDER EXEC.
011433,000076: 5727 06000 TC 6000
011434,000077:
011435,000078:
011436,000079: 5730 50114 DATACALL TS ESCAPE # SUBROUTINE TO RETRIEVE DATA IN ANOTHER
011437,000080: 5731 30015 XCH BANKREG # BANK. THE CADR OF THE LOCATION OF INTER-
011438,000081: 5732 30114 XCH ESCAPE # EST ARRIVES IN A AND ITS CONTENTS ARE IN
011439,000082: 5733 74606 MASK LOW10 # A ON EXIT. THIS MAY BE USED ONLY UNDER
011440,000083: 5734 20000 INDEX A # EXECUTIVE.
011441,000084: 5735 36000 CAF 6000 # REQUESTED DATA NOW ACQUIRED.
011442,000085:
011443,000086: 5736 30114 XCH ESCAPE
011444,000087: 5737 50015 TS BANKREG
011445,000088: 5740 30114 XCH ESCAPE
011446,000089: 5741 00001 TC Q
011447,000090:
Page 292 |
011449,000092:
011450,000093: # THE FOLLOWING ROUTINES ARE INTERRUPT ANALOGS OF BANKCALL AND SWCALL. BANK-TO-BANK ONLY.
011451,000094:
011452,000095: 5742 50637 IBNKCALL TS RUPTREG1
011453,000096: 5743 30001 XCH Q
011454,000097: 5744 64516 AD ONE
011455,000098: 5745 50001 TS Q
011456,000099: 5746 20000 INDEX A
011457,000100: 5747 27777 CAF 0 -1
011458,000101:
011459,000102: 5750 50641 ISWCALL TS RUPTREG3
011460,000103: 5751 30015 XCH BANKREG
011461,000104: 5752 50640 TS RUPTREG2
011462,000105: 5753 30001 XCH Q
011463,000106: 5754 30641 XCH RUPTREG3
011464,000107: 5755 74606 MASK LOW10
011465,000108: 5756 30637 XCH RUPTREG1
011466,000109: 5757 20637 INDEX RUPTREG1
011467,000110: 5760 06000 TC 6000
011468,000111:
011469,000112: 5761 30640 ISWRETRN XCH RUPTREG2
011470,000113: 5762 50015 TS BANKREG
011471,000114: 5763 30640 XCH RUPTREG2
011472,000115: 5764 00641 TC RUPTREG3
End of include-file INTER-BANK_COMMUNICATION.agc. Parent file is MAIN.agc