Serial Terminal: Software


E4thcom, Copyright (C) 2013-2017 Manfred Mahlow and licensed under the GP. is my preferred serial terminal for Mecrisp-Sterllaris for the following reasons:-
  1. Conditional and unconditional uploading of source code via # require directives

    I can’t stress how important this one feature is as it allows all the forth code dependencies in your project to be automatically uploaded to the target in the order you specify.

  2. Files already uploaded with “#r” or “#require” will be ignored if they are uploaded again (via a Dictionary check) , preventing Word redefinition memory wastage.

  3. If uploading is aborted with an error message, typing #edit [Enter] or #e [Enter] at the terminal will open the uploaded file with the cursor placed in the line that raised the error.

  4. One can create a file in your editor with the #edit [Enter] or #e [Enter at the terminal. the dotfile ~/.e4thcom-0.6.1 needs to know about your editor.

  5. Mecrisp-Stellaris plug-in for upload flow control and error handling

    This means that without any flow control, uploading will be as fast as possible, no delays!

  6. Editable command line buffer with history and tab selection

    No more re-typing commands

  7. Predefined code path searching for libraries and mcu

    A neat and organised file project hierachy

  8. Commented text in a Forth file will not be uploaded to the device, only echoed in the terminal.

Operating system availability

E4thcom is supplied as a binary release for:-

  1. Linux
  2. Raspberry Pi

If you have FreeBsd like I do, then you can use it via a RaspberryPI or Linux Emulation (not tried).

Get the binary release for this URl:

Using e4thcom

File Structure

Start E4thcom in your project directory, and make sure that any libraries are located in lib/ in that directory. E4thsom will search the project directory and the lib/ directory when you instruct it to require any files. See the E4thcom doc in the release for more information.

Set your editor in .e4thcom-0.6.1 which should be located in your home directory after copying it there from the release tarball.

Starting e4thcom on a RaspberryPi


Be sure to use your serial port device when connecting to Mecrisp-Stellaris.


For Mecrisp-Stellaris the option -t mecrisp-st must be used. The -t mecrisp option will only work as long as no resource files are used.

e4thcom -t mecrisp-st -d ttyUSB0 -b B115200


Logging e4thcom is also handy and easily done in Unix like so:-
e4thcom -t mecrisp-st -d ttyUSB0 -b B115200  | tee e4thcom.log

Other Serial Terminals


This Serial Terminal is written by JeeLabs using the GO programming language, for Linux, Mac and Windows. I tried it in FreeBSD but it wouldn’t compile at the time.

Folie has the following features:-

  • A front end for Mecrisp-Stellaris, i.e. a terminal emulator like picocom or Tera Term
  • Easily find (ctrl-R) and re-enter previous commands (up-/down-arrow)
  • Send source files to Mecrisp Forth as if they had been literally typed in (!send)
  • Expand include directives in the source code with the file(s) they refer to
  • Processes the “ok” prompt from Mecrisp-Stellaris so as to increase the speed of Forth sourcefile uploads.

JeeLabs is a interesting embedded site, well worth the visit:

Other Serial Terminals I have used

Forth Explorer

Python Powered

Forth Exlorer was a quick hack especially for Mecrisp-Stellaris by K.Foltman and is similar to e4thcom, but lacks the vital Forth file #include facilities and others. Forth Explorer is now unsupported.


  • No end of line delay needed: FE waits for the ‘ok’ emitted by Mecrisp-Stellaris before sending the next line. Uploading Forth programs doesn’t get any faster than this.

  • Previous Command Recall: up arrow recalls previous commands from your session for reuse, a BIG timesaver, and FE now saves this between sessions so when you use FE next time, commands used in earlier sessions are still available with the up arrow.

  • Error checking: will stop on the most errors, alerting you to that ”;” you forgot ;-) including :-
    • Not Found
    • Redefine
    • Unterminated string constant
    • Structures don’t match
  • AUDIBLE ERROR ALERT: FE now plays configurable SOUND BITEs on successful file upload or failure :
    • file error audible alert
    • file completion audible alert
  • Comment stripping to speed things up.

  • NEW –> Dumb Terminal Mode, switch between Smart and Dumb terminal on the fly !


