Source Code

These source-code files were transcribed from scans made from Don Eyles's personal copy of BURST120 (SUNBURST 120). They were scanned at archive.org's Boston facility, and the scanning was sponsored by Mike Stewart. The code was transcribed from these scans by a team of volunteers who are referenced in the program comments. Comments from the original source code are in ALL-CAPS, whereas comments added later in transcription are in Mixed-Case. In some cases, where similar code blocks exist in previously-transcribed AGC programs (primarily Luminary 99, from Apollo 11) those code blocks were used as a starting point and then corrected to agree with the BURST120 scans. The full scans are available at the Virtual AGC project's collection at archive.org, while more-convenient reduced-size (but reduced-quality) images are available at the main Virtual AGC website. Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository. Notations on the program listing read, in part:

	YUL SYSTEM FOR AGC: REVISION 0 OF PROGRAM BURST120 
	BY NASA 2021106-031 DEC 7, 1967

	THIS LISTING IS A COPY OF A VERSION OF THE PROGRAM INTENDED 
	FOR USE IN THE ON-BOARD PRIMARY GUIDANCE COMPUTER IN THE 
	UNMANNED FLIGHT OF APOLLO LUNAR MODULE 1 --- THE AS206 MISSION.
Note that the date is the date of the printout, not the date of the program revision.

040655,000002:                                                                                                  ## Copyright:   Public domain.
040656,000003:                                                                                                  ## Filename:    INTER-BANK_COMMUNICATION.agc
040657,000004:                                                                                                  ## Purpose:     A module for revision 0 of BURST120 (Sunburst). It 
040658,000005:                                                                                                  ##              is part of the source code for the Lunar Module's
040659,000006:                                                                                                  ##              (LM) Apollo Guidance Computer (AGC) for Apollo 5.
040660,000007:                                                                                                  ## Assembler:   yaYUL
040661,000008:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
040662,000009:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
040663,000010:                                                                                                  ## Mod history: 2016-09-30 RSB  Created draft version.
040664,000011:                                                                                                  ##              2016-10-19 RSB  Transcribed, largely from Aurora 12 version of the file.
040665,000012:                                                                                                  ##              2016-10-31 RSB  Typos.
040666,000013:                                                                                                  ##              2016-11-01 RSB  More typos.
040667,000014:                                                                                                  ##              2016-12-06 RSB  Comments proofed using octopus/ProoferComments,
040668,000015:                                                                                                  ##                              changes made.
040669,000016:                                                                                                  ##              2017-03-17 RSB  Comment-text fixes identified in diff'ing
040670,000017:                                                                                                  ##                              Luminary 99 vs Comanche 55.
040671,000018: 

Page 948

040673,000020:                                                                                                  #           THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE
040674,000021:                                                                                                  #  CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE  TC BANKCALL  INSTRUCTION, WITH C(A) AND C(L) PRESERVED.
040675,000022: 
040676,000023:    5206                                           BLOCK    02                                    
040677,000024:    5206           52124        BANKCALL           DXCH     BUF2                                  #  SAVE INCOMING A,L.
040678,000025:    5207           50002                           INDEX    Q                                     #  PICK UP CADR.
040679,000026:    5210           30000        BNKCAL+2           CA       0                                     
040680,000027:    5211           24002                           INCR     Q                                     #  SO WE RETURN TO THE LOC. AFTER THE CADR.
040681,000028: 
040682,000029:                                                                                                  #  SWCALL IS  IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.
040683,000030: 
040684,000031:    5212           54001        SWCALL             TS       L                                     
040685,000032:    5213           22004                           LXCH     FBANK                                 #  SWITCH BANKS, SAVING RETURN.
040686,000033:    5214           75337                           MASK     LOW10                                 #  GET SUB-ADDRESS OF CADR.
040687,000034:    5215           56002                           XCH      Q                                     #  A,L NOW CONTAINS DP RETURN.
040688,000035:    5216           52124                           DXCH     BUF2                                  #  RESTORING INPUTS IF THIS IS A BANKCALL.
040689,000036:    5217           50002                           INDEX    Q                                     
040690,000037:    5220           02000                           TC       10000                                 #  SETTING Q TO SWRETURN.
040691,000038: 
040692,000039:    5221           56124        SWRETURN           XCH      BUF2       +1                         #  COMES HERE TO RETURN TO CALLER. C(A,L)
040693,000040:    5222           56004                           XCH      FBANK                                 #  ARE PRESERVED FOR RETURN.
040694,000041:    5223           56124                           XCH      BUF2       +1                         
040695,000042:    5224           00123                           TC       BUF2                                  
040696,000043: 
040697,000044:                                                                                                  #           THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY
040698,000045:                                                                                                  #  FOLLOWING THE TC POSTJUMP INSTRUCTION.
040699,000046: 
040700,000047:    5225           56002        POSTJUMP           XCH      Q                                     #  SAVE INCOMING C(A).
040701,000048:    5226           50000                           INDEX    A                                     #  GET CADR.
040702,000049:    5227           30000                           CA       0                                     
040703,000050: 
040704,000051:                                                                                                  #           BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.
040705,000052: 
040706,000053:    5230           54004        BANKJUMP           TS       FBANK                                 
040707,000054:    5231           75337                           MASK     LOW10                                 
040708,000055:    5232           56002                           XCH      Q                                     #  RESTORING INPUT C(A) IF THIS WAS A
040709,000056:    5233           50002        Q+10000            INDEX    Q                                     #  POSTJUMP.
040710,000057:    5234           12000        BNKJUP+4           TCF      10000                                 
040711,000058: 

