Chuck Moore and Forth
Abstract
Charles H. “Chuck” Moore (born 1938) built Forth, a programming language with almost no syntax, in which a program is a growing dictionary of small “words” that pass their data on a stack. He developed it as a personal toolkit through the 1960s, named it in 1968, and made his reputation with it in 1971 by controlling the National Radio Astronomy Observatory’s 11-metre telescope at Kitt Peak. In 1973 he, Elizabeth Rather and Edward Conklin founded FORTH, Inc. Forth fitted into the few kilobytes of early microcomputers, ran telescopes, airports and package-tracking terminals, and became the language of the Open Firmware boot ROMs in Sun, Apple and IBM machines. From 1983 Moore designed processors that executed Forth directly; a radiation-hardened descendant flew on the Philae comet lander, and his last company, GreenArrays, puts 144 tiny computers on one chip. His rule for all of it was “Keep it simple.”
Programs for Satellites
Charles Havice Moore II was born on 9 September 1938 in McKeesport, Pennsylvania, and grew up in Flint, Michigan. He graduated from high school in 1956 as valedictorian, with a National Merit scholarship to MIT, where he studied physics. As a student in 1958 and 1959 he worked for the Smithsonian Astrophysical Observatory, writing Fortran II programs on an IBM 704 to predict where volunteer observers of the Moonwatch programme should look for satellites, and then a compact assembler version to compute satellite orbits. To change what such a program did without rewriting it, he made it read its instructions from punched cards as a series of words, each looked up and executed in turn, including conditional words such as IF and ELSE. That card-driven interpreter was the seed of Forth. At MIT he also took the LISP course of John McCarthy (see John McCarthy and LISP).
He finished his physics degree (his own biography gives 1960, the history of Forth he co-wrote gives 1961) and went to Stanford for graduate study in mathematics. Working part-time at the Stanford Linear Accelerator Center, he wrote Algol programs on a Burroughs B5500 to optimize the steering of the electron beam, and a data-fitting program called CURVE. In 1965 he left for New York as a freelance programmer. Over the next years he wrote a Fortran-to-Algol translator for a time-sharing service, programmed a real-time gas chromatograph on his first minicomputer, and carried his interpreter from machine to machine, rewriting it each time and keeping what he found he needed.
The Name
In 1968 Moore worked for Mohasco Industries, developing graphics software on an IBM 1130. When he converted an Algol chess program of his to the system he had been carrying with him, he gave it a name for the first time. The name was meant to suggest the fourth generation of computers, and he called it FOURTH. The 1130’s operating system allowed file names of only five characters, so he dropped the U. In 1970 he moved Forth to a Univac 1108 for an order-entry network at Mohasco; the company cancelled the project, and Moore wrote the first paper on Forth before he left.
Kitt Peak
In 1971 Moore went to the National Radio Astronomy Observatory (NRAO) and wrote the first stand-alone Forth, with no operating system underneath it, to control the observatory’s 11-metre (36-foot) millimetre-wave telescope on Kitt Peak in Arizona. The system ran on two minicomputers, a DDP-116 and an H316. The 36-foot dish, built in 1967, was the telescope with which astronomers found a series of molecules in interstellar space, among them carbon monoxide. Elizabeth Rather, an NRAO programmer, was assigned to support the new system and became Forth’s first user other than its author; in 1972 she wrote the first Forth manual. In 1973 the two replaced the two-computer setup with a single PDP-11 and, together with Edward Conklin, who headed NRAO’s Tucson division, and with $5,000 from an investor, founded FORTH, Inc. to sell the language and their services commercially.
Astronomers liked the result. Forth let a programmer sit at the telescope and add a command, test it and use it within minutes, on a computer with a few kilobytes of memory, and in 1976 the International Astronomical Union adopted it as a standard language for observatories.
How Forth Works
A Forth program is a list of words separated by spaces. Numbers are pushed onto a data stack; words take their arguments from the stack and leave their results there. Arithmetic is written in postfix notation, so 25 10 * 50 + multiplies 25 by 10, adds 50 and leaves 300 on the stack, and . prints it. There is almost no grammar: the system reads a word, looks it up in the dictionary, executes it if found, tries to read it as a number if not, and complains if neither works.
The programmer extends the language by adding words. A colon starts a definition and a semicolon ends it: : SQUARE DUP * ; defines SQUARE as “duplicate the top of the stack and multiply,” and from then on SQUARE can be used exactly like a built-in word. Control structures such as IF, ELSE and THEN are themselves words that run while a definition is being compiled and lay down the branches. Traditionally the compiled definition was a list of addresses of other words, “threaded code,” which made programs very compact and the compiler very small. The whole system, interpreter, compiler and often an editor and assembler, fitted in a few kilobytes (the Jupiter Ace held its Forth in an 8 KB ROM), and it was its own development environment: a programmer could define, test and redefine words interactively on the target machine without restarting it.
The consequences were cultural as much as technical. Forth programmers factored their programs into dozens of tiny words with descriptive names and built up a vocabulary for each problem. Moore’s principles, as he and his co-authors summarized them in 1993, were “Keep it simple!” and its corollary, “Do not speculate!”: do not add features for problems you do not have.
Forth Everywhere
FORTH, Inc. ported the language to a long list of minicomputers, microprocessors and mainframes, and from 1973 to 1983 Moore built applications on it ranging from databases to robots. In 1976 RCA hired the company to write microFORTH for its CDP1802 microprocessor. A meeting in Utrecht produced a first standard, FORTH-77, and in 1978 hobbyists founded the Forth Interest Group, which published the free FIG-Forth for the new home computers. In August 1980 BYTE devoted an issue to Forth, with an article by Moore on its evolution, and Leo Brodie’s Starting FORTH (1981) became the language’s best-known textbook. Standards followed as FORTH-79 and FORTH-83, and ANSI unified them as ANS Forth in 1994.
Forth suited the microcomputers of the early 1980s because they had so little memory. The Jupiter Ace, launched in Britain on 22 September 1982 for £89.95 by two former members of the ZX Spectrum design team, Richard Altwasser and Steven Vickers, had Forth in its 8 KB ROM instead of BASIC; about 5,000 were sold before the company stopped trading in 1983 (see Clive Sinclair and The Home Computer Boom). Creative Solutions released MacForth soon after the Macintosh appeared in 1984. The 1986 game Starflight was written in Forth, and so was the system software of the Canon Cat.
Its main home was embedded and real-time work. When Federal Express won the Malcolm Baldrige quality award in 1990, its package-tracking system ran on Forth-based handheld terminals. At King Khaled International Airport in Riyadh, Forth ran on about 500 networked processors. In November 1990 three of the four astronomy payloads on the Space Shuttle Columbia were programmed in Forth.
The most widely shipped Forth was one most users never saw. In the late 1980s Mitch Bradley at Sun Microsystems wrote the boot firmware for the SPARCstation line in Forth, because a Forth system could pack more function into a small boot ROM than ordinary machine code. Sun called it OpenBoot. Device drivers for plug-in cards were stored on the cards themselves as FCode, a compact, processor-independent Forth bytecode, so that the same card worked in any machine whose firmware could interpret it. The design became an IEEE standard, IEEE 1275-1994, under the name Open Firmware, and was used in Sun’s SPARC machines, Apple’s PowerPC Macintoshes, IBM’s POWER systems and the One Laptop per Child XO-1 (see Dead End: Sun Microsystems). Bradley left Sun to continue it at his own company, FirmWorks, and the code was released as open source in 2006.
Forth in Silicon
Moore left FORTH, Inc. in 1982 to build hardware. A Forth program spends its time pushing and popping a stack and calling small subroutines, operations an ordinary processor performs with several instructions each. A processor designed around two hardware stacks, one for data and one for return addresses, could execute most Forth words in a single cycle. In 1983 Moore co-founded Novix, completed the design of its NC4000 gate-array processor in 1984, and had prototypes early in 1985; the chip was sold as the NC4016. Harris Semiconductor licensed the design, modified it, and in 1988 launched it as the RTX2000. A radiation-hardened version, the RTX2010, built on silicon-on-sapphire, flew on the Advanced Composition Explorer, the NEAR Shoemaker asteroid probe, the TIMED satellite and Philae, the lander that the Rosetta mission set down on a comet in 2014.
Moore kept going smaller. Working as Computer Cowboys, he designed the 32-bit Sh-Boom with Russell Fish in 1985; licensed to Patriot Scientific, it later appeared as the PSC1000 and became the basis of the “Moore Microprocessor Patent” portfolio, which its owners asserted against computer manufacturers for years. In 1990 he designed the MuP21, a 21-bit processor of about 7,000 transistors with 24 instructions that ran at 80 MIPS, using chip design software he had written himself, OKAD. The F21 followed in 1993 with about 15,000 transistors, and the i21 for his company iTv in 1996. Around 2001 he rewrote OKAD in colorForth, a new dialect in which the role of each word, whether it is defined, compiled, executed or commented, is shown by its colour instead of by punctuation, and designed the c18, an 18-bit core meant to be replicated many times on one chip.
GreenArrays
In 2005 Moore co-founded IntellaSys as its chief technology officer; its SEAforth chips put 24 or 40 of his c18 cores on a die. He left in 2008, and in 2009 co-founded GreenArrays, Inc., again as CTO. Its GA144, made from 2011, carries 144 independent F18 computers, each with its own small memory and two stacks, arranged in a grid and communicating with their neighbours; it sold for about $20. The cores run asynchronously, without a common clock, and execute an instruction in as little as 1.4 nanoseconds. The chip is programmed in colorForth.
Asked in 2012 what he was doing, Moore said: “I’m currently programming the tiny computers of GreenArrays’ chips.” He compared the result with conventional processors in his usual terms: “We have 30 times the Mips, using 1% the power.” On software in general he was blunter: “Problems are not complex. The things we ask computers to do are basically simple,” and much of the code written to solve them was “orders of magnitude too elaborate.” He has said that he had “some influence on a small part of the world.” In 2013 Moore donated his papers on Forth from 1970 to 2002, kept until then at the GreenArrays office, to the Computer History Museum.
📚 Sources
- Rather, Elizabeth D., Colburn, Donald R. & Moore, Charles H.: “The Evolution of Forth,” History of Programming Languages II (ACM SIGPLAN Notices, 1993), online at FORTH, Inc. (SAO, SLAC, Mohasco, the name, NRAO 1971, Rather, Conklin and FORTH, Inc., IAU 1976, Utrecht and FORTH-77, RCA, FIG, standards, MacForth, Novix, FedEx, Riyadh, Columbia)
- Rather, Colburn & Moore: “The Evolution of Forth,” ACM Digital Library
- Moore, Charles H.: biography, colorforth.github.io (Flint, valedictorian, Moonwatch, MIT, SLAC, chromatograph, 1970 telescope, $5,000, chips by year)
- Charles H. Moore, Wikipedia (birth name and date, Novix, Computer Cowboys, OKAD, iTv, IntellaSys, GreenArrays)
- Forth (programming language), Wikipedia (interpreter loop, dictionary, colon definitions, threaded code, Jupiter Ace, Open Firmware, Philae, Starflight, Canon Cat, ANS Forth 1994)
- Moore, Charles H.: “The Evolution of FORTH, an Unusual Language,” BYTE, August 1980
- “The 36-foot telescope on Kitt Peak, Arizona,” NRAO (built 1967, molecules discovered, rededicated as the 12-meter in 1984)
- Jupiter Ace, Wikipedia (launch 22 September 1982, £89.95, Forth ROM, 5,000 sold, end in 1983)
- Open Firmware, Wikipedia (IEEE 1275-1994, FCode, users)
- “Open Firmware goes open source,” LWN.net, 2006 (Mitch Bradley, OpenBoot for the SPARCstation)
- RTX2010, Wikipedia (Novix NC4016, Harris RTX line from 1988, missions)
- “Chuck Moore Part 2: From Space to GreenArrays,” The CPU Shack, 2 March 2013 (Sh-Boom, MuP21, F21, i21, c18, IntellaSys, GA144 2011 at about $20, F18A timings)
- Morris, Richard: “Chuck Moore on the Lost Art of Keeping It Simple,” Simple Talk, 18 January 2012 (interview quotes)
- Woehr, Jack: “Sculpting on Silicon: An Interview with Chuck Moore,” Dr. Dobb’s Journal, June 1992
- “Chuck Moore, John Rible, Dean Sanderson and Greg Bailey collection on Forth,” Computer History Museum, catalog 102784535 (donated 2013)
- Image: Jupiter ACE (restored).JPG by Factor-h (CC BY-SA 3.0), via Wikimedia Commons
- Image: GA144-node-array-and-pinout.png by Cartheur (CC BY-SA 4.0), via Wikimedia Commons