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