To understand the scope of these changes, please refer to the documentation.
v-next
rememebers the variable used at v-for
time. Therefore, v-next
no longer takes a variable address as parameter.
table
, ftable
, eetable
, table>
and end-table
allow to create
respectively RAM, flash or EEPROM tables.
picflash.fs
contains new words fcreate
, f,
, fallot
and fhigh!
.
picforth.pdf
,
picforth.txt
, picforth.info
and picforth.html
and use the one
which most suits your needs and tastes.
table
and tc:
have been removed as they were inefficient
and useless in their current form.
bank0
, bank1
, bank2
and bank3
allow to choose the
memory bank in which next variables will be stored.
needs
works the usual way.
set-stack-size
allows to set the default stack size.
cmove
cases are optimized.
bit-clr? until
).
,
is used. Note however that variables
are not automatically initialized to 0 (see README
).
if
) will not be normalized
if it is not needed.
bit-clr?
and low?
have been added.
libcmove.fs
implements ANS Forth CMOVE
.
spifcard.fs
has been added.
/if
, c-if
, c-/if
, /until
, /while
and =if
have been
removed as the new optimizations makes them unnecessary.
hex>nibble
and nibble>hex
from libnibble.fs
have been
optimized.
swap
and drop
after a string literal word are optimized.
=if
adds a new test.
i2cloader.fs
is a flash and eeprom programmer using I2C.
bit
builds a name representing a particular bit at a particular address.
c
, z
, t0if
, ...) do now push their address
as well, and must be used without any address. For example, to test
for timer 0 overflow, you must use t0if bit-set? if ... then
.
bit-set
, bit-clr
, bit-set?
, bit-toggle
, high
, low
,
high?
and toggle
now use inverted parameters (push port first then
bit number). Symbols defined with bit
, pin-a
, pin-b
, pin-c
,
pin-d
or pin-e
can now be used in assembly code as the parameter
order is similar to the Forth one.
checker.fs
has been renamed controller.fs
, as the previous name
was misleading.
/and
invert
the top-of-stack then and
the two top values.
swapf-tos
exchanges nibble of top-of-stack.
lshift
with a bit count greater than 3 will use a shorter code than
before.
and
and /and
will use bit manipulation when this is more efficient.
checker.fs
is included.
libnibble.fs
library converts characters to nibbles and nibbles
to characters.
-
followed by if
could be
incorrect.
lshift
and rshift
could generate incorrect code.
yield
operation crosses a 256 bytes page limit.
incfsz
and decfsz
will be used when it is possible.
lshift
, rshift
, 2*
and 2/
are implemented.
invert!
inverts the content of an address.
-!
is implemented.
macro
allows you to enter the macro definition mode, while target
gets you back to code generation.
drop
followed by an integer leads to very efficient code.
+
and -
have been further optimized.
::
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.
or
now uses bit-set instructions when it makes sense, as well as or!
,
and!
and /and!
.
negate
and invert
have been optimized.
recurse
is implemented the traditional way.
>input
and >output
change a pin direction by working on the
corresponding tris register.
include
.
over
was not interrupt-safe.
make interactive
, you will be dropped into an interactive
mode where you can disassemble words using see
, words
, map
and
dis
.
silver.fs
, contains some code that runs on a
smartcard.
eecreate
and ee,
manipulate EEPROM content
ee@
selected the flash instead of the EEPROM
high
, low
, high?
and toggle
are aliases for bit-set
,
bit-low
, bit-set?
and bit-toggle
intended to work on ports
Add library files libfetch.fs
and libstore.fs
which were forgotten in
previous versions and are used by generator.fs
.
until
and /until
(control structures)
clrwdt
(accessible from Forth)
pin-a
, pin-b
, pin-c
, pin-d
, pin-e
(pin mapping)
bit-clear
is renamed to bit-clr