From 2f83a0bea9da444e3d70569eba3d6847ca02be03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 21 Sep 2018 21:59:17 +0200 Subject: ... --- forth/forth/ct.fs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 forth/forth/ct.fs (limited to 'forth/forth/ct.fs') diff --git a/forth/forth/ct.fs b/forth/forth/ct.fs new file mode 100644 index 0000000..1e3ef04 --- /dev/null +++ b/forth/forth/ct.fs @@ -0,0 +1,40 @@ +\ ********************************************************************* +\ * +\ Filename: ct.txt * +\ Date: 06.01.2014 * +\ File Version: 5.0 * +\ Copyright: Mikael Nordman * +\ Author: Mikael Nordman * +\ ********************************************************************* +\ FlashForth is licensed acording to the GNU General Public License* +\ ********************************************************************* +\ create an condition table with n entries +\ each entry consists of a comparison word +\ and an execution word, which is executed if +\ the comparison word leaves a true value on the stack. +-ct +marker -ct +hex ram +: ct ( ew cw n -- ) \ compile a condition table + ( m -- m ) \ execute aword corresponding to m. + \ m may consist of several stack cells + \ it is upto the condition word to + \ preserve m on the stack + create + dup , \ store the condition table size + for + , , \ store an entry + next + does> \ m addr + dup @ \ m addr n + for + cell+ dup \ m addr addr + cell+ >r \ m addr + @ex \ m flag + if \ m + r> @ex rdrop exit \ m a match was found + then + r> + next + drop +; -- cgit v1.2.3