Forth and UltraTechnology
The work at UltraTechnology is a example of the vision of Forth as seen by the inventor of Forth, Charles Moore. One of our goals has been to create computers with 1000 times fewer transistors than conventional computers and to make them 1000 times smaller, cheaper to manufacture, easier to program, and lower power consuming than conventional systems. Our software tools, operating systems, GUIs, and application programs are 100 to 1000 times smaller than the software in conventional computers. We can demonstrate them on computers with 1000 times fewer transistors than conventional computer hardware or on conventional computer hardware.
"What I am trying to do is not create the simplest hardware, or the
simplest software, but the simplest combination of the two."
Chares Moore 6/6/93
One client's application was reduced in size and improved in speed by an order of magnitude by moving it from M.S. Windows to Forth Inc.'s PolyForth. We then ported the application, OS, and GUI to a MISC and reduced its size by two more orders of magnitude. It was about 16 megabytes and was reduced down to about 16 kilobytes on a machine with 1000x fewer transistors.
"If it isn't 100 times smaller than 'C' it
Chuck's OKAD program for designing and simulating his custom VLSI chips is another example of how this approach to software design and hardware design produces systems that have 1000x less complexity than conventional systems.
Chuck Moore's latest presentations give a detailed description of his ideas on Forth in a video presentation on 4/13/99 entitled 1x Forth. Chuck explains that good Forth programs are 100 times smaller than 'C' programs and are only 1x times as big as they should be. On 5/22/99 Chuck Moore gave a presentation to SVFig Dispelling the User Illusion where he explains how he makes the hardware and software so simple that you just have 1000x less complexity to deal with in every way.
In the late sixties Charles Moore developed the Forth programming language and published the first paper, Forth - a Language for Interactive Computing in 1970. There is an excellent early history of Forth at the Forth Inc. website. In 1985 Chuck left Forth Inc. to begin designing Forth chips. In the fifteen years since then he has continued to refine his ideas about designing chips and programming computers. He has gone from PGA to standard cells to true custom VLSI design using his own tools. He has done this to sequeze out the last potential order of magnitude of his own productivity and of the performance of his software tools and computer chips.
In those same fifteen years his ideas about progrmming in Forth evolved through four stages: Hardware Forth, OK, Machine Forth, and Color Forth.
The first stage was Hardware Forth or Chuck's cmForth for his Novix Forth chip. This Forth used an optimizing native code compiler with many simplifications over traditional Forth. DO LOOPs were replaced by FOR NEXT constructs and separate INTERPRETTER and COMPILER wordlists were used to simplify the Forth internals. A simple metacompiler was included and the system could recompile itself from 30K of source code on BLOCKs in a wink. Chuck felt however that the approach was not portable because it was so specific to the details of the Novix chip and wanted a simpler and more portable approach. Pygmy Forth for the PC was derived from cmForth. The most documentation on Novix and cmForth appeared in the publications of Offete Enterprises Inc.
The second stage was first called Three Forth (3/4th) and later called OK after the Forth prompt. This was an experiment in sourceless programming. OK is a system of graphic menus each with eight selections strung together. OK as an OS includes a set of tools written in OK that provide the menus, a graphics screen editor, a character set editor, a hex memory editor, an instruction editor and decompiler. The closest thing it had to source was a name dictionary with some labels for the decompiler. The idea was to make code that could be decompiled unambiguously. It was the minimum needed as a platform for his VLSI CAD packaged called OKAD. (Oh CAD) The menus in OKAD were documented in an issue of More on Forth Engines. OK was implemented on the Novix, the Apple IIc, the ShBoom, the 386, and the MuP21. A 386 implementation of OK is available from Offete Enterprises Inc.
The third stage in this period is what Chuck called Machine Forth. Machine Forth uses source code like traditional Forth. The virtual machine had been updated in the model to fit the changes Chuck has developed over the years for new Forth hardware and has removed some of the programming constructs that have migrated to Forth from other languages over the years. Chuck explained that BEGINs were better than DOs or FORs and that X X X X X was better than 5 0 DO X LOOP. So far Machine Forth has been implemented by various people for the MuP21, Pentium, F21, i21, 68HC11, and ARM procesors. Machine Forth is a very small portable native code Forth compiler using subroutine calls and inlining of primitive words. Machine Forth was Chuck's smallest and fastest Forth done to date. There is a copy of a Machine Forth compiler for MuP21 in the OK ver 1.01 OS for P21Forth at this site. And there are Machine Forth compilers for F21 in the free F21 simulator and the free F21 emulator. I will be posting video tape tutorials and HTML tutorials for the implementation and use of Machine Forth.
The fourth and latest stage is what Chuck calls Color Forth. Chuck describes his Color Forth as, "brutally simple." Chuck's Color Forth is implemented in his OK OS inside of his OKAD program. It was developed to facilitate writing scripts to automate simulation tests in OKAD. It was also designed to be the smallest, fastest, and simplest Forth Chuck has done yet. His goal was to get a Forth with 1K of source and 1K of compiled object code. To support this he uses the Color of words to represent the syntax in the language freeing the part of the mind that recognized semantic meaning for just that purpose. This replaces some Forth words with color change tokens in the source and simplfies the internals of the interpreter and compiler. The phrase,
has the same meaning as the traditional Forth phrase,
: Color Forth
If Forth is not an immediate* word they both mean define the new word Color and compile the word Forth into the defintion and then end the defintion. Chuck's Color Forth is based on his Machine Forth and built in his OK OS, but the concepts of Color Forth can be explored in other implementations and Chuck has been encouraging people to experiment with it and publish their results. Chuck's latest description of his Color Forth can be found in the transcription of the first 50 min of his Fireside Chat 1998 on 11/30/98 to the Silicon Valley Chapter of the Forth Interest Group.
Chuck's latest video presentations on 4/13/99 entitled 1x Forth explained that good Forth programs are 100 times smaller than 'C' programs and are only 1x times as big as they should be. On 5/22/99 entitled Dispelling the User Illusion explains that Chuck would like to make computers 1000x smaller and simpler so that people could see past the illusion of complexity.
UltraTechnology also offers information about programming parallel processing extentions to Forth by Dr. Michael Montvelishsky and Jeff Fox as well as AI, expert system, fuzzy logic, neural simulation tools, GUI, and other useful software tools. Related Documents linked by author in the People at UltraTechnology document.
Netscape Open Directory Cool Site.
Links2go Key Resource award
2512 10th Street
Berkeley, CA 94710