-*- outline -*-

--- CHANGES for PicForth $ReleaseVersion: 0.11 $

* Changes since PicForth 0.10

** New features

  + Tasks of equal priority will all run if one of them runs (and code is
    more efficient).

** New optimizations

  + Regular tasks need only 1 bit of data each instead of 1 byte (bits are
    aggregated, 8 tasks will need only 1 byte of RAM).

  + Some redundant loads before tests have been suppressed.

* Changes since PicForth 0.9

** New features

  + PicForth now includes a priority-based cooperative multitasker, see
    file README for details.

** New words

  + "lshift", "rshift", "2*" and "2/" are implemented.

* Changes since PicForth 0.8

** New words

  + "invert!" inverts the content of an address.
  + "-!" is implemented.

** New modes

  + "macro" allows you to enter the macro definition mode, while "target"
    gets you back to code generation.

** New optimizations

  + "drop" followed by an integer leads to very efficient code.
  + "+" and "-" have been further optimized.

* Changes since PicForth 0.7

** New parameter passing convention

  + A new defining word "::" allow efficient W register parameter passing.
    ">w" and "w>" respectively pop the top-of-stack into w and push w on
    the stack. They can be used to implement efficient return value handling.

** New optimizations

  + "or" now uses bit-set instructions when it makes sense, as well as "or!",
    "and!" and "/and!".

  + "negate" and "invert" have been optimized.

** New words

  + "recurse" is implemented the traditional way.

  + ">input" and ">output" change a pin direction by working on the
    corresponding tris register.

* Changes since PicForth 0.6

** New optimizations

  + A load followed by a constant + or - will be even further optimized.

** New check

  + The compiler now checks that you do not run out of code space and out of
    RAM space (see README for more explanations).

** Bug fixes

  + The Makefile was not ideal and could induce some bugs due to the
    redefinition of "include".

  + The previous definition of "over" was not interrupt-safe.

  + Some opcodes were not properly displayed by the disassembler.

* Changes since PicForth 0.5

** New disassembler and interactive mode

   + If you use "make interactive", you will be dropped into an interactive
     mode where you can disassemble words using "see", "words", "map" and
     "dis".

* Changes since PicForth 0.4

** New optimization

   + If an operation targets the top of stack and this one is then
     popped into w, the operation is modified to target w directly.

** New example

   + A new example, "silver.fs", contains some code that runs on a
     smartcard.

** New words

   + "eecreate" and "ee," manipulate EEPROM content

** New features

   + The EEPROM content can be programmed and is now dumped (see smartcard
     example).

** Bug fixes

   + "ee@" selected the flash instead of the EEPROM

* Changes since PicForth 0.3

** New words

  + "high", "low", "high?" and "toggle" are aliases for "bit-set",
    "bit-low", "bit-set?" and "bit-toggle" intended to work on ports

* Changes since PicForth 0.2

** New library files

Add library files "libfetch.fs" and "libstore.fs" which were forgotten in
previous versions and are used by "generator.fs".

* Changes since PicForth 0.1

** New words

  + "until" and "/until" (control structures)
  + "clrwdt" (accessible from Forth)
  + "pin-a", "pin-b", "pin-c", "pin-d", "pin-e" (pin mapping)

** Renamed words

  + "bit-clear" is renamed to "bit-clr"
