ANALYSEA3

(George Source)

Macros used: ACROSS, ALTLEN, HUNT, MENDAREA, MFREE, MHUNTW, MHUNTX, ON, PHOTO, SEGENTRY, SETREP, TESTMOVE, UP

ANALYSEA3.txt
22FL    #LIS  K0ANALYSEA>K0ALLGEO>K0GREATGEO>K0COMMAND  
22^=    #SEG  ANALYSEA3                    [ BILL IZATT 
23DW                   8HANALYSEA   
23YG    [ THE ENTRY POINTS  
24D6    [     THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT  
24XQ          SEGENTRY K1ANALYSEA,QENTRY1   
25CB          SEGENTRY K2ANALYSEA,QENTRY2   
25X2          SEGENTRY K3ANALYSEA,QENTRY3   
26BL    [   
26W=    [   
27*W    SPACE          #20  
27TG    XTEN           #12  
28*6    XALPH          #41  
28SQ    OCT73          #73  
29#B    XLP            #30  
29S2    XRP            #31  
2=?L    QT             #22  
2=R=    MINUS          #35  
2?=W    MINUS1         #77777777
2?QG    #   
2#=6    #           THIS SEGMENT IS ENTERED FROM SEGMENT ANALYSE TO COMPLETE THE
2#PQ    #           IMPLEMENTATION OF THE PARALYSE AND PARANEXT MACROS. THE PARE
2*9B    #           PARAMETER IS SPLIT AT EACH OCCURRENCE OF THE SEPARATOR,OR IF
2*P2    #           NONE SPECIFIED AT EACH END OF PAIRS OF BRACKETS,PARENTHESES 
2B8L    #           QUOTES AND THE COMPONENTS STORED IN THE BLOCK SET UP IN ANAL
2BN=    #           PARALYSE THEN GOES UP; PARANEXT GOES ACROSS TO K5PARAM . K3A
2C7W    #           IS USED BY THE COMMAND PROCESSOR TO DETERMINE PARAMETER TYPE
2CMG    QENTRY1 
2D76          TESTMOVE 7,OK                [BRN IF NO BLOCKS MOVED  
2DLQ          HUNT     3,CPB,CMULTI 
2F6B          LDX   2  FPTR(3)             [ADDRESS OF PARENT BLOCK 
2FL2          BRN      OK1  
2G5L    OK    LDX   2  5
2GK=    OK1   LDX   1  6
2H4W          SMO      FX2  
2HJG          LDX   5  EXT+7
2J46          SMO      FX2  
2JHQ          LDX   7  EXT+4               [LOAD SEPARATOR  
2K3B          BPZ   7  SEP                 [BRANCH IF SEPARATOR SPECIFIED   
2KH2    #   
2L2L    #              NO SEPARATOR SPECIFIED   
2LG=    #   
2L^W          SBN   4  2
2MFG          BZE   4  SCOMP               [BRANCH IF PARAMETER COMPOSITE   
2M^6          SBN   4  1
2NDQ          BNZ   4  XADR                [BRN IF SIMPLE OR PSEUDO-SIMPLE  
2NYB    #   
2PD2    #              QUALIFIED PARAMETER (NO SEPARATOR SPECIFIED) 
2PXL    #   
2QC=    QUAL  SMO      2
2QWW          LDCH  4  0(1)                [TAKE FIRST CHARACTER
2RBG    WHAT  CALL  0  TESTBRAC            [TEST FOR BRACKET
2RW6          BRN      £                   [BRANCH IF NOT   
2S*Q    TFCH  SMO      2
2STB          LDCH  4  0(1)                [TAKE FIRST CHARACTER
2T*2          SMO      FX2  
2TSL          LDX   5  EXT+7               [CHARACTER COUNT 
2W#=          BCT   5  STOCT               [BRANCH IF NOT END OF PARAMETER  
2WRW          CALL  7  STORECH             [STORE LAST CHARACTER
2X?G          BRN      ZEND                [BRANCH TO TERMINATE BLOCK   
2XR6    STOCT SMO      FX2  
2Y=Q          STO   5  EXT+7               [CHARACTER COUNT 
2YQB          BCHX  1  £
2^=2    STOCH CALL  7  STORECH             [STORE CHARACTER 
2^PL          SMO      2
329=          LDCH  4  0(1)                [TAKE A CHARACTER
32NW          STO   1  6                   [POINTER TO THIS CHARACTER   
338G          BCHX  1  £                   [UPDATE POINTER  
33N6          STO   1  APTNECHA(2)         [  AND STORE 
347Q          SMO      FX2  
34MB          LDX   5  EXT+7               [COUNT OF NUMBER OF CHARACTERS IN OLD
3572          BCT   5  NEND                [BRANCH IF NOT END   
35LL          CALL  7  STORECH             [END OF PARAMETER, STORE LAST CHARACT
366=          BRN      ZEND                [BRANCH TO TERMINATE BLOCK   
36KW    NEND  SMO      FX2  
375G          STO   5  EXT+7               [STORE CHARACTER COUNT   
37K6          LDX   0  CPBFSD(3)           [BRACKET COUNT   
384Q          BNZ   0  TBTY 
38JB          SMO      FX1  
3942          TXU   4  SPACE
39HL          BCS      CTB1                [NOT SPACE,CARRY ON AS BEFORE
3=3=          LDN   7  0
3=GW    TNC2  ADN   7  1                   [SPACE COUNT 
3?2G          SMO      2
3?G6          LDCH  4  0(1)                [TAKE NEXT CHAR  
3?^Q          SMO      FX1  
3#FB          TXU   4  SPACE
3#^2          BCS      NMSP 
3*DL          BCHX  1  £
3*Y=          BRN      TNC2 
3BCW    NMSP  CALL  0  TESTBRAC 
3BXG          BRN      XLD                 [NOT BRACKET,SPACES SIGNIFICANT  
3CC6          SBN   7  1
3CWQ          SMO      FX2                 [IS BRACKET,SPACES REDUNDANT 
3DBB          SBS   7  EXT+7               [REDUCE CHAR COUNT BY SPACE COUNT
3DW2          STOZ     4                   [SPACES ARE TRAILINC,
3F*L          STO   1  APTNECHA(2)  
3FT=          CALL  7  TER                 [TERMINATE PARAMETER 
3G#W          LDX   1  APTNECHA(2)  
3GSG          BRN      TFCH 
3H#6    #   
3HRQ    XLD   SMO      FX2  
3J?B          SBS   7  EXT+7               [REDUCE CHARACTER COUNT BY SPACE COUN
3JR2          SMO      FX1  
3K=L          LDX   4  SPACE
3KQ=    XLDA  SMO      FX2  
3L9W          STO   7  EXT+3
3LPG          CALL  7  STORECH             [STO SIGNIFICANT SPACE   
3M96          SMO      FX2  
3MNQ          LDX   7  EXT+3
3N8B          BCT   7  XLDA                [BRN IF SPACE COUNT NOT EXHAUSTED
3NN2          SMO      2
3P7L          LDCH  4  0(1)                [GET NEXT CHAR AFTER SPACE   
3PM=          BCHX  1  £
3Q6W          SMO      FX2  
3QLG          LDX   5  EXT+7               [CHARACTER COUNT 
3R66          BNZ   5  STOCH               [CONTINUE IF COUNT NOT EXHAUSTED 
3RKQ          CALL  7  STORECH             [STO LAST CHARACTER  
3S5B          BRN      ZEND 
3SK2    #   
3T4L    CTB1  CALL  0  TESTBRAC 
3TJ=          BRN      STOCH               [BRANCH IF NOT BRACKET   
3W3W          STO   6  APTNECHA(2)         [IS BRACKET,END OF PARAMETER,SET PTR.
3WHG          LDN   0  1
3X36          SMO      FX2  
3XGQ          ADS   0  EXT+7               [SET CHARACTER COUNT BACK
3Y2B          STOZ     4
3YG2          CALL  7  TER                 [TERMINATE PARAMETER 
3Y^L          LDX   1  APTNECHA(2)         [POINTER TO FIRST CHARACTER OF NEW PA
3^F=          BRN      TFCH 
3^YW    TBTY  CALL  7  TINBRAC             [BRACKET COUNT NON ZERO, TEST FOR BRA
42DG          BRN      STOCH               [BRANCH IF BRACKET COUNT STILL NON ZE
42Y6          CALL  7  STORECH             [END OF PARAMETER, STORE CHARACTER   
43CQ          STOZ     4
43XB          CALL  7  TER                 [TERMINATE PARAMETER 
44C2          LDX   1 APTNECHA(2)          [POINTER TO FIRST CHARACTER OF NEW PA
44WL          SMO      FX2  
45B=          LDX   5  EXT+7               [CHARACTER COUNT 
45TW          CALL  0  XLSPTEST            [ANNIHILATE LEADING SPACES   
46*G          SMO      FX2  
46T6          STO   5  EXT+7               [CHARACTER COUNT 
47#Q          BRN      WHAT 
47SB    #   
48#2    #              COMPOSITE PARAMETER (NO SEPARATOR SPECIFIED) 
48RL    #   
49?=    SCOMP CALL  7  SCOMPOST 
49QW          CALL  0  XLSPTEST            [IGNORE LEADING SPACES   
4==G    NEND1 SMO      FX2  
4=Q6          STO   5  EXT+7               [CHARACTER COUNT 
4?9Q    NENDA CALL  7  STORECH             [STORECH IF NOT SPACE
4?PB          SMO      FX2  
4#92          LDX   5  EXT+7               [CHARACTER COUNT 
4#NL          BCT   5  NEND2               [BRN IF NOT END  
4*8=          BRN      ZEND                [END OF PARAMETER
4*MW    NEND2 BCHX  1  £
4B7G          SMO      2
4BM6          LDCH  4  0(1)                [TAKE A CHARACTER
4C6Q          SMO      FX1  
4CLB          TXU   4  SPACE
4D62          BCS      NEND1               [STORECH IF NOT SPACE
4DKL          STO   1  APTNECHA(2)         [HOLD ADDRESS OF FIRST SPACE 
4F5=          LDN   0  0
4FJW    STWO  ADN   0  1                   [ADD 1 TO SPACE COUNT
4G4G          BCT   5  PLUS2
4GJ6          BRN      ZEND                [BRN IF NO MORE CHARACTERS   
4H3Q    PLUS2 BCHX  1  £
4HHB          SMO      2
4J32          LDCH  4  0(1)                [TAKE NEXT CHARACTER 
4JGL          SMO      FX1  
4K2=          TXU   4  SPACE
4KFW          BCC      STWO                [BRN IF ANOTHER SPACE
4K^G          LDX   1  APTNECHA(2)         [ADDRESS OF FIRST SPACE  
4LF6          SMO      FX2  
4LYQ          STO   5  EXT+7               [CHARACTER COUNT 
4MDB    STSP  SMO      2
4MY2          LDCH  4  0(1) 
4NCL          SMO      FX2  
4NX=          STO   0  EXT+3               [SPACE COUNT 
4PBW          CALL  7  STORECH             [STO SIGNIFICANT SPACE   
4PWG          SMO      FX2  
4QB6          LDX   0  EXT+3               [SPACE COUNT 
4QTQ          BCHX  1  £                   [ADDRESS OF NEXT SPACE IN 1  
4R*B          BCT   0  STSP                [BRN IF SPACE COUNT NOT EXHAUSTED
4RT2    #   
4S#L    XADR  SMO      2                   [ENTRY FOR SIMPLE + PSEUDO-SIMPLE PAR
4SS=          LDCH  4  0(1)                [TAKE NEXT CHARACTER (NON-SPACE) 
4T?W          BRN      NENDA               [BRN TO STORE THIS CHARACTER 
4TRG    #   
4W?6    #              SEPARATOR SPECIFIED (ALL PARAMETER TYPES)
4WQQ    #   
4X=B    SEP   SBN   4  2
4XQ2          BNZ   4  TACH                [BRANCH IF PARAMETER NOT COMPOSITE   
4Y9L          CALL  7  SCOMPOST 
4YP=          CALL  0  XLSPTEST            [IGNORE LEADING SPACES   
4^8W          BRN      TACH 
4^NG    UDMOD BCHX  1  £                   [UPDATE CHARACTER POINTER
5286    TACH  SMO      FX2  
52MQ          STO   5  EXT+7               [STO CHARACTER COUNT 
537B          SMO      2
53M2          LDCH  4  0(1)                [TAKE A CHARACTER
546L          LDX   0  CPBFSD(3)           [BRACKET COUNT   
54L=          BZE   0  TSP                 [BRANCH IF ZERO  
555W          CALL  7  TINBRAC             [BRACKET COUNT NON ZERO, TEST FOR BRA
55KG          BRN      UDCHC               [COUNT NON ZERO  
5656          BRN      UDCHC               [COUNT ZERO  
56JQ    #   
574B    TSP   SMO      FX2  
57J2          TXU   4  EXT+4               [TEST FOR SEPARATOR  
583L          BCS      TLP                 [BRANCH IF NOT   
58H=    SEPR  STOZ     4
592W          STO   1  APTNECHA(2)  
59GG          CALL  7  TER                 [TERMINATE PARAMETER 
5=26          LDX   1  APTNECHA(2)  
5=FQ          SMO      FX2  
5=^B          LDX   5  EXT+7               [LOAD CHARACTER COUNT OF OLD PARAMETE
5?F2          SBN   5  1
5?YL          BZE   5  ZENDA               [END IF NO MORE CHARACTERS   
5#D=          BCHX  1  £                   [UPDATE CHARACTER POINTER
5#XW          CALL  0  XLSPTEST            [IGNORE LEADING SPACES   
5*CG          BRN      TACH 
5*X6    #   
5BBQ    TSPT  SMO      FX1  
5BWB          TXU   4  SPACE
5CB2          BCC      PLUS3               [BRN IF SPACE
5CTL          BRN      UDCHC
5D*=    #   
5DSW    PLUS3 LDN   0  0
5F#G          SMO      FX2  
5FS6          LDX   5  EXT+7               [CHARACTER COUNT 
5G?Q    PLUS4 ADN   0  1                   [SPACE COUNT 
5GRB          SBN   5  1                   [REDUCE CHARACTER COUNT  
5H?2          BZE   5  ZENDA               [COMPOSITE TRAILERS  
5HQL          BCHX  1  £
5J==          SMO      2
5JPW          LDCH  4  0(1)                [TAKE NEXT CHARACTER 
5K9G          SMO      FX1  
5KP6          TXU   4  SPACE
5L8Q          BCC      PLUS4               [BRN IF ANOTHER SPACE
5LNB          SMO      FX2  
5M82          STO   5  EXT+7               [CHARACTER COUNT 
5MML          SMO      FX2  
5N7=          TXU   4  EXT+4
5NLW          BCC      SEPR                [BRN IF SEPARATOR FOLLOWS SPACES 
5P6G          SMO      FX1  
5PL6          LDX   4  SPACE
5Q5Q    XSMO  SMO      FX2  
5QKB          STO   0  EXT+3               [SPACE COUNT 
5R52          CALL  7  STORECH             [STORE SPACE 
5RJL          SMO      FX2  
5S4=          LDX   0  EXT+3
5SHW          BCT   0  XSMO                [BRN IF SPACE COUNT NOT EXHAUSTED
5T3G          SMO      2
5TH6          LDCH  4  0(1)                [TAKE 1ST CHARACTER AFTER SPACES 
5W2Q          STO   4  5                   [PRESERVE X4 
5WGB          CALL  0  TESTBRAC 
5X22          BRN      UDCHC
5XFL          LDX   4  5
5X^=          BRN      UDCHC
5YDW    #   
5YYG    TLP   STO   4  5                   [HOLD CHARACTER  
5^D6          CALL  0  TESTBRAC            [TEST FOR BRACKET
5^XQ          BRN      TSPT                [NOT A BRACKET   
62CB          LDX   4  5
62X2    #   
63BL    UDCHC CALL  7  STORECH             [STORE CHARACTER 
63W=    TEP   SMO      FX2  
64*W          LDX   5  EXT+7               [LOAD CHARACTER COUNT OF OLD PARAMETE
64TG          BCT   5  UDMOD               [BRANCH IF END OF PARAMETER NOT REACH
65*6    #   
65SQ    #              END OF PARAMETER IF SEPARATOR SPECIFIED  
66#B    #              THE CHARACTER IS TESTED FOR BEING A BRACKET BEFORE END   
66S2    #              OF PARAMETER IS TESTED FOR:SHOULD NOT BE TESTED TWICE
67?L    #   
67R=    ZENDA LDX   0  CPBFSD(3)
68=W          BZE   0  ZEND1
68QG          BRN      SUSP 
69=6    #   
69PQ    #              END OF PARAMETER 
6=9B    #   
6=P2    ZEND
6?8L          LDX   0  CPBFSD(3)           [BRACKET COUNT   
6?N=          BZE   0  TESTO
6#7W          CALL  7  TINBRAC             [MATCHING BRACKET ?  
6#MG          BRN      SUSP                [LOOKS SUSPICOUS 
6*76          BRN      ZEND1               [YES 
6*LQ    TESTO CALL  0  TESTBRAC            [OPENING BRACKET?
6B6B          BRN      ZEND1               [NO  
6BL2    SUSP  SMO      FX2  
6C5L          LDX   4  EXT+2
6CK=          BNZ   4  UNPAIR              [ONLY ERROR IF NOT COMPOSITE 
6D4W    ZEND1 NGN   4  1
6DJG          CALL  7  TER                 [TERMINATE LAST PARAMETER & SET END O
6F46    NULP
6FHQ          LDN   7  APARAFIR 
6G3B          SLL   7  12   
6GH2          ADN   7  1
6H2L          STO   7  APTBEPAR(3)         [SET FOR 1ST PASS
6HG=          STO   7  ADNOPARAL(3)        [SET FOR 1ST ANALYSE 
6H^W          STOZ     APTNECHA(2)  
6JFG    #              TEST FOR PARALYSE OR PARANEXT
6J^6    TWCH  SMO      FX2  
6KDQ          LDX   7  EXT+5
6KYB          SETREP OK 
6LD2          BNZ   7  NEXT                [BRANCH IF PARANEXT  
6LXL          UP                           [RETURN IF PARALYSE  
6MC=    NEXT
6MWW          SMO      FX2  
6NBG          STO   7  EXT+7               [SET EXT+7=-1 FOR SPARAPAS   
6NW6    UDAL  NGN   7  1
6P*Q          SMO      FX2  
6PTB          STO   7  EXT+2               [SET "LOWEST" ANALEV FOR PARAPASS
6Q*2          ACROSS   PARAM,25            [BRN TO PASS FIRST PARAMETER 
6QSL    #   
6R#=    #              SUBROUTINE TO TERMINATE A PARAMETER  
6RRW    #   
6S?G    TER   LDX   1  APTNECHA(3)  
6SR6          SLC   1  2
6T=Q          ADN   1  3
6TQB          SRL   1  2                   [ROUND TO WHOLE NO. OF WORDS 
6W=2          STO   1  APTNECHA(3)         [STO POINTER TO FIRST WORD OF NEW PAR
6WPL          SBN   1  A1-1                [LOGICAL LENGTH NEEDED   
6X9=          TXL   1  ALOGLEN(3)          [COMPARE WITH ACTUAL LOGICAL LENGTH  
6XNW          BCS      ON                  [BRANCH IF SUFFICIENT CORE   
6Y8G          LDX   6  ALOGLEN(3)   
6YN6          ADN   6  AVELINE             [EXTEND CORE BY AVERAGE LINE LENGTH  
6^7Q          SBX   7  FX1  
6^MB          PHOTO    5
7272          ALTLEN   3,6,CPB,CMULTI      [ INCREASE BLOCK SIZE
72LL          TESTMOVE 5,RES               [BRANCH IF NO BLOCKS MOVED   
736=          HUNT     3,CPB,CMULTI 
73KW    RES   ADX   7  1                   [ RESTORE RETURN ADDRESS (X1=FX1)
745G          BRN      NJOIN
74K6    ON    LDX   1  FX1  
754Q          LDX   2  FX2                 [ X2 WILL BE RESTORED ON EXIT
75JB    NJOIN SMO      APTNECHA(3)         [ POINTER TO NEXT PARAMETER  
7642          STO   4  0(3)                [ZEROISE 1ST WORD OR SET END OF BLOCK
76HL          LDN   6  1                   [ X6=1 => TER S/R.  RESTORE X2 AT END
773=          ADS   6  APARANUM(3)         [ADD 1 TO NUMBER OF PARAMETERS   
776B ...      LDX   6  APARANUM(3)  
779G ...      SBN   6  25   
77#L ...      BPZ   6  TOOMANY  
77CQ ...      LDN   6  1                   [INDICATES TER SUBR  
77GW    #   
782G    #              SUBROUTINE ENTERED HERE BY COMMAND PROCESSOR VIA K3ANALYS
78G6    #   
78^Q    SCENT   
79FB          STO   3  ACOMMUNE3(2) 
79^2          ADX   3  APTBEPAR(3)  
7=DL          STO   7  AWORK1(2)
7=Y=          LDX   7  0(3)                [CHARACTER COUNT 
7?CW          BNG   7  UP                  [BRN IF NO MORE PARAMETERS (CP)  
7?XG          ADN   3  1                   [EVALUATE ADDRESS OF 1ST CHARACTER   
7#C6          BRN   PTYPE1  
7#WQ    [   
7*BB    QENTRY2 
7*W2          LDX   0  ACOMMUNE1(2) 
7B*L          TESTMOVE 0,NMV
7BT=          LDX   3  ACOMMUNE2(2) 
7C#W          SLL   3  12   
7CSG          MHUNTX   3,3  
7D#6          STO   3  ACOMMUNE3(2)        [NEW START ADDRESS   
7DRQ          BRN      XFND 
7F?B    NMV   LDX   3  ACOMMUNE3(2) 
7FR2    XFND  ADX   3  ACOMMUNE4(2)        [ABSOLUTE PTR. TO 1ST CHARACTER  
7G=L          LDX   7  ACOMMUNE5(2)        [COUNT OF CHARACTERS 
7GQ=          NGN   6  1                   [INDICATE PTYPE MACRO
7H9W    PTYPE1  
7HPG          STOZ     5                   [SET 'SIMPLE'
7J96          BZE   7  UUU                 [BRN IF NULL PARAMETER   
7JNQ          LDCH  4  0(3)                [GET 1ST CHARACTER   
7K8B          TXU   4  XLP(1)   
7KN2          BCC      XLPA                [BRN IF LEFT PARENTHESIS 
7L7L          TXU   4  QT(1)
7LM=          BCC      QTA                 [BRN IF QUOTE
7M6W          TXU   4  XRP(1)   
7MLG          BCC      WQUAL
7N66          BRN      STINT
7NKQ    NEXTZ   
7P5B          LDCH  4  0(3)                [GET NEXT CHARACTER  
7PK2          TXU   4  XRP(1)   
7Q4L          BCC      WQUAL               [BRN IF QUALIFIED
7QJ=          TXU   4  XLP(1)   
7R3W          BCC      WQUAL               [BRN IF QUALIFIED
7RHG          TXU   4  QT(1)
7S36          BCC      WQUAL               [BRN0IF QUALIFIED
7SGQ          BNZ   5  NPSEV               [BRN IF NOT 'SIMPLE' 
7T2B    STINT   
7TG2          TXL   4  OCT73(1) 
7T^L          BCC      PSEV                [BRN IF NOT 'SIMPLE' ANY MORE
7WF=          TXL   4  XALPH(1) 
7WYW          BCC      NPSEV               [BRN IF LETTER   
7XDG          TXL   4  XTEN(1)  
7XY6          BCS      NPSEV               [BRN IF DIGIT
7YCQ          TXU   4  SPACE(1) 
7YXB          BCC      NPSEV               [BRN IF SPACE
7^C2          TXU   4  MINUS(1) 
7^WL          BCC      NPSEV
82B=    PSEV  LDN   5  1                   [SET 'PSENDO-SIMPLE' 
82TW    NPSEV BCHX  3  £
83*G          BCT   7  NEXTZ
83T6    #   
84#Q    #     END   OF PARAMETER: INSERT TYPE AND LENGTH IN SPECIFIED WORD  
84SB    UUU 
85#2          SLL   5  12   
85RL          BPZ   6  STORETYPE2          [BRN IF ANALYSE/CP   
86?=          ADX   5  ACOMMUNE5(2) 
86QW          LDX   3  ACOMMUNE3(2) 
87=G          ADX   3  ACOMMUNE6(2) 
87Q6          STO   5  0(3) 
889Q          UP
88PB    STORETYPE2  
8992          LDX   3  ACOMMUNE3(2) 
89NL          SMO   APTBEPAR(3) 
8=8=          ORS   5  0(3)                [INSERT PARAMETER TYPE   
8=MW          LDX   7  AWORK1(2)
8?7G          BZE   6  XIT70
8?M6          LDX   2  FPTR(3)             [ RESTORE X2 FOR EXIT FROM TER S/R   
8#6Q          LDX   0  APTNECHA(3)  
8#LB          STO   0  APTBEPAR(3)  
8*62          ADN   0  1
8*KL          STO   0  APTNECHA(3)  
8B5=    XIT70   
8BJW          EXIT  7  0
8C4G    XLPA
8CJ6          SBN   7  2                   [WE WANT TO TEST ALL BUT LAST CHAR.  
8D3Q          BNG   7  WQUAL
8DHB          BZE   7  XLPE 
8F32    XLPB  BCHX  3  £
8FGL          LDCH  4  0(3) 
8G2=          TXU   4  XLP(1)   
8GFW          BCC      XLPC 
8G^G          TXU   4  XRP(1)   
8HF6          BCS      XLPB1
8HYQ          BNZ   7  WQUAL
8JDB          BRN      WCOMP
8JY2    XLPB1   
8KCL          BCT   7  XLPB 
8KX=    XLPE
8LBW          BCHX  3  £
8LWG          LDCH  4  0(3) 
8MB6          TXU   4  XRP(1)   
8MTQ          BCC      WCOMP
8N*B          BRN      WQUAL
8NT2    XLPC  BCT   7  XLPC1
8P#L          BRN      XLPE 
8PS=    XLPC1 LDN   0  1            [SORT OF DELIMITER COUNT
8Q?W    XLPD  BCHX  3  £
8QRG          LDCH  4  0(3) 
8R?6          TXU   4  XRP(1)   
8RQQ          BCS      NOTRP
8S=B          SBN   0  1
8SQ2          BNG   0  WQUAL
8T9L    NOTRP   
8TP=          TXU   4  XLP(1)   
8W8W          BCS      NOTLP
8WNG          ADN   0  1
8X86    NOTLP BCT   7  XLPD 
8XMQ          BZE   0  XLPE 
8Y7B          BRN      WQUAL
8YM2    QTA 
8^6L          SBN   7  1
8^L=          BZE   7  WQUAL               [ONLY ONE CHARACTER  
925W          SLC   3  2                   [ABSOLUTE POINTER TO LAST CHARACTER  
92KG          ADX   3  7
9356          SRC   3  2
93JQ          LDCH  7  0(3)                [X7HOLDS LAST CHAR OF PARAMETER  
944B          TXU   7  QT(1)
94J2          BCC      WCOMP               [IF TERMINAL CHARS BOTH QUOTES,COMPOS
953L    WQUAL   
95H=          LDN   5  3                   [SET QUALIFIED   
962W          BRN      UUU  
96GG    WCOMP   
9726          LDN   5  2                   [SET COMPOSITE   
97FQ          BRN      UUU  
97^B    #   
98F2    #              SUBROUTINE TO TEST FOR BRACKET WHEN BRACKET COUNT ZERO   
98YL    #   
99D=    TESTBRAC
99XW          SMO      FX1  
9=CG          TXU   4  XLP                 [TEST FOR (  
9=X6          BCS      STLB                [BRANCH IF NOT   
9?BQ          SLL   4  12   
9?WB          SMO      FX1  
9#B2          ORX   4  XRP                 [SET ( AS BRACKET
9#TL          BRN      STOB 
9**=    STLB  SMO      FX1  
9*SW          TXU   4  QT                  [TEST FOR "  
9B#G          BCC      SAP                 [BRANCH IF IS
9BS6          EXIT  0  0                   [NOT'BRACKET',EXIT   
9C?Q    SAP   SLL   4  12   
9CRB          SMO      FX1  
9D?2          ORX   4  QT                  [SET " AS BRACKET
9DQL    STOB  SMO      FX2  
9F==          STO   4  EXT+6               [STORE BRACKET TYPE  
9FPW          LDN   4  1
9G9G          ADS   4  CPBFSD(3)           [ADD 1 TO BRACKET COUNT  
9GP6          EXIT  0  1                   [RETURN  
9H8Q    #   
9HNB    #              SUBROUTINE TO TEST FOR BRACKET WHEN BRACKET COUNT IS NON 
9J82    #   
9JML    TINBRAC 
9K7=          SMO      FX2  
9KLW          LDX   5  EXT+6
9L6G          SRL   56 12                  [ISOLATE LEFT BRACKET
9LL6          SRL   6  12                  [ISOLATE RIGHT BRACKET   
9M5Q          TXU   4  6                   [TEST FOR 'CLOSE'
9MKB          BCS      TOP                 [BRANCH IF NOT   
9N52          SBN   0  1                   [SUBTRACT 1 FROM BRACKET COUNT   
9NJL          STO   0  CPBFSD(3)
9P4=          BNZ   0  ZRET                [BRANCH IF BRACKET COUNT NON-ZERO
9PHW          EXIT  7  1                   [RETURN, BRACKET COUNT ZERO  
9Q3G    TOP   TXU   4  5                   [TEST FOR 'OPEN' 
9QH6          BCS      ZRET                [BRANCH IF NOT   
9R2Q          ADN   0  1                   [ADD 1 TO BRACKET COUNT  
9RGB          STO   0  CPBFSD(3)
9S22    ZRET  EXIT  7  0                   [RETURN, BRACKET COUNT NON ZERO  
9SFL    #   
9S^=    #              SUBROUTINE TO IGNORE LEADING SPACES  
9TDW    #   
9TYG    XLSPTEST
9WD6          SMO      2
9WXQ          LDCH  4  0(1)                [TAKE A CHAR 
9XCB          SMO      FX1  
9XX2          TXU   4  SPACE
9YBL          BCC      TNC                 [BRN IF SPACE
9YW=          EXIT  0  0                   [EXIT NO SPACES  
9^*W    TNC   SBN   5  1                   [REDUCE CHAR COUNT FOR EACH SPACE
9^TG          BZE   5  ZEND                [END IF NO MORE CHARS
=2*6          BCHX  1  £                   [1 IS UPDATED
=2SQ          SMO      2
=3#B          LDCH  4  0(1)                [TAKE NEXT CHAR  
=3S2          SMO      FX1  
=4?L          TXU   4  SPACE
=4R=          BCC      TNC                 [BRN IF ANOTHER SPACE
=5=W          EXIT  0  0
=5QG    #   
=6=6    #              SUBROUTINE TO STORE A CHARACTER  
=6PQ    #   
=79B    STORECH 
=7P2          STO   1  APTNECHA(2)  
=88L          LDN   0  1
=8N=          LDX   5  APTBEPAR(3)         [POINTER TO BEGINNING OF PARAMETER   
=97W          SMO      5
=9MG          ADS   0  0(3)                [ADD 1 TO PARAMETER CHARACTER COUNT  
==76          LDX   5  APTNECHA(3)         [POINTER TO NEXT CHARACTER   
==LQ          SLL   5  2
=?6B          SRL   5  2                   [NUMBER OF WORDS IN BLOCK
=?L2          SBN   5  A1-1                [ADD 1 AND SUBTRACT RED TAPE 
=#5L          TXL   5  ALOGLEN(3)   
=#K=          BCS      NCOR                [BRANCH IF SUFFICIENT CORE   
=*4W          LDX   5  ALOGLEN(3)   
=*JG          ADN   5  AVELINE             [EXTEND CORE BY AVERAGE LINE LENGTH  
=B46          SBX   7  FX1  
=BHQ          SMO      FX2  
=C3B          STO   7  EXT+1               [STORE RETURN ADDRESS
=CH2          STO   2  7                   [STORE ADDRESS OF OLD BLOCK  
=D2L          PHOTO    6
=DG=          ALTLEN   3,5                 [INCREASE BLOCK SIZE 
=D^W          LDX   2  7
=FFG          TESTMOVE 6,NSER              [BRANCH IF NO BLOCKS MOVED   
=F^6          HUNT     3,CPB,CMULTI 
=GDQ          LDX   2  FPTR(3)  
=GYB    NSER  SMO      FX2  
=HD2          LDX   7  EXT+1
=HXL          ADX   7  FX1                 [RETURN ADDRESS  
=JC=    NCOR  LDX   1  APTNECHA(3)         [POINTER TO NEXT CHARACTER   
=JWW          SMO      3
=KBG          DCH   4  0(1)                [STORE CHARACTER 
=KW6          BCHX  1  £                   [UPDATE POINTER  
=L*Q          STO   1  APTNECHA(3)         [  AND STORE 
=LTB          LDX   1  APTNECHA(2)  
=M*2          EXIT  7  0                   [RETURN  
=MSL    #   
=N#=    #     SUBROUTINE TO CHECK THAT A 'COMPOSITE' PARAMETER IS IN FACT INCLUD
=NRW    #     IN A BRACKET PAIR 
=P?G    #   
=PR6    SCOMPOST
=Q=Q          SMO      FX2  
=QQB          STOZ     EXT+2               ['COMPOSITE MARKER   
=R=2          SMO      2
=RPL          LDCH  4  0(1) 
=S9=          STOZ     CPBFSD(3)           [ZEROISE BRACKET COUNT   
=SNW          SBN   5  2                   [REDUCE CHARACTER COUNT BY 2 
=T8G          BNZ   5  UNUL                [BRN IF NOT NULL PARAMETER   
=TN6          STOZ     APARAFIR(3)         [SET 
=W7Q          LDN   4  1                   [RED 
=WMB          STO   4  APARANUM(3)         [TAPE
=X72          NGS   4  APARAFIR+1(3)       [WORDS   
=XLL          BRN      NULP 
=Y6=    UNUL
=YKW          BCHX  1  £
=^5G          EXIT  7  0
=^K6    #   
?24Q    #     ROUTINE ENTERED IF AN UNPAIRED BRACKET ENCOUNTERED
?27* ...#     OR TOO MANY PARAMETERS FOUND ON SPLITTING A PARAMETER 
?29Y ...#   
?2#H ...TOOMANY 
?2C6 ...      SETREP   TOOMANY  
?2FP ...      BRN      XFREE
?2JB    UNPAIR  
?2PJ ...      SETREP   UNPAIR   
?2WQ ...XFREE   
?342          MFREE    CPB,CMULTI   
?43=          UP
?4GW    [   
?52G    [     ENTRY FROM COMMAND PROCESSOR  
?5G6    QENTRY3 
?5^Q          MHUNTW   3,CPB,CALAS  
?6FB          LDN   4  APARAFIR 
?6^2          STO   4  APTBEPAR(3)  
?7DL          LDN   6  0                   [INDICATE C/P
?7Y=    SCENTCALL   
?8CW          CALL  7  SCENT               [SET PARAMETER TYPE  
?8XG          SMO      APTBEPAR(3)  
?9C6          LDX   7  0(3) 
?9WQ          ANDN  7  #7777
?=BB          ADN   7  7
?=W2          SRL   7  2
??*L          ADS   7  APTBEPAR(3)  
??T=          BRN      SCENTCALL
?##W    UP  
?#SG          UP
?*#6          MENDAREA 30,K99ANALYSEA   
?*RQ    #END
^^^^ ...57322164000300000000
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1