I started learning Forth by reading Starting Forth and doing
the most of the exercises in each chapter. I downloaded and in-
stalled Gforth on my Debian machine. There were a few places
in Starting Forth where the exercise didn't line up with the be-
havior of Gforth, especially around double-length numbers. Where
Starting forth would suggest entering a double-length number by
including a comma or period, Gforth would give me an error. I
found that it was best to enter a number followed by a zero when
using words that operated on double-length numbers.
I also installed pForth and spent some time with the pForth
tutorial. pForth didn't include some things, like M*/, and
the behavior of some words was different from gforth.
I subscribed to the Gforth mailing list. I also started lurk-
ing in the #forth channel on Freenode. A lot of the discussion
in there is about implementing Forth itself, not necessarily
writing programs in forth. I also subscribed to the Forth sub-
After reading the math-centric tutorials above, watching a video
about text processing in forth by Andreas Wagner was an eye-
Thinking Forth by Leo Brodie is also recommended as an impor-
tant text for aspiring forthwrights, but I haven't read it, yet.
Some more forth links:
+o theForth.net - Package manager and repository for Forth. I
understand this targets Gforth.
+o The Evolution of Forth
+o Forth on a DIP
+o A Beginner's Guide to Forth by J.V. Noble
+o Forth Lessons
Forth lends itself to embedded environments. There are a number
of embedded forth environments available. The one that seems
most interesting to me is mecrisp by Matthias Koch. Mecrisp
targets TI MSP430 microcontrollers. Mecrisp-Stellaris is
a distribution of Mecrisp that includes support for additional
MCs, the STM32 family, in particular. I believe Terry Porter has
mentioned that he often uses an STM32F0 Discovery board for
prototyping. Terry Porter's YouTube Channel includes a num-
ber of short but interesting videos demonstrating his development
method. 0033mer's YouTube Channel also includes some videos
on using Mecrisp-Stellaris.
The more I read about development using Mecrisp, the more it
seemed I would have a lot of work to do to integrate with periph-
erals like input and output devices and mass storage. Having
even a minimal GNU/Linux environment (with a network stack!)
would cut out a lot of that work, though at the cost of some min-
imalist cach. All is not lost, however, because wiring-
Pi_gforth provides an interface to the GPIO pins on a Rasp-
berry Pi from within Gforth.
So, I could implement my first version of the event logger using
Perl on a Pi Zero, (using Steve Bertrand's RPi::WiringPi)
then in gforth on the same device and, later, port the forth ap-
plication to Mecrisp-Stellaris on an STM32. Another article on
Accessing GPIO pins from gforth. I also looked pretty hard
at the STM32F303 Nucleo board.
More MC Forth links:
+o The Mite - A 65C02-based microcomputer
+o Egel Project