{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MULTCOMM867)}} ====== MULTCOMM867 ====== (George Source) **Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:CHAIN|CHAIN]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETXCORE|SETXCORE]] 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