Source Code
043774,000002: ## Copyright: Public domain.
043775,000003: ## Filename: INTER-BANK_COMMUNICATION.agc
043776,000004: ## Purpose: A section of Luminary revision 210.
043777,000005: ## It is part of the source code for the Lunar Module's (LM)
043778,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
043779,000007: ## This file is intended to be a faithful transcription, except
043780,000008: ## that the code format has been changed to conform to the
043781,000009: ## requirements of the yaYUL assembler rather than the
043782,000010: ## original YUL assembler.
043783,000011: ## Reference: pp. 996-999
043784,000012: ## Assembler: yaYUL
043785,000013: ## Contact: Ron Burkey <info@sandroid.org>.
043786,000014: ## Website: www.ibiblio.org/apollo/index.html
043787,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
043788,000016: ## 2016-12-01 JS Updated from Luminary210 images.
043789,000017: ## 2016-12-26 RSB Comment-text proofed using ProoferComments
043790,000018: ## and corrected errors found.
043791,000019: ## 2017-03-15 RSB Comment-text fixes identified in 5-way
043792,000020: ## side-by-side diff of Luminary 69/99/116/131/210.
043793,000021: ## 2017-03-17 RSB Comment-text fixes identified in diff'ing
043794,000022: ## Luminary 99 vs Comanche 55.
043795,000023:
![]() |
Page 996 |
043797,000025: # THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE
043798,000026: # CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED.
043799,000027:
043800,000028: 4607 BLOCK 02
043801,000029: 4607 COUNT* $$/BANK
043802,000030: 4607 52134 BANKCALL DXCH BUF2 # SAVE INCOMING A,L.
043803,000031: 4610 50002 INDEX Q # PICK UP CADR.
043804,000032: 4611 30000 CA 0
043805,000033: 4612 24002 INCR Q # SO WE RETURN TO THE LOC. AFTER THE CADR.
043806,000034:
043807,000035: # SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.
043808,000036:
043809,000037: 4613 54001 SWCALL TS L
043810,000038: 4614 22004 LXCH FBANK # SWITCH BANKS, SAVING RETURN.
043811,000039: 4615 75003 MASK LOW10 # GET SUB-ADDRESS OF CADR.
043812,000040: 4616 56002 XCH Q # A,L NOW CONTAINS DP RETURN.
043813,000041: 4617 52134 DXCH BUF2 # RESTORING INPUTS IF THIS IS A BANKCALL.
043814,000042: 4620 50002 INDEX Q
043815,000043: 4621 02000 TC 10000 # SETTING Q TO SWRETURN.
043816,000044:
043817,000045: 4622 56134 SWRETURN XCH BUF2 +1 # COMES HERE TO RETURN TO CALLER. C(A,L)
043818,000046: 4623 56004 XCH FBANK # ARE PRESERVED FOR RETURN.
043819,000047: 4624 56134 XCH BUF2 +1
043820,000048: 4625 00133 TC BUF2
043821,000049:
043822,000050: # THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY
043823,000051: # FOLLOWING THE TC POSTJUMP INSTRUCTION.
043824,000052:
043825,000053: 4626 56002 POSTJUMP XCH Q # SAVE INCOMING C(A).
043826,000054: 4627 50000 INDEX A # GET CADR.
043827,000055: 4630 30000 CA 0
043828,000056:
043829,000057: # BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.
043830,000058:
043831,000059: 4631 54004 BANKJUMP TS FBANK
043832,000060: 4632 75003 MASK LOW10
043833,000061: 4633 56002 XCH Q # RESTORING INPUT C(A) IF THIS WAS A
043834,000062: 4634 50002 Q+10000 INDEX Q # POSTJUMP.
043835,000063: 4635 12000 PRIO12 TCF 10000 # PRIO12 = TCF 10000 = 12000
043836,000064:
![]() |
Page 997 |
043838,000066: # THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.
043839,000067:
043840,000068: 4636 35003 MAKECADR CAF LOW10
043841,000069: 4637 70133 MASK BUF2
043842,000070: 4640 60134 AD BUF2 +1
043843,000071: 4641 00002 TC Q
043844,000072:
043845,000073: 4642 54135 SUPDACAL TS MPTEMP
043846,000074: 4643 56004 XCH FBANK # SET FBANK FOR DATA.
043847,000075: 4644 00006 EXTEND
043848,000076: 4645 04007 ROR SUPERBNK # SAVE FBANK IN BITS 15-11, AND
043849,000077: 4646 56135 XCH MPTEMP # SUPERBANK IN BITS 7-5.
043850,000078: 4647 75003 MASK LOW10
043851,000079: 4650 56001 XCH L # SAVE REL. ADR. IN BANK, FETCH SUPERBITS.
043852,000080: 4651 00004 INHINT # BECAUSE RUPT DOES NOT SAVE SUPERBANK.
043853,000081: 4652 00006 EXTEND
043854,000082: 4653 01007 WRITE SUPERBNK # SET SUPERBANK FOR DATA.
043855,000083: 4654 50001 INDEX L
043856,000084: 4655 32000 CA 10000 # PINBALL (FIX MEM DISP) PREVENTS DCA HERE
043857,000085: 4656 56135 XCH MPTEMP # SAVE 1ST WD, FETCH OLD FBANK AND SBANK.
043858,000086: 4657 00006 EXTEND
043859,000087: 4660 01007 WRITE SUPERBNK # RESTORE SUPERBANK.
043860,000088: 4661 00003 RELINT
043861,000089: 4662 54004 TS FBANK # RESTORE FBANK.
043862,000090: 4663 30135 CA MPTEMP # RECOVER FIRST WORD OF DATA.
043863,000091: 4664 00002 RETURN # 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU
043864,000092:
![]() |
Page 998 |
043866,000094: # THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.
043867,000095:
043868,000096: 4665 52073 IBNKCALL DXCH RUPTREG3 # USES RUPTREG3,4 FOR DP RETURN ADDRESS.
043869,000097: 4666 50002 INDEX Q
043870,000098: 4667 30000 CAF 0
043871,000099: 4670 24002 INCR Q
043872,000100:
043873,000101: 4671 54001 ISWCALLL TS L
043874,000102: 4672 22004 LXCH FBANK
043875,000103: 4673 75003 MASK LOW10
043876,000104: 4674 56002 XCH Q
043877,000105: 4675 52073 DXCH RUPTREG3
043878,000106: 4676 50002 INDEX Q
043879,000107: 4677 02000 TC 10000
043880,000108:
043881,000109: 4700 56073 ISWRETRN XCH RUPTREG4
043882,000110: 4701 56004 XCH FBANK
043883,000111: 4702 56073 XCH RUPTREG4
043884,000112: 4703 00072 TC RUPTREG3
043885,000113:
043886,000114: # 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK. THE CALLING SEQUENCE IS AS FOLLOWS:
043887,000115: # L TC USPRCADR
043888,000116: # L+1 CADR INTPRETX INTPRETX IS THE INTERPRETIVE CODING
043889,000117: # RETURN IS TO L+2
043890,000118:
043891,000119: 4704 54164 USPRCADR TS LOC # SAVE A
043892,000120: 4705 34735 CA BIT8
043893,000121: 4706 54023 TS EDOP # EXIT INSTRUCTION TO EDOP
043894,000122: 4707 30006 CA BBANK
043895,000123: 4710 54165 TS BANKSET # USER'S BBANK TO BANKSET
043896,000124: 4711 50002 INDEX Q
043897,000125: 4712 30000 CA 0
043898,000126: 4713 54004 TS FBANK # INTERPRETIVE BANK TO FBANK
043899,000127: 4714 75003 MASK LOW10 # YIELDS INTERPRETIVE RELATIVE ADDRESS
043900,000128: 4715 56002 XCH Q # INTERPRETIVE ADDRESS TO Q, FETCHING L+1
043901,000129: 4716 56164 XCH LOC # L+1 TO LOC, RETRIEVING ORIGINAL A
043902,000130: 4717 14634 TCF Q+10000
043903,000131:
![]() |
Page 999 |
043905,000133: # THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS THE SUPERBANK SETTING.)
043906,000134:
043907,000135: # PSEUDO-FIXED OCTAL PSEUDO
043908,000136: # SUPERBANK SETTING S-REG. VALUE BANK NUMBERS ADDRESSES
043909,000137: # ---------- ------- ------------ ------------ ------------
043910,000138: # SUPERBANK 3 0XX 2000 - 3777 30 - 37 70000 - 107777 (WHERE XX CAN BE ANYTHING AND
043911,000139: # WILL USUALLY BE SEEN AS 11)
043912,000140: # SUPERBANK 4 100 2000 - 3777 40 - 47 110000 - 127777 (AS FAR AS IT CAN BE SEEN,
043913,000141: # ONLY BANKS 40-43 WILL EVER BE
043914,000142: # AND ARE PRESENTLY AVAILABLE)
043915,000143: # SUPERBANK 5 101 2000 - 3777 50 - 57 130000 - 147777 (PRESENTLY NOT AVAILABLE TO
043916,000144: # THE USER)
043917,000145: # SUPERBANK 6 110 2000 - 3777 60 - 67 150000 - 167777 (PRESENTLY NOT AVAILABLE TO
043918,000146: # THE USER)
043919,000147: # *** THIS ROUTINE MAYBE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27. I.E., NO PROGRAM LIVING IN ANY
043920,000148: # SUPERBANK SHOULD USE SUPERSW. ***
043921,000149:
043922,000150: # SUPERSW MAY BE CALLED IN THIS FASHION:
043923,000151: # CAF ABBCON WHERE -- ABBCON BBCON SOMETHIN --
043924,000152: # TCR SUPERSW (THE SUPERBNK BITS ARE IN THE BBCON)
043925,000153: # ... ...
043926,000154: # . .
043927,000155: # . .
043928,000156:
043929,000157: # OR IN THIS FASHION:
043930,000158:
043931,000159: # CAF SUPERSET WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE
043932,000160: # TCR SUPERSW SUPERBANK BIT CONSTANTS:
043933,000161: # ... ... SUPER011 OCTAL 60
043934,000162: # . . SUPER100 OCTAL 100
043935,000163: # . . SUPER101 OCTAL 120
043936,000164: # SUPER110 OCTAL 140
043937,000165:
043938,000166: 4720 00006 SUPERSW EXTEND
043939,000167: 4721 01007 WRITE SUPERBNK # WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO
043940,000168: # CHANNEL 07
043941,000169: 4722 00002 TC Q # TC TO INSTRUCTION FOLLOWING
043942,000170: # TC SUPERSW
043943,000171:
End of include-file INTER-BANK_COMMUNICATION.agc. Parent file is MAIN.agc