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 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!
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
- 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
7.5.2013: release 5.3¶
- core: 2nd generation of Recognizer and their use for native String literals.
- core: renamed edp to ehere. here points to data space, ehere points to eeprom data space.
- core: merged code for defer’s and value’s. Speed improvements for defer actions.
- community: MMC/SD-Card from Lubos (So Sorry for beeing late) and TCP/IP (Telnet). Many Thanks to Jens. Speed optimized words for SPI in amforth core.
- doc: Japanese Getting Started
- doc: new recipes: Forward Declarations, Extended VM, Quotations, Exceptions, Coroutines, updated recipes: Serial Peripheral Inteface SPI, Arduino Hello World
More To Read¶
- User’s Manual
- Where do I find more information?
- How do I start with amforth?
- How do I use amforth interactively?
- There are no hexfiles in the distribution archive!
- I get no serial prompt!
- What do all the words do?
- Can I embed amforth into other programs?
- Can I use code written in C (or any other language) with/in amforth?
- How do I send forth code to the system?
- I found a bug
- Does amforth run on hardware xy?
- What about the fuses?
- What about boot loaders?
- What do I need for linux?
- How do I use Atmel’s assembler with linux?
- What resources are available in my own assembly words?
- What is the release policy?
- Technical Guide
- Reference Card
- 23.12.2013: release 5.2
- 5.4.2013: release 5.1
- 27.12.2012: release 5.0
- 27.7.2012: release 4.9
- 26.3.2012: release 4.8
- 4.2.2012: release 4.7
- 6.10.2011: release 4.6
- 29.6.2011: release 4.5
- 24.5.2011: release 4.4
- 1.5.2011: release 4.3
- 19.9.2010: release 4.2
- 2.9.2010: release 4.1
- 1.7.2010: release 4.0
- 25.5.2010: release 3.9
- 25.4.2010: release 3.8
- 24.1.2010: release 3.7
- 1.10.2009: release 3.6
- 1.9.2009: release 3.5
- 11.4.2009: release 3.4
- 22.2.2009: release 3.3
- 10.1.2009: release 3.2
- 10.11.2008: release 3.1
- 17.10.2008: release 3.0
- 1.8.2008: release 2.9
- 27.6.2008: release 2.8
- 5.4.2007: release 2.7
- 27.1.2008: release 2.6
- 6.12.2007: release 2.5
- 11.10.2007: release 2.4
- 29.7.2007: release 2.3
- 17.6.2007: release 2.2
- 22.5.2007 release 2.1
- 2.5.2007 release 2.0
- 25.4.2007 release 1.9
- 10.4.2007 release 1.8
- 3.4.2007 release 1.7
- 25.3.2007 release 1.6
- 14.3.2007 release 1.5
- 5.3.2007 release 1.4
- 24.2.2007 release 1.3
- 3.2.2007 release 1.2
- 20.1.2007 release 1.1
- 4.1.2007 release 1.0
- 17.12.2006 release 0.9
- 7.12.2006 release 0.8
- 24.11.2006 release 0.7
- 20.11.2006 release 0.6
- 13.11.2006 release 0.5
- 5.11.2006 release 0.4
- 31.10.2006 release 0.3
- 27.10.2006 release 0.2
- 16.10.2006 release 0.1