AmForth

AmForth is an easily extendible command interpreter for the Atmel AVR8 Atmega micro controller family. It has a turnkey feature for embedded use too.

AmForth runs completely on the controller. It does not need additional hardware beyond a power supply. It makes no restrictions for hardware extensions that can be connected to the controller.

The command language is Forth. AmForth implements an almost compatible ANS94 indirect threading 16bit Forth. There are some extensions from the Forth 2012 standard.

The interpreter has a command prompt in a serial terminal. Other connections like TCP/IP telnet or radio links are possible.

AmForth is published under the GNU Public License v2 (GPL).

AmForth needs approx. 8KB Flash memory, 80 bytes EEPROM, and 200 bytes RAM for the core system.

Karl Lunt has written an excellent User’s Manual on how to start and work with AmForth. For those who want to take a deeper look into the system is the Technical Guide. The whole documentation is available as PDF and EPUB.

Leon made a very good intro into amforth and his floating point library on youtube. Worth watching!

Recognizers

The goal of a recognizer is to dynamically extent the Forth command interpreter and make it understand and handle new data formats as well as new synatax's. The present, 2nd generation recognizers achieve this by generalizing the classic interpreter with an API to factor the components. Recognizers are portable across different forth's. Recognizers are not a new concept for forth. They have been discussed earlier.
  1. compgroups.net/comp.lang.forth/additional-recognizers/734676 in 2003.
  2. Number Parsing Hooks in 2007.
  3. Recent developments were presented at the Euroforth conference 2012.
There is an formal RFC draft (14.9.2014) available. The papers linked below give some background information and describe the concept. Examples can be found in the code base.
  1. First Generation is an all in one implementation.
  2. Second Generation describes the factored component approach.

Work In Progress

Here you’ll find things that are not yet released but will be part of the next release. See the code section at Sourceforge to get the most recent sources

  • core: Bugfix in warm to initialize the interpreter for turnkey. Thanks to David.
  • core: +loop did not work correctly with some combinations of increment, limit and index. Simplified assembly primitves for loops.

16.8.2014: release 5.4

7.5.2013: release 5.3

More To Read