Pre-launch Review
INTER BANK COMMUNICATION
It and page images. Corrected various typos in the transcription of program comments, and these should be back-ported to Colossus249
# Copyright: Public domain.# Filename: INTER-BANK_COMMUNICATION.agc# Purpose: Part of the source code for Comanche, build 055. It# is part of the source code for the Command Module's# (CM) Apollo Guidance Computer (AGC), Apollo 11.# Assembler: yaYUL# Reference: pp. 1103-1106# Contact: Ron Burkey <info@sandroid.org># Website: http://www.ibiblio.org/apollo.# Mod history: 2009-05-08 RSB Adapted from Colossus249/ file of same name# and page images. Corrected various typos# in the transcription of program comments,# and these should be back-ported to# Colossus249.## The contents of the "Comanche055" files, in general, are transcribed# from scanned documents.## Assemble revision 055 of AGC program Comanche by NASA# 2021113-051. April 1, 1969.## This AGC program shall also be referred to as Colossus 2A## Prepared by# Massachusetts Institute of Technology# 75 Cambridge Parkway# Cambridge, Massachusetts## under NASA contract NAS 9-4065.## Refer directly to the online document mentioned above for further# information. Please report any errors to info@sandroid.org.
# Page 1103# THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE# CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED.
BLOCK 02 COUNT 02/BANK
BANKCALL DXCH BUF2 # SAVE INCOMING A,L. INDEX Q # PICK UP CADR. CA 0 INCR Q # SO WE RETURN TO THE LOC. AFTER THE CADR.
# SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.
SWCALL TS L LXCH FBANK # SWITCH BANKS, SAVING RETURN. MASK LOW10 # GET SUB-ADDRESS OF CADR. XCH Q # A,L NOW CONTAINS DP RETURN. DXCH BUF2 # RESTORING INPUTS IF THIS IS A BANKCALL. INDEX Q TC 10000 # SETTING Q TO SWRETURN
SWRETURN XCH BUF2 +1 # COMES HERE TO RETURN TO CALLER. C(A,L) XCH FBANK # ARE PRESERVED FOR RETURN. XCH BUF2 +1 TC BUF2
# THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY# FOLLOWING THE TC POSTJUMP INSTRUCTION.
POSTJUMP XCH Q # SAVE INCOMING C(A). INDEX A # GET CADR. CA 0
# BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.
BANKJUMP TS FBANK MASK LOW10 XCH Q # RESTORING INPUT C(A) IF THIS WAS AQ+10000 INDEX Q # POSTJUMP.PRIO12 TCF 10000 # PRIO12 = TCF 10000 = 12000
# Page 1104# THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.
MAKECADR CAF LOW10 MASK BUF2 AD BUF2 +1 TC Q
SUPDACAL TS MPTEMP XCH FBANK # SET FBANK FOR DATA. EXTEND ROR SUPERBNK # SAVE FBANK IN BITS 15-11, AND XCH MPTEMP # SUPERBANK IN BITS 7-5. MASK LOW10 XCH L # SAVE REL. ADR. IN BANK, FETCH SUPERBITS. INHINT # BECAUSE RUPT DOES NOT SAVE SUPERBANK. EXTEND WRITE SUPERBNK # SET SUPERBANK FOR DATA. INDEX L CA 10000 # PINBALL (FIX MEM DISP) PREVENTS DCA HERE XCH MPTEMP # SAVE 1ST WD, FETCH OLD FBANK AND SBANK. EXTEND WRITE SUPERBNK # RESTORE SUPERBANK. RELINT TS FBANK # RESTORE FBANK. CA MPTEMP # RECOVER FIRST WORD OF DATA. RETURN # 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU
# Page 1105# THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.
IBNKCALL DXCH RUPTREG3 # USES RUPTREG3,4 FOR DP RETURN ADDRESS. INDEX Q # Was CAF --- RSB 2009 CA 0 INCR Q
ISWCALL TS L LXCH FBANK MASK LOW10 XCH Q DXCH RUPTREG3 INDEX Q TC 10000
ISWRETRN XCH RUPTREG4 XCH FBANK XCH RUPTREG4 TC RUPTREG3
# 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK. THE CALLING SEQUENCE IS AS FOLLOWS:# L TC USPRCADR# L+1 CADR INTPRETX # INTPRETX IS THE INTERPRETIVE CODING# # RETURN IS TO L+2
USPRCADR TS LOC # SAVE A CA BIT8 TS EDOP # EXIT INSTRUCTION TO EDOP CA BBANK TS BANKSET # USER'S BBANK TO BANKSET INDEX Q CA 0 TS FBANK # INTERPRETIVE BANK TO FBANK MASK LOW10 # YIELDS INTERPRETIVE RELATIVE ADDRESS XCH Q # INTERPRETIVE ADDRESS TO Q, FETCHING L+1 XCH LOC # L+1 TO LOC, RETRIEVING ORIGINAL A TCF Q+10000
# Page 1106# THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS SUPERBANK SETTING.)## PSEUDO-FIXED OCTAL PSEUDO# SUPERBANK SETTING S-REG. VALUE BANK NUMBERS ADDRESSES# ---------- ------- ------------ ------------ ------------# SUPERBANK 3 0XX 2000 - 3777 30 - 37 70000 - 107777 (WHERE XX CAN BE ANYTHING AND# WILL USUALLY BE SEEN AS 11)# SUPERBANK 4 100 2000 - 3777 40 - 47 110000 - 127777 (AS FAR AS IT CAN BE SEEN,# ONLY BANKS 40-43 WILL EVER BE# AND ARE PRESENTLY AVAILABLE)# SUPERBANK 5 101 2000 - 3777 50 - 57 130000 - 147777 (PRESENTLY NOT AVAILABLE TO# THE USER)# SUPERBANK 6 110 2000 - 3777 60 - 67 150000 - 167777 (PRESENTLY NOT AVAILABLE TO# THE USER)# *** THIS ROUTINE MAYBE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27. I.E., NO PROGRAM LIVING IN ANY# SUPERBANK SHOULD USE SUPERSW. ***## SUPERSW MAYBE CALLED IN THIS FASHION:# CAF ABBCON WHERE -- ABBCON BBCON SOMETHIN --# TCR SUPERSW (THE SUPERBNK BITS ARE IN THE BBCON)# ... ...# . .# . .# OR IN THIS FASHION :# CAF SUPERSET WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE# TCR SUPERSW SUPERBANK BIT CONSTANTS:# ... ... SUPER011 OCTAL 60# . . SUPER100 OCTAL 100# . . SUPER101 OCTAL 120# SUPER110 OCTAL 140
SUPERSW EXTEND WRITE SUPERBNK # WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO # CHANNEL 07 TC Q # TC TO INSTRUCTION FOLLOWING # TC SUPERSW