CHANGES for PicForth 0.12
Changes since PicForth 0.11
New multitasker
- A new multitasker (cooperative, priority-less, much simpler) has been
added. See README file for information on how to use both multitaskers.
New optimizations
incfsz
and decfsz
will be used when it is possible.
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
README file 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