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