Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
513 lines (484 sloc)
13.6 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright: Public domain. | |
# Filename: AGC_BLOCK_TWO_SELF-CHECK.agc | |
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. | |
# It is part of the source code for the Command Module's (CM) | |
# Apollo Guidance Computer (AGC), for Apollo 11. | |
# Assembler: yaYUL | |
# Contact: Ron Burkey <info@sandroid.org>. | |
# Website: www.ibiblio.org/apollo. | |
# Pages: 1394-1403 | |
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting | |
# from the Colossus249/ file of the same | |
# name, using Comanche055 page images. | |
# | |
# This source code has been transcribed or otherwise adapted from digitized | |
# images of a hardcopy from the MIT Museum. The digitization was performed | |
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many | |
# thanks to both. The images (with suitable reduction in storage size and | |
# consequent reduction in image quality as well) are available online at | |
# www.ibiblio.org/apollo. If for some reason you find that the images are | |
# illegible, contact me at info@sandroid.org about getting access to the | |
# (much) higher-quality images which Paul actually created. | |
# | |
# Notations on the hardcopy document read, in part: | |
# | |
# Assemble revision 055 of AGC program Comanche by NASA | |
# 2021113-051. 10:28 APR. 1, 1969 | |
# | |
# This AGC program shall also be referred to as | |
# Colossus 2A | |
# Page 1394 | |
# PROGRAM DESCRIPTION DATE 20 DECEMBER 1967 | |
# PROGRAM NAME - SELF-CHECK LOG SECTION AGC BLOCK TWO SELF-CHECK | |
# MOD NO - 1 ASSEMBLY SUBROUTINE UTILITYM REV 25 | |
# MOD BY - GAUNTT | |
# | |
# | |
# FUNCTIONAL DESCRIPTION | |
# | |
# PROGRAM HAS TWO MAIN PARTS. THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS | |
# PART OF THE BACK-UP IDLE LOOP. THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN | |
# STARTING VERB. | |
# THE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS. | |
# THE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK , ONE AT A TIME. | |
# IN ALL THERE ARE 7 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK. MORE DETAIL DESCRIPTION MAY BE | |
# FOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966, AND ADDENDA 2 AND 3. | |
# THE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27). BELOW IS | |
# A DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN | |
# OCTAL, TO LOAD INTO SMODE. | |
# +-4 ERASABLE MEMORY | |
# +-5 FIXED MEMORY | |
# +-1,2,3,6,7,10 EVERYTHING IN OPTIONS 4 AND 5. | |
# -0 SAME AS +-10 UNTIL AN ERROR IS DETECTED. | |
# +0 NO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP. | |
# | |
# | |
# WARNINGS | |
# USE OF E MEMORY RESERVED FOR SELF-CHECK (EVEN IN IDLE LOOP) AS TEMP STORAGE BY OTHER PROGRAMS IS DANGEROUS. | |
# SMODE SET GREATER THAN OCT 10 PUTS COMPUTER INTO BACKUP IDLE LOOP. | |
# | |
# | |
# CALLING SEQUENCE | |
# | |
# TO CALL SELF-CHECK KEY IN | |
# V 21 N 27 E OPTION NUMBER E | |
# TO CALL SHOW-BANKSUM KEY IN | |
# V 91 E DISPLAYS FIRST BANK | |
# V 33 E PROCEED, DISPLAYS NEXT BANK | |
# | |
# | |
# EXIT MODES, NORMAL AND ALARM | |
# | |
# SELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED. IF SO + OPTION NUMBERS PUT | |
# COMPUTER INTO BACKUP IDLE LOOP, - OPTION NUMBERS RESTART THE OPTION. | |
# THE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED. | |
# SHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E). THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP | |
# | |
# | |
# | |
# OUTPUT | |
# Page 1395 | |
# SELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND | |
# TURNS ON THE ALARM LIGHT. THE OPERATOR MAY THEN DISPLAY THE THREE FAILREGS BY KEYING IN V 05 N 09 E. FOR FURTHER | |
# INFORMATION HE MAY KEY IN V 05 N 08 E, THE DSKY DISPLAY IN R1 WILL BE ADDRESS+1 OF WHERE THE ERROR WAS DETECTED, | |
# IN R2 THE BBCON OF SELF-CHECK, AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST MAN | |
# INITIATED FRESH START (SLAP1). | |
# SHOW-BANKSUM STARTING WITH BANK 0 DISPLAYS IN R1 THE BANK SUM (A +-NUMBER EQUAL TO THE BANK NUMBER), IN R2 | |
# THE BANK NUMBER, AND IN R3 THE BUGGER WORD. | |
# | |
# | |
# ERASABLE INITIALIZATION REQUIRED | |
# ACCOMPLISHED BY FRESH START | |
# SMODE SET TO +0 | |
# | |
# DEBRIS | |
# ALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK. | |
# EXCEPTION IS A RESTART. RESTART THAT OCCURS DURING ERASCHK RESTORES ERASABLE, UNLESS THERE IS EVIDENCE TO DOUBT | |
# E MEMORY, IN WHICH CASE PROGRAM THEN DOES A FRESH START (DOFSTART). | |
BANK 25 | |
SETLOC SELFCHEC | |
BANK | |
COUNT 43/SELF | |
SBIT1 EQUALS BIT1 | |
SBIT2 EQUALS BIT2 | |
SBIT3 EQUALS BIT3 | |
SBIT4 EQUALS BIT4 | |
SBIT5 EQUALS BIT5 | |
SBIT6 EQUALS BIT6 | |
SBIT7 EQUALS BIT7 | |
SBIT8 EQUALS BIT8 | |
SBIT9 EQUALS BIT9 | |
SBIT10 EQUALS BIT10 | |
SBIT11 EQUALS BIT11 | |
SBIT12 EQUALS BIT12 | |
SBIT13 EQUALS BIT13 | |
SBIT14 EQUALS BIT14 | |
SBIT15 EQUALS BIT15 | |
S+ZERO EQUALS ZERO | |
S+1 EQUALS BIT1 | |
S+2 EQUALS BIT2 | |
S+3 EQUALS THREE | |
S+4 EQUALS FOUR | |
S+5 EQUALS FIVE | |
# Page 1396 | |
S+6 EQUALS SIX | |
S+7 EQUALS SEVEN | |
S8BITS EQUALS LOW8 # 00377 | |
CNTRCON = OCT50 # USED IN CNTRCHK | |
ERASCON1 OCTAL 00061 # USED IN ERASCHK | |
ERASCON2 OCTAL 01373 # USED IN ERASCHK | |
ERASCON6 = OCT1400 # USED IN ERASCHK | |
ERASCON3 OCTAL 01461 # USED IN ERASCHK | |
ERASCON4 OCTAL 01773 # USED IN ERASCHK | |
S10BITS EQUALS LOW10 # 01777, USED IN ERASCHK | |
SBNK03 EQUALS PRIO6 # 06000, USED IN ROPECHK | |
-MAXADRS = HI5 # FOR ROPECHK | |
SIXTY OCTAL 00060 | |
SUPRCON OCTAL 60017 # USED IN ROPECHK | |
S13BITS OCTAL 17777 | |
CONC+S1 OCTAL 25252 # USED IN CYCLSHFT | |
CONC+S2 OCTAL 52400 # USED IN CYCLSHFT | |
ERASCON5 OCTAL 76777 | |
S-7 = OCT77770 | |
S-4 EQUALS NEG4 | |
S-3 EQUALS NEG3 | |
S-2 EQUALS NEG2 | |
S-1 EQUALS NEGONE | |
S-ZERO EQUALS NEG0 | |
EBANK= LST1 | |
ADRS1 ADRES SKEEP1 | |
SELFADRS ADRES SELFCHK # SELFCHK RETURN ADDRESS. SHOULD BE PUT | |
# IN SELFRET WHEN GOING FROM SELFCHK TO | |
# SHOWSUM AND PUT IN SKEEP1 WHEN GOING | |
# FROM SHOWSUM TO SELF-CHECK. | |
PRERRORS CA ERESTORE # IS IT NECESSARY TO RESTORE ERASABLE | |
EXTEND | |
BZF ERRORS # NO | |
EXTEND | |
DCA SKEEP5 | |
INDEX SKEEP7 | |
DXCH 0000 # RESTORE THE TWO ERASABLE REGISTERS | |
CA S+ZERO | |
TS ERESTORE | |
ERRORS INHINT | |
CA Q | |
TS SFAIL # SAVE Q FOR FAILURE LOCATION | |
TS ALMCADR # FOR DISPLAY WITH BBANK AND ERCOUNT | |
INCR ERCOUNT # KEEP TRACK OF NUMBER OF MALFUNCTIONS. | |
TCALARM2 TC ALARM2 | |
OCT 01102 # SELF-CHECK MALFUNCTION INDICATOR | |
CCS SMODE | |
SIDLOOP CA S+ZERO | |
# Page 1397 | |
TS SMODE | |
TC SELFCHK # GO TO IDLE LOOP | |
TC SFAIL # CONTINUE WITH SELF-CHECK | |
-1CHK CCS A | |
TCF PRERRORS | |
TCF PRERRORS | |
CCS A | |
TCF PRERRORS | |
TC Q | |
SMODECHK EXTEND | |
QXCH SKEEP1 | |
TC CHECKNJ # CHECK FOR NEW JOB | |
CCS SMODE | |
TC SOPTIONS | |
TC SMODECHK +2 # TO BACKUP IDLE LOOP | |
TC SOPTIONS | |
INCR SCOUNT | |
TC SKEEP1 # CONTINUE WITH SELF-CHECK | |
SOPTIONS AD S-7 | |
EXTEND | |
BZMF +2 # FOR OPTIONS BELOW NINE. | |
BNKOPTN TC SIDLOOP # ILLEGAL OPTION. GO TO IDLE LOOP. | |
INCR SCOUNT # FOR OPTIONS BELOW NINE. | |
AD S+7 | |
INDEX A | |
TC SOPTION1 | |
SOPTION1 TC SKEEP1 # WAS TC+TCF | |
SOPTION2 TC SKEEP1 # WAS IN:OUT1 | |
SOPTION3 TC SKEEP1 # WAS COUNTCHK | |
SOPTION4 TC ERASCHK | |
SOPTION5 TC ROPECHK | |
SOPTION6 TC SKEEP1 | |
SOPTION7 TC SKEEP1 | |
SOPTON10 TC SKEEP1 # CONTINUE WITH SELF-CHECK | |
CHECKNJ EXTEND | |
QXCH SELFRET # SAVE RETURN ADDRESS WHILE TESTING NEWJOB | |
TC POSTJUMP # TO SEE IF ANY JOBS HAVE BECOME ACTIVE. | |
CADR ADVAN | |
SELFCHK TC SMODECHK # ** CHARLEY, COME IN HERE | |
# SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED. | |
# SKEEP6 HOLDS B(X+1). | |
# SKEEP5 HOLDS B(X). | |
# SKEEP4 HOLDS C(EBANK) DURING ERASLOOP AND CHECKNJ. | |
# Page 1398 | |
# SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS). | |
# SKEEP2 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH BANK NUMBERS IN EB. | |
# ERASCHK TAKES APPROXMATELY 7 SECONDS | |
ERASCHK CA S+1 | |
TS SKEEP2 | |
0EBANK CA S+ZERO | |
TS EBANK | |
CA ERASCON3 # 01461 | |
TS SKEEP7 # STARTING ADDRESS | |
CA S10BITS # 01777 | |
TS SKEEP3 # LAST ADDRESS CHECKED | |
TC ERASLOOP | |
E134567B CA ERASCON6 # 01400 | |
TS SKEEP7 # STARTING ADDRESS | |
CA S10BITS # 01777 | |
TS SKEEP3 # LAST ADDRESS CHECKED | |
TC ERASLOOP | |
2EBANK CA ERASCON6 # 01400 | |
TS SKEEP7 # STARTING ADDRESS | |
CA ERASCON4 # 01773 | |
TS SKEEP3 # LAST ADDRESS CHECKED | |
TC ERASLOOP | |
NOEBANK TS SKEEP2 # +0 | |
CA ERASCON1 # 00061 | |
TS SKEEP7 # STARTING ADDRESS | |
CA ERASCON2 # 01373 | |
TS SKEEP3 # LAST ADDRESS CHECKED | |
ERASLOOP INHINT | |
CA EBANK # STORES C(EBANK) | |
TS SKEEP4 | |
EXTEND | |
NDX SKEEP7 | |
DCA 0000 | |
DXCH SKEEP5 # STORES C(X) AND C(X+1) IN SKEEP6 AND 5. | |
CA SKEEP7 | |
TS ERESTORE # IF RESTART, RESTORE C(X) AND C(X+1) | |
TS L | |
INCR L | |
NDX A | |
DXCH 0000 # PUTS OWN ADDRESS IN X AND X +1 | |
NDX SKEEP7 | |
CS 0001 # CS X+1 | |
NDX SKEEP7 | |
AD 0000 # AD X | |
TC -1CHK | |
CA ERESTORE # HAS ERASABLE BEEN RESTORED | |
# Page 1399 | |
EXTEND | |
BZF ELOOPFIN # YES, EXIT ERASLOOP. | |
EXTEND | |
NDX SKEEP7 | |
DCS 0000 # COMPLEMENT OF ADDRESS OF X AND X+1 | |
NDX SKEEP7 | |
DXCH 0000 # PUT COMPLEMENT OF ADDRESS OF X AND X+1 | |
NDX SKEEP7 | |
CS 0000 # CS X | |
NDX SKEEP7 | |
AD 0001 # AD X+1 | |
TC -1CHK | |
CA ERESTORE # HAS ERASABLE BEEN RESTORED | |
EXTEND | |
BZF ELOOPFIN # YES, EXIT ERASLOOP. | |
EXTEND | |
DCA SKEEP5 | |
NDX SKEEP7 | |
DXCH 0000 # PUT B(X) AND B(X+1) BACK INTO X AND X+1 | |
CA S+ZERO | |
TS ERESTORE # IF RESTART, DO NOT RESTORE C(X), C(X+1) | |
ELOOPFIN RELINT | |
TC CHECKNJ # CHECK FOR NEW JOB | |
CA SKEEP4 # REPLACES B(EBANK) | |
TS EBANK | |
INCR SKEEP7 | |
CS SKEEP7 | |
AD SKEEP3 | |
EXTEND | |
BZF +2 | |
TC ERASLOOP # GO TO NEXT ADDRESS IN SAME BANK | |
CCS SKEEP2 | |
TC NOEBANK | |
INCR SKEEP2 # PUT +1 IN SKEEP2. | |
CA EBANK | |
AD SBIT9 | |
TS EBANK | |
AD ERASCON5 # 76777, CHECK FOR BANK E2 | |
EXTEND | |
BZF 2EBANK | |
CCS EBANK | |
TC E134567B # GO TO EBANKS 1,3,4,5,6, AND 7 | |
CA ERASCON6 # END OF ERASCHK | |
TS EBANK | |
# CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10. | |
# INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS | |
CNTRCHK CA CNTRCON # 00050 | |
CNTRLOOP TS SKEEP2 | |
AD SBIT4 # +10 OCTAL | |
INDEX A | |
# Page 1400 | |
CS 0000 | |
CCS SKEEP2 | |
TC CNTRLOOP | |
# CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS | |
CYCLSHFT CA CONC+S1 # 25252 | |
TS CYR # C(CYR) = 12525 | |
TS CYL # C(CYL) = 52524 | |
TS SR # C(SR) = 12525 | |
TS EDOP # C(EDOP) = 00125 | |
AD CYR # 37777 C(CYR) = 45252 | |
AD CYL # 00-12524 C(CYL) = 25251 | |
AD SR # 00-25251 C(SR) = 05252 | |
AD EDOP # 00-25376 C(EDOP) = +0 | |
AD CONC+S2 # C(CONC+S2) = 52400 | |
TC -1CHK | |
AD CYR # 45252 | |
AD CYL # 72523 | |
AD SR # 77775 | |
AD EDOP # 77775 | |
AD S+1 # 77776 | |
TC -1CHK | |
INCR SCOUNT +1 | |
TC SMODECHK | |
# SKEEP1 HOLDS SUM | |
# SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES | |
# SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY | |
# SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS) | |
# (04000 TO 07777 IN FXFX BANKS) | |
# SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY | |
# SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER | |
# SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS | |
# SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION | |
# SKEEP7 CONTROLS WHEN ROUNTINE IS IN COMMON FIXED OR FIXED FIXED BANKS | |
ROPECHK CA S-ZERO # * | |
TS SKEEP6 # * -0 FOR ROPECHK. | |
STSHOSUM CA S+ZERO # * SHOULD BE ROPECHK | |
TS SKEEP4 # BANK NUMBER | |
CA S+1 | |
COMMFX TS SKEEP7 | |
CA S+ZERO | |
TS SKEEP1 | |
TS SKEEP3 | |
CA S+1 | |
TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS | |
COMADRS CA SKEEP4 | |
TS L # TO SET SUPER BANK | |
# Page 1401 | |
MASK HI5 | |
AD SKEEP3 | |
TC SUPDACAL # SUPER DATA CALL | |
TC ADSUM | |
AD SBIT11 # 02000 | |
TC ADRSCHK | |
FXFX CS A | |
TS SKEEP7 | |
EXTEND | |
BZF +3 | |
CA SBIT12 # 04000, STARTING ADDRESS OF BANK 02 | |
TC +2 | |
CA SBNK03 # 06000, STARTING ADDRESS OF BANK 03 | |
TS SKEEP3 | |
CA S+ZERO | |
TS SKEEP1 | |
CA S+1 | |
TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS | |
FXADRS INDEX SKEEP3 | |
CA 0000 | |
TC ADSUM | |
TC ADRSCHK | |
ADSUM TS SKEEP2 | |
AD SKEEP1 | |
TS SKEEP1 | |
CAF S+ZERO | |
AD SKEEP1 | |
TS SKEEP1 | |
CS SKEEP2 | |
AD SKEEP3 | |
TC Q | |
ADRSCHK LXCH A | |
CA SKEEP3 | |
MASK LOW10 # RELATIVE ADDRESS | |
AD -MAXADRS # SUBTRACT MAX RELATIVE ADDRESS = 1777. | |
EXTEND | |
BZF SOPTION # CHECKSUM FINISHED IF LAST ADDRESS. | |
CCS SKEEP5 # IS CHECKSUM FINISHED | |
TC +3 # NO | |
TC +2 # NO | |
TC SOPTION # GO TO ROPECHK SHOWSUM OPTION | |
CCS L # -0 MEANS A TC SELF WORD. | |
TC CONTINU | |
TC CONTINU | |
TC CONTINU | |
CCS SKEEP5 | |
TC CONTINU +1 | |
# Page 1402 | |
CA S-1 | |
TC CONTINU +1 # AD IN THE BUGGER WORD | |
CONTINU CA S+1 # MAKE SURE TWO CONSECUTIVE TC SELF WORDS | |
TS SKEEP5 | |
CCS SKEEP6 # * | |
CCS NEWJOB # * +1, SHOWSUM | |
TC CHANG1 # * | |
TC +2 # * | |
TC CHECKNJ # -0 IN SKEEP6 FOR ROPECHK | |
ADRS+1 INCR SKEEP3 | |
CCS SKEEP7 | |
TC COMADRS | |
TC COMADRS | |
TC FXADRS | |
TC FXADRS | |
NXTBNK CS SKEEP4 | |
AD LSTBNKCH # LAST BANK TO BE CHECKED | |
EXTEND | |
BZF ENDSUMS # END OF SUMMING OF BANKS. | |
CA SKEEP4 | |
AD SBIT11 | |
TS SKEEP4 # 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY | |
TC CHKSUPR | |
17TO20 CA SBIT15 | |
ADS SKEEP4 # SET FOR BANK 20 | |
TC GONXTBNK | |
CHKSUPR MASK HI5 | |
EXTEND | |
BZF NXTSUPR # INCREMENT SUPER BANK | |
27TO30 AD S13BITS | |
EXTEND | |
BZF +2 # BANK SET FOR 30 | |
TC GONXTBNK | |
CA SIXTY # FIRST SUPER BANK | |
ADS SKEEP4 | |
TC GONXTBNK | |
NXTSUPR AD SUPRCON # SET BNK 30 + INCR SUPR BNK AND CANCEL | |
ADS SKEEP4 # ERC BIT OF THE 37 TO 40 ADVANCE. | |
GONXTBNK CCS SKEEP7 | |
TC COMMFX | |
CA S+1 | |
TC FXFX | |
CA SBIT7 # HAS TO BE LARGER THAN NO OF FXSW BANKS. | |
TC COMMFX | |
SOPTION CA SKEEP4 | |
MASK HI5 # = BANK BITS | |
TC LEFT5 | |
# Page 1403 | |
TS L # BANK NUMBER BEFORE SUPER BANK | |
CA SKEEP4 | |
MASK S8BITS # = SUPER BANK BITS | |
EXTEND | |
BZF SOPT # BEFORE SUPER BANK | |
TS SR # SUPER BANK NECESSARY | |
CA L | |
MASK SEVEN | |
AD SR | |
TS L # BANK NUMBER WITH SUPER BANK | |
SOPT CA SKEEP6 # * | |
EXTEND # * | |
BZF +2 # * ON -0 CONTINUE WITH ROPE CHECK. | |
TC SDISPLAY # * ON +1 GO TO DISPLAY OF SUM. | |
CCS SKEEP1 # FORCE SUM TO ABSOLUTE VALUE. | |
TC +2 | |
TC +2 | |
AD S+1 | |
TS SKEEP1 | |
BNKCHK CS L # = - BANK NUMBER | |
AD SKEEP1 | |
AD S-1 | |
TC -1CHK # CHECK SUM | |
TC NXTBNK | |
EBANK= NEWJOB | |
LSTBNKCH BBCON* # * CONSTANT, LAST BANK. | |
SBANK= LOWSUPER |