Skip to content
A straightforward standalone Forth implementation for x86.
Forth Assembly C Makefile Shell Common Lisp
Branch: master
Clone or download
siwells and davazp Fix minor typo
Descriptor spelt as "Descriptior" in the documentation describing the dictionary entry format
Latest commit 347e22c Aug 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
kernel add a dvorak keyboard layout and the ability to switch between layout… Jan 31, 2019
.gitignore Import current version to GIT Nov 9, 2011
COPYING Add COPYING file Nov 9, 2011
GNUmakefile GNUmakefile: add back the dependency on the linker script. Jan 31, 2019
README Fix mistype Nov 26, 2011
assembler.fs Fix # operator for literals Jul 10, 2018
blocks.fs Memory-backed blocks Apr 15, 2012
boot.S Import current version to GIT Nov 9, 2011
colors.fs More intuitive color combinations Apr 6, 2012
corestage2.fs add a dvorak keyboard layout and the ability to switch between layout… Jan 31, 2019
debugger.fs TRACE1 and TRACE instrument a word for one-shot and multi-shot tracin… Apr 4, 2012
disassem.fs Colorize the system Apr 6, 2012
editor.fs Import current version to GIT Nov 9, 2011
exceptions.fs Fix: sucessfull (zero) catchs don't unwind the stack Apr 12, 2012
forth.S Fix minor typo Aug 12, 2019 Add a "Loading" message in load-buffer Apr 9, 2012
input.fs Nested blocks Apr 24, 2012
linedit.fs Fix: Too longer lines yields in stack leak Apr 12, 2012
math.fs Import current version to GIT Nov 9, 2011
memory.fs Fix heap-size Apr 15, 2012
output.fs help the script find qemu on 64 bit systems Sep 12, 2018
string.fs Fix -trailing Apr 13, 2012
user.fs Load editor later Apr 24, 2012
vocabulary.fs Merge vocabularies and wordlists Apr 11, 2012



  Eulex is a straightforward Forth implementation for i386 machines.

  It includes almost as much Forth as I know, as well as a barebone
environment with the keyboard, terminal, timer and speaker support,
necessary to provide some common Forth words. Indeed, it provides a
convenient line editing emacs-like keybindings and completion.

  As always, a lot of features are missing. If you want to have some
fun, consider to write some of them!


  Originally, this project came up in 2009. A fellow and I started to
write an operating system. We were looking for a low level and easy to
implement language, which was fun and allowed to hack the language
itself, in order to incorporate it to that system, which we named
Eulex. I discovered Forth, and I figured out that it was a good
choice, as we wanted to recreate an old system. I set about writing an
implementation for the specification Forth79 in assembler, initially
on GNU/Linux and using the C library since it was a convenient way to
work, meanwhile my fellow implemented a simple C kernel for Eulex that
would house Forth. This implementation was never incorporated,

  Two years later, without other idea which in I could work, I took a
primitive version of the C kernel of Eulex, and I used it as a thin
compatibility layer to run the Forth implementation on the metal. Then,
I made up my mind to write the whole system in Forth. So, Forth was
ported to 32 bits and pieces of C code were rewritten in Forth.
The C layer was an useful scaffolding, as it allowed not only to use
modern tools for debugging, but build the system in the right order.
Eventually, Forth replaced C and I could move the scaffolding away,
removing the whole C code.  As outcome of that, I share this barebone
Forth system with you, with the hope that someone will have so much
fun as I have had.

Happy Hacking

You can’t perform that action at this time.