Lines Matching refs:env

40 void (*to_ptr)(fcode_env_t *env) = do_set_action;
44 parse_a_string(fcode_env_t *env, int *lenp)
46 parse_word(env);
47 return (pop_a_string(env, lenp));
51 constant(fcode_env_t *env)
56 name = parse_a_string(env, &len);
57 env->instance_mode = 0;
58 make_common_access(env, name, len, 1, 0,
63 buffer_colon(fcode_env_t *env)
69 name = parse_a_string(env, &len);
70 make_common_access(env, name, len, 2,
71 env->instance_mode, &noop, &noop, &set_buffer_actions);
75 value(fcode_env_t *env)
80 name = parse_a_string(env, &len);
81 make_common_access(env, name, len, 1,
82 env->instance_mode, &noop, &noop, &set_value_actions);
86 variable(fcode_env_t *env)
92 name = parse_a_string(env, &len);
93 make_common_access(env, name, len, 1,
94 env->instance_mode, &instance_variable, &do_create, NULL);
98 defer(fcode_env_t *env)
100 static void (*crash_ptr)(fcode_env_t *env) = do_crash;
105 name = parse_a_string(env, &len);
106 make_common_access(env, name, len, 1,
107 env->instance_mode, &noop, &noop, &set_defer_actions);
111 field(fcode_env_t *env)
116 over(env);
117 name = parse_a_string(env, &len);
118 make_common_access(env, name, len, 1, 0, &do_field, &do_field, NULL);
119 add(env);
123 bye(fcode_env_t *env)
129 do_resume(fcode_env_t *env)
131 if (env->interactive) env->interactive--;
139 return_to_interact(fcode_env_t *env)
146 do_interact(fcode_env_t *env)
152 input_typ *old_input = env->input;
155 env->interactive++;
156 level = env->interactive;
160 env->input->separator = ' ';
161 env->input->maxlen = 256;
162 env->input->buffer = MALLOC(env->input->maxlen);
163 env->input->scanptr = env->input->buffer;
167 RS = env->rs0;
168 DS = env->ds0;
171 env->input = old_input;
172 env->order_depth = 0;
178 env->input = old_input;
180 do_forth(env);
181 do_definitions(env);
190 while (env->interactive == level) {
194 DEBUGF(SHOW_RS, output_return_stack(env, 0, MSG_FC_DEBUG));
195 DEBUGF(SHOW_STACK, output_data_stack(env, MSG_FC_DEBUG));
203 read_line(env);
204 if ((line = pop_a_string(env, NULL)) == NULL)
207 env->input->scanptr = strcpy(env->input->buffer, line);
213 env->input->scanptr = fgets(env->input->buffer,
214 env->input->maxlen, stdin);
219 if (env->input->scanptr == NULL)
223 if ((p = strpbrk(env->input->scanptr, "\n\r")) != NULL)
226 if ((wlen = strlen(env->input->scanptr)) == 0)
229 PUSH(DS, (fstack_t)env->input->buffer);
231 evaluate(env);
235 FREE(env->input->buffer);
239 temp_base(fcode_env_t *env, fstack_t base)
243 obase = env->num_base;
244 env->num_base = base;
245 parse_word(env);
246 evaluate(env);
247 env->num_base = obase;
251 temp_decimal(fcode_env_t *env)
253 temp_base(env, 10);
257 temp_hex(fcode_env_t *env)
259 temp_base(env, 0x10);
263 temp_binary(fcode_env_t *env)
265 temp_base(env, 2);
269 do_hex(fcode_env_t *env)
271 env->num_base = 0x10;
275 do_decimal(fcode_env_t *env)
277 env->num_base = 10;
281 do_binary(fcode_env_t *env)
283 env->num_base = 2;
287 do_clear(fcode_env_t *env)
289 DS = env->ds0;
293 action_one(fcode_env_t *env)
296 do_tick(env);
297 if (env->state) {
301 perform_action(env);
306 do_if(fcode_env_t *env)
308 branch_common(env, 1, 1, 0);
312 do_else(fcode_env_t *env)
314 branch_common(env, 1, 0, 1);
315 bresolve(env);
319 do_then(fcode_env_t *env)
321 bresolve(env);
325 do_of(fcode_env_t *env)
327 branch_common(env, 0, 2, 0);
331 load_file(fcode_env_t *env)
339 CHECK_DEPTH(env, 2, "load-file");
340 name = pop_a_string(env, &len);
344 forth_perror(env, "Can't open '%s'", name);
350 forth_perror(env, "load_file: MALLOC(%d)", len);
353 forth_perror(env, "read error '%s'", name);
361 load(fcode_env_t *env)
363 parse_word(env);
365 load_file(env);
369 fevaluate(fcode_env_t *env)
374 two_dup(env);
375 buffer = pop_a_string(env, &len);
380 evaluate(env);
384 fload(fcode_env_t *env)
388 load(env);
389 two_dup(env);
390 buffer = pop_a_string(env, NULL);
391 fevaluate(env);
403 add_line_to_history(fcode_env_t *env, char *line)
418 do_emit_chars(fcode_env_t *env, char c, int n)
423 do_emit(env, c);
427 do_emit_str(fcode_env_t *env, char *str, int n)
432 do_emit(env, *str++);
465 redraw_line(fcode_env_t *env, char *prev_l, char *prev_cursor, char *prev_eol,
471 do_emit_chars(env, '\b', prev_cursor - prev_l);
474 do_emit_str(env, new_l, new_eol - new_l);
478 do_emit_chars(env, ' ', len);
481 do_emit_chars(env, '\b', len + (new_eol - new_cursor));
497 read_line(fcode_env_t *env)
508 push_string(env, buf, strlen(buf));
523 keyquestion(env);
524 key(env);
532 do_emit(env, d);
547 do_emit_chars(env, '\b', cursor - tp);
556 do_emit_str(env, tp, tp - cursor);
574 redraw_line(env, buf, cursor, eol, buf, cursor,
587 do_emit(env, d);
597 do_emit(env, *cursor++);
601 do_emit_chars(env, '\b', cursor - buf);
606 do_emit_str(env, cursor, eol - cursor);
627 redraw_line(env, buf, cursor, eol,
638 redraw_line(env, buf, cursor, eol, p, p, p + len);
664 redraw_line(env, buf, cursor, eol, buf, cursor,
670 redraw_line(env, buf, cursor, eol, buf, cursor,
682 redraw_line(env, buf, cursor, eol, buf, cursor - len,
690 redraw_line(env, buf, cursor, eol, buf, buf, buf);
702 redraw_line(env, buf, cursor, eol, buf, cursor + len,
713 do_emit(env, '\n');
715 do_emit_str(env, history_lines[i],
717 do_emit(env, '\n');
719 redraw_line(env, buf, buf, buf, buf, cursor, eol);
723 redraw_line(env, buf, cursor, eol, buf, cursor, eol);
733 do_emit(env, '\b');
741 redraw_line(env, buf, cursor, eol, buf, cursor - 1,
750 do_emit(env, '\n');
755 add_line_to_history(env, buf);
757 push_string(env, buf, strlen(buf));
761 set_prompt(fcode_env_t *env)
765 if ((prompt = parse_a_string(env, NULL)) != NULL)
774 fcode_env_t *env = initial_env;
776 ASSERT(env);