Forth

Forth is a computer language invented by Chuck Moore and is best described by his comments to the introduction of "Starting Forth" by Leo Brodie. Chuck had this to say:

Chuck goes on to explain one of the guiding concepts that keeps FORTH programmers choosing to use FORTH over more current languages:

In the many years of doing programming, that last paragraph is the most important. The simple clean programs ran without issue, while the more complex and supposedly state-of-the-art with the latest concepts in use, were the buggiest and most difficult to update. Forth in its simplicity makes programming fun, easy, and produces nearly bug free results. I have heard that since its release, FIG Forth 83 users have never found a bug in that release. Something unheard of today, when some programs have patches weekly.

Forth examples

Many years back when I was doing my masters in Computers and Education, I needed to produce a computer based training program as my master project. I created a tutorial on forth using F83 forth. While other students used the current and more typical programs of the time. The results was rather predicable, I had mine done 100%, while the others had only 30 to 60% completed. The problem was the complexity of the current batch of tools. The tools were so difficult to work with, the other students were lucky to get more than a page of data entered a day. While using forth I was able to get my basic outline running in a few hours, and was proofing the final results by the end of the week. You can find the program, f83tutor.zip here.

The are plenty of Forth examples available on the web and any search engine will turn up plenty of links. The official site to start with is the "Forth Interest Group" or FIG. You can find it at http://www.forth.org . A very popular version of forth for use on both Linux and Windows is the GNU version called gforth. You can get gforth here .

Forth and embedded processors

One area of forth usage that has not dimished over the years, is embedded applications. There are many features of forth that make it ideal for embedding. The compactness and often a direct relationship between assembled instructions and forth words, make it the ideal programming language.

I am currently working with a special version of forth, called MyForth. Developed by Charley Shattuck, with lots of help from Bob Nash. This version is intended for embedding in small 8051 based projects. They currently feel the product is not commercial worthy as it has too many personal enhancements, and is more an exploration of concepts than a real product. Don't get them wrong about how it works, as they have developed some real working products using this code.

The main features of this forth, is the use of macros and macro like instructions to generate 8051 assembler instruction. Using SEE, a forth word or instruciton, it will dissasemble the current code into assembler instructions so you can see if your doing what you wanted to do. Like other embedded forths, you use gforth running on a PC to talk to the project cpu as if you were running a full development platform on your project board. This tethering of the forth to the product is what makes development extrememly fast and efficient.

MyForth for SiLabs 8051s

Although not a commerical product, it is ready for use and you can get a zip of MyForth as of 09/2009 here. Give it a try and see what you can do - it works on both windows and linux, after you load gforth on your system. You will find a manual with plenty of explanations in the DOC section. The latest version of the manual is here as a pdf.

Hope you enjoy FORTH, I sure have.