Skip to content

MOVING FORTH

 __  __            _               _____          _   _     
|  \/  | _____   _(_)_ __   __ _  |  ___|__  _ __| |_| |__  
| |\/| |/ _ \ \ / / | '_ \ / _` | | |_ / _ \| '__| __| '_ \ 
| |  | | (_) \ V /| | | | | (_| | |  _| (_) | |  | |_| | | |
|_|  |_|\___/ \_/ |_|_| |_|\__, | |_|  \___/|_|   \__|_| |_|
                           |___/ 
Author: Brad Rodriguez
Editor: Eduardo Furlan

Last edited: 2022-02-04
Web site: https://efurlanm.github.io/home/moving_forth

I decided to create this documentation because it was difficult for me to read, study and learn easily using the original documentation, plus the fact that I enjoy taking notes as I read. There were broken links, bad formatting on the smartphone screen, files were scattered, and so on, so I decided to put everything in one place, fix broken links, add more useful links and comments, move the pictures to SVG, and format it a little better to make the consultation and study easier. Everything I've done is under the CC BY 4.0 license, and all original sources are under the author's original license.

Forth is a procedural, stack-oriented programming language and interactive environment designed by Charles H. Moore in 1968 at the United States National Radio Astronomy Observatory (NRAO), to help control radio telescopes. Today it is used in numerous spacecraft, such as the Rosetta/Philae probe which uses 10 RTX2010 processors that support direct execution of Forth. NASA has a list of space-related applications of the Forth, compiled by James Rash, at Goddard Space Flight Center Greenbelt, Maryland. Forth is generally targeted at small embedded systems and microcontrollers like the STM8 used in various consumer devices like chinese gadgets. What draws my attention to Forth is the possibility of running it directly on the microcontroller using a REPL (Read-Eval-Print Loop) programming environment that allows the programmer to interact with a running program, experiment and obtain immediate results on the microcontroller, without the need, for example, for cross-compilation and complex tools, which ends up reducing development time. Other features are also useful, such as the ease of interfacing and, because it is relatively simple, it is easy to implement and optimize for a specific architecture.

Moving Forth: a series on writing Forth kernels

This series originally appeared in The Computer Journal. Accompanying source code can be found on the CamelForth page.

Listings

These listings are part of Moving Forth and are described in the text.

The Computer Journal (TCJ)

Scanned PDF files source: http://archive.org/details/the-computer-journal

  • TCJ #52: B.Y.O. Assembler (1) (3.9 MB PDF file) [1]
  • TCJ #54: B.Y.O. Assembler (2) (2.7 MB PDF file) [1]
  • TCJ #59: Moving Forth (2.6 MB PDF file) [1]
  • TCJ #60: Moving Forth Part II (2.9 MB PDF file) [1]
  • TCJ #62: Moving Forth Part III (3.0 MB PDF file) [1]
  • TCJ #64: Moving Forth Part IV (3.4 MB PDF file) [1]
  • TCJ #67: Moving Forth Part 5 (3.1 MB PDF file) [1]
  • TCJ #69: Moving Forth Part 6 (3.7 MB PDF file) [1]
  • TCJ #71: Moving Forth Part 7 (3.2 MB PDF file) [1]
  • TCJ #72: Moving Forth Part 7.5 (3.1 MB PDF file) [1]
  • TCJ #74: Moving Forth Part 8 (4.0 MB PDF file) [1]

Forth Dimensions (FD)

Source 1 : http://archive.org/details/forthdimension (scanned PDF files)
Source 2 : http://www.forth.org/fd/FDcover.html (scanned PDF files)

  • FD #XIII:6 "Forth Systems Comparisons" (21 MB PDF file) [1] [2]
  • FD #XIV:3 "Principles of Metacompilation 1" (21 MB PDF file) [1] [2]
  • FD #XIV:4 "Principles of Metacompilation 2" (21 MB PDF file) [1] [2]
  • FD #XIV:5 "Principles of Metacompilation 3" & "Life in the FastForth Lane" (22 MB PDF file) [1] [2]
  • FD #XIV:5 "Principles of Metacompilation 3" & "Optimizing in a BSR/JSR Threaded Forth" (22 MB PDF file) [1] [2]