FE Dependencies

  • Python
  • py-serial
  • sox
  • a couple of wav files to play for completed and error uploads, (set these in FE itself).

FE commands

Note: See the GNU Readline manual for all available commands

Description Notes
python /dev/cuaU1 starts the FE terminal emulator in Smart mode
Ctrl + D quit FE, (only in Smart mode)
!S <file> or Ctrl+R upload a file, defaults to last file
!T or Ctrl+T switch to a dumb TTY mode
Ctrl+X switch back to Smart Terminal mode

FE Notes

  • Very stable on a Freebsd machine to a STM32F0 Discovery via a USB/serial dongle
  • Forth Explorer ( is in this repo, or can be downloaded from the link below
  • []


This is a example of a Mecrisp-Stellaris terminal session
using kfoltmans

# python  /dev/cuaU7
<-  Mecrisp-Stellaris 2.2.4 with M0 core for STM32F051
by Matthias Koch

Forth> !s adc-config.txt

< editor comment: manual code snip of file upload for brevity>

<-   ok.
-> 0 <#
<-   ok.
-> 18 0 DO
<-   ok.
-> # 32 HOLD LOOP
<-   ok.
-> # #>
<-   ok.
-> TYPE ;
<-   ok.
<-   ok.
<-   ok.
-> ." B|T|V|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P" cr
<-   ok.
-> ." A|E|O|C|C|C|C|C|C|B|B|A|A|A|A|A|A|A|A" cr
<-   ok.
-> ." T|M|L|5|4|3|2|1|0|1|0|7|6|5|4|3|2|1|0 " cr
<-   ok.
-> @ binary ADC_CHSELR-PRINT-LOOP. decimal cr ;

< editor comment: manual code snip for brevity, the code has
successfully uploaded without error>


< editor comment: now about to run a word called "t" >

Forth> T
-> T
<-  *** STM32F0xx ADC Configuration Printer ***
<- ADC-CLOCK ON (RCC_APB2ENR bit 9 = 1) 
<- ADC is ENABLED (ADC_ADEN bit 0 = 1)
<- EOC (End Of Conversion) = 0 (ADC_ISR bit 2 Read Only), NO ADC
 conversion is waiting to be read 
<- EOCIE (EOC Interrupt Enable) = 0 (ADC_EOCIE bit 2 Read Only) EOC
 Interrupt Disabled 
<- ADC_CHSELR: NO ADC CHANNELS are being scanned! 
<- 1 in any bit position (3rd line below) means the ADC will scan that
 channel/pin during a conversion 
<- B|T|V|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P
<- A|E|O|C|C|C|C|C|C|B|B|A|A|A|A|A|A|A|A
<- T|M|L|5|4|3|2|1|0|1|0|7|6|5|4|3|2|1|0 
<- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
<- ADC BATtery measurement is DISABLED (ADC_CCR bit 24 = 0) 
<- ADC TEMperature Sensor is DISABLED (ADC_CCR bit 23 = 0) 
<- ADC VOLtage Reference is DISABLED (ADC_CCR bit 22 = 0) 
<-  ok.


A useful serial terminal for quick tests:

To connect Picocom it is run this way :-
picocom -b 115200 /dev/cuaU0 --imap lfcrlf,crcrlf --omap delbs,crlf --send-cmd "ascii-xfr -s -l200"
Command Description
picocom excutable
-b 115200 baud rate of 115200
/dev/cuaU0 the PC serial device, yours may differ
–imap lfcrlf,crcrlf input char mapping
–omap delbs,crlf output char mapping
–send-cmd “ascii-xfr -s -l200 200mS line delay to give the compiler time when uploading files
Some useful Picocom Commands
Action Description Notes
quit <ctrl> A Q  
upload a file <ctrl> A S this command has TAB completion

Picocom Pic