Subject: New Public Domain FORTH-83 Implementation



From:  Ted Shapin <BEC.SHAPIN@usc-ecl>

Announcing a public domain implementation of FORTH-83.

A very fine public domain implementation of FORTH 83 is now available
on the Arpanet SIMTEL20 system in the directory MICRO:<CPM.FORTH-83>.
Get the file F83-READ.ME for a list of the files and what each contains.

This directory contains two implementations, one for the 8080 running
CP/M-80 and one for the 8086 (or 8088) running CP/M-86. I have also
submitted the 8080 version to the SIG/M users group.

This implementation has a CP/M file interface for FORTH screens, a metacompiler,
multi-tasking, debugging utilities, and many other features.

This implementation is largely due to Henry Laxen and Mike Perry with
assistance from some other members of the FORTH Interest Group.

F83-READ.ME     This lists all of the files and some hints on getting
                started.

(These files are for the 8080 system)

F83.HEX         A loadable, ready to use 8080 FORTH system including an
                editor, assembler, and many FORTH utilities.

F83.DOC         A message from the primary implementors including instructions
                on how to use F83 to compile itself.

META80.BLK      The meta source and F83 screens as an ASCII CP/M file.

EXTEND80.BLK    The extension screens as an ASCII CP/M file.

CPU8080.BLK     Assembler, debugging and multitasking source as an ASCII CP/M
                file.

(UTILITY.BLK is the same in both 8080 and 8086 systems)

UTILITY.BLK     The CP/M interface, editor, and high level multitasking
                support as an ASCII CP/M file.

(Now the 8086 system files)

F83.CMD         A binary, ready-to-use 8086 FORTH CP/M system including an
                editor, assembler, and many FORTH utilities.

F83-86.DOC      A message from the primary implementors including instructions
                on how to use F83 to compile itself.

META86.BLK      The meta source and F83 screens as an ASCII CP/M file.

EXTEND86.BLK    The extension screens as an ASCII CP/M file.

CPU8086.BLK     Assembler, debugging and multitasking source as an ASCII CP/M
                file.

(UTILITY.BLK is the same in both 8080 and 8086 systems)

UTILITY.BLK     The CP/M interface, editor, and high level multitasking
                support as an ASCII CP/M file.

Ted Shapin.
-------

From: [email-masked] (Tom Almy)
Newsgroups: net.lang.forth
Subject: Bug in NVSS Forth 83
Date: Wed, 7-Mar-84 15:22:33 PST
Organization: Tektronix, Beaverton OR

I have found several bugs in No Visible Support Software's Forth 83
implementation (this is the one being distributed "public domain").
The problems exist for all versions.

1. In its enthusiastic approach, F83 implements two methods of printer control!
The actual technique is to vector the EMIT word (emit is defined as a DEFER
word) and then deposit (EMIT) (PRINT) or (PEMIT) into it as appropriate.
The system also maintains a user variable, PRINTING, which is ON if (PRINT)
is active.  Unfortunately, on error PRINTING gets reset, but not the
vector word, so error messages go to the printer!  The fix to this is to
either get rid of PRINTING and have the error handler reset EMIT
or have PRINTING actually control the destination of output.   I feel
that the second technique is better for the multi-user environment (see
end of this posting).

2. I came across this problem when I had a background spooling task get
an error.  It went back to the INTERPRET loop requesting a key along with
my main task -- I had to reboot to get out of that one!  The fix seems to be
that background tasks must STOP when they enter INTERPRET. Perhaps add a
new user variable called "BACKGROUND".

3. If you want to use the multitasker, be sure to execute MULTI before
creating your tasks, otherwise the system will crash when you attempt to
WAKE the new task.  The solution is for MULTI to be executed automatically
upon Forth startup.  Having the multitasker active all the time involves
minimal overhead.

	I am attempting to make F83 into a multiuser Forth for the some
Forth classes that I teach.  To do that, just about every system variable
must be a user variable.  The CP/M IOBYTE will also be made part of the
task status-- by changing IOBYTE values I can have the OS vector KEY and
EMIT among the keyboard/display, and the two RS-232 ports.  Each of the
three users will be able to have over 8k of dictionary space and be able
to use all the system utilities except for the debugger.  Since the
identical code will work on my LOBO MAX-80 as well as the TRS-80 Model II,
I will be able to have 6 users active at once.

Tom Almy, Tektronix, Inc.  {many machines}!tektronix!tekchips!toma

FigForth is a set of extremely-similar, very compatible Forth implementations
for a number of micros.  It was done by the very early members of the
Forth Interest Group and was placed in the public domain, in order that
the hobbyist community at large could have access to reasonable Forth
implementations.  This was a very noble effort, and was quite successful.

The fig implementation has served as the model for a lot of Forth
implementations since then.  The term "fig forth" is now often used to
mean any forth implementation which is based on the original public-domain
implementations or which is compatible with the Forth dialect used by those
implementations.

Vanilla fig forth is pretty primitive by today's standards.  The latest Forth
standard is Forth 83, for which an excellent public domain implementation
exists.  The implementation is called F83.  It is available for the 8080,
the 8086, and the 68000, all under CP/M.  The 8080 and 8086 versions are
in the Simtel-20 archives on the ARPANET.  All versions are available on
disk for $25 each from No Visible Support Software, P.O. Box 1344, 2000
Center Street, Berkeley, CA 94704.  An Apple II version is available
(with support) for $100 from MicroMotion, 12077 Wilshire Blvd., Ste. 506,
Los Angeles, CA 90025.  MicroMotion also has a book describing the F83
dialect, "Forth Tools", for $20.

May the Forth be with you,
Mitch Bradley
Sun Microsystems, Inc.
sun!wmb