'Equates ---> Tags convertor 
'
Load "Equates_To_Tags.abk"
Set Buffer 100
Dim TAG(4000),TAG$(4000),M$(15)
F$=Fsel$("","","Select Equates File")
'
'Take only symbols with these prefixes (Must be in Ascending AscII Order)
'
M$(0)="ASL"
M$(1)="FAL"
M$(2)="FIL"
M$(3)="FON"
M$(4)="FOF"
M$(5)="FRF"
M$(6)="MUI"
M$(7)="NUL"
M$(8)="OM_"
M$(9)="RFF"
M$(10)="RF_"
M$(11)="TAG"
M$(12)="TRU"
M$(13)="mc_"
M$(14)="mpe"
M$(15)="sme"

Set Input 10,-1
Open In 1,F$
X=0 : N=1
Print "Parsing Equates..."
Do 
   Trap Line Input #1,L$
   If Errtrap Then Close 1 : Exit 
   _COLON=Elf Char(L$,"=:")
   If _COLON
      _COMMA=Elf Asc(L$,44)
      If _COMMA
         If Mid$(L$,_COMMA+1)="7"
            N$=Left$(L$,_COLON-1) : N$=Mid$(N$,Elf Not Asc(N$,32))
            V=Val(Mid$(L$,_COLON+1))
            If Match(M$(0),Left$(N$,3))=>0
               TAG(X)=V : TAG$(X)=N$ : Inc X
            End If 
         End If 
      Else 
         Print "Error in equates file, line ";N
      End If 
   End If 
   Inc N
Loop 
'
Print "Sorting Tags..."

QUICKSORT[X-1,0]

Print "Removing Duplicates..."
A=1 : B=0 : N=X
While A<X
   If TAG$(A)=TAG$(B)
      TAG$(A)="" : Dec N
   Else 
      B=A
   End If 
   Inc A
Wend 
A=0 : B=0
While B<X
   Inc B
   If TAG$(A)<>""
      Inc A
   End If 
   TAG$(A)=TAG$(B)
   TAG(A)=TAG(B)
Wend 
X=A+1
'
Print "Converting To Tree..."

Reserve As Data 13,50000
TREE=0
_BUILD_TREE[0,X-1]

F$=Fsel$("","","Save Tag File As...")

Print "Saving Tags..."

If Exist(F$) : Kill F$ : End If 
Bank Shrink 13 To TREE
Save F$,13
List Bank 
Erase 13

Procedure QUICKSORT[NO,ST]
Procedure _BUILD_TREE[F,L]
Procedure _ADD_NODE[N]
