GOTO867

(George Source)

Macros used: ACROSS, ALTLENG, BACKSPACE, BXE, BXL, CHAIN, CLEANUP, CLEANX, COMERRX, ENDCOM, ENDREC, FREECORE, GEOERR, HUNT, HUNT2, HUNT2J, HUNT2OPT, HUNTC, MENDAREA, MHUNT, MHUNTW, MONOUT, OUTEXES, OUTPAR, PARABEG, PARANUMB, PARAPASS, REWIND, SEG, SEGENTRY, SETNCORE, SPARANXT, SPARAPAS, STEP, TAB, TESTHKN, TESTREP, TRACE, UP

GOTO867.txt
226R ...      SEG GOTO,,CENT(COMMAND PROCESSOR),,G261,G286,G400 
22?J ...[   
22D* ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22K6 ...[     THIS EXCLUDES CODE UNDER #SKI G261
22PX ...[                    AND UNDER #SKI G286
22WN ...[   
233F ...#OPT G261 = 0   
238= ...#SKI G261&1 
23*3 ...# WITH UGUG EDIT M261 (BACK PARAMETER IN GOTO)  
23FS ...#OPT G286 = 0   
23LK ...#SKI G286&1 
23RB ...# WITH UGUG EDIT M286 (MULTI-COMMAND LINES) 
23T4 ...#UNS G400   
23WQ ...#      THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2   
23YG    [ THE ENTRY POINTS  
24D6    [     THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT  
24XQ          SEGENTRY K1GOTO,QENTRY1   
25CB          SEGENTRY K2GOTO,QENTRY2   
25X2          SEGENTRY K3GOTO,QENTRY3   
26BL          SEGENTRY K4GOTO,QENTRY4   
26LD ...      SEGENTRY K30GOTO,QENTRY30 
26W=    [   
27*W    [   
27TG    [     THIS SEGMENT CONTAINS THE ENTIRE CODING FOR THE GOTO COMMAND. 
28*6    [     A SEARCH IS MADE FOR THE LABEL SPECIFIED IN THE GOTO COMMAND  
28SQ    [     WITHIN THE CURRENT MACRO DEFINITION FILE AND IF NOT FOUND THERE   
29#B    [     WITHIN ANY MACRO DEFINITION FILE AT A HIGHER LEVEL.ON FINDING 
29S2    [     THE LABEL ALL COMMAND PROCESSOR LEVELS BELOW THAT AT WHICH THE
2=?L    [     LABEL HAS BEEN FOUND ARE DELETED AND RETURN MADE TO THE COMMAND   
2=R=    [     PROCESSOR(SEGMENT COMPROB)
2?=W    [   
2?QG    [     THIS IS THE ENTRY PT FROM COMPROB SEGMENT WHEN A COMMAND ERROR
2#=6    [     HAS BEEN FOUND BETWEEN DELIMITERS . THE CODE AT K2GOTO IS TO SKIP 
2#PQ    [     TO  THE  STOPPER. THE SEARCH TERMINATES WHEN STOPPER IS FOUND,OR  
2*9B    [     WHEN A RETURN IS MADE TO A MACRO LEVEL WHICH IS NOT POSITIONED
2*P2    [     BETWEEN DELIMITERS,OR WHEN A RETURN IS MADE TO A LEVEL WHICH IS   
2B8L    [     NOT A  MACRO LEVEL
2BN=    [   
2C7W    QENTRY2 
2CMG          LDN   4  1
2D76          STO   4  AWORK1(2)           [SET MKR. FOR C.P. ENTRY 
2DLQ          MONOUT   JSTOPER             [ JUMP TO STOPPER MESSAGE
2F6B          BRN      SKIPSTOP 
2FL2    [   
2G5L    QENTRY1 
2GK=          LDX   4  GSIGN
2GQD ...#SKI G261&1 
2GXL ...RU1 
2H4W          STO   4  AWORK1(2)           [SET GOTO MARKER 
2HJG          MHUNTW   2,CPB,CALAS  
2J46          LDX   7  CPBFSD(2)
2JHQ          BNG   7  NMDF                [J IF NOT AN MDF 
2K3B          PARABEG  1,TO(1)             [HUNT FOR 1ST PARAMETER 'TO' 
2KH2          MHUNT    3,CPB,CUNI          [HUNT FOR 1ST PARAM 'TO' 
2L2L          LDX   5  ANUM(3)  
2LG=          BPZ   5  PFOUND              [J IF FOUND  
2L^W          PARAPASS  
2MFG          MHUNT    3,CPB,CUNI   
2M^6          LDX   5  ANUM(3)  
2NDQ          BNG   5  NOPARAM             [J IF NO PARAMETER.  
2NYB    PFOUND  
2PD2          BZE   5  NOPARAM  
2PXL          LDCH  6  APARA(3)            [LOAD FIRST CHAR OF LABEL
2QC=          TXL   6  TEN(1)   
2QWW          BCC      SWL                 [JUMP IF NOT DIGIT.  
2QXK ...#SKI G261&1 
2QY# ...(   
2Q^3 ...#    P.ABBOTT/P.DUEMPERT BRAUNSCHWEIG DEN 6 OKTOBER 1975
2Q^Q ...#     CLEANED UP BY J. THOMASON, U.I.J.P.C., NOVEMBER 1976  
2R2F ...#     REWRITTEN BY R.DANN,READING UNIV,DECEMBER 77  
2R38 ...      PARABEG  1,UP(1),,,0  
2R3X ...      MHUNT    3,CPB,CUNI   
2R4L ...      LDX   5  ANUM(3)  
2R5* ...      BNG   5  NUP                 [ J IF NO UP PARA
2R64 ...      LDCT  0  #100                [ FLAG PARAM PRESENT 
2R6R ...      ORS   0  AWORK1(2)
2R7G ...NUP   FREECORE 3
2R89 ...      PARABEG  1,ZBACK(1),,,0   
2R8Y ...      MHUNT    3,CPB,CUNI   
2R9M ...      LDX   6  ANUM(3)  
2R=B ...      BNG   6  ZFREE               [ J IF NO BACK PARA  
2R?5 ...      LDCT  6  #200                [ FLAG PARAM PRESENT 
2R?S ...      ORS   6  AWORK1(2)
2R#H ...ZFREE FREECORE 3
2R*= ...)   
2RBG    SKIPSTOP
2RW6          LDX   4  CPLEV(2) 
2S*Q          STO   4  EXT(2)              [STORE CURRENT CPL   
2STB          MHUNTW   2,CPB,CALAS         [HUNT FOR /CALAS 
2T*2    PEX 
2TSL          LDX   5  CPBPROGLEV(2)       [LOAD PT OR CARDLIKE 
2W#=          SMO      FX2  
2WRW          STO   5  EXT+2               [STORE IN ACTIVITY BLOCK 
2X?G          LDX   6  CPBSTART(2)  
2XR6          SMO      FX2  
2Y=Q          STO   6  EXT+1
2YQB          LDX   6  CPBSTOP(2)   
2^=2          SMO      FX2  
2^PL          STO   6  EXT+7
329=          LDX   6  CPBFSD(2)
32NW          LDX   7  6
338G          ANDN  6  #77                 [ISOLATE FSD 
33N6          ANDX  7  MASKFSD(1)          [CLEAR FSD FROM X7   
347Q          LDX   1  FX2  
34MB          STO   7  AWORK4(1)
3572          NGS   6  AWORK3(1)
35LL          ANDN  5  1                   [ISOLATE DELIMITER BIT   
366=          LDX   6  AWORK1(1)           [J IF NOT GOTO COMMAND   
36KW          BPZ   6  P1   
375G          STO   7  AWORK2(1)           [RECORD STARTING POSITION
37K6    P1    BNZ   5  Y4                  [J IF DELIMITER BIT SET  
384Q          BPZ   6  NOSTOP              [ JUMP IF NOT GOTO.  STOPPER MISSING 
38JB          LDX   2  FX2  
38KF ...#SKI G261&1 
38LJ ...(   
38MM ...      LDCT  0  #100 
38NQ ...      ANDX  0  AWORK1(2)
38PT ...      ERS   0  AWORK1(2)
38QY ...      BNZ   0  NEWLEV   
38S3 ...      LDCT  0  #200                [ SEE IF BACK
38T6 ...      ANDX  0  AWORK1(2)
38W9 ...      BZE   0  STEPFILE            [ NO - GO ON AS NORMAL   
38X# ...      ERS   0  AWORK1(2)           [ CLEAR FLAG FOR NEXT CPLEV SEARCHED 
38YC ...      BRN      REWIND   
38^G ...)   
392K ...#SKI G261&1$1   
3942          BRN      STEPFILE 
39HL    P2    LDX   2  FX2  
3=3=          LDN   7  1
3=GW          ANDX  7  EXT+2(2)            [TEST DELIMITER BIT  
3?2G          BNZ   7  Y2A                 [SEARCH FOR STOPPER IF SET   
3?G6    P2A   LDX   2  FX2  
3?^Q          LDX   0  AWORK4(2)
3#FB          TXU   0  AWORK2(2)
3#^2          BCC      NEWLEV              [J IF BACK TO START  
3*DL    STEPFILE
3*Y=          LDX   1  AWORK3(2)
3BCW          STEP     0(1)                [POINTER TO NEXT RECORD  
3BXG          LDN   7  #100 
3CC6          ADS   7  AWORK4(2)           [UPDATE POSITION COUNT   
3CWQ          BZE   3  REWIND              [J IF END OF FILE REACHED
3DBB          LDX   4  0(3) 
3DW2          SBN   4  2
3F*L          SLL   4  2
3FT=          LDX   6  1(3) 
3G#W          SRL   6  22   
3GSG          BZE   6  QV   
3H#6          SBN   4  4
3HRQ          ADX   4  6
3J?B    QV  
3JR2          LDN   0  1
3K=L          STO   0  ACOMMUNE3(2)        [MKER TO INDICATE LABEL SEARCH   
3KQ=          MHUNT    2,CPB,CUNI          [FIND UNI BLOCK  
3L9W          LDX   0  ANUM(2)             [LOAD NO OF CHARS IN PARAM   
3LPG          ANDN  0  #7777
3M96          ADN   3  2
3MNQ          ADN   2  APARA               [ADD POINTER TO FIRST CHAR   
3N8B    P3    CALL  7  PCON                [CONVERT THE CHARACTER   
3NN2          BRN      P2                  [J IF END CHAR FOUND 
3P7L          TXU   5  SPACE(1) 
3PM=          BCS      SNICK               [J IF NOT SPACE  
3Q6W          SMO      FX2  
3QLG          STOZ     ACOMMUNE3           [SET SWITCH -CANNOT BE DELIMITER 
3R66          BCT   4  P3                  [J IF COUNT UNEXPIRED
3RKQ          BRN      P2   
3S5B    SNICK   
3SK2          TXL   4  0
3T4L          BCS      PSTART              [J IF CANNOT BE A LABEL  
3TJ=          TXL   5  TEN(1)   
3W3W          BCC      PSTART              [J IF NOT A DIGIT
3WHG          CALL  7  SLABEL              [S/R TO CHECK IF IS MATCHING LABEL   
3X36          BRN      P2                  [NO MATCH
3XGQ          BRN      TWOQL               [LABEL FOUND 
3Y2B          CALL  7  PCON                [MAY BE LABEL ---
3YG2          BRN      TWOQL               [TERM FOUN , THUS LABEL MATCHES  
3Y^L          TXU   5  SPACE(1) 
3^F=          BCS      P2                  [NOT A SPACE  THUS NO MATCH  
3^YW    [     THIS SECTION IS ENTERED WHEN THE LABEL HAS BEEN FOUND.ALL 
42DG    [     COMMAND PROCESSOR LEVELS BELOW THAT AT WHICH THE LABEL HAS BEEN   
42Y6    [     FOUND ARE DELETED , AND ALL MACRO DEFINITION FILES ASSOCIATED 
43CQ    [     WITH THESE LEVELS ARE CLOSED  
43XB    TWOQL   
44C2          LDX   2  FX2  
44WL          LDX   4  EXT(2)   
45B=          LDX   0  AWORK4(2)
45TW          BPZ   0  PLABFOUND
46*G          NGNC  0  1
46T6          ANDS  0  AWORK4(2)
47#Q          TXU   4  CPLEV(2) 
47SB          BCS      PLABFOUND
48#2          MHUNTW   3,CLB
48RL          ADN   3  CLBFIR   
49?=          LDCH  0  0(3) 
49QW          SBN   0  10   
4==G          BPZ   0  PLABFOUND
4=Q6          SMO      FX1  
4?9Q          LDX   7  NLOOP
4?PB          BRN      RERR 
4#92    PLABFOUND   
4#NL          CALL  5  SENDCOM             [S/R TO CLEAR UP ETC.
4#PS ...#SKI G286&1 
4#R2 ...(   
4#S8 ...      MHUNTW   3,CLB
4#TB ...      LDX   3  FPTR(3)  
4#WJ ...      LDX   0  ATYPE(3) 
4#XQ ...      SRL   0  12   
4#YY ...      SBN   0  IUSER+HULL   
4*26 ...      BNZ   0  XCCS 
4*3# ...      FREECORE 3                   [ IF IUSER EXISTS AT CURRENT 
4*4G ...                                   [ C P LEVEL THEN FREE IT 
4*5N ...XCCS
4*6W ...)   
4*8=          ENDCOM
4*MW    PSTART  
4B7G          SMO      FX2  
4BM6          LDX   6  ACOMMUNE3           [GET SWITCH WORD 
4C6Q          BZE   6  P2                  [J IF RECORD CANNOT BE DELIM 
4CLB          LDX   2  FX2  
4D62          LDN   7  1
4DKL          ANDX  7  EXT+2(2)            [ISOLATE DELIM. BIT  
4F5=          BNZ   7  PST1                [J IF DELIM BIT SET  
4FJW          LDN   2  EXT+1(2)            [SET PTR TO STARTER  
4G4G          BRN      PST2 
4GJ6    PST1  LDN   2  EXT+7(2)            [SET PTR TO STOPPER  
4H3Q    PST2
4HHB          LDN   0  4                   [SET COUNT OF STOPPER CHARS  
4J32          TXL   4  0
4JGL          BCS      P2                  [J IF CANNOT BE STARTER  
4K2=          CALL  7  SLABEL              [S/R TO CHECK FOR STARTER
4KFW          BRN      P2                  [NO MATCH
4K^G          BRN      £                   [MATCH FOUND 
4LF6          LDN   7  1                   [ MATCH FOUND
4LYQ          LDX   2  FX2  
4MDB          ANDX  7  EXT+2(2) 
4MY2          BZE   7  PST3                [J IF DELIM BIT UNSET
4NCL          LDX   7  MASKFSD(1)   
4NX=          ANDS  7  EXT+2(2)            [CLEAR DELIM BIT + B22   
4PBW          BRN      P2A  
4PWG    PST3
4QB6          LDN   7  1
4QTQ          ORS   7  EXT+2(2) 
4R*B          BRN      P2A                 [J TO OMIT DELIM CHECK   
4RT2    #   
4S#L    [     THIS IS THE ENTRY FOR THE EXIT COMMAND   -THIS COMMAND CAUSES THE 
4SS=    [           CURRENT BOTTOM MACRO TO TERMINATE.IF THE CP IS POSITIONED   
4T?W    [           BETWEEN DELIMITERS AT NEXT LEVEL,A SEARCH FOR THE STOPPER   
4TRG    [           IS MADE.
4W?6    [     THE SEARCH TERMINATES WHEN STOPPER IS FOUND,OR MACRO LEVEL NOT
4WQQ    [           BETWEEN DELS. OR A LEVEL WHICH IS NOT AN MDF IS REACHED 
4X=B    [   
4X=Q ...#UNS G400   
4X?6 ...#SKI
4X?G ...(   
4X?W ...QENTRY30
4X#= ...      BRN      (GEOERR) 
4X#L ...)   
4X*2 ...#UNS G400   
4X*B ...(   
4X*Q ...QENTRY30
4XB6 ...      TESTHKN XDSK1 
4XBG ...      TRACE 0(2),BEFORE 
4XBW ...      PARAPASS           [PASS PARAMETER
4XC= ...      TRACE 0(2),AFTER  
4XCL ...      HUNT     2,CPB,CUNI   
4XD2 ...      LDX    4  APARA(2)             [PARAM 
4XDB ...      LDX   5  ANUM(2)             [COUNT   
4XDQ ...      FREECORE 2
4XF6 ...      SBN   5  2
4XFG ...      BNZ   5  XDSK1               [IGNORE IF NOT 2 CHARS   
4XFW ...      ANDX  4  YDSK1(1)            [MASK FOR FIRST TWO CHARS
4XG= ...      TXU   4  YDSK2(1) 
4XGL ...       BCS      XDSK2               [J UNLESS BA
4XH2 ...      LDN   4  1
4XHB ...      BRN       XDSKB   
4XHQ ...XDSK2 TXU   4  YDSK3(1) 
4XJ6 ...      BCS      XDSK3               [J UNLESS BB 
4XJG ...      LDN   4  3
4XJW ...      BRN      XDSKB
4XK= ...XDSK3 TXU   4  YDSK4(1) 
4XKL ...      BCC      XDSKC               [J IF CE 
4XL2 ...      TXU   4  YDSK5(1) 
4XLB ...      BCC      XDSKO                [J IF OB
4XLQ ...      TXU   4  YDSK6(1) 
4XM6 ...      BCC      XDSKR                [J IF RC
4XMG ...      TXU   4  YDSK7(1) 
4XMW ...      BCC      XDSKM            [J IF MR
4XN= ...      TXU   4  YDSK8(1) 
4XNL ...      BCC      XDSKA                  [J IF AB  
4XP2 ...XDSK1   
4XPB ...)   
4XQ2    QENTRY3 
4Y9L          MHUNTW   3,CPB,CALAS  
4YP=          LDX   7  CPBFSD(3)
4^8W          BNG   7  NMDF                [J IF NOT AN MDF 
4^NG          LDX   4  CPLEV(2) 
5286          SBN   4  1                   [REDUCE CURRENT CPLEVEL  
52MQ          HUNT2    3,CPB,CALAS         [GET NEXT /CALAS 
537B          LDX   7  CPBFSD(3)
53M2          BPZ   7  Z1                  [J IF IS A MACRO LEVEL   
546L    Z5    STO   4  CPLEV(2)            [STORE NEW LEVEL 
54L=          ENDCOM                       [END OF EXIT COMMAND 
555W    Z1    LDX   5  CPBPROGLEV(3)
55KG          STO   5  EXT+2(2)            [COPY INF. TO CPAT   
5656          ANDN  5  1                   [ISOLATE DELIM BIT   
56JQ          BZE   5  Z5                  [J IF NOT BETWEEN DELS   
574B          LDX   5  CPBSTOP(3)          [ GOING UP A LEVEL.  COPY NEW STOPPER
57J2          STO   5  EXT+7(2)            [   INTO CPAT
583L          CLEANUP  4,3                 [DELETE CURRENT CPLEVEL  
58H=          MONOUT   JSTOPER             ["SEARCHING FOR STOPPER" 
592W          STOZ     AWORK1(2)           [MARKER FOR EXIT COMMAND 
59GG          STO   4  EXT(2)   
5=26          LDX   5  7
5=FQ          ANDN  5  #77                 [ISOLATE FSD 
5=^B          ANDX  7  MASKFSD(1)   
5?F2          STO   7  AWORK4(2)
5?YL          NGS   5  AWORK3(2)
5#D=    #   
5#XW    [  THIS IS THE ROUTINE WHICH SEARCHES FOR THE STOPPER   
5*CG    #   
5*X6    Y2A 
5BBQ          LDX   2  FX2  
5BWB          LDX   7  AWORK1(2)
5CB2          BPZ   7  Y4                  [J IF NOT GOTO COMMAND   
5CTL          LDX   7  AWORK4(2)
5D*=          TXU   7  AWORK2(2)
5DSW          BCC      NEWLEV              [J IF SEARCHED ALL THE FILE  
5F#G    Y4  
5FS6          SMO      FX2  
5G?Q          LDX   1  AWORK3              [RELOAD FSD  
5GRB          STEP     0(1) 
5H?2          LDN   7  #100                [UPDATE RECORD COUNT 
5HQL          ADS   7  AWORK4(2)
5J==          BZE   3  REWINDA             [J IF NO STOPPER BEFORE END OF FILE  
5JPW          LDEX   4  0(3)
5K9G          SBN   4  2
5KP6          SLL   4  2
5L8Q          LDX   6  1(3) 
5LNB          SRL   6  22   
5M82          BZE   6  Y3   
5MML          SBN   4  4
5N7=          ADX   4  6
5NLW    Y3    ADN   3  2                   [SET X3 TO START OF RECORD   
5P6G    Y2  
5PL6          SMO      FX2  
5Q5Q          LDN   2  EXT+7               [X2 TO PT TO STOPPER 
5QKB          LDN   0  4                   [STOPPER CHAR COUNT  
5R52          TXL   4  0
5RJL          BCS      Y2A                 [J IF CANNOT BE STOPPER  
5S4=          CALL  7  SDELIM              [S/R TO CHECK FOR STOPPER
5SHW          BRN      Y2A                 [NO MATCH
5T3G          BRN      £
5TH6          LDN   7  3
5W2Q          LDX   2  FX2  
5WGB          ORS   7  EXT+2(2) 
5X22          ERS   7  EXT+2(2)            [UNSET DELIMITER BITS
5XFL          LDX   7  AWORK1(2)
5X^=          BNG   7  P2   
5YDW    SKIPEND 
5YYG          LDX   2  FX2  
5^D6          LDX   4  EXT(2)              [LOAD TERM LEVEL 
62CB          CALL  5  SENDSKIP            [CLEAN UP ETC
62X2          CALL  6  OUTPUT   
636S          BZE   7  X4          [J IF EXIT COMMAND   
63BL          UP                           [RETURN TO CP ERROR ROUTINE  
63W=    [   
64*W    NOSTOP  
64TG          LDN   7  0                   [ X7=0 => NO STOPPER FOUND   
65*6          BRN      SKIPEND  
65SQ    [   
66#B    X4  
69PQ          LDX   0  EXT+8(2) 
6=9B          BNG   0  THEND
6=P2          ENDREC
6?8L    [     THE FOLLOWING SUBROUTINE OUTPUTS THE STOPPER WHICH ENDED THE  
6?N=    [     SEARCH
6#7W    OUTPUT  
6#MG          BZE   7  SUPPRESS            [J IF STOPPER MISSING
6*76          SBX   6  FX1  
6*LQ          LDN   4  4
6B6B          OUTEXES  4,EXT+7  
6BL2          OUTPAR   TIMENOW             [ O/P TIME   
6C5L          MONOUT   ACOMJT   
6CK=          ADX   6  FX1  
6D4W    SUPPRESS
6DJG          EXIT  6  0
6F46    #   
6FHQ    [     THE FOLLOWING SUBROUTINE FINDS THE RELEVANT CALAS BLOCK   
6G3B    RECH  LDX   2  FPTR(2)  
6GH2          LDX   0  ATYPE(2) 
6H2L          SRL   0  12   
6HG=          ERN   0  CPB+CALAS
6H^W          BNZ   0  RECH 
6JFG          LDEX  0  CPBCPLEV(2)         [LOAD CP LEVEL   
6J^6          TXU   0  4
6KDQ          BCS      RECH 
6KYB          EXIT  7  0
6LD2    NEWLEV  
6LXL          LDX   4  EXT(2)   
6MC=          SBN   4  1                    [REDUCE CPLEVEL 
6MWW          STO   4  EXT(2)   
6NBG          CALL  7  RECH 
6NHN ...#SKI G261&1 
6NNW ...      LDX   1  FX1  
6NW6          LDX   7  CPBFSD(2)
6P*Q          BPZ   7  PEX                 [J IF MACRO LEVEL
6PTB          SMO      FX2  
6Q*2          LDX   5  AWORK1   
6QSL          BPZ   5  PEX                 [ STOPPER MISSING. TIDY UP AND END   
6R#=          LDX   1  FX1  
6RRW          LDX   7  NFLAB(1) 
6S?G          BRN      RERR 
6SR6    [   
6T=Q    REWINDA 
6TQB          LDX   2  FX2  
6W=2          LDX   0  AWORK1(2)
6WPL          BPZ   0  NEWLEV   
6X9=    REWIND  
6XNW          STOZ     AWORK4(2)           [ZEROISE RUNNING COUNT   
6Y8G          LDX   1  AWORK3(2)
6YN6          REWIND   0(1) 
6^7Q          LDX   3  MASKFSD(1)   
6^MB          ANDS  3  EXT+2(2)            [LOSE DELIMITER BITS 
7272          BRN      P2   
72LL    #   
736=    [     THE  FOLLOWING S/R  OBTAINS NEXT CHAR FROM  RECORD
73KW    [     AND  CONVERTS IT TO PAPER TAPE IF NECESSARY   
745G    #   
74K6    PCON
754Q          LDCH  5  0(3) 
75JB          BCHX  3  £
7642          TXL   5  SEVFOUR(1)   
76HL          BCS      NORD                [J IF ORDINARY CHAR  
773=          SMO      FX2  
77GW          LDX   6  EXT+2               [LOAD PT OR CLIKE
782G          BNG   6  NORD                [J IF CARD LIKE  
78G6          TXU   5  SEVSIX(1)
78^Q          BCS      NIGN                [J IF NOT DELTA SHIFT
79FB          BCT   4  WUD  
79^2          BRN      TERM                [J IF COUNT EXPIRED  
7=DL    WUD   LDCH  5  0(3) 
7=Y=          BCHX  3  £
7?CW          TXL   5  TWOSCORE(1)         [J IF SMALL CHARACTER
7?XG          BCS      W108 
7#C6          ORN   5  #14                 [MAKE INTO TRUE CHARACTER
7#WQ          BRN      NORD 
7*BB    W108
7*W2          TXU   5  THIRTEEN(1)         [THIS SECTION
7B*L          BCC      TERM                [LOOKS FORM  
7BT=          TXU   5  TWEN4(1)            [A TERMINATOR
7C#W          BCC      TERM 
7CSG          TXL   5  THIRSIX(1)   
7D#6          BCC      NIGN 
7DRQ          TXL   5  THIRTWO(1)   
7F?B          BCC      TERM 
7FR2    WOOF  TXU   5  TAB(1)   
7G=L          BCS      NIGN 
7GQ=          LDN   5  #20                 [SET SPACE FOR TAB   
7H9W    NORD  EXIT  7  1
7HPG    NIGN  BCT   4  PCON 
7J96    TERM  EXIT  7  0
7JNQ    #   
7K8B    [   THE FOLLOWING S/R CHECKS RECORD AGAINST LABEL OR DELIMITER  
7KN2    #   
7L7L    [   ENTRY POINT FOR LABEL CHECK 
7LM=    SLABEL  
7M6W          SMO      FX2  
7MLG          STO   7  ACOMMUNE1           [STORE LINK  
7N66          BRN      SL1  
7NKQ    SDELIM  
7P5B          SMO      FX2  
7PK2          STO   7  ACOMMUNE1
7Q4L    SL0   CALL  7  PCON 
7QJ=          BRN      SL2                 [J IF TERM FOUND 
7R3W    SL1   LDCH  6  0(2)                [GET NEXT CHAR   
7RHG          BCHX  2  £                   [UPDATE  
7S36          TXU   5  6
7SGQ          BCS      SL2                 [J IF NO MATCH   
7T2B          BCT   4  SL4                 [COUNT UNEXP.
7TG2          BCT   0  SL2                 [J IF DELIM/LAB COUNT UNEXP. 
7T^L          SMO      FX2  
7WF=          LDX   7  ACOMMUNE1           [RESTORE LINK
7WYW          EXIT  7  1
7XDG    SL4   BCT   0  SL0                 [BOTH COUNTS UNEXP.  
7XY6          SMO      FX2  
7YCQ          LDX   7  ACOMMUNE1
7YXB          EXIT  7  2
7^C2    SL2   SMO      FX2  
7^WL          LDX   7  ACOMMUNE1
82B=          EXIT  7  0
82TW    #   
83*G    [    THE FOLLOWING S/R CLEANS UP AT END OF GOTO COMMAND OR BEFORE   
83T6    [    RETURNING TO CP
84#Q    #   
84SB    SENDSKIP
85#2          LDN   6  0                   [SET SWITCH  
85RL          BRN      SCLN 
86?=    SENDCOM 
86QW          LDN   6  #100                [SET SWITCH  
87=G    SCLN  SBX   5  FX1  
87Q6          CLEANUP  4,3  
889Q          MHUNTW   3,CPB,CALAS  
88PB          LDX   0  CPBFSD(3)
8992          BNG   0  SCLN2
89NL          ANDN  0  #77                 [ISOLATE FSD 
8=8=          ORX   0  AWORK4(2)           [ADD IN REC.COUNT
8=MW          SBX   0  6                   [ADJUST COUNT
8?7G          STO   0  CPBFSD(3)           [STORE BACK IN /CALAS
8?M6          LDX   0  EXT+2(2) 
8#6Q          STO   0  CPBPROGLEV(3)       [STORE DELIM WORD ETC.   
8#LB    SCLN2   
8*62          STO   4  CPLEV(2)            [SET NEW CP LEVEL IN CPAT
8*KL          BZE   6  SEND1               [J IF CP RETURN  
8B5=          BACKSPACE 
8BJW    SEND1   
8C4G          ADX   5  FX1  
8CJ6          EXIT  5  0
8D3Q    [     THIS SECTION IS THE ENTRY FOR THE BRACKETS COMMAND
8DHB    [   
8F32    QENTRY4 
8FGL          MHUNTW   3,CPB,CALAS  
8G2=          LDX   7  CPBFSD(3)
8GFW          BNG   7  NMDF                [J IF NOT A MACRO LEVEL  
8G^G          LDX   6  CPBSTART(3)  
8HF6          STO   6  AWORK1(2)           [STORE CURRENT STARTER AND STOPPER   
8HYQ          LDX   6  CPBSTOP(3)          [IN THE CPAT 
8JDB          STO   6  AWORK2(2)
8JY2          PARANUMB 6
8KCL          BZE   6  THEND               [J. IF NO PARS. GIVEN
8KX=          ERN   6  1
8LBW          BNZ   6  TWOPARS             [J IF MORE THAN 1 PARAMETER  
8LWG          CALL  5  SR1                 [S/R TO GET 1ST PAR ETC. 
8MB6          BRN      THEND               [J. IF PAR NULL/NON-EXISTENT 
8MTQ          TXU   6  PHOUR(1) 
8N*B          BCC      TBR1                [J IF ONLY 4 CHARS IN PAR.   
8NT2          SRL   7  12                  [MOVE PAR TYPE INTO L.S.HALF 
8P#L          TXL   7  TO(1)
8PS=          BCS      TBR1                [J.IF PAR IS NOT TYPE 2 OR 3 
8Q?W          STO   6  AWORK3(2)           [REMEMBER CHAR COUNT 
8QRG          ORX   7  GSIGN               [SET MKR - SPECIAL CASE WHERE CP.MAY 
8R?6                                       [NOT HAVE NOTICED SEPARATOR (POSS.)! 
8RQQ          LDN   6  4                   [SET CT. TO 4
8S=B    TBR1  STO   3  AWORK4(2)           [REMEMBER PTR. TO /CUNI  
8SQ2          LDN   2  AWORK1(2)
8T9L          CALL  5  SR2                 [S/R TO DEPOSIT PAR INTO AWORK AREA  
8TP=          BPZ   7  PCHEK               [J IF IS NOT SPECIAL CASE
8W8W          LDX   2  FX2  
8WNG          LDX   6  AWORK3(2)
8X86          SBN   6  4                   [NO OF CHARS LEFT OF 1ST PAR 
8XMQ    TBR2  LDCH  4  APARA(3)            [GET NEXT CHAR FROM /CUNI
8Y7B          BCHX  3  £                   [& UPDATE CHAR INDEX 
8YM2          TXU   4  TCOMMA(1)
8^6L          BCC      TBR3                [J IF COMMA DETECTED 
8^L=          BCT   6  TBR2 
925W          BRN      PCHEK               [J IF NO STOPPER PAR GIVEN   
92KG    TBR3  SBN   6  1                   [REDUCE COUNT
9356          BZE   6  PCHEK               [J IF NO STOPPER GIVEN   
93JQ          LDN   5  1
944B          SMO      AWORK4(2)
94J2          ADS   5  JPARNUM             [INCREASE PAR NO. IN /CUNI   
953L    TBR4  LDCH  4  APARA(3) 
95H=          TXU   4  SPACE(1) 
962W          BCS      TBR5                [J IF CHAR IS NOT A SPACE
96GG          BCHX  3  £
9726          BCT   6  TBR4 
97FQ          BRN      PCHEK               [NO STOPPER GIVEN
97^B    TBR5  MHUNT    2,CPB,CUNI   
98F2          LDN   4  APARA(2) 
98YL          ADN   3  APARA
99D=          SMO      6
99XW          MVCH  3  0
9=CG          STO   6  ANUM(2)             [STORE NEW CHAR. COUNT   
9=X6          LDX   3  2                   [SET X3 TO POINT TO /CUNI
9?BQ          TXL   6  PHOUR(1) 
9?WB          BCS      ZERR                [J IF < 4 CHARS LEFT 
9#B2          BRN      TBR6 
9#TL    TWOPARS 
9**=          CALL  5  SR1                 [GET 1ST PAR ETC.
9*SW          BRN      TBR7                [J IF PAR NULL/NON EXISTENT  
9B#G          LDN   6  4                   [SET COUNT TO 4  
9BS6          LDN   2  AWORK1(2)
9C?Q          CALL  5  SR2  
9CRB    TBR7
9D?2          CALL  5  SR1                 [GET 2ND PAR ETC 
9DQL          BRN      PCHEK               [J IF PAR NULL/NON-EXISTENT  
9F==    TBR6  LDN   6  4
9FPW          SMO      FX2  
9G9G          LDN   2  AWORK2   
9GP6          CALL  5  SR2  
9H8Q    PCHEK LDX   2  FX2  
9HNB          LDX   4  AWORK1(2)
9J82          TXU   4  AWORK2(2)
9JML          BCC      ZERR1               [J IF STARTER &STOPPER ARE SAME  
9K7=          MHUNTW   3,CPB,CALAS  
9KLW          LDX   4  AWORK1(2)
9L6G          STO   4  CPBSTART(3)         [STORE STARTER   
9LL6          LDX   4  AWORK2(2)
9M5Q          STO   4  CPBSTOP(3)          [STORE STOPPER   
9MKB    THEND   
9N52          ENDCOM                       [ END  OF  COMMAND   
9NJL    #   
9P4=    [   THE FOLLOWING S/R GETS NEXT PARAMETER AND TESTS IF THE CHAR 
9PHW    [     COUNT FOR THIS PARAM IS <4
9Q3G    #   
9QH6    SR1   SBX   5  FX1  
9R2Q          SPARAPAS  
9RGB          ADX   5  FX1  
9S22          MHUNT    3,CPB,CUNI          [FIND /CUNI  
9SFL          LDX   7  ANUM(3)  
9S^=          BNG   7  SR1A                [PARAM NON-X 
9TDW          BZE   7  SR1A                [PARAM NULL  
9TYG          LDN   6  #7777
9WD6          ANDX  6  7                   [ISOLATE CHAR COUNT  
9WXQ          TXL   6  PHOUR(1) 
9XCB          BCS      ZERR                [REPORT ERROR
9XX2          EXIT  5  1
9YBL    SR1A  EXIT  5  0
9YW=    #   
9^*W    [   THE FOLLOWING S/R  DEPOSITS DELIMITER IN CPAT IF THERE ARE NO   
9^TG    [   ERRORS IN IT
=2*6    #   
=2SQ    SR2   LDCH  4  APARA(3)            [GET NEXT CHAR FROM /CUNI
=3#B          TXL   4  TEN(1)   
=3S2          BCS      ZERR                [J IF DIGIT  
=4?L          TXL   4  TLHB(1)  
=4R=          BCC      SR2A 
=5=W          TXL   4  TA(1)
=5QG          BCC      ZERR                [J IF ALPHABETIC 
=6=6          TXU   4  PERCENT(1)   
=6PQ          BCC      ZERR                [J IF %  
=79B          TXU   4  THASH(1) 
=7P2          BCC      ZERR                [J IF #  
=88L          TXU   4  THYPHEN(1)   
=8N=          BCC      ZERR                [J IF HYPHEN 
=97W          TXU   4  TCOMMA(1)
=9MG          BCC      ZERR                [J IF COMMA  
==76          TXU   4  SPACE(1) 
==LQ          BCC      ZERR                [J IF SPACE  
=?6B    SR2A  DCH   4  0(2) 
=?L2          BCHX  2  £
=#5L          BCHX  3  £
=#K=          BCT   6  SR2  
=*4W          EXIT  5  0
=*JG    #   
=B46    [     THIS SECTION IS  FOR COMMAND ERROR REPORTS
=BHQ    #   
=C3B    [     COMMAND  ERROR WHEN THERE IS NO LABEL PARAMETER SPECIFIED IN  
=CH2    [     THE GOTO COMMAND  
=D2L    NOPARAM 
=DG=          LDX   7  PARM(1)  
=D^W          LDX   6  PLAB(1)  
=FFG          BRN      RERROR   
=F^6    [     COMMAND ERROR WHEN THE LABEL SPECIFIED IN THE GOTO COMMAND
=GDQ    [     DOES NOT START WITH A DIGIT   
=GYB    SWL   LDX   7  NDLAB(1) 
=HD2          BRN      RERR 
=HXL    [     COMMAND ERROR WHEN EITHER PARAMETER OF THE BRACKETS COMMAND HAS   
=JC=    [     AN INCORRECT FORMAT   
=JWW    [     THE BRACKETS COMMAND ARE THE SAME 
=KBG    [     COMMAND ERROR WHEN THE STARTER & STOPPER GIVEN AS PARAMETERS OF   
=KW6    #   
=L*Q    ZERR1   
=LTB          LDX   7  NSAME(1) 
=M*2          BRN      RERR 
=MSL    [     ERROR MESSAGE IDENTIFIERS 
=N#=    #   
=NRW    NFLAB          +JFLAB   
=P?G    NDLAB          +JDLAB   
=PR6    ZERR
=Q=Q          LDX   7  NAPFERR(1)   
=QQB    RERR
=R=2          NGN   6  1
=RPL    RERROR  
=S9=          COMERRX  7,6  
=SNW    NMDF  LDX   7  TMDF(1)  
=T8G    [     BRACKETS IS NOT A MACRO DEFINITION FILE   
=TN6    [     COMMAND ERROR WHEN THE SOURCE OF COMMAND  FOR  GOTO,EXIT OR   
=W7Q          BRN      RERR 
=WMB    NAPFERR        +APFERR  
=X72    NSAME          +HSAME   
=XLL    TMDF           +JMDF
=Y6=    PARM  +JPARMIS  
=YKW    PLAB  +JLAB 
=^5G    NLOOP          +JCOMLOOP
=^85 ...#SKI G261&1 
=^=N ...(   
=^*? ...ZBACK          4,4HBACK 
=^CW ...UP             +2,4HUP  
=^GF ...)   
=^K6    MASKFSD        #77777700
?24Q    TLHB           #73  
?2JB    TA             #41  
?342    PERCENT        #25  
?3HL    TCOMMA         #34  
?43=    THASH          #23  
?4GW    THYPHEN        #35  
?52G    SEVFOUR        #74  
?5G6    SEVSIX         #76  
?5^Q    TWOSCORE       #40  
?6FB    THIRTEEN       #13  
?6^2    TWEN4          #24  
?7DL    THIRSIX        #36  
?7Y=    THIRTWO        #32  
?8CW    TAB            #31  
?8XG    SPACE       #20 
?9C6    PHOUR          +4   
?9WQ    TEN            +10  
?=BB    TO             +2   
?=W2                   4HTO 
?=W5 ...#UNS G400   
?=W8 ...(   
?=W? ...#   
?=WB ...#      EXIT WITH BREAKIN
?=WF ...
?=WJ ...XDSKB SETNCORE 2,3,IUSER,G400BLK
?=WM ...      STOZ     A1(3)
?=WQ ...      STO   4  A1+1(3)            [REMEMBER EXIT FOR COMPRO 
?=WT ...      LDCT  0  #400 
?=WY ...      ORS   0  JOBEVENTS(2)        [MARK BREAKIN
?=X3 ...      BRN      XDSK1
?=X6 ...#   
?=X9 ...#       EXIT WITH COMMAND ERROR 
?=X# ...#   
?=XC ...XDSKC LDCT  0  #400 
?=XG ...      ORS   0  EXT+8(2)            [MARK COMMAND ERROR  
?=XK ...      HUNTC    3,COMDAT,CWHEN,WDSK1 
?=XN ...      GEOERR   0,NEVER???   
?=XR ...WDSK1 LDX   3  FPTR(3)  
?=XW ...      LDX   0  ATYPE(3) 
?=X^ ...      SRL   0  12   
?=Y4 ...      SBN   0  CPB  
?=Y7 ...      BZE   0  XDSK1              [ J IF NEXT COMMAND LEVEL 
?=Y= ...      ADN   0  #4777               [ COMDAT+CWHEN-CPB   
?=Y* ...      BNZ   0  WDSK1
?=YD ...      FREECORE 3
?=YH ...      BRN      XDSK1
?=YL ...#   
?=YP ...#      EXIT   OBEY COMMAND  
?=YS ...#   
?=YX ...XDSKO LDN   5  1               [MARK 'OBEY' 
?=^2 ...      BRN      XDSKR1   
?=^5 ...#   
?=^8 ...#      EXIT WITH MONRESUM   
?=^? ...#   
?=^B ...XDSKM HUNT 3,IUSER,G400BLK     [LOOK FOR MARKER BLK 
?=^F ...      BNG   3  XDSK1
?=^J ...      LDX   0  A1(3)
?=^M ...      SBN   0  5
?=^Q ...      BNZ   0  XDSK1                  [CONTINUE IF NO MARKER
?=^T ...      NGN   0  1
?=^Y ...      STO  0  A1+1(3)              [NOTE MR 
??23 ...      BRN      XDSK1
??26 ...#   
??29 ...#       EXIT  ABANDON   
??2# ...#   
??2C ...XDSKA SETNCORE 1,3,IUSER,G400BLK
??2G ...      MHUNT 2,CLB   
??2K ...      HUNT2OPT 2,CLB,0  
??2N ...      BPZ   2  XDSKA1   
??2R ...      FREECORE 3
??2W ...      BRN      XDSK1
??2^ ...XDSKA1  
??34 ...       CHAIN 3,2
??37 ...      LDN   0  6
??3= ...      STO   0  A1(3)          [MARKER,AB EXIT   
??3* ...      BRN      XDSK1           [CONTINUE
??3D ...XREF  MHUNT    2,CLB
??3H ...      HUNT2J   2,CLB,0,,ZFAIL   
??3L ...      EXIT  1  0
??3P ...#   
??3S ...#       EXIT  REPLACE COMMAND   
??3X ...#   
??42 ...XDSKR LDN   5  0                [MARK 'REPLACE' 
??45 ...XDSKR1 PARAPASS 
??48 ...      HUNT     2,CPB,CUNI   
??4? ...      LDX   4  ANUM(2)  
??4B ...      FREECORE 2
??4F ...      STO   5  AWORK1(2)
??4J ...      BZE   4  ZERR 
??4M ...      BPZ   4  XDSKR2   
??4Q ...      BZE   5  ZERR 
??4T ...      BRN      XDSKR3   
??4Y ...XDSKR2 SRL   4  12               [ TYPE 
??53 ...      SBN   4  2
??56 ...      BNZ   4  ZERR              [ NOT COM  
??59 ...      LDN   4  2
??5# ...      SPARANXT ,,4  
??5C ...      TESTREP  UNPAIR,ZERR  
??5G ...      MHUNT    3,CLB
??5K ...      HUNT2J   3,CLB,0,,ZFAIL   
??5N ...      HUNT     2,CPB,CUNI   
??5R ...      LDX   7  ANUM(2)  
??5W ...      BZE   7  ZERR 
??5^ ...      ANDN  7  #777 
??64 ...      LDX   6  ANUMCHA(3)   
??67 ...      BXE   6  7,NOCHN  
??6= ...      BXL   7  6,NOCHN  
??6* ...      SBX   7  6
??6D ...      ADN   7  3
??6H ...      SRL   7  2                      [NO OF WORDS  
??6L ...      ADX   7  ALOGLEN(3)           [NEW SIZE   
??6P ...      ALTLENG  3,7,XREF 
??6S ...      MHUNTW   3,CLB
??6X ...      HUNT2J   3,CLB,0,,ZFAIL   
??72 ...      HUNT     2,CPB,CUNI   
??75 ...NOCHN LDX   7  ANUM(2)  
??78 ...      ANDN  7  #777 
??7? ...      STO   7  ANUMCHA(3)   
??7B ...      STO   7  APARANUM(3)  
??7F ...      LDN   4  APARA(2) 
??7J ...      LDN   5  CLBFIR(3)
??7M ...      SMO      7
??7Q ...      MVCH  4  0
??7T ...      LDX   3  BPTR(3)  
??7Y ...      STOZ     APARANUM(3)  
??83 ...      NGN   4  1
??86 ...      STO   4  APARAFIR(3)  
??89 ...      FREECORE 2
??8# ...XDSKR3  
??8C ...      LDX   4  CPLEV(2) 
??8G ...      SBN   4  1
??8K ...      STO   4  CPLEV(2)                    [ REDUCE  CP LEVEL   
??8N ...      LDN   1  3
??8R ...      CLEANX   4,1                           [ CLEAR UP EXIT LEVEL  
??8W ...     LDX   5  AWORK1(2) 
??8^ ...      BZE   5  XDSKR4   
??94 ...      SETNCORE 1,3,IUSER,G400BLK
??97 ...      LDN   0  1
??9= ...      STO   0  A1(3)
??9* ...      LDN   5  0
??9D ...XDSKR4  
??9H ...      ACROSS   ALASB,90                        [ GO TO RELOCATE VERB
??9L ...ZFAIL GEOERR   0,BLAST  
??9P ...YDSK1          #77770000
??9S ...YDSK2          4HBA00   
??9X ...YDSK3          4HBB00   
??=2 ...YDSK4          4HCE00   
??=5 ...YDSK5          4HOB00   
??=8 ...YDSK6          4HRC00   
??=? ...YDSK7          4HMR00   
??=B ...YDSK8          4HAB00   
??=F ...)   
??*L          MENDAREA 50,K99GOTO   
??T=    #END
^^^^ ...06554212000400000000
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1