MULTCOMM867

(George Source)

Macros used: ACROSS, CHAIN, MFREEW, MHUNTW, SEG, SEGENTRY, SETXCORE

MULTCOMM867.txt
22FL          SEG MULTCOMM,,CENT(COMMAND PROCESSOR),,G286   
22^=    #SKI G286&1 
23DW    #  FOR UGUG EDIT M286 (MULTI-COMMAND LINES) 
23YG    #  OVERFLOW SEGMENT FOR COMPRO  
24D6    [ THE ENTRY POINTS  
24XQ    [     THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT  
25CB          SEGENTRY K1MULTCOMM,QENTRY1     [ TO SET UP MULTI COMM LINE BLOCK 
25X2          SEGENTRY K2MULTCOMM,QENTRY2     [ TO GET NEXT COMMAND FROM MULTI B
26BL    #   
26W=    QENTRY2 
27*W          SETXCORE 7,2,ADATA,CREADL    [ CREATE CREADL BLOCK TO HOLD NEXT   
27TG                                       [ COMMAND FROM IUSER BLOCK   
28*6          MHUNTW   3,IUSER,HULL 
28SQ          LDCT  0  #400 
29#B          ANDX  0  A1(3)
29S2          SMO      FX2  
2=?L          ORS   0  EXT+9               [ SET TO SHIFT OR GRAPHIC
2=R=          BRN      XCCS11   
2?=W    #   
2?QG    QENTRY1 
2#=6          SETXCORE 7,3,IUSER,HULL   
2#PQ          LDCT  0  #400 
2*9B          ANDX  0  EXT+9(2) 
2*P2          ORX   7  0                   [ REMEMBER IF SHIFT OR GRAPHIC   
2B8L          STO   7  A1(3)               [ SIZE OF BLOCK  
2BN=          MHUNTW   2,CLB
2C7W          CHAIN    3,2                 [ STICK IUSER AFTER CLB  
2CMG          MHUNTW   2,ADATA,CREADL   
2D76          LDN   4  CPDATA(2)
2DLQ          LDN   5  A1+3(3)  
2F6B          LDX   1  A1(2)
2FL2          STO   1  A1+1(3)             [ NUMBER OF CHARS LEFT IN IUSER/HULL 
2G5L          SRL   1  2                   [ CONVERT TO WORDS   
2GK=          MOVE  4  1(1)                [ WORD MOVE IN CASE > 512 CHARS  
2H4W          STOZ     A1+2(3)             [ CHARACTER ADDRESS OF NEXT '('  
2HJG    XCCS11  
2J46          LDX   1  A1+1(3)             [ NO OF CHARS LEFT IN IUSER BLOCK
2JHQ          LDN   6  A1+3(3)             [ X6 REMAINS CONSTANT (=ADDRESS OF IU
2K3B          ADN   2  CPDATA              [ X2 = CHAR ADDRESS OF NEXT DCH IN CR
2KH2          LDX   3  A1+2(3)             [ CHARACTER ADDRESS OF NEXT '(' IN IU
2L2L          LDN   7  0                   [ COUNT OF CHARS IN NEXT COMMAND 
2LG=          LDN   0  1                   [ 1 '('  
2L^W          SBN   1  1
2MFG          BZE   1  XCCS7               [ ONLY A '(' 
2M^6    XCCS3   
2NDQ          BCHX  3  £                   [ INPUT BLOCK + 1 CHAR   
2NYB          SMO      6
2PD2          LDCH  5  0(3)                [ NEXT CHAR  
2PXL          LDX   4  5                   [ REMEMBER IT
2QC=          SBN   5  #30                 [ '('
2QWW          BNZ   5  XCCS2               [ NO 
2RBG          ADN   0  1                   [ '(' + 1
2RW6    XCCS5   
2S*Q          BZE   0  XCCS6               [ BRN IF BRACKETS MATCH  
2STB    XCCS4   
2T*2          DCH   4  0(2) 
2TSL          ADN   7  1
2W#=          BCHX  2  £                   [ OUTPUT BLOCK + 1 CHAR  
2WRW          BCT   1  XCCS3               [ UNTIL INPUT BLOCK EMPTY
2X?G    XCCS7   
2XR6          LDN   1  1
2Y=Q          BRN      XCCS6               [ NO MATCHING ')' BUT PROBABLY OK
2YQB    XCCS2   
2^=2          SBN   5  1
2^PL          BNZ   5  XCCS4               [ BRN IF NOT ')' 
329=          SBN   0  1                   [ ')' - 1
32NW          BRN      XCCS5
338G    XCCS6   
33N6          MHUNTW   2,ADATA,CREADL   
347Q          BNZ   7  XCCS12   
34MB          LDN   7  1                   [ NULL COMMAND   
3572          LDN   0  #20  
35LL          DCH   0  CPDATA(2)
366=    XCCS12  
36KW          STO   7  A1(2)               [ CHARACTER COUNT
375G          SBN   1  1
37K6          BNZ   1  XCCS8               [ BRN IF IUSER/HULL NOT EMPTY
384Q    XCCS10  
38JB          MFREEW   IUSER,HULL          [ NO MORE COMMANDS LEFT  
3942          BRN      XCCS1
39HL    XCCS8   
3=3=          BCHX  3  £
3=GW          SMO      6
3?2G          LDCH  5  0(3) 
3?G6          SBN   5  #30                 [ SEARCH FOR NEXT '(' IF ANY 
3?^Q          BZE   5  XCCS9
3#FB          BCT   1  XCCS8
3#^2          BRN      XCCS10              [ NONE   
3*DL    XCCS9   
3*Y=          LDX   2  6
3BCW          SBN   2  A1+3 
3BXG          STO   1  A1+1(2)             [ CHARS LEFT IN IUSER BLOCK  
3CC6          STO   3  A1+2(2)             [ CHARACTER ADDRESS OF NEXT '('  
3CWQ    XCCS1   
3DBB          ACROSS   ALAS,1   
3DW2    #END
^^^^ ...342011360001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1