**This is an old revision of the document!**
Minimal Word Set
How many primitives does a Forth need to get it started?
Surprisingly few, as you can see with Gforth EC, which provides a high-level definition for almost every primitive. But beware! If you omit too much, you risk circular behaviour (loops).
We need in any case:
:dodoes as generalized entry point for all high-level definitions, or
Call for primitive-centric implementations. @ and ! to access the memory. >R and R> for the return stack, so anything can be moved. + or 2* for Artihmetik. And NAND as a universal bit instruction. ?BRANCH or 0= for branches. And finally ;S and EXECUTE for execution.
Everything else can be defined from these words, even if it then needs temporary variables:
: lit' r> @ ; : cell lit' [ 2 , ] ; \ oder 4 oder 8 ... : tmp1 lit' [ here cell+ , 0 , ] ; : dup tmp1 ! tmp1 @ tmp1 @ ; : lit r> dup cell + >r @ ;
By Bernd Paysan, Translation Juergen Pintaske 20151121