A Forth compiler for Microchip PIC 18Fxxx

“J’ai vraiment besoin d’un servo”
PinGuin, April 23rd 2005, preparation of the French robotics cup

rforth1 (Robotics Forth version 1) is a Forth compiler for PIC 18Fxxx microcontrollers. The main characteristics are:

  • Native compilation (no virtual machine)
  • 16 bits cells
  • Optimized generated code
  • */ scaling operator with 32 bits intermediate result
  • Postfix and prefix integrated assembler
  • Written in Python

rforth1 was inspired by two other compilers:

  • PicForth, a Forth compiler for PIC16Fxxx also written by Samuel Tardieu
  • Pic18Forth, a Forth compiler for PIC18Fxxx, using a virtual machine, written by David McNab.

rforth1 has been developped for the robotics projects at Télécom ParisTech. and for the Telecom Robotics association to participate to the Eurobot robotics cup.


A tutorial (in French), authored by Jean-Baptiste Mayer, is online on the Telecom Robotics site.


I really want to thank the following people:

Getting rforth1

You can either download a packaged version, or get the latest development version of rforth1.

Packaged version 0.6

You can download rforth1 0.6 for Unix, distributed under the GPL.

Development version

You can get the current development version of rforth1 using git:
git clone https://github.com/samueltardieu/rforth1.git
This will create a rforth1 directory in which you will be able to record your own changes. You can also browse the rforth1 repository on GitHub.

Contributing to rforth1

Reporting bugs and asking for features

If you find a bug or have an idea for a new feature, you might consider adding a new issue. The more precise you will be in your description, the more useful it will be.

Submitting patches

Patches are gladly accepted from their original author. Along with any patches, please state that the patch is your original work and that you license the work to the rforth1 project under a license compatible with the current one (GPL).

To propose a patch, you may fork the rforth1 repository on GitHub, and issue a pull request. You may also send patches and pull requests by email.