====== 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 2015_11_21