Source Code
048725,000001: # Copyright: Public domain.
048726,000002: # Filename: INTER-BANK_COMMUNICATION.agc
048727,000003: # Purpose: Part of the source code for Comanche, build 055. It
048728,000004: # is part of the source code for the Command Module's
048729,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11.
048730,000006: # Assembler: yaYUL
048731,000007: # Reference: pp. 1103-1106
048732,000008: # Contact: Ron Burkey <info@sandroid.org>
048733,000009: # Website: http://www.ibiblio.org/apollo.
048734,000010: # Mod history: 2009-05-08 RSB Adapted from Colossus249/ file of same name
048735,000011: # and page images. Corrected various typos
048736,000012: # in the transcription of program comments,
048737,000013: # and these should be back-ported to
048738,000014: # Colossus249.
048739,000015:
048740,000016: # The contents of the "Comanche055" files, in general, are transcribed
048741,000017: # from scanned documents.
048742,000018:
048743,000019: # Assemble revision 055 of AGC program Comanche by NASA
048744,000020: # 2021113-051. April 1, 1969.
048745,000021:
048746,000022: # This AGC program shall also be referred to as Colossus 2A
048747,000023:
048748,000024: # Prepared by
048749,000025: # Massachussets Institute of Technology
048750,000026: # 75 Cambridge Parkway
048751,000027: # Cambridge, Massachusetts
048752,000028:
048753,000029: # under NASA contract NAS 9-4065.
048754,000030:
048755,000031: # Refer directly to the online document mentioned above for further
048756,000032: # information. Please report any errors to info@sandroid.org.
048757,000033:
048758,000034: # Page 1103
048759,000035: # THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE
048760,000036: # CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED.
048761,000037:
048762,000038: 4662 BLOCK 02
048763,000039: 4662 COUNT 02/BANK
048764,000040:
048765,000041: 4662 52134 BANKCALL DXCH BUF2 # SAVE INCOMING A,L.
048766,000042: 4663 50002 INDEX Q # PICK UP CADR.
048767,000043: 4664 30000 CA 0
048768,000044: 4665 24002 INCR Q # SO WE RETURN TO THE LOC. AFTER THE CADR.
048769,000045:
048770,000046: # SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.
048771,000047:
048772,000048: 4666 54001 SWCALL TS L
048773,000049: 4667 22004 LXCH FBANK # SWITCH BANKS, SAVING RETURN.
048774,000050: 4670 75054 MASK LOW10 # GET SUB-ADDRESS OF CADR.
048775,000051: 4671 56002 XCH Q # A,L NOW CONTAINS DP RETURN.
048776,000052: 4672 52134 DXCH BUF2 # RESTORING INPUTS IF THIS IS A BANKCALL.
048777,000053: 4673 50002 INDEX Q
048778,000054: 4674 02000 TC 10000 # SETTING Q TO SWRETURN
048779,000055:
048780,000056: 4675 56134 SWRETURN XCH BUF2 +1 # COMES HERE TO RETURN TO CALLER. C(A,L)
048781,000057: 4676 56004 XCH FBANK # ARE PRESERVED FOR RETURN.
048782,000058: 4677 56134 XCH BUF2 +1
048783,000059: 4700 00133 TC BUF2
048784,000060:
048785,000061: # THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY
048786,000062: # FOLLOWING THE TC POSTJUMP INSTRUCTION.
048787,000063:
048788,000064: 4701 56002 POSTJUMP XCH Q # SAVE INCOMING C(A).
048789,000065: 4702 50000 INDEX A # GET CADR.
048790,000066: 4703 30000 CA 0
048791,000067:
048792,000068: # BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.
048793,000069:
048794,000070: 4704 54004 BANKJUMP TS FBANK
048795,000071: 4705 75054 MASK LOW10
048796,000072: 4706 56002 XCH Q # RESTORING INPUT C(A) IF THIS WAS A
048797,000073: 4707 50002 Q+10000 INDEX Q # POSTJUMP.
048798,000074: 4710 12000 PRIO12 TCF 10000 # PRIO12 = TCF 10000 = 12000
048799,000075:
048800,000076: # Page 1104
048801,000077: # THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.
048802,000078:
048803,000079: 4711 35054 MAKECADR CAF LOW10
048804,000080: 4712 70133 MASK BUF2
048805,000081: 4713 60134 AD BUF2 +1
048806,000082: 4714 00002 TC Q
048807,000083:
048808,000084: 4715 54135 SUPDACAL TS MPTEMP
048809,000085: 4716 56004 XCH FBANK # SET FBANK FOR DATA.
048810,000086: 4717 00006 EXTEND
048811,000087: 4720 04007 ROR SUPERBNK # SAVE FBANK IN BITS 15-11, AND
048812,000088: 4721 56135 XCH MPTEMP # SUPERBANK IN BITS 7-5.
048813,000089: 4722 75054 MASK LOW10
048814,000090: 4723 56001 XCH L # SAVE REL. ADR. IN BANK, FETCH SUPERBITS
048815,000091: 4724 00004 INHINT # BECAUSE RUPT DOES NOT SAVE SUPERBANK.
048816,000092: 4725 00006 EXTEND
048817,000093: 4726 01007 WRITE SUPERBNK # SET SUPERBANK FOR DATA.
048818,000094: 4727 50001 INDEX L
048819,000095: 4730 32000 CA 10000 # PINBALL (FIX MEM DISP) PREVENTS DCA HERE
048820,000096: 4731 56135 XCH MPTEMP # SAVE 1ST WD, FETCH OLD FBANK AND SBANK.
048821,000097: 4732 00006 EXTEND
048822,000098: 4733 01007 WRITE SUPERBNK # RESTORE SUPERBANK.
048823,000099: 4734 00003 RELINT
048824,000100: 4735 54004 TS FBANK # RESTORE FBANK.
048825,000101: 4736 30135 CA MPTEMP # RECOVER FIRST WORD OF DATA.
048826,000102: 4737 00002 RETURN # 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU
048827,000103:
048828,000104: # Page 1105
048829,000105: # THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.
048830,000106:
048831,000107: 4740 52073 IBNKCALL DXCH RUPTREG3 # USES RUPTREG3,4 FOR DP RETURN ADDRESS.
048832,000108: 4741 50002 INDEX Q
048833,000109: # Was CAF --- RSB 2009
048834,000110: 4742 30000 CA 0
048835,000111: 4743 24002 INCR Q
048836,000112:
048837,000113: 4744 54001 ISWCALL TS L
048838,000114: 4745 22004 LXCH FBANK
048839,000115: 4746 75054 MASK LOW10
048840,000116: 4747 56002 XCH Q
048841,000117: 4750 52073 DXCH RUPTREG3
048842,000118: 4751 50002 INDEX Q
048843,000119: 4752 02000 TC 10000
048844,000120:
048845,000121: 4753 56073 ISWRETRN XCH RUPTREG4
048846,000122: 4754 56004 XCH FBANK
048847,000123: 4755 56073 XCH RUPTREG4
048848,000124: 4756 00072 TC RUPTREG3
048849,000125:
048850,000126: # 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK. THE CALLING SEQUENCE IS AS FOLLOWS:
048851,000127: # L TC USPRCADR
048852,000128: # L+1 CADR INTPRETX # INTPRETX IS THE INTERPRETIVE CODING
048853,000129: # # RETURN IS TO L+2
048854,000130:
048855,000131: 4757 54164 USPRCADR TS LOC # SAVE A
048856,000132: 4760 35010 CA BIT8
048857,000133: 4761 54023 TS EDOP # EXIT INSTRUCTION TO EDOP
048858,000134: 4762 30006 CA BBANK
048859,000135: 4763 54165 TS BANKSET # USER'S BBANK TO BANKSET
048860,000136: 4764 50002 INDEX Q
048861,000137: 4765 30000 CA 0
048862,000138: 4766 54004 TS FBANK # INTERPRETIVE BANK TO FBANK
048863,000139: 4767 75054 MASK LOW10 # YIELDS INTERPRETIVE RELATIVE ADDRESS
048864,000140: 4770 56002 XCH Q # INTERPRETIVE ADDRESS TO Q, FETCHING L+1
048865,000141: 4771 56164 XCH LOC # L+1 TO LOC, RETRIEVING ORIGINAL A
048866,000142: 4772 14707 TCF Q+10000
048867,000143:
048868,000144: # Page 1106
048869,000145: # THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS SUPERBANK SETTING.)
048870,000146:
048871,000147: # PSEUDO-FIXED OCTAL PSEUDO
048872,000148: # SUPERBANK SETTING S-REG. VALUE BANK NUMBERS ADDRESSES
048873,000149: # --------- ------- ------------ ------------ ---------
048874,000150: # SUPERBANK 3 OXX 2000 - 3777 30 - 37 70000 - 107777 (WHERE XX CAN BE ANYTHING AND
048875,000151: # WILL USUALLY BE SEEN AS 11)
048876,000152: # SUPERBANK 4 100 2000 - 3777 40 - 47 110000 - 127777 (AS FAR AS IT CAN BE SEEN,
048877,000153: # ONLY BANKS 40-43 WILL EVER BE
048878,000154: # AND ARE PRESENTLY AVAILABLE)
048879,000155: # SUPERBANK 5 101 2000 - 3777 50 - 57 130000 - 147777 (PRESENTLY NOT AVAILABLE TO
048880,000156: # THE USER)
048881,000157: # SUPERBANK 6 110 2000 - 3777 60 - 67 150000 - 167777 (PRESENTLY NOT AVAILABLE TO
048882,000158: # THE USER)
048883,000159: # *** THIS ROUTINE MAY BE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27. I.E., NO PROGRAM LIVING IN ANY
048884,000160: # SUPERBANK SHOULD USE SUPERSW. ***
048885,000161:
048886,000162: # SUPERSW MAY BE CALLED IN THIS FASHION:
048887,000163: # CAF ABBCON WHERE -- ABBCON BBCON SOMETHING --
048888,000164: # TCR SUPERSW (THE SUPERBNK BITS ARE IN THE BBCON)
048889,000165: # ... ...
048890,000166: # . .
048891,000167: # . .
048892,000168: # OR IN THIS FASHION:
048893,000169: # CAF SUPERSET WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE
048894,000170: # TCR SUPERSW SUPERBANK BIT CONSTANTS:
048895,000171: # ... ... SUPER011 OCTAL 60
048896,000172: # . . SUPER100 OCTAL 100
048897,000173: # . . SUPER101 OCTAL 120
048898,000174: # SUPER110 OCTAL 140
048899,000175:
048900,000176: 4773 00006 SUPERSW EXTEND
048901,000177: 4774 01007 WRITE SUPERBNK # WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO
048902,000178: # CHANNEL 07
048903,000179: 4775 00002 TC Q # TC TO INSTRUCTION FOLLOWING
048904,000180: # TC SUPERSW
048905,000181:
048906,000182:
048907,000183:
End of include-file INTER-BANK_COMMUNICATION.agc. Parent file is MAIN.agc