AmForth is an easily extendible command interpreter for the Atmel AVR8 Atmega micro controller family and some variants of the TI MSP430. 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 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 v3 (GPL).
AmForth needs 8 to 12 KB 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!
RecognizersThe 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.
- compgroups.net/comp.lang.forth/additional-recognizers/734676 in 2003.
- Number Parsing Hooks in 2007.
- Recent developments were presented at the Euroforth conference 2012.
- First Generation is an all in one implementation.
- 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(AVR): icompare got the same return flag semantics as compare. The leave and ?do forward branches are now resolved at compile time, saves one cell per loop on the return stack at runtime.
- core: re-arranged source files: controller specific and common code.
- New architecture: MSP430 (G2553) with code from Camelforth.
- core: changed license to GPLv3.
- core: generalized existing Configuration Stacks in EEPROM into map-stack, get-stack and set-stack. Used for the search order and the recognizer stacks.
6.10.2014: release 5.5¶
- core: Bugfix in warm to initialize the interpreter for turnkey. Thanks to David.
- core: bugfixes for handling some negative numbers in +loop and */.
- core: simplified assembly primitves for counted loops. They are now faster except for i. The return stack gets different numbers now.
- core: rewrite of accept. The user visible change is that the final CR/LF is no longer sent here. The forth text interpreter does it elsewhere thus the user interface is unchanged.
- core: Fixed a regression introduced after 5.1: a<b is not always the same as a-b<0.
16.8.2014: release 5.4¶
- lib: Almost complete Blocks wordset support. Only a few dark corners behave differently.
- lib: renamed TWI to I2C, added many tools for it I2C EEPROM VALUE, I2C EEPROM Blocks and a few more.
- recipes: Test Driven Development with Amforth, Conditional Interpret
- lib: Fully support the ANS94 String wordset.
- core: Double cell return stack access words (2>r and 2r>) missed the internal swap’s. Added new 2r@.
- lib: Limited LOCALs