Page 949

040713,000060:                                                                                                  #           THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.
040714,000061: 
040715,000062:    5235           35337        MAKECADR           CAF      LOW10                                 
040716,000063:    5236           70123                           MASK     BUF2                                  
040717,000064:    5237           60124                           AD       BUF2       +1                         
040718,000065:    5240           00002                           TC       Q                                     
040719,000066: 
040720,000067: 
040721,000068:                                                                                                  #           THE FOLLOWING ROUTINE OBTAINS THE ONE WORD AT THE ADDRESS ARRIVING IN A, AND LEAVES IT IN A.  ENTER
040722,000069:                                                                                                  #  WITH THE CADR IN A, AT DATACALL WITH JUNK IN L IF NOT SWITCHING SUPERBANKS, OTHERWISE AT SUPDACAL WITH SUPERBANK
040723,000070:                                                                                                  #  BITS IN BITS 7-5 IN L (BITS 15-8 AND 4-1 MAY BE JUNK).  DEBRIS = MTEMP.  INHINTS FOR ABOUT 165 MUSEC.
040724,000071: 
040725,000072:    5241           54001        DATACALL           TS       L                                     #  SAVE CADR (SOLE INPUT HERE).
040726,000073:    5242           00006                           EXTEND                                         
040727,000074:    5243           00007                           READ     SUPERBNK                              #  THIS PROLOGUE MAKES SUPERSWITCH VACUOUS.
040728,000075:    5244           56001                           XCH      L                                     #  CADR IN A, SUPERBITS IN L.
040729,000076: 
040730,000077:    5245           54125        SUPDACAL           TS       MPTEMP                                
040731,000078:    5246           56004                           XCH      FBANK                                 #  SET FBANK FOR DATA.
040732,000079:    5247           00006                           EXTEND                                         
040733,000080:    5250           04007                           ROR      SUPERBNK                              #  SAVE FBANK IN BITS 15-11, AND
040734,000081:    5251           56125                           XCH      MPTEMP                                #   SUPERBANK IN BITS  7-5.
040735,000082:    5252           75337                           MASK     LOW10                                 
040736,000083:    5253           56001                           XCH      L                                     #  SAVE REL. ADR. IN BANK, FETCH SUPERBITS.
040737,000084:    5254           00004                           INHINT                                         #  BECAUSE RUPT DOES NOT SAVE SUPERBANK.
040738,000085:    5255           00006                           EXTEND                                         
040739,000086:    5256           01007                           WRITE    SUPERBNK                              #  SET SUPERBANK FOR DATA.
040740,000087:    5257           50001                           INDEX    L                                     
040741,000088:    5260           32000                           CA       10000                                 
040742,000089: 
040743,000090:    5261           56125                           XCH      MPTEMP                                #  SAVE 1ST WD, FETCH OLD FBANK AND SBANK.
040744,000091:    5262           00006                           EXTEND                                         
040745,000092:    5263           01007                           WRITE    SUPERBNK                              #  RESTORE SUPERBANK.
040746,000093:    5264           00003                           RELINT                                         
040747,000094:    5265           54004                           TS       FBANK                                 #  RESTORE FBANK.
040748,000095:    5266           30125                           CA       MPTEMP                                #  RECOVER FIRST WORD OF DATA.
040749,000096:    5267           00002                           RETURN                                         #  24 WDS. DATACALL 516 MU, SUPDACAL 432 MU
040750,000097: 

