You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.0 KiB

foci

foci is a small Forth implementation that prioritizes performance and portability. This threaded Forth implementation uses CPU registers and native execution to maximize efficiency.

Register usage is the only platform-specific requirement; otherwise, foci is written in 100% portable C. There is active support for x86_64, ARM Cortex-M, and MSP430 architectures.

foci compiles to a binary object that can easily be linked into another application. Code size is generally a few kilobytes, while RAM usage is primarily set by the size of foci's two stacks and dictionary.

Available words

dup drop swap rot -rot over tuck @ !  c@ c!  + +!  - * / mod and or xor _c [ ]
, cell cell+ cells _d base here allot latest negate invert 1- 1+ aligned align
: ; literal _b _bz if then else \' [\'] execute decimal hex .  emit

Build instructions

Run make with a supported architecture target:

  • make x86-64: x86_64 processors (i386 is not supported)
  • make arm-cm4: ARM Cortex-M4 microcontrollers
  • make msp430: TI MSP430 microcontrollers