faster searches during compiles. Compiles are now quite a bit faster than
in earlier versions of JForth.
At any time the programmer can execute MAP, which displays a map of the system as currently constituted. A new image with a larger dictionary space can be created by changing a system variable and executing SAVE-FORTH
For those familiar with more common Forth systems, there are quite a few surprises in JForth, most of them quite pleasant. As mentioned above, JForth definition bodies consist entirely of executable code. A quick DUMP of part of the dictionary is very informative on this point. Typing DEF or SEE <wordname> results in disassembly, rather than decompilation. However, if branches of the disassembled Forth word point to other high-level words possessing a name header, the name of the word branched to is printed in parentheses next to the disassembled branch.
JForth Professional CLONE is an optimizing target compiler. This means that once you have perfected your program under JForth's normal interpreter/compiler environment and you are satisfied with your code, you can invoke CLONE and produce from the compiled program an optimized, minimally sized target image suitable for commercial distribution. The output of CLONE is not a Forth system; it is your application program pared to the bone.
JForth Professional comes with the complete source to ODE, a congenial and complete object-oriented extension to JForth which allows the programmer to explore Oops! programming style without losing access to the underlying simplicity of Forth syntax. ODE has early and late binding, classes, methods and inheritance---all the tools the OOPS programmer has come to expect.
Among the 91 utilities in the JForth:util drawer are: floating point math, local variables, random numbers, graphics code, printer logging, multi-standard package (a useful item if you intend to port code over from other Forth systems), BLOCK support (}Forth uses regular Amiga text files as program source; BLOCK is a loadable option), and a JForth implementation of the routines contained in amiga.lib mentioned in the Amiga manuals.
JForth Professional features detachable precompiled modules, so you can use certain JForth resources
them permanently to the Forth dictionary. Among the modules are a set of
Amiga Includes, an assembler and the disassembler. Source code for the
modules and for the code to create new modules from your own code is included
on the JForth distribution disks.
Incidentally, the disassembler is not limited to the JForth image. Nor is the power of words like ! (store) DUMP and @ (fetch) limited to the JForth image. The JForth programmer can wander around the memory like a worrm "peeking and poking" at will. (Watch out for collisions with system structures ! )
JForth actually has two assemblers, one "traditional" reverse-polish Forth-style assembler, and one featuring Motorola forward syntax with local labels. Use the one which suits your needs. The Motorola syntax assembler is especially useful in writing code words or stand-alone routines such as interrupt handlers. The advantage of the reverse-polish Forth-style assembler is that one can resort to assembler right in the middle of a high-level Forth definition without any "magic handwaves".
Another gratifying feature of the JForth interpretive/compiler environment is that JForth has F-key mapping and command-line history and editing like that provided by the shell. The F-keys come premapped to such useful words as INCLUDE and MAP, but this can be changed at any time by the progranuner. As usual, the source for these items which comes precompiled in the recommended development image is included on the distribution disks.
JForth Professional comes with a laser-printed manual of about 300 pages in a three-ring binder. The various features of the system are described in detail. There is a tutorial for beginners in Forth, and a glossary of the JForth vocabulary. ODE, Amiga system calls, and the JForth version of C structures are all carefully documented.
JForth is the brainchild of Phil Burk, Brian Donovan, Mike Haas and Jim King. Phil and Mike recently used JForth and an Amiga to win $1,000.00 and the title of World's Fastest Programmers at the Realttme Programming Convention last November in Anaheim, CA.
The World's Fastest Programmer Contest required entrants to bring their own hardware and software and use it to program a "Mystery Gizmo" controller to wave a sawblade around
|in the air
while a set of LED's flashed out 'THE RAIN IN SPAIN FALLS MAINLY IN THE
PLAIN". With JForth and the Amiga as their development platform, Phil and
Mike had the one grand in the bag in a little over an hour, while other
programmers were fuming, fussing, and burning out the delicate stepper
motors of the Mystery Gizmo.
.]Forth Professional is alternatively known as JForth 2.0, the culmination of three years of debugging, improvements, extensions, and optimization of the original JForth 1.0. Thereby hangs the tale.
In 1986 when JForth 1.0 was first announced, the ads promised, among other things, "Optimizing Target Compiler" and free upgrades for the cost of media and postage and handling. Early purchasers eventually received the upgrade to version 1.2, which up to now has been the latest commercial release of JForth. However, the optimizer was not forthcoming, so to speak. In its place was a Turnkey utility that stripped the dictionary headers from the system, thus manufacturing a legally distributable object that did not constitute a redistribution of the underlying JForth system.
However, the object was not automatically optimized, and the programmer had to very carefully compile a minimal image by recompiling the system upwards from the kernel to achieve a distributable object of reasonable size. Furthermore, there was no way to shrink the kernel itself, meaning that any JForth program had a minimum size of about 70K.
CLONE, however, is the promised goods, and does indeed produce objects as small as about 2 1/2K. However, much has changed with JForth other than CLONE, and Delta Research came to market with the greatly expanded JForth Professional system, JForth 2.0, offering $50.00 upgrades to registered 1.2 owners.
At this point, some of the earliest buyers who had purchased on the basis of the original ad (which had been long cancelled even before version 1.2 was available) contacted Phil Burk of Delta Research and asked why Delta should not keep its original commitment to a target compiler. Phil responded by offering a CLONE-only upgrade to registered 1.2 owners for $10.00, which includes the cost of media, postage and handling. This reviewer, who has followed and owned JForth since version