Page 950

040752,000099:                                                                                                  #           THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.
040753,000100: 
040754,000101:    5270           52073        IBNKCALL           DXCH     RUPTREG3                              #  USES RUPTREG3,4 FOR DP RETURN ADDRESS.
040755,000102:    5271           50002                           INDEX    Q                                     
040756,000103:    5272           30000                           CAF      0                                     
040757,000104:    5273           24002                           INCR     Q                                     
040758,000105: 
040759,000106:    5274           54001        ISWCALLL           TS       L                                     
040760,000107:    5275           22004                           LXCH     FBANK                                 
040761,000108:    5276           75337                           MASK     LOW10                                 
040762,000109:    5277           56002                           XCH      Q                                     
040763,000110:    5300           52073                           DXCH     RUPTREG3                              
040764,000111:    5301           50002                           INDEX    Q                                     
040765,000112:    5302           02000                           TC       10000                                 
040766,000113: 
040767,000114:    5303           56073        ISWRETRN           XCH      RUPTREG4                              
040768,000115:    5304           56004                           XCH      FBANK                                 
040769,000116:    5305           56073                           XCH      RUPTREG4                              
040770,000117:    5306           00072                           TC       RUPTREG3                              
040771,000118: 

Page 951

040773,000120:                                                                                                  #           THE FOLLOWING SUBROUTINES PROVIDE TO THE BASIC PROGRAMMER ENTRY INTO AND RETURN FROM ANY INTERPRETIVE
040774,000121:                                                                                                  #  CODING WHICH DOES NOT USE THE ENTERING CONTENTS OF Q AND WHICH RETURNS VIA DANZIG. C(A) AND C(L) ARE SAVED.
040775,000122: 
040776,000123:                                                                                                  #  USER'S RESPONSIBILITY TO FILL IN ADVANCE THE APPROPRIATE OPERAND AND ADDRESS REGISTERS USED BY THE
040777,000124:                                                                                                  #  INTERPRETIVE CODING SUCH AS MPAC, BUF, ADDRWD, ETC.; AND TO CONFIRM THAT THE INTERPRETIVE CODING MEETS THE
040778,000125:                                                                                                  #  ABOVE RESTRICTIONS WITH RESPECT TO Q AND DANZIG.
040779,000126: 
040780,000127:                                                                                                  #  USEPRET AND USPRCADR MUST NOT BE USED IN INTERRUPT.
040781,000128: 
040782,000129:                                                                                                  #  1. USEPRET ACCESSES INTERPRETIVE CODING WHICH CAN BE ENTERED WITHOUT CHANGING FBANK.
040783,000130:                                                                                                  #     THE CALLING SEQUENCE IS AS FOLLOWS:
040784,000131: 
040785,000132:                                                                                                  #                                          L         TC     USEPRET
040786,000133:                                                                                                  #                                          L+1       TC,TCF INTPRETX       TC,TCF MEANS TC OR TCF
040787,000134:                                                                                                  #                                                                          INTPRETX IS THE INTERPRETIVE CODING
040788,000135:                                                                                                  #                                                                          RETURN IS TO L+2
040789,000136: 
040790,000137:                                                                                                  #  2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK. THE CALLING SEQUENCE IS AS FOLLOWS:
040791,000138: 
040792,000139:                                                                                                  #                                          L         TC     USPRCADR
040793,000140:                                                                                                  #                                          L+1       CADR   INTPRETX       INTPRETX IS THE INTERPRETIVE CODING
040794,000141:                                                                                                  #                                                                          RETURN IS TO L+2
040795,000142: 
040796,000143:    5307           56002        USEPRET            XCH      Q                                     #  FETCH Q, SAVING A
040797,000144:    5310           54154                           TS       LOC                                   #  L+1 TO LOC
040798,000145:    5311           30006                           CA       BBANK                                 
040799,000146:    5312           54155                           TS       BANKSET                               #  USER'S BBANK TO BANKSET
040800,000147:    5313           37754                           CA       BIT8                                  
040801,000148:    5314           54023                           TS       EDOP                                  #  EXIT INSTRUCTION TO EDOP
040802,000149:    5315           30002                           CA       Q                                     #  RETRIEVE ORIGINAL A
040803,000150:    5316           00154                           TC       LOC                                   
040804,000151: 
040805,000152:    5317           54154        USPRCADR           TS       LOC                                   #  SAVE A
040806,000153:    5320           37754                           CA       BIT8                                  
040807,000154:    5321           54023                           TS       EDOP                                  #  EXIT INSTRUCTION TO EDOP
040808,000155:    5322           30006                           CA       BBANK                                 
040809,000156:    5323           54155                           TS       BANKSET                               #  USER'S BBANK TO BANKSET
040810,000157:    5324           50002                           INDEX    Q                                     
040811,000158:    5325           30000                           CA       0                                     
040812,000159:    5326           54004                           TS       FBANK                                 #  INTERPRETIVE BANK TO FBANK
040813,000160:    5327           75337                           MASK     LOW10                                 #  YIELDS INTERPRETIVE RELATIVE ADDRESS
040814,000161:    5330           56002                           XCH      Q                                     #  INTERPRETIVE ADDRESS TO Q, FETCHING L+1
040815,000162:    5331           56154                           XCH      LOC                                   #  L+1 TO LOC, RETRIEVING ORIGINAL A
040816,000163:    5332           15233                           TCF      Q+10000                               
040817,000164: 

