[net.lang.forth] Differences between versions

wmb@sun.UUCP (06/10/83)

The latest FORTH standard is FORTH-83, not FORTH-82.  The differences
between FORTH-83 and FORTH-79 are more than just the renaming of a
few words according to current whim.  I will not attempt to give a
complete list of differences here, but I want to mention a few
important semantic points.  The FORTH-83 standard (not yet published,
I think) should be consulted for complete information.  Also, Forth
Dimensions (the magazine of the Forth Interest Group) has been running
a column by Bob Smith which details some of the FORTH-83 issues, one
issue per Forth Dimensions issue.

1) Mono-addressing.  A number of old words (e.g. ' FIND EXECUTE)
return or expect the address of a FORTH word.  Some of them deal
with a parameter field address (PFA), and some with a code field
address (CFA).  This is both an annoyance and a portability problem,
since the relationship between PFA's and CFA's is installation
(actually implementation) dependent.  FORTH-83 solves this problem
by specifying that all these words refer to a "compilation address",
which is the same as a CFA for most implementations.

2) DO  ...  LOOP   The old DO ... LOOP has the problem that when the
loop index crosses the boundary between 32767 and 32768, unexpected
things happen.  This makes DO ... LOOP of dubious value for looping
over addresses.  The new DO ... LOOP fixes this problem.  Also,
the word LEAVE now causes immediate termination of the loop instead
of waiting until LOOP is encountered.  This is a lot more intuitive.

There are a lot more changes, most of which are widely endorsed by
serious FORTH programmers.  FORTH-79, while a laudable attempt at
standardization, has a number of very serious flaws which make it
very frustrating for writing real programs in a portable fashion.

I believe that a number of FORTH-83 implementations will be soon
forthcoming.  I know of several that are in the works.

Mitch Bradley