
        Floating Point Evaluater - .EVAL     - by A'rpi & Pila
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Since [v3.0a15+] exist the .EVAL function. This can evaluate only
under compilation, so it _DOESN'T_ compile evaluation source!
It can evaluate an expression, if all parts of it is some kind of a constant
( known value: dec/hex/float number or EQU/= constant).

Forms:
~~~~~~
  The value of the expression can be returned in different forms:

    .EVAL xxx     - gives a floating point number ( 0.314159265E0001 )

    .EVALI xxx    - gives a (rounded) integer in DEC format ( 3 )

    .EVALD xxx    - gives a floating point number in HEX format ( DWORD )
    .EVALQ xxx    - gives a floating point number in HEX format ( QWORD )
    .EVALT xxx    - gives a floating point number in HEX format ( TBYTE )

  The first form is useful, if you want to give a constant a complicated
  value, CONST MULTIPLIER:DD=.EVAL 2/44100
  The second is for fixpoint arithmetic, EAX+=.EVALI 65536/(240/200)
  The last 3 is good, if you want to give value to a floating point register/
  variable with MOV, because TASM doesn't allow EAX:=1.317 !!!

The usable Functions:
~~~~~~~~~~~~~~~~~~~~~
  - Operation marks:
        + - * /
        ^         x^y = the ynth power of x (y can be negative or fraction !)
        !         !x  = the factorial of x 
                 x  = the square root of x 

  - Functions:
      SIN()    - sinus
      COS()    - cosinus
      TAN()    - tangent
      CTG()    - cotangent
      SQR()    - square   SQR(x) = x*x
      LN()     - logarithm based on e
      LG()     - logarithm based on 10
      ABS()    - absolute
      INT()    - truncating
    Constants:
              - the value of PI 3.1415926527...
      e        - the value of e ( if no variable or 
                 constant named 'e' is defined !!! )

  - Multiple brackets can be used
  - In simple and unambigouos forms the operation mark can be left 
    out : 2,  (a+b)(c+d)
  - Unary minus can be used without brackets:   -3*-5 instead of (-3)*(-5)
  - Usable:
      floating point numbers, 3.14159265, -0.3562E-28
      integer numbers, 376253, 0A0000h
      constants, XYZ=37, XYZ EQU 37, AB=375+XYZ*3/65536

  - in the parameters of FPU commands these expressions can be used 
    even without .EVAL command
           FILD 300*
           FADD 1/XYZ
    The type is from the 'I' after 'F' ( if exists, then integer),
    the size is the smallest for the number, except for when it
    is overridden with xPT, FILD DPT 2*27

  - It can be used in any commands, where functions could be used.
    for example in VAR/CONST:   CONST DEGREE_D:DD=.EVAL 1/SAMPLEFREQ

  - Quotion marks can be used:
      CONST DEGREE_D:DD=.EVAL '2^(1/12)'
    (this is important at special characters, for example: ^ )
    but this works, too:
      CONST DEGREE_D:DD=.EVAL ^localevariable'^'(1/12)



