One of the big problems with Forth implementations in home computers is that they almost always use cassette-based data storage. Using cassettes can be inconvenient at the beat of times, but Forth always seems particularly ill suited to it.
As you will see from the memory map (Figure 3) Forth allots an area in high memory for disk buffers. Most disk based systems have a 4K buffer area and data is written to and read from the disk in 1K 'blocks'. There are thus four separate buffers and n disk blocks depending on how many K the disk will hold.
Manipulation of the disk buffers depends largely on the single word BLOCK. Essentially this word, given a disk block number, will read the required block into the least recently used buffer and leave the starting address of that buffer on the stack. It's actual operation is more complex and is illustrated by the flowchart in Figure 4.
As you'll have gathered, an unexpanded Forth system presents the user with a low level language with infinite potential but few sophistications. The idea is to allow the greatest control over your machine using the simplest possible set of basic functions. Some suppliers provide various extra utilities as source code, though frequently you will find yourself rewriting them to your own specifications. At the very least, however, you should expect a standard line editor with which to enter source onto disk blocks (the source of programs compiled from the keyboard is not saved) and a full set of assembly language primitives which can be used to create normal forth words.
Although the nucleus itself should contain a fairly standard set of words, there are three distinct types of Forth compiler. FIG Forth is one created according to guidelines laid out by the Forth Interest Group, while Forth-79 is based on the work of the Forth standards team. The third type, Polyforth, is Forth Inc's proprietary product.
Both FIG Forth and Forth-79 are in the 'public domain', that means that anyone can produce such a compiler without fear of copyright infringement. This explains the large number of such systems on the market.
It has been claimed that Forth offers an operating system, low-level language and high-level language in one homogenous package. If you look at the pie chart (Figure 5), however, you'll see the professional use of Forth is almost entirely confined to low-level programming tasks such as industrial control system. It seems that the control which Forth gives the programmer over a machine makes it an ideal tool for applications which might otherwise be written in assembly language, while its lack of sophisticated I/O or inherent file handling facilities tends to put off programmers used to conventional high level languages.
The future of Forth in applications such as control systems and robotics is now assured. Whether it can compete in the world of business software, jostling for position with languages such as Basic, Cobol, Pascal and C, remains to be seen. Whatever the outcome, one fact remains: a Forth system is limited only by the imagination of the programmer.