fig-FORTH, the Forth Interest Group’s Forth standard, was my introduction, at the tender age of sixteen, to the magic and mystery of Forth. I spent hours poring over the code, trying to unravel it, and, years later, finally understood all of it.

The document that I have, the “fig-FORTH installation manual” (published 1980), is one of the most interesting computing publications in my possession. In its scant 60-odd pages it not only defines but implements a language and its programming environment, and the whole thing fits into about 8k bytes.

Since my introduction to Forth (by George Maverick, then an active “figgie”), its density and gem-like crystallization (and self-referential nature, since the fig “model” defines fig-FORTH in fig-FORTH!) have been a source of inspiration, bemusement, and wonder. Its wonder is one of the inspirations for Nimble Machines, since machines running Forth are, in my experience, very nimble machines.


History

I don’t know much about the history of the fig-FORTH project, but here is a quote from the introduction in the installation manual:

The fig-FORTH implementation project occurred because a key group of Forth fanciers wished to make this valuable tool available on a personal computing level. In June of 1978, we gathered a team of nine systems-level programmers, each with a particular target computer. The charter of the group was to translate a common model of Forth into assembly-language listings for each computer. It was agreed that the group’s work would be distributed in the public domain by FIG.

So, not only was this an early exercise in portable coding, but an early open-source project as well!

My understanding is that the key “Forth fanciers” had been exposed to polyFORTH, the commercial product that Chuck Moore’s company, FORTH, Inc, sold at the time. (Chuck invented Forth circa 1970.)

Infelicities

fig-FORTH is amazing, but not flawless. It has a few infelicities, both in design and implementation.

I’ll try to explain the Forth dictionary structure, and suggest some alternative implementations (originating with Chuck Moore’s cmFORTH, and continuing in muforth).

For muforth I devised an alternative Forth text interpreter, which I think is simple and elegant.

When in 1983 Forth was standardized (as FORTH-83), the Forth community decided that signed division should floor its quotient (see symmetric division considered harmful for a discussion).

When I try demystifying create does I’ll explain in detail the history of its implementation (as I understand it), and delve into the horror and mystery of meta-compiling with create and does>.