Charles Moore, Forth, and Computer Cowboys
colorForth.com Chuck Moore's website
Chuck Moore invented Forth in the 1960s. The first paper published on Forth
was FORTH - A Language for Interactive Computing
written in 1970. It is very interesting to see how
Forth has evolved over the years and became a widely used yet little known
Forth Inc. has an excellent paper published at the ACM SIGPLAN History of Programming Languages Conference (HOPL II) on the Evolution of the Forth
Forth provides a very simple and powerful tool to program and control a computer. Forth is based on a Virtual Forth Machine which has two stacks, one for data and one from return addresses. The language is optimized for subroutine calls and thus encourages factoring of code into small pieces called words which include code, data, and a name in a dictionary. Since all code and data get organized as "words" these "words" are a sort of master class of objects. Forth provided the first "integrated development environment". Even twenty years ago Forth systems provided a stand alone OS, a command interpreter, a compiler, a code editor, and other tools on very small systems.
Forth has been found to be particulary useful for fast development and for testing of new hardware. For this reason it has often been the first language implemented on a new computer system.
The simplicity and portability of Forth led to its use as the boot language on SUN workstations. Open Firmware has also been adopted as the language for implementing portable BIOS code for cards on several new busses. SPARC, PowerPC, and Intel x86 microprocessors will be booting up in Forth on many systems being developed today. For more information look into FirmWorks
Sun offers the Open Firmware Home Page
The Forth langauge is available in many commercial and public domain forms.
The Forth Interest Group is a non-profit organization to support the Forth programming language and Forth community.
Ten years ago the Forth virtual machine was first implemented in hardware. The NC4000 from NOVIX was a 16 bit microprocessor with an architecture and instruction set modeled on the Forth virtual machine and the Forth language. The NOVIX chip used separate memory busses for the memory holding the data stack, the return stack, and the program memory. This allowed it to access all of these memory spaces at the same time. Thus it could execute several Forth operations in the same clock cycle when they operated on different memory spaces. Although implemented on a standard gate array device, with only 4000 gates, it was one of the fastest chips of its time.
Harris then purchased the NOVIX design and produced the RTX-2000 series of 16 bit Forth microprocessors using standard cell technology.
Dr. Philip J. Koopman Jr.'s Stack Computers: the new wave -- an online book is the best reference available on Stack Computers.
He also has an excellent paper there Why Stack Machines? He has also placed US Patent #4,980,821 16 Bit Stack Computer. He also offers a most thought provoking paper entitled A Preliminary Exploration of Optimized Stack Code Generation
Chuck Moore went on to develop a 32 bit Forth Engine called Sh-Boom, again in a gate array. The Sh-Boom chip used up to four 8 bit Forth instructions in each 32 bit memory cell, and could execute up to four Forth instructions per memory access. Sh-Boom demonstrated that a 50 MIP Forth chip could be build with very few gates on a gate array.
Patriot Scientific developed a sucessor to the original shboom. The market In addition to the NOVIX, and Harris chips there have been other Forth Engine chips produced. John Hayes, Marty Fraeman, Robert Williams, Sue Lee, Tom Zaremba, Bob Henshaw, and Jay Dettmer completed 3 generations of 32-bit Forth engines at John Hopkins University. The most recent, first fabricated back in 1986, is commercially available as the SC32 from Silicon Composers in Mountain View, Ca. (415-961-8778). The design of SC32 evolved from a 16-bit AMD2901 processor built in the early 80's for the Hopkins Ultraviolet Telescope. The SC32 was used in some ground support equipment for the Topex satellite and in the Freja Magnetic Field Experiment magnetometer. It is now in its 3rd year of orbital operation and the SC32 is still working just fine. SC32 is also used on the Flare Genesis balloon borne solar observatory.
Nasa has a page compiled by James Rash Space Related Applictions of Forth with information on some uses of Forth in Space by Nasa.
Frustrated with gate array development tools and interested in higher performance and lower price chips Chuck decided to investigate VLSI technology. Chuck studied the National Security Agency's CMOSN Standard Cell Library and began to design his own VLSI CAD software to develop a new series of custom chips.
OK and OKAD
A simplified version of Forth called OK was developed as the OS for Chuck's VLSI CAD system. Chuck then developed the OKAD software and used it to develop the MuP21 chip.
OK is the minimalist's operating system. OK is only a couple of K of code in any of its implementations, and it does not interpret or compile source code. It is a minimal Graphic User Interface. The GUI essentially uses 4 direction keys, three function keys, and the null key (timeout) to navigate through graphic screens with associated 8 key function tables.
OK was the platform for Chuck's CAD system OKAD (pronounced Oh CAD) in all of its implementations. It is structured like all Forth programs with small subroutines, but the first four versions of OK were all created by hacking a kernel with a debugger, then incrementally creating the rest of OKAD using OK's hex and instruction editing tools.
The MuP21 version is the first version to have source code (which is Forth) and to be assembled. Chuck's assembler for MuP21 is standard forth with a few changes to accomodate the instruction set of MuP21. Chuck's MuP21 tools are written in FPC. In a few lines he writes a structured assembler for 8 bit MuP21 boot code and 20 bit MuP21 object code. Then he writes MuP21 boot code in the 8 bit assembler, and then 20 bit code that generates the video processor instructions so that the video coprocessor can generate video output. Since there are lots of repeated structures in the video instructions for an interlaced NTSC video signal it doesn't take much Forth code. Then he writes the OK code, screens and menus.
The version of OK that is used to boot Jeff Fox's ANS compliant P21Forth for the MuP21 is OK ver F1.01. The source to Chuck's assembler and MuP21 OK version F1.01 is available online at this site.
On NOVIX, SH-BOOM, Apple IIc, and the 386 there was never ANY source! Just the same functions. Keypad input with 7 keys, a GUI based on graphic menus with 8 functions, a character set editor, a graphic screen editor, a memory editor/instruction editor, and thats OK. The first four versions had a funny character set with all the symbols to do VLSI CAD, but not the full 127 ascii characters. Since Chuck has written source code for MuP21 OK he seems to have departed temporarily from the methodology he was using. Every day he would hack a few bytes of code into an OK menu key assignment, test it out, and if it worked as expected save it as part of the system for tommorow. Somewhat Forth like, but without source code. When MuP21 OK is a bit more complete Chuck may go back to that mode of operation, since that is essentially what he does with the VLSI chip image.
Today Chuck Moore offers custom VLSI chip design services through Computer Cowboys. Long Instruction Word, Forth Core CPU design is available in virtually any size. Internal and external bus width, the number of busses, on-chip or in-memory stacks, and custom i/o processor design may all be specified.
For more information on custom VLSI chip design services contact Charles Moore at Computer Cowboys, 410 Star Hill Road, Woodside, CA 94062, (650) 851-4362