------------------------------------
Version 2 build 6 (16 February 2003)
------------------------------------
Changed "#define ARM 1" to "#define ARM". No changes to functionality.
Created fresh executables for RiscOS and Epoc. (Ericsson MC218, Psion 5mx).


------------------------------------
Version 2 build 5 (24 November 2003)
------------------------------------
New functionality: pattern matching inside strings. Previously, to scan a string
one had first to explode the string into atoms. Now this step is not needed any
more. Example: find the value of the "width"-attribute in the following piece of 
HTML code:

 <table class="bgblue" width="600" cellspacing="0" cellpadding="0">

Suppose that this value has been assigned to the variable "string":

"<table class=\"bgblue\" width=\"600\" cellspacing=\"0\" cellpadding=\"0\">":?string;

Old solution:

get$(!string,MEM,VAP):?atoms;			{"Vaporise" the string.}

!atoms:? w i d t h "=" "\"" ?n "\"" ?;	{Find a string of digits delimited by apostrophes.}

str$!n:?N;						{Stringise the digits into a number.}

out$!N;						{Show the result.}

New solution:

@(!string:? "width=\"" #?N "\"" ?);		{Use @-flag on the match operator ':' to enable
							 pattern matching inside the string. Use spaces
							 to separate elements of the pattern. No need
							 to stringise the matched substring.}

out$!N;						{Show the result.}





------------------------------------
Version 1 build 3 (10 November 2003)
------------------------------------
The evaluation of tay$((x+3/2)^(x+3/2),x,20):?aans gave a memory exception.
This was caused by the attempt to treat 'e' as a rational number in the function
substlog. Added a test.

Removed a serious error that has crippled the pattern matching algorithm since
June 2001: the code having to do with the bit DONOTSHORTEN on the return value
of the match function has been removed. The change amounts to setting the
defined constant KORT to 0. The aim of the introduction of DONOTSHORTEN was to
shortcut the search for a matching pattern, but it did its job too well: the
expression
   a b b:? %?x !x
would fail.

Added some functions that can be used when debugging (or just tracing) the
program:
   * results, reslts, hreslts - like result, reslt, hreslt, but with extra
     argument 'snijaf' (cutoff). The function results can be used to trace the
     arguments of the match function.
   * checksum, getchecksum, setChecksum - can be used to spot out-of-bounds
     writing of memory allocated with bmalloc.
   * Changed some loops with constant test (while(1) or while(TRUE)) to loops
     performing real test. Also removed some 'continue's and 'break's.


-------------------------------
Version 1 build 2 (4 July 2003)
-------------------------------
Overhaul of macros:
   * More comments on each macro's meaning.
   * MACRO
      - The macro MACRO is changed to a defined constant
         (#define MACRO --> #define MACRO 1
          #ifdef MACRO --> #if MACRO)
      - It is now only defined if another predefined constant, COMPILE,
        is not 0.
   * ALLOCVAR
      - The macro ALLOCVAR is changed to a defined constant
         (#define ALLOCVAR --> #define ALLOCVAR 1
          #ifdef ALLOCVAR --> #if ALLOCVAR)
      - It is now only defined if another predefined constant, COMPILE,
        is not 0.
   * Renamed BIG_ENDIAN to BIGENDIAN (The old name clashed with a predefined
     name on some systems.)
   * gcc on linux offers a way to determine the correct value for the constant
     BIGENDIAN. This is used in build 2.

Added column for notes to the comment explaining flags (flgs) and operators
(ops).

Added test on validity of the FILE * variable fpo in the function errorprintf.
Added test on validity of the FILE * variable errorStream in the function
redirectError.


-------------------------------
Version 1 build 1 (3 June 2003)
-------------------------------
Initial version under GPL


