diff --git a/forth.h b/forth.h index 1e6f1f7..b0ab712 100644 --- a/forth.h +++ b/forth.h @@ -166,4 +166,13 @@ void do_until(Word* w); void do_while(Word* w); void do_repeat(Word* w); +/* Additional stack words */ +void do_depth(Word* w); +void do_pick(Word* w); +void do_roll(Word* w); +void do_qdup(Word* w); +void do_2dup(Word* w); +void do_2drop(Word* w); +void do_2swap(Word* w); + #endif diff --git a/main.c b/main.c index 837140a..3447169 100644 --- a/main.c +++ b/main.c @@ -99,6 +99,15 @@ int main(void) { add_primitive("while", do_while, 1 << 7); add_primitive("repeat", do_repeat, 1 << 7); + /* Additional words */ + add_primitive("depth", do_depth, 0); + add_primitive("pick", do_pick, 0); + add_primitive("roll", do_roll, 0); + add_primitive("?dup", do_qdup, 0); + add_primitive("2dup", do_2dup, 0); + add_primitive("2drop", do_2drop, 0); + add_primitive("2swap", do_2swap, 0); + // Start outer interpreter outer_interpreter(); return 0;