Shells And Upload

amforth-shell.py

The amforth-shell.py from Keith Amidon may simplify the interaction with amforth and the forth code management while uploading projects.

It is a python2 script that runs fine on Linux, other platforms may work as well. The tool takes care of the correct transfer of the source code and will optionally pre-process the sources: e.g. replace the register names with their numeric values. This saves valuable flash (dictionary) space since most of these registers are used only once.

 mt@ayla:~/amforth$ cat tools/test.frt
\ this is a test
INT1Addr .
ver 1000 ms cr
1000 ms
ver cr ver
1000 ms
mt@ayla:alias|grep amforth-shell
alias u0='$HOME/amforth/tools/amforth-shell.py -p /dev/ttyUSB0 --no-error-on-output'
mt@ayla:~/amforth$ u0 test.frt
|I=mcudef
|I=using device.py for atmega1280
|F=....test.frt
|C|    1|\ this is a test
|S|    2|INT1Addr .
|O|    2|4
|S|    3|ver 1000 ms cr
|O|    3|amforth 4.9 ATmega1280
|S|    4|1000 ms
|S|    5|ver cr ver
|O|    5|amforth 4.9 ATmega1280
|O|    5|amforth 4.9 ATmega1280

Note the replacement of the INT1Addr with 4 in line 2. This is done by using the device.py file from the core/devices/atmega1280p directory which is automagically identified and loaded at startup. And second note, that the file is found automatically in the subdirectory tools.

The amforth-shell.py utility has a lot of more features: an interactive command prompt with dynamic command completion and command history (stored across multiple invocations), a lot of runtime checks and so on. To enter an interactive session, just call it with the port name

mt@ayla:~/amforth$ u0 -i
|I=Entering amforth interactive interpreter
|I=using device.py for atmega1280
(ATmega1280)> # (and pressing TAB twice)
#                    #directive           #exit                #quote-char-word     #tib
#update-cpu          #edit                #ignore-error        #s                   #timeout
#update-words        #cd                  #error-on-output     #include             #string-start-word
#timeout-next
(ATmega1280)> #

Note that not all words displayed here are actual commands on the controller itself. The terminal provides commands itself, they start with a # (hash mark).

To locate the files, the utility checks the current work directory or, if set, the directories from the environment variable AMFORTH_LIB. Be careful when using a directory with many files, the startup may take a long time due to the directory tree scanning.

mt@ayla:~/amforth$ grep AMFORTH ~/.profile
AMFORTH=~/amforth
AMFORTH_LIB=$AMFORTH/lib:$AMFORTH/examples
export AMFORTH_LIB
mt@ayla:~/amforth$

e4thcom - A Terminal For Embedded Forth Systems

Manfred Mahlow has a nice tool for working with various Forth’s. It works primarily on Linux systems and supports among other things uploading of source code to remote systems.

More information and downloads are available at http://wiki.forth-ev.de/doku.php/en:projects:e4thcom