picma changes
  0.56
  First release
  0.57
  
   - Added #include <...>
   
- Added #include_only_once
   
- Added alloc object
   
- Added named code block statement
   
- Added def()
  
0.58
  
   - Added '\' as a valid identifier character
   
- Added string expressions
   
- Added global 'chipname' constant.
   
- Changed foreach to pass the name of each match instead of the value
   
- Added '@' to lookup a string as a variable name
   
- Made '$' return numerical value of a string
   
- Made sizeof() return length of a string
   
- Added left(), right(), and mid()
   
- Made '+' concatenate strings
   
- Made x[y] return one character from a string
   
- Added string comparisons
   
- Added += and -=
   
- Made foreach and every work alphabetically
   
- Fixed nested loops
   
- Added strings as valid initialisers
   
- Changed print to only print the values of the args given
   
- Changed warning and error to work like print
  
0.59
  
   - Fixed a bug in string handling
   
- Added str()
  
0.60
  
   - Added uppercase versions of aliases
  
0.61
  
   - Made chipname contain the user-supplied string rather than the matched name.
   
- Moved function calls to precedence 14 where they belong.
   
- Added firstleft(), firstright(), lastleft(), lastright().
  
0.62
  
   - Fixed reported line numbers in included files
   
- Fixed limit on number of included files
   
- Allowed initialising of local areas
   
- Added func object and function calls
   
- Added def object
  
0.63
  
   - Changed foreach to accept a string expression as mask
   
- Added option object, and warning switches
   
- Added "optional" code block option, which allows removal of unused code blocks
   
- Fixed a bug that prevented empty strings
   
- Changed #include etc. so it may appear in many more places
   
- Fixed a bug in nested code, if, and switch
   
- Added experimental '?' var prefix, which means the global version of the variable
   
- Fixed variable references inside macros
  
0.64
  
   - Completely changed structure so there are no objects (everything is a statement).
   
- Code blocks will be moved around no matter where they are defined.
   
- Single macro calls now give errors if the macro can't be found.
   
- Fixed base=P0 on global codeblock.
   
- Removed "option" object, added option\warning\* variables.
   
- Removed automatic disabling of code removal.
   
- Added option to turn off print.
   
- Added type(), that returns the type as a string.
   
- Allowed variable number of args to macros.
   
- Same for functions.
   
- Allowed many codeblocks of the same name in the same scope. The last one will be
       used when jumping to the name-label.
   
- Rewrote manual :-/
   
- Allowed empty entries in the defs given to area and enum.
  
0.65
  
   - Fixed bug in foreach.
   
- Fixed the memory map output.
  
0.66
  
   - Fixed #include error messages and others.
   
- All values now printed in hex.
   
- Clarified the issue of having multiple code blocks of the same name.
   
- Fixed bug when removing blocks at fixed addresses.
   
- Fixed bug when alloc'ing from a global area.
   
- Allowed @() in all places where a list of names is required.
   
- Allowed code blocks within loops and macros.
   
- Made multiple passes for removing blocks, so a block can be removed even if it is
       in use by another, if the other has also been removed.
   
- code ?foo { ... } didn't work as expected, now it does.
  
0.67
  
   - Fixed bug in bsf, bcf, btfsc, btfss opcodes.
   
- Fixed bug in btfsc, btfss, which prevented a warning.
   
- Allowed @(...) as a code block name.
   
- @( name ) is no longer the same as name. Instead,
       name is equivalent to @(" name "), which is more
       consistent.
  
0.68
  
   - Allowed @(...) as function and macro names.
   
- Added option\list to turn off assembler listings.
  
0.69
  
   - Added link to position code blocks inside others.
  
0.70
  
   - Fixed bug in link that didn't advance the program counter.
  
0.71
  
   - Allowed empty list of code options.
   
- Allowed blocks with no statements.
   
- Fixed link code, so nested linking is possible, and sizes are correct.
   
- Linked code blocks are always made optional, to avoid infinite allocation loops.
   
- Fixed bug in bit area width limit
   
- Added |=, &=, ^=
  
0.72
  
   - Made all 'P' areas print in hex, all others in decimal.
   
- Made it run on linux. The only change is the -I option that was added.
  
0.73
  
   - Added more chips.
   
- Added filename and line to assembler output.
   
- Changed 'P' areas to always print 4 digits.
   
- Allowed switch to compare all types, not just scalar values.
  
0.74
  
   - Added asc().
   
