Lines Matching defs:env
37 void (*semi_ptr)(fcode_env_t *env) = do_semi;
38 void (*does_ptr)(fcode_env_t *env) = install_does;
39 void (*quote_ptr)(fcode_env_t *env) = do_quote;
40 void (*blit_ptr)(fcode_env_t *env) = do_literal;
41 void (*tlit_ptr)(fcode_env_t *env) = do_literal;
42 void (*do_bdo_ptr)(fcode_env_t *env) = do_bdo;
43 void (*do_bqdo_ptr)(fcode_env_t *env) = do_bqdo;
44 void (*create_ptr)(fcode_env_t *env) = do_creator;
45 void (*do_leave_ptr)(fcode_env_t *env) = do_bleave;
46 void (*do_loop_ptr)(fcode_env_t *env) = do_bloop;
47 void (*do_ploop_ptr)(fcode_env_t *env) = do_bploop;
58 add(fcode_env_t *env)
62 CHECK_DEPTH(env, 2, "+");
68 subtract(fcode_env_t *env)
72 CHECK_DEPTH(env, 2, "-");
78 multiply(fcode_env_t *env)
82 CHECK_DEPTH(env, 2, "*");
88 slash_mod(fcode_env_t *env)
93 CHECK_DEPTH(env, 2, "/mod");
98 throw_from_fclib(env, 1, "/mod divide by zero");
130 uslash_mod(fcode_env_t *env)
134 CHECK_DEPTH(env, 2, "u/mod");
139 forth_abort(env, "u/mod: divide by zero");
145 divide(fcode_env_t *env)
147 CHECK_DEPTH(env, 2, "/");
148 slash_mod(env);
149 nip(env);
153 mod(fcode_env_t *env)
155 CHECK_DEPTH(env, 2, "mod");
156 slash_mod(env);
157 drop(env);
161 and(fcode_env_t *env)
165 CHECK_DEPTH(env, 2, "and");
171 or(fcode_env_t *env)
175 CHECK_DEPTH(env, 2, "or");
181 xor(fcode_env_t *env)
185 CHECK_DEPTH(env, 2, "xor");
191 invert(fcode_env_t *env)
193 CHECK_DEPTH(env, 1, "invert");
198 lshift(fcode_env_t *env)
202 CHECK_DEPTH(env, 2, "lshift");
208 rshift(fcode_env_t *env)
212 CHECK_DEPTH(env, 2, "rshift");
218 rshifta(fcode_env_t *env)
222 CHECK_DEPTH(env, 2, ">>a");
228 negate(fcode_env_t *env)
230 CHECK_DEPTH(env, 1, "negate");
235 f_abs(fcode_env_t *env)
237 CHECK_DEPTH(env, 1, "abs");
242 f_min(fcode_env_t *env)
246 CHECK_DEPTH(env, 2, "min");
252 f_max(fcode_env_t *env)
256 CHECK_DEPTH(env, 2, "max");
262 to_r(fcode_env_t *env)
264 CHECK_DEPTH(env, 1, ">r");
269 from_r(fcode_env_t *env)
271 CHECK_RETURN_DEPTH(env, 1, "r>");
276 rfetch(fcode_env_t *env)
278 CHECK_RETURN_DEPTH(env, 1, "r@");
283 f_exit(fcode_env_t *env)
285 CHECK_RETURN_DEPTH(env, 1, "exit");
301 zero_equals(fcode_env_t *env)
303 CHECK_DEPTH(env, 1, "0=");
308 zero_not_equals(fcode_env_t *env)
310 CHECK_DEPTH(env, 1, "0<>");
315 zero_less(fcode_env_t *env)
317 CHECK_DEPTH(env, 1, "0<");
322 zero_less_equals(fcode_env_t *env)
324 CHECK_DEPTH(env, 1, "0<=");
329 zero_greater(fcode_env_t *env)
331 CHECK_DEPTH(env, 1, "0>");
336 zero_greater_equals(fcode_env_t *env)
338 CHECK_DEPTH(env, 1, "0>=");
343 less(fcode_env_t *env)
347 CHECK_DEPTH(env, 2, "<");
353 greater(fcode_env_t *env)
357 CHECK_DEPTH(env, 2, ">");
363 equals(fcode_env_t *env)
367 CHECK_DEPTH(env, 2, "=");
373 not_equals(fcode_env_t *env)
377 CHECK_DEPTH(env, 2, "<>");
384 unsign_greater(fcode_env_t *env)
388 CHECK_DEPTH(env, 2, "u>");
394 unsign_less_equals(fcode_env_t *env)
398 CHECK_DEPTH(env, 2, "u<=");
404 unsign_less(fcode_env_t *env)
408 CHECK_DEPTH(env, 2, "u<");
414 unsign_greater_equals(fcode_env_t *env)
418 CHECK_DEPTH(env, 2, "u>=");
424 greater_equals(fcode_env_t *env)
428 CHECK_DEPTH(env, 2, ">=");
434 less_equals(fcode_env_t *env)
438 CHECK_DEPTH(env, 2, "<=");
444 between(fcode_env_t *env)
448 CHECK_DEPTH(env, 3, "between");
455 within(fcode_env_t *env)
459 CHECK_DEPTH(env, 3, "within");
466 do_literal(fcode_env_t *env)
473 literal(fcode_env_t *env)
475 if (env->state) {
477 compile_comma(env);
482 do_also(fcode_env_t *env)
486 if (env->order_depth < (MAX_ORDER - 1)) {
487 env->order[++env->order_depth] = d;
489 env->order_depth, CONTEXT, env->current);
496 do_previous(fcode_env_t *env)
498 if (env->order_depth) {
499 env->order_depth--;
501 env->order_depth, CONTEXT, env->current);
507 do_order(fcode_env_t *env)
511 log_message(MSG_INFO, "Order: Depth: %ld: ", env->order_depth);
512 for (i = env->order_depth; i >= 0 && env->order[i]; i--)
513 log_message(MSG_INFO, "%p ", (void *)env->order[i]);
519 noop(fcode_env_t *env)
528 lwsplit(fcode_env_t *env)
536 CHECK_DEPTH(env, 1, "lwsplit");
543 wljoin(fcode_env_t *env)
551 CHECK_DEPTH(env, FW_PER_FL, "wljoin");
558 lwflip(fcode_env_t *env)
566 CHECK_DEPTH(env, 1, "lwflip");
574 lbsplit(fcode_env_t *env)
582 CHECK_DEPTH(env, 1, "lbsplit");
589 bljoin(fcode_env_t *env)
597 CHECK_DEPTH(env, sizeof (lforth_t), "bljoin");
604 lbflip(fcode_env_t *env)
612 CHECK_DEPTH(env, 1, "lbflip");
620 wbsplit(fcode_env_t *env)
628 CHECK_DEPTH(env, 1, "wbsplit");
635 bwjoin(fcode_env_t *env)
643 CHECK_DEPTH(env, sizeof (wforth_t), "bwjoin");
650 wbflip(fcode_env_t *env)
658 CHECK_DEPTH(env, 1, "wbflip");
666 upper_case(fcode_env_t *env)
668 CHECK_DEPTH(env, 1, "upc");
673 lower_case(fcode_env_t *env)
675 CHECK_DEPTH(env, 1, "lcc");
680 pack_str(fcode_env_t *env)
686 CHECK_DEPTH(env, 3, "pack");
696 count_str(fcode_env_t *env)
700 CHECK_DEPTH(env, 1, "count");
707 to_body(fcode_env_t *env)
709 CHECK_DEPTH(env, 1, ">body");
714 to_acf(fcode_env_t *env)
716 CHECK_DEPTH(env, 1, "body>");
724 unloop(fcode_env_t *env)
726 CHECK_RETURN_DEPTH(env, 3, "unloop");
734 um_multiply(fcode_env_t *env)
739 CHECK_DEPTH(env, 2, "um*");
743 push_double(env, d);
750 um_slash_mod(fcode_env_t *env)
755 CHECK_DEPTH(env, 3, "um/mod");
757 d = pop_double(env);
768 d_plus(fcode_env_t *env)
772 CHECK_DEPTH(env, 4, "d+");
773 d2 = pop_double(env);
774 d1 = pop_double(env);
776 push_double(env, d1);
783 d_minus(fcode_env_t *env)
787 CHECK_DEPTH(env, 4, "d-");
788 d2 = pop_double(env);
789 d1 = pop_double(env);
791 push_double(env, d1);
795 set_here(fcode_env_t *env, uchar_t *new_here, char *where)
807 if (new_here >= env->base + dict_size)
808 forth_abort(env, "Here (%p) set past dictionary end (%p)",
809 new_here, env->base + dict_size);
814 unaligned_store(fcode_env_t *env)
819 unaligned_lstore(env);
821 unaligned_xstore(env);
825 unaligned_fetch(fcode_env_t *env)
830 unaligned_lfetch(env);
832 unaligned_xfetch(env);
836 comma(fcode_env_t *env)
838 CHECK_DEPTH(env, 1, ",");
839 DEBUGF(COMMA, dump_comma(env, ","));
841 unaligned_store(env);
842 set_here(env, HERE + sizeof (fstack_t), "comma");
846 lcomma(fcode_env_t *env)
848 CHECK_DEPTH(env, 1, "l,");
849 DEBUGF(COMMA, dump_comma(env, "l,"));
851 unaligned_lstore(env);
852 set_here(env, HERE + sizeof (u_lforth_t), "lcomma");
856 wcomma(fcode_env_t *env)
858 CHECK_DEPTH(env, 1, "w,");
859 DEBUGF(COMMA, dump_comma(env, "w,"));
861 unaligned_wstore(env);
862 set_here(env, HERE + sizeof (u_wforth_t), "wcomma");
866 ccomma(fcode_env_t *env)
868 CHECK_DEPTH(env, 1, "c,");
869 DEBUGF(COMMA, dump_comma(env, "c,"));
871 cstore(env);
872 set_here(env, HERE + sizeof (uchar_t), "ccomma");
876 token_roundup(fcode_env_t *env, char *where)
879 set_here(env, (uchar_t *)TOKEN_ROUNDUP(HERE), where);
884 compile_comma(fcode_env_t *env)
886 CHECK_DEPTH(env, 1, "compile,");
887 DEBUGF(COMMA, dump_comma(env, "compile,"));
888 token_roundup(env, "compile,");
890 unaligned_store(env);
891 set_here(env, HERE + sizeof (fstack_t), "compile,");
895 unaligned_lfetch(fcode_env_t *env)
900 CHECK_DEPTH(env, 1, "unaligned-l@");
904 cfetch(env);
906 bljoin(env);
907 lbflip(env);
911 unaligned_lstore(fcode_env_t *env)
916 CHECK_DEPTH(env, 2, "unaligned-l!");
918 lbsplit(env);
921 cstore(env);
926 unaligned_wfetch(fcode_env_t *env)
931 CHECK_DEPTH(env, 1, "unaligned-w@");
935 cfetch(env);
937 bwjoin(env);
938 wbflip(env);
942 unaligned_wstore(fcode_env_t *env)
947 CHECK_DEPTH(env, 2, "unaligned-w!");
949 wbsplit(env);
952 cstore(env);
960 lbflips(fcode_env_t *env)
965 CHECK_DEPTH(env, 2, "lbflips");
971 unaligned_lfetch(env);
972 lbflip(env);
974 unaligned_lstore(env);
982 wbflips(fcode_env_t *env)
987 CHECK_DEPTH(env, 2, "wbflips");
993 unaligned_wfetch(env);
994 wbflip(env);
996 unaligned_wstore(env);
1004 lwflips(fcode_env_t *env)
1009 CHECK_DEPTH(env, 2, "lwflips");
1015 unaligned_lfetch(env);
1016 lwflip(env);
1018 unaligned_lstore(env);
1023 base(fcode_env_t *env)
1025 PUSH(DS, (fstack_t)&env->num_base);
1029 dot_s(fcode_env_t *env)
1031 output_data_stack(env, MSG_INFO);
1035 state(fcode_env_t *env)
1037 PUSH(DS, (fstack_t)&env->state);
1068 dollar_number(fcode_env_t *env)
1074 CHECK_DEPTH(env, 2, "$number");
1075 buf = pop_a_string(env, &len);
1089 value *= env->num_base;
1090 error = is_digit(*buf++, env->num_base, &digit);
1103 digit(fcode_env_t *env)
1108 CHECK_DEPTH(env, 2, "digit");
1119 space(fcode_env_t *env)
1125 backspace(fcode_env_t *env)
1131 bell(fcode_env_t *env)
1137 fc_bounds(fcode_env_t *env)
1141 CHECK_DEPTH(env, 2, "bounds");
1149 here(fcode_env_t *env)
1155 aligned(fcode_env_t *env)
1159 CHECK_DEPTH(env, 1, "aligned");
1166 instance(fcode_env_t *env)
1168 env->instance_mode |= 1;
1172 semi(fcode_env_t *env)
1175 env->state &= ~1;
1184 if (env->state == 0) {
1185 expose_acf(env, "<semi>");
1187 if (env->state & 8) {
1188 env->state ^= 8;
1193 do_create(fcode_env_t *env)
1199 drop(fcode_env_t *env)
1201 CHECK_DEPTH(env, 1, "drop");
1206 f_dup(fcode_env_t *env)
1210 CHECK_DEPTH(env, 1, "dup");
1216 over(fcode_env_t *env)
1220 CHECK_DEPTH(env, 2, "over");
1226 swap(fcode_env_t *env)
1230 CHECK_DEPTH(env, 2, "swap");
1238 rot(fcode_env_t *env)
1242 CHECK_DEPTH(env, 3, "rot");
1250 minus_rot(fcode_env_t *env)
1254 CHECK_DEPTH(env, 3, "-rot");
1262 tuck(fcode_env_t *env)
1266 CHECK_DEPTH(env, 2, "tuck");
1268 swap(env);
1273 nip(fcode_env_t *env)
1275 CHECK_DEPTH(env, 2, "nip");
1276 swap(env);
1277 drop(env);
1281 qdup(fcode_env_t *env)
1285 CHECK_DEPTH(env, 1, "?dup");
1292 depth(fcode_env_t *env)
1296 d = DS - env->ds0;
1301 pick(fcode_env_t *env)
1305 CHECK_DEPTH(env, 1, "pick");
1307 if (p < 0 || p >= (env->ds - env->ds0))
1308 forth_abort(env, "pick: invalid pick value: %d\n", (int)p);
1314 roll(fcode_env_t *env)
1318 CHECK_DEPTH(env, 1, "roll");
1320 if (r <= 0 || r >= (env->ds - env->ds0))
1321 forth_abort(env, "roll: invalid roll value: %d\n", (int)r);
1332 two_drop(fcode_env_t *env)
1334 CHECK_DEPTH(env, 2, "2drop");
1339 two_dup(fcode_env_t *env)
1341 CHECK_DEPTH(env, 2, "2dup");
1348 two_over(fcode_env_t *env)
1352 CHECK_DEPTH(env, 4, "2over");
1360 two_swap(fcode_env_t *env)
1364 CHECK_DEPTH(env, 4, "2swap");
1374 two_rot(fcode_env_t *env)
1378 CHECK_DEPTH(env, 6, "2rot");
1390 two_slash(fcode_env_t *env)
1392 CHECK_DEPTH(env, 1, "2/");
1397 utwo_slash(fcode_env_t *env)
1399 CHECK_DEPTH(env, 1, "u2/");
1404 two_times(fcode_env_t *env)
1406 CHECK_DEPTH(env, 1, "2*");
1411 slash_c(fcode_env_t *env)
1417 slash_w(fcode_env_t *env)
1423 slash_l(fcode_env_t *env)
1429 slash_n(fcode_env_t *env)
1435 ca_plus(fcode_env_t *env)
1439 CHECK_DEPTH(env, 2, "ca+");
1445 wa_plus(fcode_env_t *env)
1449 CHECK_DEPTH(env, 2, "wa+");
1455 la_plus(fcode_env_t *env)
1459 CHECK_DEPTH(env, 2, "la+");
1465 na_plus(fcode_env_t *env)
1469 CHECK_DEPTH(env, 2, "na+");
1475 char_plus(fcode_env_t *env)
1477 CHECK_DEPTH(env, 1, "char+");
1482 wa1_plus(fcode_env_t *env)
1484 CHECK_DEPTH(env, 1, "wa1+");
1489 la1_plus(fcode_env_t *env)
1491 CHECK_DEPTH(env, 1, "la1+");
1496 cell_plus(fcode_env_t *env)
1498 CHECK_DEPTH(env, 1, "cell+");
1503 do_chars(fcode_env_t *env)
1505 CHECK_DEPTH(env, 1, "chars");
1509 slash_w_times(fcode_env_t *env)
1511 CHECK_DEPTH(env, 1, "/w*");
1516 slash_l_times(fcode_env_t *env)
1518 CHECK_DEPTH(env, 1, "/l*");
1523 cells(fcode_env_t *env)
1525 CHECK_DEPTH(env, 1, "cells");
1530 do_on(fcode_env_t *env)
1534 CHECK_DEPTH(env, 1, "on");
1540 do_off(fcode_env_t *env)
1544 CHECK_DEPTH(env, 1, "off");
1550 fetch(fcode_env_t *env)
1552 CHECK_DEPTH(env, 1, "@");
1557 lfetch(fcode_env_t *env)
1559 CHECK_DEPTH(env, 1, "l@");
1564 wfetch(fcode_env_t *env)
1566 CHECK_DEPTH(env, 1, "w@");
1571 swfetch(fcode_env_t *env)
1573 CHECK_DEPTH(env, 1, "<w@");
1578 cfetch(fcode_env_t *env)
1580 CHECK_DEPTH(env, 1, "c@");
1585 store(fcode_env_t *env)
1589 CHECK_DEPTH(env, 2, "!");
1595 addstore(fcode_env_t *env)
1599 CHECK_DEPTH(env, 2, "+!");
1605 lstore(fcode_env_t *env)
1609 CHECK_DEPTH(env, 2, "l!");
1615 wstore(fcode_env_t *env)
1619 CHECK_DEPTH(env, 2, "w!");
1625 cstore(fcode_env_t *env)
1629 CHECK_DEPTH(env, 2, "c!");
1635 two_fetch(fcode_env_t *env)
1639 CHECK_DEPTH(env, 1, "2@");
1642 unaligned_fetch(env);
1644 unaligned_fetch(env);
1648 two_store(fcode_env_t *env)
1652 CHECK_DEPTH(env, 3, "2!");
1655 unaligned_store(env);
1657 unaligned_store(env);
1664 fc_move(fcode_env_t *env)
1669 CHECK_DEPTH(env, 3, "move");
1678 fc_fill(fcode_env_t *env)
1684 CHECK_DEPTH(env, 3, "fill");
1692 fc_comp(fcode_env_t *env)
1698 CHECK_DEPTH(env, 3, "comp");
1711 set_temporary_compile(fcode_env_t *env)
1713 if (!env->state) {
1714 token_roundup(env, "set_temporary_compile");
1716 env->state = 3;
1722 bmark(fcode_env_t *env)
1724 set_temporary_compile(env);
1725 env->level++;
1730 temporary_execute(fcode_env_t *env)
1734 if ((env->level == 0) && (env->state & 2)) {
1737 semi(env);
1741 env->state &= ~2;
1743 execute(env);
1750 set_here(env, (uchar_t *)d, "temporary_execute");
1755 bresolve(fcode_env_t *env)
1759 env->level--;
1761 temporary_execute(env);
1767 do_bbranch(fcode_env_t *env)
1773 do_bqbranch(fcode_env_t *env)
1777 CHECK_DEPTH(env, 1, "b?branch");
1787 do_bofbranch(fcode_env_t *env)
1791 CHECK_DEPTH(env, 2, "bofbranch");
1802 do_bleave(fcode_env_t *env)
1804 CHECK_RETURN_DEPTH(env, 3, "do_bleave");
1811 loop_inc(fcode_env_t *env, fstack_t inc)
1815 CHECK_RETURN_DEPTH(env, 2, "loop_inc");
1825 do_bleave(env);
1830 do_bloop(fcode_env_t *env)
1832 loop_inc(env, 1);
1836 do_bploop(fcode_env_t *env)
1840 CHECK_DEPTH(env, 1, "+loop");
1842 loop_inc(env, d);
1846 loop_common(fcode_env_t *env, fstack_t ptr)
1848 short offset = get_short(env);
1851 env->level--;
1852 compile_comma(env);
1853 bresolve(env);
1857 bloop(fcode_env_t *env)
1859 loop_common(env, (fstack_t)&do_loop_ptr);
1863 bplusloop(fcode_env_t *env)
1865 loop_common(env, (fstack_t)&do_ploop_ptr);
1869 common_do(fcode_env_t *env, fstack_t endpt, fstack_t start, fstack_t limit)
1885 do_bdo(fcode_env_t *env)
1890 CHECK_DEPTH(env, 2, "bdo");
1895 common_do(env, endpt, lo, hi);
1899 do_bqdo(fcode_env_t *env)
1904 CHECK_DEPTH(env, 2, "b?do");
1912 common_do(env, endpt, lo, hi);
1917 compile_do_common(fcode_env_t *env, fstack_t ptr)
1919 set_temporary_compile(env);
1921 bmark(env);
1923 bmark(env);
1927 bdo(fcode_env_t *env)
1929 short offset = (short)get_short(env);
1930 compile_do_common(env, (fstack_t)&do_bdo_ptr);
1934 bqdo(fcode_env_t *env)
1936 short offset = (short)get_short(env);
1937 compile_do_common(env, (fstack_t)&do_bqdo_ptr);
1941 loop_i(fcode_env_t *env)
1945 CHECK_RETURN_DEPTH(env, 2, "i");
1951 loop_j(fcode_env_t *env)
1955 CHECK_RETURN_DEPTH(env, 5, "j");
1961 bleave(fcode_env_t *env)
1964 if (env->state) {
1970 push_string(fcode_env_t *env, char *str, int len)
1998 parse_word(fcode_env_t *env)
2003 if (env->input) {
2004 here = env->input->scanptr;
2005 while (*here == env->input->separator) here++;
2006 next = strchr(here, env->input->separator);
2009 while (*next == env->input->separator) next++;
2014 env->input->scanptr = next;
2016 push_string(env, here, len);
2020 install_does(fcode_env_t *env)
2024 dptr = (token_t *)LINK_TO_ACF(env->lastlink);
2032 does(fcode_env_t *env)
2036 token_roundup(env, "does");
2038 if (env->state) {
2042 dptr = (token_t *)LINK_TO_ACF(env->lastlink);
2045 env->state |= 1;
2051 do_current(fcode_env_t *env)
2054 PUSH(DS, (fstack_t)&env->current);
2058 do_context(fcode_env_t *env)
2065 do_definitions(fcode_env_t *env)
2067 env->current = CONTEXT;
2069 env->order_depth, CONTEXT, env->current);
2073 make_header(fcode_env_t *env, int flags)
2078 name = parse_a_string(env, &len);
2079 header(env, name, len, flags);
2083 do_creator(fcode_env_t *env)
2085 make_header(env, 0);
2087 expose_acf(env, "<create>");
2091 create(fcode_env_t *env)
2093 if (env->state) {
2096 do_creator(env);
2100 colon(fcode_env_t *env)
2102 make_header(env, 0);
2103 env->state |= 1;
2108 recursive(fcode_env_t *env)
2110 expose_acf(env, "<recursive>");
2114 compile_string(fcode_env_t *env)
2127 set_here(env, tostr, "compile_string");
2128 token_roundup(env, "compile_string");
2132 run_quote(fcode_env_t *env)
2136 osep = env->input->separator;
2137 env->input->separator = '"';
2138 parse_word(env);
2139 env->input->separator = osep;
2141 if (env->state) {
2142 compile_string(env);
2147 does_vocabulary(fcode_env_t *env)
2151 env->order_depth, CONTEXT, env->current);
2155 do_vocab(fcode_env_t *env)
2157 make_header(env, 0);
2160 compile_comma(env);
2161 expose_acf(env, "<vocabulary>");
2165 do_forth(fcode_env_t *env)
2167 CONTEXT = (token_t *)(&env->forth_voc_link);
2169 env->order_depth, CONTEXT, env->current);
2173 voc_find(fcode_env_t *env)
2180 find_name = pop_a_string(env, NULL);
2196 dollar_find(fcode_env_t *env)
2201 CHECK_DEPTH(env, 2, "$find");
2202 for (i = env->order_depth; i >= 0 && env->order[i] && !acf; i--) {
2203 two_dup(env);
2204 PUSH(DS, (fstack_t)env->order[i]);
2205 acf = voc_find(env);
2208 two_drop(env);
2216 interpret(fcode_env_t *env)
2220 parse_word(env);
2222 two_dup(env);
2223 dollar_find(env);
2227 drop(env);
2228 nip(env);
2229 nip(env);
2232 if ((env->state) &&
2235 compile_comma(env);
2237 execute(env);
2241 drop(env);
2242 dollar_number(env);
2245 two_dup(env);
2246 name = pop_a_string(env, NULL);
2250 nip(env);
2251 nip(env);
2252 literal(env);
2255 parse_word(env);
2257 two_drop(env);
2261 evaluate(fcode_env_t *env)
2263 input_typ *old_input = env->input;
2266 CHECK_DEPTH(env, 2, "evaluate");
2271 env->input = eval_bufp;
2272 interpret(env);
2274 env->input = old_input;
2278 make_common_access(fcode_env_t *env,
2282 void (*acf_instance)(fcode_env_t *env),
2283 void (*acf_static)(fcode_env_t *env),
2284 void (*set_action)(fcode_env_t *env, int))
2287 system_message(env, "No instance context");
2295 header(env, name, len, 0);
2301 dptr = alloc_instance_data(env, INIT_DATA, ncells, &offset);
2305 compile_comma(env);
2308 env->instance_mode = 0;
2312 compile_comma(env);
2314 expose_acf(env, name);
2316 set_action(env, instance_mode);
2320 do_constant(fcode_env_t *env)
2326 do_crash(fcode_env_t *env)
2328 forth_abort(env, "Unitialized defer");
2335 behavior(fcode_env_t *env)
2341 CHECK_DEPTH(env, 1, "behavior");
2346 forth_abort(env, "behavior: bad xt: %p indir: %x/%p\n",
2353 fc_abort(fcode_env_t *env, char *type)
2355 forth_abort(env, "%s Fcode '%s' Executed", type,
2356 acf_to_name(env, WA - 1));
2360 f_abort(fcode_env_t *env)
2362 fc_abort(env, "Abort");
2369 fc_unimplemented(fcode_env_t *env)
2371 fc_abort(env, "Unimplemented");
2378 fc_obsolete(fcode_env_t *env)
2380 fc_abort(env, "Obsolete");
2387 fc_historical(fcode_env_t *env)
2389 fc_abort(env, "Historical");
2393 catch(fcode_env_t *env)
2397 CHECK_DEPTH(env, 1, "catch");
2402 new->next = env->catch_frame;
2404 env->catch_frame = new;
2405 execute(env);
2407 env->catch_frame = new->next;
2412 throw_from_fclib(fcode_env_t *env, fstack_t errcode, char *fmt, ...)
2423 env->last_error = errcode;
2428 efp = env->catch_frame;
2430 forth_abort(env, "%s: No catch frame", msg);
2448 throw(fcode_env_t *env)
2452 CHECK_DEPTH(env, 1, "throw");
2455 throw_from_fclib(env, t, "throw Fcode errcode: 0x%x", (int)t);
2460 throw_from_fclib(env, t, "throw Fcode err: %s", (char *)t);
2465 tick_literal(fcode_env_t *env)
2467 if (env->state) {
2469 compile_comma(env);
2474 do_tick(fcode_env_t *env)
2476 parse_word(env);
2477 dollar_find(env);
2478 invert(env);
2479 throw(env);
2480 tick_literal(env);
2484 bracket_tick(fcode_env_t *env)
2486 do_tick(env);
2494 fcode_env_t *env = initial_env;
2497 ASSERT(env);