Source Code
These source-code files are part of a reconstructed copy of Aurora 88, the
final release of the Lunar Module (LM) Apollo Guidance Computer (AGC) system
test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 2003972-011, 2003972-091, and 2003972-111, belonging to Steve Jurvetson. Since only binary dumps (rather than listings) of Aurora 88 are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
001267,000002: ## Copyright: Public domain.
001268,000003: ## Filename: INTER-BANK_COMMUNICATION.agc
001269,000004: ## Purpose: A section of Aurora 88.
001270,000005: ## It is part of the reconstructed source code for the final
001271,000006: ## release of the Lunar Module system test software. No original
001272,000007: ## listings of this program are available; instead, this file
001273,000008: ## was created via disassembly of dumps of Aurora 88 core rope
001274,000009: ## modules and comparison with other AGC programs.
001275,000010: ## Assembler: yaYUL
001276,000011: ## Contact: Ron Burkey <info@sandroid.org>.
001277,000012: ## Website: www.ibiblio.org/apollo/index.html
001278,000013: ## Mod history: 2023-06-30 MAS Created from Aurora 12.
001279,000014: ## 2023-07-12 MAS Updated for Aurora 88.
001280,000015:
001281,000016:
001282,000017: # THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE
001283,000018: # CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED.
001284,000019:
001285,000020: 4063 SETLOC ENDINTFF
001286,000021: 4063 52120 BANKCALL DXCH BUF2 # SAVE INCOMING A,L.
001287,000022: 4064 50002 INDEX Q # PICK UP CADR.
001288,000023: 4065 30000 CA 0
001289,000024: 4066 24002 INCR Q # SO WE RETURN TO THE LOC. AFTER THE CADR.
001290,000025:
001291,000026: # SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.
001292,000027:
001293,000028: 4067 54001 SWCALL TS L
001294,000029: 4070 22004 LXCH FBANK # SWITCH BANKS, SAVING RETURN.
001295,000030: 4071 76426 MASK LOW10 # GET SUB-ADDRESS OF CADR.
001296,000031: 4072 56002 XCH Q # A,L NOW CONTAINS DP RETURN.
001297,000032: 4073 52120 DXCH BUF2 # RESTORING INPUTS IF THIS IS A BANKCALL.
001298,000033: 4074 50002 INDEX Q
001299,000034: 4075 02000 TC 10000 # SETTING Q TO SWRETURN.
001300,000035:
001301,000036: 4076 56120 SWRETURN XCH BUF2 +1 # COMES HERE TO RETURN TO CALLER. C(A,L)
001302,000037: 4077 56004 XCH FBANK # ARE PRESERVED FOR RETURN.
001303,000038: 4100 56120 XCH BUF2 +1
001304,000039: 4101 00117 TC BUF2
001305,000040:
001306,000041: # THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY
001307,000042: # FOLLOWING THE TC POSTJUMP INSTRUCTION.
001308,000043:
001309,000044: 4102 56002 POSTJUMP XCH Q # SAVE INCOMING C(A).
001310,000045: 4103 50000 INDEX A # GET CADR.
001311,000046: 4104 30000 CA 0
001312,000047:
001313,000048: # BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.
001314,000049:
001315,000050: 4105 54004 BANKJUMP TS FBANK
001316,000051: 4106 76426 MASK LOW10
001317,000052: 4107 56002 XCH Q # RESTORING INPUT C(A) IF THIS WAS A
001318,000053: 4110 50002 INDEX Q # POSTJUMP.
001319,000054: 4111 12000 TCF 10000
001320,000055:
001321,000056: # THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.
001322,000057:
001323,000058: 4112 36426 MAKECADR CAF LOW10
001324,000059: 4113 70117 MASK BUF2
001325,000060: 4114 60120 AD BUF2 +1
001326,000061: 4115 00002 TC Q
001327,000062:
001328,000063: # THE FOLLOWING ROUTINE OBTAINS THE TWO WORDS BEGINNING AT THE ADDRESS ARRIVING IN A, AND LEAVES THEM IN
001329,000064: # A,L.
001330,000065:
001331,000066: 4116 54001 DATACALL TS L
001332,000067: 4117 22004 LXCH FBANK
001333,000068: 4120 22121 LXCH MPTEMP # SAVE FORMER BANK.
001334,000069: 4121 76426 MASK LOW10
001335,000070: 4122 00006 EXTEND
001336,000071: 4123 50000 INDEX A
001337,000072: 4124 32001 DCA 10000
001338,000073:
001339,000074: 4125 56121 XCH MPTEMP
001340,000075: 4126 54004 TS FBANK # RESTORE FBANK.
001341,000076: 4127 30121 CA MPTEMP
001342,000077: 4130 00002 TC Q
001343,000078:
001344,000079: # THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.
001345,000080:
001346,000081: 4131 52077 IBNKCALL DXCH RUPTREG3 # USES RUPTREG3,4 FOR DP RETURN ADDRESS.
001347,000082: 4132 50002 INDEX Q
001348,000083: 4133 30000 CAF 0
001349,000084: 4134 24002 INCR Q
001350,000085:
001351,000086: 4135 54001 ISWCALL TS L
001352,000087: 4136 22004 LXCH FBANK
001353,000088: 4137 76426 MASK LOW10
001354,000089: 4140 56002 XCH Q
001355,000090: 4141 52077 DXCH RUPTREG3
001356,000091: 4142 50002 INDEX Q
001357,000092: 4143 02000 TC 10000
001358,000093:
001359,000094: 4144 56077 ISWRETRN XCH RUPTREG4
001360,000095: 4145 56004 XCH FBANK
001361,000096: 4146 56077 XCH RUPTREG4
001362,000097: 4147 00076 TC RUPTREG3
001363,000098:
001364,000099: 4150 ENDIBNKF EQUALS
End of include-file INTER-BANK_COMMUNICATION.agc. Parent file is MAIN.agc