{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PARAMA865)}}
====== PARAMA865 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CHARMOVE|CHARMOVE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT|HUNT]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MHUNTX|MHUNTX]], [[george:macro:OUTPAR|OUTPAR]], [[george:macro:PARAFREE|PARAFREE]], [[george:macro:PHOTO|PHOTO]], [[george:macro:PTYPE|PTYPE]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP|SETREP]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:UP|UP]], [[george:macro:XCLEAR|XCLEAR]]
22FL #LIS K0PARAMA>K0ALLGEO>K0GREATGEO>K0COMMAND
22^= #SEG PARAMA [ BILL IZATT : CENT
23DW 8HPARAMA
23YG [ THE ENTRY POINTS
24D6 [ THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT
24XQ SEGENTRY K1PARAMA,QENTRY1
25CB SEGENTRY K2PARAMA,QENTRY2
25X2 SEGENTRY K3PARAMA,QENTRY3
26BL SEGENTRY K4PARAMA,QENTRY4
26W= [
27*W [
27TG [ ENTRY FOR THE PARABRAC MACRO
28*6 [
28SQ #DEF RPAR=SHUTBRAK [ CONTAINS 4H000)
29#B #DEF XLPAR=OPENBRAK [ CONTAINS 4H000(
29S2 XARSGN 10H*/+-<>$^&,
2=?L [
2=R= QENTRY1
2?=W HUNT 3,CPB,CUNI
2?QG STO 3 AWORK1(2)
2#=6 LDX 4 ANUM(3)
2#PQ BZE 4 XBAD [ERROR IF NULL OR
2*9B BNG 4 XBAD [NONEXISTENT
2*P2 ANDN 4 #7777
2B8L ADN 3 APARA [POINT X3
2BN= SLL 3 2 [TO LAST CHARACTER
2C7W ADX 3 4 [IN PARAMETER
2CMG SBN 3 1
2D76 SRC 3 2
2DLQ LDN 7 0 [INITIALISE BRACKET COUNT
2F6B LDCH 0 0(3)
2FL2 TXU 0 RPAR(1)
2G5L BCS PUP
2GK= XLP1 ADN 7 1
2H4W XLP2 SLC 3 2
2HJG BCT 3 £
2J46 SRC 3 2
2JHQ SBN 4 1
2K3B BZE 4 XBAD [J IF UNPAIRED PARENTHESIS
2KH2 LDCH 0 0(3)
2L2L TXU 0 RPAR(1)
2LG= BCC XLP1
2L^W TXU 0 XLPAR(1)
2MFG BCS XLP2
2M^6 BCT 7 XLP2
2NDQ SLC 3 2 [CORRESPONDING BRACKET FOUND
2NYB BCT 3 £
2PD2 SRC 3 2
2PXL SBN 4 1
2QC= BZE 4 XCOMP [J IF COMPOSITE
2QWW LDCH 0 0(3)
2RBG LDN 7 9
2RW6 XLP3
2S*Q LDCH 6 XARSGN(1) [ARITHMETIC SIGN
2STB TXU 6 0
2T*2 BCC PUP [NO ACTION TAKEN IF AN ARITH.SIGN
2TSL BCHX 1 £
2W#= BCT 7 XLP3
2WRW BCHX 3 £
2X?G LDCH 6 XARSGN(1)
2XR6 DCH 6 0(3)
2Y=Q LDX 3 AWORK1(2)
2YQB LDN 4 1
2^=2 SBS 4 ANUM(3)
2^PL PTYPE LDX 3 AWORK1(2)
329= LDX 4 ANUM(3)
32NW ANDN 4 #7777
338G STO 4 ANUM(3)
33N6 PTYPE CPB,CUNI,3,APARA,ANUM(3)
347Q PUP SETREP OK
34MB UP
3572 XBAD SETREP FORMAT
35LL UP
366= XCOMP LDX 3 AWORK1(2)
36KW LDX 5 ANUM(3)
375G ANDN 5 #7777
37K6 SBN 5 2
384Q STO 5 ANUM(3)
38JB BZE 5 PUP
3942 ADN 3 APARA
39HL LDX 4 3
3=3= BCHX 3 £
3=GW CHARMOVE 3,5 [ REMOVE PARENTHESES
3?2G BRN PTYPE
3?G6 [
3?^Q [ PARASTRING MACRO-TO MOVE A CHARACTER STRING FROM A BLOCK TO A CPB
3#FB [ CMULTI BLOCK SPECIALLY CREATED FOR THE PURPOSE.THIS BLOCK WILL BE
3#^2 [ AT ANALYSIS LEVEL 1.IT WILL CONTAIN ONLY ONE PARAMETER.THIS
3*DL [ PARAMETER WILL BE THE CONTENTS OF THE CHARACTER STRING WITHIN
3*Y= [ PARENTHESES.A CHECK IS MADE THAT THE FIRST CHARACTER IS INDEED
3BCW [ A LEFT PARENTHESIS.LEADING AND TRAILING SPACES ARE THROWN.
3BXG [
3CC6 #DEF SIZEPB=AVELINE+APB
3CWQ STRINGDELIM
3DBB 4H000?
3DW2 4H000'
3F*L 4H000/
3FT= 4H000"
3G#W OPENBRAK 4H000(
3GSG SHUTBRAK 4H000)
3H#6 QENTRY2
3HRQ LDX 3 ACOMMUNE1(2) [PTR WITHIN 'STRING' BLOCK
3J?B LDX 5 ACOMMUNE2(2) [CHARACTER COUNT
3JR2 LDX 7 ACOMMUNE3(2)
3K=L STOZ ACOMMUNE4(2)
3KQ= SLL 7 12
3L9W STO 7 AWORK1(2)
3LPG PARAFREE
3M96 MHUNTX 2,7
3MNQ SMO 2
3N8B LDCH 0 0(3) [PICK UP FIRST CHARACTER-IT
3NN2 TXU 0 XLPAR(1) [MUST BE A LEFT PARENTHESIS
3P7L BCC XOK
3PM= GEOERR 1,LPARENTH
3Q6W XSP SMO 2
3QLG LDCH 0 0(3) [IGNORE LEADING SPACES
3R66 TXU 0 SPACE(1)
3RKQ BCS XNSP
3S5B XOK BCHX 3 £
3SK2 BCT 5 XSP [COUNT DOWN ON CHARACTER COUNT
3T4L [ ERROR-EITHER NO MATCHING RIGHT PARENTHESIS AT END OR
3TJ= [ PARAMETER IS ALL SPACES
3W3W #
3WHG XERR SMO FX2
3X36 STOZ ACOMMUNE1
3XGQ UP
3Y2B XNSP TXU 0 RPAR(1)
3YG2 BCS XNSP2
3Y^L SETREP NULL
3^F= BRN XERR
3^YW XNSP2
42DG [ SO FAR SO GOOD SO SET UP A MULTI BLOCK
42Y6 SETNCORE SIZEPB,1,CPB,CMULTI
43CQ MHUNTW 2,CPB,CALAS
43XB LDX 2 BPTR(2)
44C2 LDX 6 1
44WL CHAIN 1,2 [CHAIN MULTI BLOCK BEFORE ALAS BLOCK
45B= STOZ AWORK2(2) [INITIALISE DEPTH COUNT
45TW STOZ AWORK3(2) [INITIALISE
46*G MHUNTX 2,7
46T6 LDX 7 2 [PTR TO 'STRING' BLOCK
47#Q LDN 2 APARAFIR+1 [PTR WITHIN MULTI BLOCK
47SB [ THE MAIN LOOP-LOADING A CHARACTER FROM THE 'STRING' BLOCK
48#2 [ AND DEPOSITING IT IN THE MULTI BLOCK,ENLARGING IT IF
48RL [ NECESSARY
49?= XLOP SMO 7
49QW LDCH 0 0(3)
4==G LDN 4 SHUTBRAK-STRINGDELIM+1 [ SIZE OF TABLE
4=Q6 XLOOP SMO 4
4?9Q TXU 0 STRINGDELIM-1(1)
4?PB BCC SDELIM
4#92 BCT 4 XLOOP
4#NL BRN XDCH
4*8= SDELIM [ THE CHAR IS A DELIM
4*MW SMO FX2
4B7G LDX 4 ACOMMUNE4
4BM6 TXU 0 SHUTBRAK(1)
4C6Q BCC SHTB
4CLB BZE 4 NOTINDELS
4D62 TXU 0 OPENBRAK(1)
4DKL BCC OPNB
4F5= TXU 0 4 [ IS CHAR THE CURRENT DELIMETER?
4FJW BCS XDCH [ IF NOT, TREAT AS ORD CHAR
4G4G XCLEAR
4GJ6 SMO FX2
4H3Q STOZ ACOMMUNE4
4HHB BRN XDCH
4J32 OPNB
4JGL TXU 4 SHUTBRAK(1)
4K2= BCS XDCH
4KFW BRN XLP
4K^G SHTB
4LF6 BZE 4 OUTPAR [ NOT IN DELS. END OF PARASTRING
4LYQ TXU 4 SHUTBRAK(1)
4MDB BCS XDCH
4MY2 SMO FX2
4NCL LDX 4 AWORK2
4NX= SBN 4 1
4PBW SMO FX2
4PWG STO 4 AWORK2
4QB6 BNZ 4 XDCH [ NOT AT ZERO SO STILL IN DELIMS
4QTQ BRN XCLEAR
4R*B NOTINDELS
4RT2 SMO FX2
4S#L STO 0 ACOMMUNE4
4SS= TXU 0 OPENBRAK(1)
4T?W BCS XDCH
4TRG LDX 4 SHUTBRAK(1)
4W?6 SMO FX2
4WQQ STO 4 ACOMMUNE4 [ PUT ) AS STRING DELIM
4X=B XLP LDN 4 1
4XQ2 SMO FX2
4Y9L ADS 4 AWORK2 [ADD 1 TO DEPTH COUNT
4YP= XDCH SMO 6
4^8W DCH 0 0(2)
4^NG BCHX 2 £
5286 LDN 4 1
52MQ SMO FX2
537B ADS 4 AWORK3 [ADD 1 TO CHARACTER COUNT
53M2 BCHX 3 £
546L BCT 5 XCON
54L= FREECORE 6 [RUN OUT OF CHARACTERS-ERROR
555W BRN XERR
55KG XCON SMO FX2
5656 STO 2 AWORK4 [PRESERVE X2
56JQ SMO FX2
574B STO 3 ACOMMUNE1 [PRESERVE X3
57J2 SLL 2 2
583L SRL 2 2
58H= SBN 2 A1
592W SMO 6
59GG TXL 2 ALOGLEN
5=26 BCS XALOG [J IF MULTI BLOCK BIG ENOUGH
5=FQ PHOTO 4
5=^B SMO 6
5?F2 LDX 3 ALOGLEN
5?YL ADN 3 AVELINE
5#D= ALTLEN 6,3
5#XW TESTMOVE 4,XNOM
5*CG LDX 7 AWORK1(2)
5*X6 MHUNTX 2,7 [REFIND 'STRING' BLOCK
5BBQ LDX 7 2
5BWB MHUNTW 2,CPB,CMULTI [REFIND MULTI BLOCK
5CB2 LDX 6 2
5CTL XNOM SMO FX2
5D*= LDX 3 ACOMMUNE1 [RESET X3
5DSW XALOG SMO FX2
5F#G LDX 2 AWORK4 [RESET X2
5FS6 BRN XLOP
5G?Q [ THE END-SET RED TAPE WORDS OF MULTI BLOCK
5GRB OUTPAR
5H?2 BCHX 3 £
5HQL LDX 2 FX2
5J== STO 3 7
5JPW SBN 5 1
5K9G LDX 3 6
5KP6 LDN 4 1
5L8Q STO 4 APARANUM(3)
5LNB STO 4 ANALEV(3)
5M82 STO 4 CPBPROGLEV(3)
5MML LDN 4 APARAFIR
5N7= SLL 4 12
5NLW ADN 4 1
5P6G STO 4 APTBEPAR(3)
5PL6 STO 4 ADNOPARAL(3)
5Q5Q LDX 4 AWORK3(2) [CHARACTER COUNT
5QKB LDN 2 APARAFIR+1(3)
5R52 SLL 2 2
5RJL ADX 2 4
5S4= SRC 2 2
5SHW XSLP SLC 2 2
5T3G SBN 2 1
5TH6 SRC 2 2 [IGNORE TRAILING SPACES
5W2Q LDCH 0 0(2)
5WGB TXU 0 SPACE(1)
5X22 BCS XENDL
5XFL SBN 4 1
5X^= BNZ 4 XSLP
5YDW XENDL STO 4 APARAFIR(3)
5YYG ADN 4 7
5^D6 SRL 4 2
5^XQ NGN 0 1
62CB SMO 4
62X2 STO 0 APARAFIR(3)
63BL PTYPE CPB,CMULTI,3,APARAFIR+1,APARAFIR(3)
63W= STO 7 ACOMMUNE1(2)
64*W STO 5 ACOMMUNE2(2)
64TG UP
65*6 #
65SQ [ ENTRY FROM PARALAS MACRO
66#B #
66S2 MINUS1 #77777777
67?L XCOMMA #34
67R= QENTRY3
68=W MHUNTW 2,CPB,CALAS
68QG LDX 5 APARANUM(2) [ALLOW FOR COMMAS
69=6 SBN 5 1
69PQ LDN 0 0 [SET X0 TO 1ST PARAM
6=9B XAR1 SMO 0
6=P2 LDX 4 APARAFIR(2)
6?8L TXU 4 MINUS1(1)
6?N= BCC XOUT1 [END OF PARAMS
6#7W ANDN 4 #7777
6#MG ADX 5 4 [ADD IN CHARS FROM THIS PARAM
6*76 ADN 4 7
6*LQ SRL 4 2
6B6B ADX 0 4 [STEP X0 TO NEXT PARAM
6BL2 BRN XAR1
6C5L XOUT1 LDX 4 5
6CK= ADN 4 7
6D4W SRL 4 2
6DJG SETUPCORE 4,3,ADATA,CSTORE [SET UP BLOCK OF CORE AND NAME IT
6F46 MHUNTW 2,CPB,CALAS
6FHQ STO 5 A1(3) [STORE CHAR COUNT
6G3B ADN 2 APARAFIR
6GH2 ADN 3 A1+1
6H2L LDX 4 0(2)
6HG= TXU 4 MINUS1(1)
6H^W BCC XOUT2
6JFG BRN XAR2
6J^6 XAR3 LDX 4 0(2)
6KDQ TXU 4 MINUS1(1)
6KYB BCC XOUT2 [END OF PARAMS
6LD2 LDX 6 XCOMMA(1) [DUMP COMMA
6LXL DCH 6 0(3)
6MC= BCHX 3 £
6MWW XAR2 ANDN 4 #7777
6NBG ADN 2 1 [ADJUST X2 TO START OF PARAM
6NW6 BZE 4 XAR3 [NULL PARAM
6P*Q CHARMOVE 2,4 [MOVE CHARACTERS IN
6PTB SLC 2 2
6Q*2 ADN 2 3
6QSL SRL 2 2 [ADJUST X2 FOR NEXT PARAM
6R#= BRN XAR3
6RRW XOUT2 UP
6S?G #
6SR6 [ PARFNAME
6T=Q #
6TQB [ TO TAKE A PARAMETER IN A FIL/FNAME AND SET IT IN A NEW CPB/CMULTI
6W=2 #
6WPL SPACE #20
6X9= QENTRY4
6XNW PARAFREE
6Y8G MHUNT 3,FILE,FNAME
6YN6 LDX 4 ATYPE(3)
6^7Q ANDX 4 HALFTOP
6^MB ORN 4 1 [PUT 1 IN LS 12 BITS OF ATYPE
7272 STO 4 ATYPE(3)
72LL LDX 4 3 [REMEBER FILE/FNAME PTR
736= LDX 5 ANUM(3) [CALCULATE LL FOR CPB/CMULTI
73KW LDX 6 5 [REM CHAR COUNT
745G ADN 5 APB*4+11
74K6 SRL 5 2
754Q PHOTO 7
75JB PTYPE FILE,FNAME,3,APARA,ANUM(3)
7642 SETUPCORE 5,3,CPB,CMULTI
76HL TESTMOVE 7,NOMOVE [B IF NO BLOCKS MOVED
773= MHUNT 2,FILE,FNAME
77GW LDX 4 2
782G NOMOVE
78G6 MHUNT 2,CPB,CALAS
78^Q LDX 7 CPBCPLEV(2)
79FB ANDN 7 #7777 [FIND THE CPB/LEV FOR CPB/CMULTI
79^2 CHAIN 3,BPTR(2) [CHAIN CPB/CMULTI BEFORE CPB/CALAS
7=DL LDX 2 4
7=Y= STO 7 CPBCPLEV(3) [INITIALISE CPB/CMULTI
7?CW LDN 7 APARAFIR
7?XG SLL 7 12
7#C6 ADN 7 1
7#WQ STO 7 APTBEPAR(3)
7*BB STO 7 ADNOPARAL(3)
7*W2 STOZ CPBSTART(3)
7B*L STOZ CPBSTOP(3)
7BT= LDX 7 JPARNUM(2)
7C#W STO 7 CPBPROGLEV(3) [LOAD CORRECT PARAM NO
7CSG LDN 7 1
7D#6 STO 7 ANALEV(3) [SET ANALYSIS LEVEL TO 1
7DRQ STO 7 APARANUM(3) [NO. OF PARAMETERS = 1
7F?B STOZ CMFMSK(3)
7FDJ ...#UNS CMXMSK
7FKQ ... STOZ CMXMSK(3)
7FR2 ADN 6 7
7G=L SLL 6 2
7GQ= SRL 6 2 [ROUND UP CHAR COUNT
7H9W ADN 2 ANUM
7HPG ADN 3 APARAFIR
7J96 CHARMOVE 2,6 [MOVE IN PARAMATER
7JNQ NGN 7 1
7K8B STO 7 0(3) [SET END OF PARAM MARKER
7KN2 UP
7L7L MENDAREA 30,K99PARAMA
7LM= #END
^^^^ ...51574464000100000000