Source Code

043235,000001: # Copyright: Public domain. 043236,000002: # Filename: INTER-BANK_COMMUNICATION.agc 043237,000003: # Purpose: Part of the source code for Luminary 1A build 099. 043238,000004: # It is part of the source code for the Lunar Module's (LM) 043239,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 043240,000006: # Assembler: yaYUL 043241,000007: # Contact: Ron Burkey <info@sandroid.org>. 043242,000008: # Website: www.ibiblio.org/apollo. 043243,000009: # Pages: 998-1001 043244,000010: # Mod history: 2009-05-24 RSB Adapted from the corresponding 043245,000011: # Luminary131 file, using page 043246,000012: # images from Luminary 1A. 043247,000013: # 2011-05-08 JL Removed workaround. 043248,000014: 043249,000015: # This source code has been transcribed or otherwise adapted from 043250,000016: # digitized images of a hardcopy from the MIT Museum. The digitization 043251,000017: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 043252,000018: # the Museum. Many thanks to both. The images (with suitable reduction 043253,000019: # in storage size and consequent reduction in image quality as well) are 043254,000020: # available online at www.ibiblio.org/apollo. If for some reason you 043255,000021: # find that the images are illegible, contact me at info@sandroid.org 043256,000022: # about getting access to the (much) higher-quality images which Paul 043257,000023: # actually created. 043258,000024: 043259,000025: # Notations on the hardcopy document read, in part: 043260,000026: 043261,000027: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 043262,000028: # 16:27 JULY 14, 1969 043263,000029: 043264,000030: # Page 998 043265,000031: # THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE 043266,000032: # CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED. 043267,000033: 043268,000034: 4616 BLOCK 02 043269,000035: 4616 COUNT* $$/BANK 043270,000036: 4616 52134 BANKCALL DXCH BUF2 # SAVE INCOMING A,L. 043271,000037: 4617 50002 INDEX Q # PICK UP CADR. 043272,000038: 4620 30000 CA 0 043273,000039: 4621 24002 INCR Q # SO WE RETURN TO THE LOC. AFTER THE CADR. 043274,000040: 043275,000041: # SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A. 043276,000042: 043277,000043: 4622 54001 SWCALL TS L 043278,000044: 4623 22004 LXCH FBANK # SWITCH BANKS, SAVING RETURN. 043279,000045: 4624 75012 MASK LOW10 # GET SUB-ADDRESS OF CADR. 043280,000046: 4625 56002 XCH Q # A,L NOW CONTAINS DP RETURN. 043281,000047: 4626 52134 DXCH BUF2 # RESTORING INPUTS IF THIS IS A BANKCALL. 043282,000048: 4627 50002 INDEX Q 043283,000049: 4630 02000 TC 10000 # SETTING Q TO SWRETURN. 043284,000050: 043285,000051: 4631 56134 SWRETURN XCH BUF2 +1 # COMES HERE TO RETURN TO CALLER. C(A,L) 043286,000052: 4632 56004 XCH FBANK # ARE PRESERVED FOR RETURN. 043287,000053: 4633 56134 XCH BUF2 +1 043288,000054: 4634 00133 TC BUF2 043289,000055: 043290,000056: # THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY 043291,000057: # FOLLOWING THE TC POSTJUMP INSTRUCTION. 043292,000058: 043293,000059: 4635 56002 POSTJUMP XCH Q # SAVE INCOMING C(A). 043294,000060: 4636 50000 INDEX A # GET CADR. 043295,000061: 4637 30000 CA 0 043296,000062: 043297,000063: # BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A. 043298,000064: 043299,000065: 4640 54004 BANKJUMP TS FBANK 043300,000066: 4641 75012 MASK LOW10 043301,000067: 4642 56002 XCH Q # RESTORING INPUT C(A) IF THIS WAS A 043302,000068: 4643 50002 Q+10000 INDEX Q # POSTJUMP. 043303,000069: 4644 12000 PRIO12 TCF 10000 # PRIO12 = TCF 10000 = 12000 043304,000070: 043305,000071: # Page 999 043306,000072: # THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A. 043307,000073: 043308,000074: 4645 35012 MAKECADR CAF LOW10 043309,000075: 4646 70133 MASK BUF2 043310,000076: 4647 60134 AD BUF2 +1 043311,000077: 4650 00002 TC Q 043312,000078: 043313,000079: 4651 54135 SUPDACAL TS MPTEMP 043314,000080: 4652 56004 XCH FBANK # SET FBANK FOR DATA. 043315,000081: 4653 00006 EXTEND 043316,000082: 4654 04007 ROR SUPERBNK # SAVE FBANK IN BITS 15-11, AND 043317,000083: 4655 56135 XCH MPTEMP # SUPERBANK IN BITS 7-5. 043318,000084: 4656 75012 MASK LOW10 043319,000085: 4657 56001 XCH L # SAVE REL. ADR. IN BANK, FETCH SUPERBITS 043320,000086: 4660 00004 INHINT # BECAUSE RUPT DOES NOT SAVE SUPERBANK. 043321,000087: 4661 00006 EXTEND 043322,000088: 4662 01007 WRITE SUPERBNK # SET SUPERBANK FOR DATA. 043323,000089: 4663 50001 INDEX L 043324,000090: 4664 32000 CA 10000 # PINBALL (FIX MEM DISP) PREVENTS DCA HERE 043325,000091: 4665 56135 XCH MPTEMP # SAVE 1ST WD, FETCH OLD FBANK AND SBANK. 043326,000092: 4666 00006 EXTEND 043327,000093: 4667 01007 WRITE SUPERBNK # RESTORE SUPERBANK. 043328,000094: 4670 00003 RELINT 043329,000095: 4671 54004 TS FBANK # RESTORE FBANK. 043330,000096: 4672 30135 CA MPTEMP # RECOVER FIRST WORD OF DATA. 043331,000097: 4673 00002 RETURN # 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU 043332,000098: 043333,000099: # Page 1000 043334,000100: # THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT. 043335,000101: 043336,000102: 4674 52073 IBNKCALL DXCH RUPTREG3 # USES RUPTREG3,4 FOR DP RETURN ADDRESS. 043337,000103: 4675 50002 INDEX Q 043338,000104: 4676 30000 CAF 0 043339,000105: 4677 24002 INCR Q 043340,000106: 043341,000107: 4700 54001 ISWCALLL TS L 043342,000108: 4701 22004 LXCH FBANK 043343,000109: 4702 75012 MASK LOW10 043344,000110: 4703 56002 XCH Q 043345,000111: 4704 52073 DXCH RUPTREG3 043346,000112: 4705 50002 INDEX Q 043347,000113: 4706 02000 TC 10000 043348,000114: 043349,000115: 4707 56073 ISWRETRN XCH RUPTREG4 043350,000116: 4710 56004 XCH FBANK 043351,000117: 4711 56073 XCH RUPTREG4 043352,000118: 4712 00072 TC RUPTREG3 043353,000119: 043354,000120: # 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK. THE CALLING SEQUENCE IS AS FOLLOWS: 043355,000121: # L TC USPRCADR 043356,000122: # L+1 CADR INTPRETX # INTPRETX IS THE INTERPRETIVE CODING 043357,000123: # # RETURN IS TO L+2 043358,000124: 043359,000125: 4713 54164 USPRCADR TS LOC # SAVE A 043360,000126: 4714 34744 CA BIT8 043361,000127: 4715 54023 TS EDOP # EXIT INSTRUCTION TO EDOP 043362,000128: 4716 30006 CA BBANK 043363,000129: 4717 54165 TS BANKSET # USER'S BBANK TO BANKSET 043364,000130: 4720 50002 INDEX Q 043365,000131: 4721 30000 CA 0 043366,000132: 4722 54004 TS FBANK # INTERPRETIVE BANK TO FBANK 043367,000133: 4723 75012 MASK LOW10 # YIELDS INTERPRETIVE RELATIVE ADDRESS 043368,000134: 4724 56002 XCH Q # INTERPRETIVE ADDRESS TO Q, FETCHING L+1 043369,000135: 4725 56164 XCH LOC # L+1 TO LOC, RETRIEVING ORIGINAL A 043370,000136: 4726 14643 TCF Q+10000 043371,000137: 043372,000138: # Page 1001 043373,000139: # THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS SUPERBANK SETTING.) 043374,000140: 043375,000141: # PSEUDO-FIXED OCTAL PSEUDO 043376,000142: # SUPERBANK SETTING S-REG. VALUE BANK NUMBERS ADDRESSES 043377,000143: # --------- ------- ------------ ------------ --------- 043378,000144: # SUPERBANK 3 OXX 2000 - 3777 30 - 37 70000 - 107777 (WHERE XX CAN BE ANYTHING AND 043379,000145: # WILL USUALLY BE SEEN AS 11) 043380,000146: # SUPERBANK 4 100 2000 - 3777 40 - 47 110000 - 127777 (AS FAR AS IT CAN BE SEEN, 043381,000147: # ONLY BANKS 40-43 WILL EVER BE 043382,000148: # AND ARE PRESENTLY AVAILABLE) 043383,000149: # SUPERBANK 5 101 2000 - 3777 50 - 57 130000 - 147777 (PRESENTLY NOT AVAILABLE TO 043384,000150: # THE USER) 043385,000151: # SUPERBANK 6 110 2000 - 3777 60 - 67 150000 - 167777 (PRESENTLY NOT AVAILABLE TO 043386,000152: # THE USER) 043387,000153: # *** THIS ROUTINE MAY BE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27. I.E., NO PROGRAM LIVING IN ANY 043388,000154: # SUPERBANK SHOULD USE SUPERSW. *** 043389,000155: 043390,000156: # SUPERSW MAY BE CALLED IN THIS FASHION: 043391,000157: # CAF ABBCON WHERE -- ABBCON BBCON SOMETHING -- 043392,000158: # TCR SUPERSW (THE SUPERBNK BITS ARE IN THE BBCON) 043393,000159: # ... ... 043394,000160: # . . 043395,000161: # . . 043396,000162: # OR IN THIS FASHION: 043397,000163: # CAF SUPERSET WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE 043398,000164: # TCR SUPERSW SUPERBANK BIT CONSTANTS: 043399,000165: # ... ... SUPER011 OCTAL 60 043400,000166: # . . SUPER100 OCTAL 100 043401,000167: # . . SUPER101 OCTAL 120 043402,000168: # SUPER110 OCTAL 140 043403,000169: 043404,000170: 4727 00006 SUPERSW EXTEND 043405,000171: 4730 01007 WRITE SUPERBNK # WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO 043406,000172: # CHANNEL 07 043407,000173: 4731 00002 TC Q # TC TO INSTRUCTION FOLLOWING 043408,000174: # TC SUPERSW 043409,000175: End of include-file INTER-BANK_COMMUNICATION.agc. Parent file is MAIN.agc