| Commit message (Collapse) | Author | Age | 
| | 
| 
| 
| 
| 
|  | 
Migrating to something more like scheme
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
Collect memory, return amount free.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
This provides call/cc and makes 'stacks' visible to the application.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
Cut&paste error.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
Remove exti from the build list to make things fit.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This assumes that macros are all pure functions, which should be true
for syntactic macros.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This sticks a few globals past the end of the heap and then asks the
OS to save the heap. On restore, the heap is re-populated by the OS
and then various global variables reset.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
lots more builtins
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Progn as a builtin will help with tail-recursion.
while provides for loops until tail-recursion works :-)
read and eval are kinda useful.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Provide an abstraction for the OS interface so that it
can build more cleanly on Linux and AltOS. Add defun macro.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
Not working yet
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Use global ao_lisp_stack instead of local stack so that gc
moves of that item work.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Pass reference to move API so it can change the values in-place, then
let it return '1' when the underlying object has already been moved to
shorten GC times.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
|  | 
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
|  | 
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This enables changing values of atoms declared as constants, should
enable lets, and with some work, even lexical scoping.
this required changing the constant computation to run
ao_lisp_collect() before dumping the block of constant data, and that
uncovered some minor memory manager bugs.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
|  | 
Along with other small fixes
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This makes all lisp objects use 16-bit ints for references so we can
hold more stuff in small amounts of memory. Also adds a separate
constant pool of lisp objects for builtins, initial atoms and constant
lisp code.
Now builds (and runs!) on the nucleo-32 boards.
Signed-off-by: Keith Packard <keithp@keithp.com>
 | 
|   
  
  
   | 
Signed-off-by: Keith Packard <keithp@keithp.com>
 |