{{:projects:e4thcom:mfp-48.png}} ===== e4thcom - A Terminal for Embedded Forth Systems ===== Copyright (C) 2013-2026 Manfred Mahlow [[projects:e4thcom|de]]|[[en:projects:e4thcom|en]] ==== Abstract ==== //**e4thcom for Linux and OSX** is a terminal program for embedded Forth Systems with cross-assembler and cross-disassembler interface that supports **conditional and unconditional uploading** of source code. **32 and 64 Bit Linux** (X86 and Raspberry/Raspbian) and **64 Bit OSX** are supported.// //Support for OSX is new and still in status TESTING. So feedback in case of problems is greatly appreciated.// //Supported Forth Systems:// // **328eForth, 430CamelForth, 430eForth, 4e4th, AmForth, anyForth, ESP32forth, Mecrisp, Mecrisp-Quintus, Mecrisp-Stellaris, noForth, STM8 eForth, SwapForth **// The latest release is ==== e4thcom-0.9.0 for Linux ==== * 260502 : Bug fix release because with Linux kernel 6. and glibc 2.4 initializing the serial interface fails with e4thcom-0.8.5 (and 0.8.4). With e4thcom-0.9.0 now stty from the GNU Coreutils is used. * **260522 : Plug-in for ESP32forth ( -t esp32forth ) added.** {{ :projects:e4thcom:e4thcom-0.9.0-stty-260522.tar.gz | e4thcom-0.9.0-stty.tar.gz }} md5sum: 1d17517011af15c2f54960d8cd57fb26 e4thcom-0.9.0-stty-260522.tar.gz ==== e4thcom-0.8.5.2 ==== * First release with support for OSX. * First release with full source for e4thcom and MINFORTH Plus 1.5. * Plug-in for 328eForth (-t 328eforth and -t 328eforth-xas) added. {{ :projects:e4thcom:e4thcom-0.8.5.2.tar.gz | e4thcom-0.8.5.2--230503.tar.gz }} md5sum: 854c1e5423d12ec9c2e8e19483da4af8 e4thcom-0.8.5.2.tar.gz ==== e4thcom-0.8.5.1 ==== 0.8.5.1 - Minor pretty printing bug fix. 0.8.5.0 - ''#ifdef'' and ''#ifndef'' added for conditional execution of terminal directives or Forth code ( see feature list in doc/e4thcom-0.8.5,pdf ). {{ :projects:e4thcom:e4thcom-0.8.5.tar.gz |}} md5sum: c11fc33f263b7858b2715064b94d7cd8 e4thcom-0.8.5.tar.gz ==== e4thcom-0.8.4 ==== * Baudrates up to 1000000 Baud are supported now ( see //Feature List// and //Starting e4thcom// in doc/e4thcom-0.8.4.pdf ) * **''#include''** now accepts filenames up to 128 chars. * Plug-in added for Mecrisp-Quintus, option ''-t mecrisp-qs'' {{ :projects:e4thcom:e4thcom-0.8.4.tar.gz |}} md5sum: 72e563af2bf8a7fbef6f2f901fa0c22c e4thcom-0.8.4.tar.gz ==== e4thcom-0.8.2 ==== * Second command line editing mode added, readline based, enable with option **''--rln''** ( see Starting e4thcom and Buffered Command Line in doc/e4thcom-0.8.2.pdf ) * Command line buffer can be disabled/enabled at the command line with the terminal directive **''\^''** ( see Buffered Command Line in doc/e4thcom-0.8.2.pdf ) * Plug-in **swapforth-j1sc** added, option ''-t swapforth-j1sc'' ( see https://github.com/SteffenReith/J1Sc ) {{ :projects:e4thcom:e4thcom-0.8.2-64.tar.gz |}} md5sum: 6792957a4deb6404588dbb98ea25fd3e e4thcom-0.8.2-64.tar.gz ==== e4thcom-0.8.0 ==== e4thcom is now a native X86_64 Bit Linux Application, that is easily re-compiled for 32 Bit Systems (X86 und Raspberry/Raspbian). Please look at e4thcom-0.8.0/ src/README how to do it. {{ :projects:e4thcom:e4thcom-0.8.0.1-64.tar.gz |}} //(Ownership and mode bits changed for files in the e4thcom-0.8.0/src directory, required when installing e4thcom to the /opt directory.)// md5sum: e9bbe3d21b411fe4531488db0a0abe88 e4thcom-0.8.0.1-64.tar.gz {{ :projects:e4thcom:e4thcom-0.8.0-64.tar.gz |}} md5sum: c840d69e19ee0eb994d4e7d019749787 e4thcom-0.8.0-64.tar.gz ==== e4thcom-0.6.3.1 ==== Bug Fix Release for 0.6.3 : ''\res export'' failed for Mecrisp-Stellaris ( -t mecrisp-st ). {{ :projects:e4thcom:e4thcom-0.6.3.1.tar.gz |}} md5sum: b4d3985bf5d0e9410cb46465235b0c9f e4thcom-0.6.3.1.tar.gz ==== e4thcom-0.6.3 ==== Added feature: New option **-p dir1:dir2:dir3** to overwrite the default search order for source code and resource files. For further information please read //Uploading of Source Code Files// and //Using Resource Files// in the file /doc/e4thcom.pdf in the e4thcom-0.6.3.tar.gz archive. {{ :projects:e4thcom:e4thcom-0.6.3.tar.gz |}} md5sum: 5690adec7c17be4969798978b93dbcfb e4thcom-0.6.3.tar.gz ---- ==== e4thcom-0.6.2 ==== {{:projects:e4thcom:e4thcom-0.6.2-n_i.png?|}} Added features: * Second display mode * invers (black/colored letters on white background), option: --idm * normal (white/colored letters on black background), default * Support for the [Home] and the [End] key in the command line. * [Shift]+[TAB] now deletes the content of the command line. * Plug-In for the stm8eForth 2.2.15, option: -t stm8ef Supported Target Forth Systems: **430CamelForth , 430eForth , 4e4th, AmForth, anyForth , Mecrisp , Mecrisp-Stellaris , noForth , stm8eForth** For further information please read the file /doc/e4thcom.pdf in the e4thcom-0.6.2.tar.gz archive. {{ :projects:e4thcom:e4thcom-0.6.2.tar.gz |}} md5sum: 3c7936dfa08186578846d8d4d181ed31 e4thcom-0.6.2.tar.gz ---- ==== e4thcom-0.6.1 ==== {{:projects:e4thcom:e4thcom-0.6.1-h.png?|}} Added features: * Editable **Command Line with History and TAB-Selection** * **Editor Interface** for Code Debugging * Code Uploading in Half- and **Full-Duplex** * Plug-Ins for **430CamelForth**, **430eForth**, 4e4th, AmForth, **anyForth**, Mecrisp, Mecrisp-Stellaris, noForth Removed features: * Data Transmission via UDP (please use e4thcom-0.5.3) * ForthBox no longer included For further information please read the file /doc/e4thcom.pdf in the e4thcom-0.6.1.tar.gz archive. {{projects:e4thcom:e4thcom-0.6.1.tar.gz}} md5sum: 11c5cb8ce917e331da060fcccfeca9f0 e4thcom-0.6.1.tar.gz **More Plug-Ins:** {{ :projects:e4thcom:e4thcom-0-6-1-stm8ef-v2.2.15-plug-in.tar.gz |}} md5sum: 0e8db0e60f75b21e19a131cc3dc44b55 e4thcom-0-6-1-stm8ef-v2.2.15-plug-in.tar.gz {{ :projects:e4thcom:e4thcom-0-6-1-stm8ef-plug-in.tar.gz |}} md5sum: 65e298a01a96d6f25c8fcf8f5f72e2fb e4thcom-0-6-1-stm8ef-plug-in.tar.gz ---- ==== e4thcom-0.5.3 ==== * Data transmission via **serial line** or **UDP** * Bidirectional Cross Assembler Interface (allows access to target ressources) * Cross Disassembler Interface * **MSP430 Cross Assembler** for noForth und 4e4th * **MSP430 Cross Disassembler** for noForth * **ATmega Cross Assembler** for AmForth * Plug-Ins for **4e4th**, **AmForth**, **Mecrisp**, **Mecrisp-Stellaris** and **noForth** * ForthBox with improved keyboard interface {{projects:e4thcom:e4thcom-0.5.3.tar.gz}} md5sum: 559cc0a5112eee79c3b83bafa0388f7b e4thcom-0.5.3.tar.gz ==== Installation Notes ==== The e4thcom package includes the file ''/doc/e4thcom-x.y.z.pdf''. **Installing e4thcom** is described there, however, the explanation is very brief, and for Linux novices like myself, it is not immediately obvious why to do it that way. Hence, I included my notes on the subject here. May they prove helpful. mk 20250430 === Brief Introduction === In Linux systems, the `/opt` directory serves—in accordance with the Filesystem Hierarchy Standard [[https://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard|(FHS)]]—as the location for installing optional application software packages ((Yes, root privileges are required here!)). Typically, software that was *not* installed via the system's standard package manager is stored in `/opt` (e.g., specific IDEs, databases, or specialized tools). ''e4thcom'' falls into this category. A //dedicated subdirectory// is created under `/opt` specifically for the software package. This subdirectory bears the name of the package. The software's associated files and directories are then located within this subdirectory. The advantages of this FHS-compliant structure are: * **Isolation:** Each software package is encapsulated within its own directory, thereby avoiding conflicts with other programs or system files. * **Ease of Management:** Adding, updating, or removing software in `/opt` is generally straightforward, as all associated files are located in a single place. * **System Integrity:** Since software in `/opt` is not part of the standard system installation, it does not compromise the stability or integrity of the base system. It is important to note that the use of `/opt` is a convention. Some distributions or system administrators may handle the installation of additional software differently—for instance, by using `/usr/local` instead. However, the FHS recommends using `/opt` for the purposes described above. The topmost directory in the Linux filesystem hierarchy—which contains all other files and directories—is known as the *root directory*. It is represented by a single ''/'' (slash). The `/opt` directory is already established within this root directory. === Practical Procedure === And that is exactly how I proceeded on my laptop. Save the e4thcom package here: /opt/e4thcom-0.8.0 To ensure that "e4thcom" can be found from the console, a symbolic link pointing to it must be included in your PATH environment variable. Typically, such links are created within `/usr/local/bin`, which is usually already included in the PATH. You can verify this by running `echo $PATH`. On my Linux Mint system, I simply right-clicked on the `e4thcom` file, selected "Create Link" from the context menu, and then moved the resulting link to `/usr/local/bin`. That’s it—well, almost. In my case, this action generated a file named "Link to e4thcom." However, within the `/usr/local/bin` directory, the file name needs to be simply `e4thcom`. So, I just had to rename it from "Link to e4thcom" to plain "e4thcom." :) Now, the `e4thcom` command should work from any console session—even when used with options such as `-t `. This worked because I have administrator privileges on my personal Linux Mint laptop. So, in the Thunar window—which is the GUI for the Linux Mint file system—I click on the "Open as Root" option, and from that point on, everything can be done quite easily. === If You Are Not an Admin === Provided it is foreseeable that //e4thcom// will be used on the Linux system by only **one** user—namely you—it is simpler and safer to extract e4thcom into the directory ''/home/user-name/bin'' and to create the link to the e4thcom binary there as well. If this directory does not yet exist, it must be created. All of this can be done here without root privileges—that is, without SUDO—and ''/home/user-name/bin'' is automatically added to the system path. Furthermore, if necessary, you can then recompile e4thcom without root privileges; see ''~/bin/e4thcom-x.y.z/src/README''.