Source Code

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