- Added chr().
   
- Allowed '\' escape sequences in strings.
   
- Allowed call & goto to spot code blocks in use, even if they are referenced
       by @(...)
  
0.75
  
   - Fixed bug in init (it almost never did anything at all).
  
0.76
  
   - Added PTF output format.
   
- Added HP output format.
   
- Fixed bug in func, which only affected the unreleased x86 build.
   
- Added ^^, <<=, >>=, *=, %=, and /=.
   
- Fixed up print to behave more like any rational person would expect.
   
- Added option\list\file and option\list\line.
  
0.77
  
   - Added alternative for and foreach syntax.
   
- Added do.
   
- Core program restructured in order to get more interesting bugs.
   
- Fixed bug (global options were not reset to defaults at each pass).
   
- Added option\ptf\*.
   
- Added now().
  
0.78
  
   - Added 16F627 & 16F628 chip types.
   
- Removed old for and foreach constructs.
   
- Removed option\ptf\purpose etc., and added general
       option\ptf\name instead.
   
- Changed def() and type() to take string
       exprs instead of names.
   
- Changed the method of selecting chip. The chip command
       is now just a shortcut to the more general method using
       chip\* variables.
  
0.79
  
   - #include now supports wildcards, and includes all the matching files.
   
- The depth-limit on includes has been removed (but it may still be limited by the
       OS if it only allows a certain number of open files per process).
   
- Left debug messages enabled until the above has been tested, they are
       enabled by giving 3 or more 'v's on the command line.
  
0.80
  
   - Changed #include to behave completely differently, using various
       paths as described above.
   
- Allowed macro and function calls with arguments missing, causing the relevant
       parameters to have no value.
  
0.81
  
   - Fixed bug in #include_only_once
  
0.82
  
   - Fixed bug in #include "..."
  
0.83
  
   - Increased string length limit to 511 chars.
   
- Fixed bug in switch (when there were no cases to run)
   
- Added warning about MOVF x being MOVF x,f
   
- Moved evaluation of area/init initialisation data until last pass, so it's
       possible to use labels and other forward references.
   
- Changed init and area, so they both have similar syntax
       for initialisation. init can also take an expression now.
   
- Added structures as a type of value, and -> as an operator.
  
0.84
  
   - const introduced, can be used when creating vars (except def and alloc,
       as this is a half-finished release).
   
- enum always creates constants.
  
0.85
  
   - Added constants to def.
   
- Fixed bug in struct allocation code.
  
0.86
  
   - alloc changed to contain an embedded structure.
   
- Added default value for nowrap (256).
   
- Changed function and macro calls to be varref(args), meaning that the
       name of the function/macro can be calculated using @(expr).
   
- Changed syntax of every slightly, so it can also take a calculated mask.
   
- Allowed varref in foreach so it can be calculated too.
  
0.87
  
   - Changed function and macro definitions to take names instead of varrefs,
       since the effect of giving a variable was too weird to explain.
   
- Improved var lookup code.
   
- Added temporary emulation of the old alloc syntax and behaviour. You will
       be warned (once) if this is used.
  
0.88
  
   - Changed macro and function name behaviour to be similar to variables, so the '?' prefix
       works. It's also faster now.
   
- Added warning about local versions of global constants.
   
- Implemented #include in the UNIX version.
   
- Added -r and -u switches.
   
- Added ../ function.
  
0.89
  
   - Added prototype->member which returns the size.
   
- Replaced sizeof() with bytes() and bits(), which work
       in more obvious ways.
  
0.90
  
   - Added option to turn off old alloc warnings.
  
0.91
  
  0.92
  
   - Made '!name' public.
   
- Changed prefix to #prefix, and it takes names now.
   
- Made prefixes use the source structure for searching, instead of the execution one.
  
0.93
  
   - Removed the constraint on prefix positions.
   
- Allowed prefixes in prefix values.
  
0.94
  
   - Added backtrace generation.
   
- Added -d switch for more detailed control of debug output.
   
- const fixed for def (and it now requires an initial value).
  
0.95
  
   - Fixed option '-d t' which didn't do much.
   
- Fixed uncaught error when an #include "subdir..." couldn't find the subdir.
   
- Moved this list of changes into its own file.
  
0.96
  
   - Allowed the use of register-area-based structures as register areas in instructions.
   
- Added uses statement.
  
0.98
  
   - Fixed init to mask the values according to the word width.
  
   - "bit heaps"
   
- Assignable expressions