4 jmp_buf stop_return
, draw_stop_return
;
10 longjmp(draw_stop_return
, 1);
15 longjmp(stop_return
, 1);
24 /*if (strncmp(s, "selftest", 8) == 0) {
29 if (setjmp(stop_return
))
44 // if debug mode then print the source text
46 if (equaln(get_binding(symbol(TRACE
)), 1)) {
47 for (i
= 0; i
< n
; i
++)
50 if (s
[n
- 1] != ' ') // n is not zero, see above
62 if (p2
== symbol(NIL
))
65 // print string w/o quotes
73 if (equaln(get_binding(symbol(TTY
)), 1) || test_flag
) // tty mode?
91 if (frame
!= stack
+ TOS
)
95 // cannot reference symbols yet
104 // returns nil on stack if no result to print
113 p1
= symbol(AUTOEXPAND
);
115 if (iszero(get_binding(p1
)))
125 // "draw", "for" and "setq" return "nil", there is no result to print
127 if (p2
== symbol(NIL
)) {
135 set_binding(symbol(LAST
), p2
);
137 if (!iszero(get_binding(symbol(BAKE
)))) {
143 // If we evaluated the symbol "i" or "j" and the result was sqrt(-1)
145 // then don't do anything.
147 // Otherwise if "j" is an imaginary unit then subst.
149 // Otherwise if "i" is an imaginary unit then subst.
151 if ((p1
== symbol(SYMBOL_I
) || p1
== symbol(SYMBOL_J
))
152 && isimaginaryunit(p2
))
154 else if (isimaginaryunit(get_binding(symbol(SYMBOL_J
)))) {
157 push_symbol(SYMBOL_J
);
160 } else if (isimaginaryunit(get_binding(symbol(SYMBOL_I
)))) {
163 push_symbol(SYMBOL_I
);
170 // if we evaluated the symbol "a" and got "b" then print "a=b"
172 // do not print "a=a"
174 if (issymbol(p1
) && !iskeyword(p1
) && p1
!= p2
&& test_flag
== 0) {