Page 952

040819,000166:                                                                                                  #  THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS THE SUPERBANK SETTING.)
040820,000167:                                                                                                  #                                            PSEUDO-FIXED     OCTAL PSEUDO
040821,000168:                                                                                                  #  SUPERBANK     SETTING     S-REG. VALUE    BANK NUMBERS     ADDRESSES
040822,000169:                                                                                                  #  ---------     -------     ------------     ------------     ------------
040823,000170: 
040824,000171:                                                                                                  #  SUPERBANK 3     0XX       2000 - 3777        30 - 37       70000 - 107777   (WHERE XX CAN BE ANYTHING AND
040825,000172:                                                                                                  #                                                                              WILL USUALLY BE SEEN AS 11)
040826,000173:                                                                                                  #  SUPERBANK 4     100       2000 - 3777        40 - 47       110000 - 127777  (AS FAR AS IT CAN BE SEEN,
040827,000174:                                                                                                  #                                                                              ONLY BANKS 40-43 WILL EVER BE
040828,000175:                                                                                                  #                                                                              AND ARE PRESENTLY AVAILABLE)
040829,000176:                                                                                                  #  SUPERBANK 5     101       2000 - 3777        50 - 57       130000 - 147777  (PRESENTLY NOT AVAILABLE TO
040830,000177:                                                                                                  #                                                                              THE USER)
040831,000178:                                                                                                  #  SUPERBANK 6     110       2000 - 3777        60 - 67       150000 - 167777  (PRESENTLY NOT AVAILABLE TO
040832,000179:                                                                                                  #                                                                              THE USER)
040833,000180:                                                                                                  #  ***  THIS ROUTINE MAYBE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27.  I.E., NO PROGRAM LIVING IN ANY
040834,000181:                                                                                                  #  SUPERBANK SHOULD USE SUPERSW. ***
040835,000182: 
040836,000183:                                                                                                  #  SUPERSW MAY BE CALLED IN THIS FASHION:
040837,000184: 
040838,000185:                                                                                                  #           CAF     ABBCON          WHERE  --  ABBCON   BBCON  SOMETHIN  --
040839,000186:                                                                                                  #           TCR     SUPERSW         (THE SUPERBNK BITS ARE IN THE BBCON)
040840,000187:                                                                                                  #           ...       ...
040841,000188:                                                                                                  #            .         .
040842,000189:                                                                                                  #            .         .
040843,000190: 
040844,000191:                                                                                                  #  OR IN THIS FASHION:
040845,000192: 
040846,000193:                                                                                                  #           CAF     SUPERSET        WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE
040847,000194:                                                                                                  #           TCR     SUPERSW         SUPERBANK BIT CONSTANTS:
040848,000195:                                                                                                  #           ...       ...                                   SUPER011 OCTAL  60
040849,000196:                                                                                                  #            .         .                                    SUPER100 OCTAL 100
040850,000197:                                                                                                  #            .         .                                    SUPER101 OCTAL 120
040851,000198:                                                                                                  #                                                           SUPER110 OCTAL 140
040852,000199: 
040853,000200:    5333           00006        SUPERSW            EXTEND                                         
040854,000201:    5334           01007                           WRITE    SUPERBNK                              #  WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO
040855,000202:                                                                                                  #  CHANNEL 07
040856,000203:    5335           00002                           TC       Q                                     #  TC TO INSTRUCTION FOLLOWING
040857,000204:                                                                                                  #    TC  SUPERSW
040858,000205: 

End of include-file INTER-BANK_COMMUNICATION.agc.  Parent file is MAIN.agc