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