| Commit message (Collapse) | Author | Age |
| ... | |
| | |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Needed an extra stack frame to stash the pre-macro state. This
simplified macro processing quite a bit; a macro now just evaluates
the function and then sends that result to be evaluated again.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| | |
Not working yet
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| | |
With non-recursive GC, more memory is available for the heap
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| | |
Use a boolean array to note cons cells which would otherwise recurse,
then loop until that array is empty.
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>
|
| | |
| |
| |
| |
| |
| | |
Failing this leads to broken formals chains
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>
|
| | |
| |
| |
| |
| |
| |
| | |
Ad-hoc code was incomprehensible and I couldn't make 'cond' work, so
I'm starting over.
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>
|
| | |
| |
| |
| | |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| | |
With these two changes, the readline function can be used by other
code.
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>
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
This provides the information necessary to reflash chaoskey using
standard Linux device firmware tooling.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Gcc 5.4.1 tracks alignment of data through assignments, so that a
uint32_t pointer which comes from byte-aligned uint8_t data:
extern uint8_t foo[];
uint32_t *q = (void *) foo;
Fetches and stores through this pointer are done bytewise. This is
slow (meh), but if q references a device register, things to bad very
quickly.
This patch works around this bug in the compiler by adding
__attribute__((aligned(4))) tags to some variables, or changing them
from uint8_t to uint32_t. Places doing this will now be caught as I've
added -Wcast-align to the compiler flags. That required adding (void
*) casts, after the relevant code was checked to make sure the
compiler could tell that the addresses were aligned.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| | |
I'm sure this makes the function end up in-lined, which saves enough
text space to fit the flash loader in ROM again.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Wait less time before trying the test script.
Have the test script wait for the device to appear. And then use
colors to help make the results clear.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| | |
A couple of fixups for ao_flight_test to dump pyro info only when
running in debug mode, and to change the aprs testing
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| | |
This hooks up the LED, USB and the USART.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| | |
The STM32F0 usart can be operated much like the STM32L usart, but the
registers are all moved around.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | | |
|
| | |
| |
| |
| | |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| | |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
Somethings messed up with cortex-M0 linking, and this isn't helping as
it overrides the LDFLAGS coming from the architecture.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Openocd 0.9.0 has generalized the lpc11xx support for all lpc11xx
processors, not just the lpc11u14. This replaces the specific
lpc11u14.cfg with the general lpc11xx.cfg file.
Unlike the build we were using, this doesn't adjust the
'verify' command to adapt for the checksum which gets added during the
flashing process. Hence, we disable verification and trust that if the
flash loader works to load the OS, it's fine.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Skip sections with size 0, or which are of type SHT_NOBITS or which
don't have the SHF_ALLOC flag set.
This avoids crashing on sections which don't have any data to copy.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Something changed in the link editor which makes it complain about 'no
space for program headers' on LPC and STMF0 builds. Somehow, adding
the '-n' flag to the linking step fixes it. It doesn't appear to break
the build, so I guess it's ok?
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Gcc 5.4.1 tracks alignment of data through assignments, so that a
uint32_t pointer which comes from byte-aligned uint8_t data:
extern uint8_t foo[];
uint32_t *q = (void *) foo;
Fetches and stores through this pointer are done bytewise. This is
slow (meh), but if q references a device register, things to bad very
quickly.
This patch works around this bug in the compiler by adding
__attribute__((aligned(4))) tags to some variables, or changing them
from uint8_t to uint32_t. Places doing this will now be caught as I've
added -Wcast-align to the compiler flags. That required adding (void
*) casts, after the relevant code was checked to make sure the
compiler could tell that the addresses were aligned.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
I'm sure this makes the function end up in-lined, which saves enough
text space to fit the flash loader in ROM again.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | | |
|
| |\ \ |
|
| | | | |
|
| | |\| |
|