Source Code
These source-code files are part of a reconstructed copy of Sunrise 69, the
final release of the Block I Command Module (CM) Apollo Guidance Computer
(AGC) system test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 1003133-18, 1003133-19, 1003133-20, and 1003733-071. Corresponding portions of code have been copied from Solarium 55 where applicable. Extensive use was also made of the AGC Information Series documents, which were specifically written about the Sunrise software. Since only binary dumps (rather than listings) of Sunrise 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. |
006958,000002: ## Copyright: Public domain.
006959,000003: ## Filename: INTER-BANK_COMMUNICATION.agc
006960,000004: ## Purpose: A section of Sunrise 69.
006961,000005: ## It is part of the reconstructed source code for the final
006962,000006: ## release of the Block I Command Module system test software. No
006963,000007: ## original listings of this program are available; instead, this
006964,000008: ## file was created via disassembly of dumps of Sunrise core rope
006965,000009: ## memory modules and comparison with the later Block I program
006966,000010: ## Solarium 55.
006967,000011: ## Assembler: yaYUL --block1
006968,000012: ## Contact: Ron Burkey <info@sandroid.org>.
006969,000013: ## Website: www.ibiblio.org/apollo/index.html
006970,000014: ## Mod history: 2023-06-19 MAS Created from Sunrise 45.
006971,000015:
006972,000016:
006973,000017: # THE FOLLOWING SUBROUTINES ARE INTENDED TO FACILITATE INTER-BANK COMMUNICATION. ROUTINES ARE PROVIDED
006974,000018: # FOR JUMPING TO A LOCATION IN ANOTHER BANK, CALLING A SUBROUTINE IN ANOTHER BANK, AND OBTAINING DATA FROM ANOTHER
006975,000019: # BANK. IN ADDITION, A ROUTINE IS PROVIDED FOR MAKING UP A RETURN_ADDRESS CADR FOR USE BY THE CALLED SUBROUTINE.
006976,000020:
006977,000021: 2516 BANK 1
006978,000022: 2516 50061 BANKCALL TS ADDRWD # SUBROUTINE CALL WITH TRANSMISSION BOTH
006979,000023: 2517 30001 XCH Q # WAYS IN A. THE CADR OF THE CALLED
006980,000024: 2520 64516 AD ONE # ROUTINE SHOULD IMMEDIATELY FOLLOW THE
006981,000025: 2521 50001 TS Q # TC BANKCALL.
006982,000026: 2522 20000 INDEX A
006983,000027: 2523 27777 CAF 0 -1 # PICK UP CADR AND FALL INTO SWCALL.
006984,000028:
006985,000029: 2524 50070 SWCALL TS TEMQS # SWCALL IS ALOS USED TO CALL SUBROUTINES
006986,000030: 2525 30015 XCH BANKREG # IN OTHER BANKS, BUT THE CADR ARRIVES IN
006987,000031: 2526 50071 TS BANKTEM # A. DATA MAY BE TRANSMITTED BACK TO THE
006988,000032: 2527 30001 XCH Q # CALLING PROGRAM IN A, HOWEVER.
006989,000033: 2530 30070 XCH TEMQS # RETURN INFORMATION NOW COMPLETE.
006990,000034: 2531 50113 TS ESCAPE
006991,000035: 2532 72201 MASK 70K # PROVISION FOR CALLING A ROUTINE IN
006992,000036: 2533 10000 CCS A # FIXED-FIXED (OF QUESTIONABLE VALUE).
006993,000037: 2534 02536 TC +2 # SPECIAL TREATMENT REQUIRED IF NON-ZERO.
006994,000038: 2535 02540 TC +3 # INPUT CADR OK AS IS.
006995,000039:
006996,000040: 2536 40015 CS BANKREG # FORM PROPER 12 BIT ADDRESS.
006997,000041: 2537 64373 AD 6K
006998,000042: 2540 60113 +3 AD ESCAPE # PROPER CADRS COME HERE WITH C(A) = 0.
006999,000043: 2541 30061 XCH ADDRWD # SO A CAN TRANSMIT WITH BANKCALL.
007000,000044: 2542 20061 INDEX ADDRWD
007001,000045: 2543 00000 TC 0 # SETTING Q TO SWRETURN.
007002,000046:
007003,000047: 2544 30071 SWRETURN XCH BANKTEM # RETURN TO CALLER, TRANSMITTING THROUGH A
007004,000048: 2545 50015 TS BANKREG
007005,000049: 2546 30071 XCH BANKTEM # RESTORE A AS UPON ARRIVAL TO SWRETURN.
007006,000050: 2547 00070 TC TEMQS # RETURN.
007007,000051:
007008,000052:
007009,000053: 2550 35500 MAKECADR CAF ZERO # LEAVES RETURN-ADDRESS CADR (AS SET BY
007010,000054: 2551 60070 AD TEMQS # SWCALL OR BANKCALL) IN ADDRWD.
007011,000055: 2552 50061 TS ADDRWD
007012,000056: 2553 62562 AD 32K # SEE IF BANK INFORMATION NEEDED (USUAL).
007013,000057: 2554 50034 TS OVCTR
007014,000058: 2555 00001 TC Q # ADDRWD SET OK IF NO OVERFLOW (IN FF).
007015,000059:
007016,000060: 2556 30034 XCH OVCTR # CONTAINS LOW 10 BITS ONLY.
007017,000061: 2557 60071 AD BANKTEM
007018,000062: 2560 50061 TS ADDRWD # RETURN CADR NOW COMPLETE.
007019,000063: 2561 00001 TC Q
007020,000064:
007021,000065: 2562 32000 32K OCT 32000
007022,000066: 2563 30001 POSTJUMP XCH Q # ONE-WAY BANK TO BANK JUMP, WITH NO
007023,000067: 2564 20000 INDEX A # RETURN ADDRESS. THIS VERSION TRANSMITS
007024,000068: 2565 30000 CAF 0 # THROUGH A IF DESIRED.
007025,000069:
007026,000070: 2566 50015 BANKJUMP TS BANKREG # SAME AS ABOVE ONLY ADDRESS ARRIVES IN A.
007027,000071: 2567 74605 MASK LOW10 # BANKJUMP AND POSTJUMP MAY BE USED IN
007028,000072: 2570 30001 XCH Q # INTERRUPT OR UNDER EXEC, BUT BANKCALL
007029,000073: 2571 20001 INDEX Q # AND SWCALL MAY BE USED ONLY UNDER EXEC.
007030,000074: 2572 06000 TC 6000
007031,000075:
007032,000076:
007033,000077: 2573 50113 DATACALL TS ESCAPE # SUBROUTINE TO RETRIEVE DATA IN ANOTHER
007034,000078: 2574 30015 XCH BANKREG # BANK. THE CADR OF THE LOCATION OF INTER-
007035,000079: 2575 30113 XCH ESCAPE # EST ARRIVES IN A AND ITS CONTENTS ARE IN
007036,000080: 2576 74605 MASK LOW10 # A ON EXIT. THIS MAY BE USED ONLY UNDER
007037,000081: 2577 20000 INDEX A # EXECUTIVE.
007038,000082: 2600 36000 CAF 6000 # REQUESTED DATA NOW ACQUIRED.
007039,000083:
007040,000084: 2601 30113 XCH ESCAPE
007041,000085: 2602 50015 TS BANKREG
007042,000086: 2603 30113 XCH ESCAPE
007043,000087: 2604 00001 TC Q
End of include-file INTER-BANK_COMMUNICATION.agc. Parent file is MAIN.agc