aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 721d29f3f81fbd95f2cdce0549698d90a5ed5dcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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 = < [ ] ,
cell cell+ cells base here allot latest negate invert 1- 1+ aligned align : ;
literal if then else ' ['] execute decimal hex . emit begin until again while
repeat >r r> 2>r 2r>
```

## 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