   EVAL:
   // Enough space?
   if (End != 0xA5) error(PSTR("Stack overflow"));
-  if (Freespace < 20) gc(form, env);
+  if (Freespace <= WORKSPACESIZE>>4) gc(form, env);
   // Escape
   if (tstflag(ESCAPE)) { clrflag(ESCAPE); error(PSTR("Escape!"));}
   #if defined (serialmonitor)

/* uLisp AVR Version 2.4 - www.ulisp.com
   David Johnson-Davies - www.technoblogy.com - 9th October 2018

   Licensed under the MIT license: https://opensource.org/licenses/MIT
*/

}

object *tf_when (object *args, object *env) {
  if (args == NULL) error(PSTR("'when' missing argument"));
  if (eval(first(args), env) != nil) return tf_progn(cdr(args),env);
  else return nil;
}

object *tf_unless (object *args, object *env) {
  if (args == NULL) error(PSTR("'unless' missing argument"));
  if (eval(first(args), env) != nil) return nil;
  else return tf_progn(cdr(args),env);
}
