+static struct ao_lisp_frame *globals;
+
+ao_poly
+ao_lisp_atom_get(ao_poly atom)
+{
+ struct ao_lisp_frame *frame = globals;
+#ifdef ao_builtin_frame
+ if (!frame)
+ frame = ao_lisp_poly_frame(ao_builtin_frame);
+#endif
+ return ao_lisp_frame_get(frame, atom);
+}
+
+ao_poly
+ao_lisp_atom_set(ao_poly atom, ao_poly val)
+{
+ if (!ao_lisp_frame_set(globals, atom, val)) {
+ globals = ao_lisp_frame_add(globals, atom, val);
+ if (!globals->next) {
+ ao_lisp_root_add(&ao_lisp_frame_type, &globals);
+#ifdef ao_builtin_frame
+ globals->next = ao_builtin_frame;
+#endif
+ }
+ }
+ return val;
+}
+