#include <stdint.h>
#include <string.h>
-//#include <stdio.h>
#include <ao_lisp_os.h>
typedef uint16_t ao_poly;
#ifdef AO_LISP_MAKE_CONST
#define AO_LISP_POOL_CONST 16384
-extern uint8_t ao_lisp_const[AO_LISP_POOL_CONST];
+extern uint8_t ao_lisp_const[AO_LISP_POOL_CONST] __attribute__((aligned(4)));
#define ao_lisp_pool ao_lisp_const
#define AO_LISP_POOL AO_LISP_POOL_CONST
#define _ao_lisp_atom_save _atom("save")
#define _ao_lisp_atom_restore _atom("restore")
#define _ao_lisp_atom_call2fcc _atom("call/cc")
+#define _ao_lisp_atom_collect _atom("collect")
+#define _ao_lisp_atom_symbolp _atom("symbol?")
+#define _ao_lisp_atom_builtin _atom("builtin?")
+#define _ao_lisp_atom_symbolp _atom("symbol?")
+#define _ao_lisp_atom_symbolp _atom("symbol?")
#else
#include "ao_lisp_const.h"
#ifndef AO_LISP_POOL
#define AO_LISP_POOL 3072
#endif
-extern uint8_t ao_lisp_pool[AO_LISP_POOL + AO_LISP_POOL_EXTRA];
+extern uint8_t ao_lisp_pool[AO_LISP_POOL + AO_LISP_POOL_EXTRA] __attribute__((aligned(4)));
#endif
/* Primitive types */
builtin_save,
builtin_restore,
builtin_call_cc,
+ builtin_collect,
_builtin_last
};
#define DBG_CONS(a) ao_lisp_cons_print(ao_lisp_cons_poly(a))
#define DBG_POLY(a) ao_lisp_poly_print(a)
#define OFFSET(a) ((a) ? (int) ((uint8_t *) a - ao_lisp_pool) : -1)
-#define DBG_STACK() ao_lisp_stack_print()
+#define DBG_STACK() ao_lisp_stack_print(ao_lisp_stack_poly(ao_lisp_stack))
static inline void
ao_lisp_frames_dump(void)
{