INTER-BANK_COMMUNICATION.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: INTER-BANK_COMMUNICATION.agc
## Purpose: Part of the source code for Retread 44 (revision 0). It was
## the very first program for the Block II AGC, created as an
## extensive rewrite of the Block I program Sunrise.
## This file is intended to be a faithful transcription, except
## that the code format has been changed to conform to the
## requirements of the yaYUL assembler rather than the
## original YUL assembler.
## Reference: pp. 105-106
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2016-12-13 MAS Created from Aurora 12 version.
## 2016-12-17 MAS Transcribed.
## 2016-12-27 RSB Proofed comment text using octopus/ProoferComments,
## but no errors found.
## Page 105
## The log section name, INTER-BANK COMMUNICATION, is circled in red.
# 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.
SETLOC ENDINTFF
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 A
INDEX Q # POSTJUMP.
TCF 10000
## Page 106
# 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
# THE FOLLOWING ROUTINE OBTAINS THE TWO WORDS BEGINNING AT THE ADDRESS ARRIVING IN A, AND LEAVES THEM IN
# A,L.
DATACALL TS L
LXCH FBANK
LXCH MPTEMP # SAVE FORMER BANK.
MASK LOW10
EXTEND
INDEX A
DCA 10000
XCH MPTEMP
TS FBANK # RESTORE FBANK.
CA MPTEMP
TC Q
ENDIBNKF EQUALS