[Coco] A brief history of f83
bkheath at gmail.com
bkheath at gmail.com
Tue Apr 28 05:25:13 EDT 2009
Hello all,
This is the first of two messages intended to introduce the f83 port
I've been working on to the CoCo community.
Someone once asked "What is this f83 you keep talking about?" but
since I was email challenged at the time he was obliged to go
elswhere for an answer. Nonetheless it was a valid question and
answering it gives me an excuse to give some context that will
(hopefully) clarify the issues raised in the status update to follow.
NB: Much of the history is from memory/hearsay so don't quote me
unless you can find independent corroborating evidence:)
FORTH is a programming language developed by Charles Moore out of his
preferred practices when working (during the late '60s and early
'70s) in a wide variety of computing environments. Largely writing
telescope control programs for various Observatories.
This history is relevant here for two reasons:
1. Many of these Observatories used the DEC PDP-11 for telescope
control, a machine which AIUI has a certain architectural
affinity with our beloved 6809.
2. It's not too much of a leap to conclude that the need to be
quickly productive in a wide variety of mutually incompatible
computing environments heavily influenced FORTH's design.
Specifically a small and powerful but easy to implement "inner
interpreter" (or virtual machine) that presented a repeatible and
comfortable "outer interpreter" (or working environment) to the
programmer. But more on this later.
In addition to FORTH INC. -- founded by Charles Moore and Elizabeth
Rather -- during the 70's other companies released proprietary versions
of FORTH for various platforms. Also, FIG (The Forth Interest Group)
produced a Reference Model and public domain implementations for a
number of Microprocessors (8080, 6502, etc.).
1979 saw the first pass at harmonizing the wide variety of
implementations with the release of the FORTH-79 standard. It was
largely (though not completely) backwards compatible with FIG-FORTH.
FORTH-83 was the next standard released. Though it was essentially
intended to be evolutionary the language had grown quite a bit and
there were enough fundamental changes from FORTH-79 to make FORTH-83
programs completely incompatible with older implementations.
Also in 1983 Henry Laxen and Michael Perry wrote and released f83. A
FORTH-83 compliant implementation for CP/M-80, CP/M-86, CP/M-68k and
MSDOS-1.0. In addition to a very generous license (Unrestricted as
long as you credit the authors for their work), it differed from
previous free releases in two important respects.
1. Undoubtedly because of it's origins as an environment which had
to run on platforms that might not even have disks available,
much less a file system, FORTH traditionally saw storage as a
sequence of 1k blocks and typically dealt directly with the raw
disk (or tape) rather than any higher-level construct. F83 added
a file I/O interface to the host OS.
2. Although there were lot's of free utilities and development
tools available for FIG-FORTH you had to go out and find them
for yourself if you wanted to build up a reasonable working
environment. F83 came out of the box as a full integrated
development system with complete source for everything. Let me
emphasize this point. In addition to a number of utilities that
are merely useful, handy, or comfortable -- F83 out of the box
included everything necessary to modify and recompile any part
of the system, including the core language and development tools
themselves, without reference to any external software other
than the host OS. Not bad for CP/M .com file of only 24k!
I'll defer the explicit list of f83 components to the following
message where the status of each can be itemized.
Let me close by pointing out a not quite obvious implication of the
above for f83-coco (I haven't finalized the name yet). As long as
there's 64k of memory available f83 could quite happily recompile
itself on a tape only system. The limitations of the CoCo cassete
interface make editing tape source files problematic but there are
feasible (if tedious) workarounds. Smaller target applications could
use a stripped down version with a subset of the utilities and thus
correspondingly less memory. This means that those wishing to use
such platforms for sensing, control, or other experimental purposes
could have resident development, debugging, and protoyping
capabilities without the need to connect to an external system.
Think about that for a moment:)
Brett K. Heath
More information about the Coco
mailing list