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