summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* altos/lisp: Get lambdakey and nucleo-32 building againKeith Packard2016-11-17
| | | | | | Remove exti from the build list to make things fit. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Evaluate macros once, then smash them into placeKeith Packard2016-11-17
| | | | | | | This assumes that macros are all pure functions, which should be true for syntactic macros. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add license to hanoi demoKeith Packard2016-11-17
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Improve hanoi demoKeith Packard2016-11-17
| | | | | | | Repaint in place, without first clearing. This makes the updates a lot clealyer looking. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Show number of collect calls in ao_lisp_testKeith Packard2016-11-17
| | | | | | This helps tune the allocator Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Cache freed cons and stack itemsKeith Packard2016-11-17
| | | | | | | | | Track freed cons cells and stack items from the eval process where possible so that they can be re-used without needing to collect. This dramatically reduces the number of collect calls. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Simplify GC a bit by only marking the head of each objectKeith Packard2016-11-17
| | | | | | | | | We don't need to mark the whole object now as we're getting information about where objects are by walking the tree each time around the loop; ao_lisp_busy is only useful for terminating the walk now. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Change GC to do moves in batches of 32Keith Packard2016-11-17
| | | | | | This should make it quite a bit faster than doing one at a time. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Add a comment about the requirements for using ao_flash_stmKeith Packard2016-11-17
| | | | | | Need HSI clock and the flashing functions loaded in ram. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lambdakey: Get save/restore workingKeith Packard2016-11-17
| | | | | | Need the HSI clock running for the flash hardware to work. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Append a CRC to the saved image to validate on restoreKeith Packard2016-11-17
| | | | | | | The CRC is actually of the ROM bits, so we can tell if the restored image relates to the currently running code. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add save/restore to ao_lisp_testKeith Packard2016-11-17
| | | | | | Allow testing of the save/restore code under Linux. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add save/restore infrastructure. Needs OS support to work.Keith Packard2016-11-17
| | | | | | | | 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>
* altos/lisp: Make sure memmove only happens once per object. Other GC fixesKeith Packard2016-11-17
| | | | | | | | | | | | The memmove may be overlapping, so make sure it happens only once by just checking whether move_size has been set, rather than looking at ao_lisp_moving; that doesn't get set when moving a noted cons as that still needs to be walked at a later time. Fix up the various looping move functions to all use the same pattern. Atom was busted. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Make ao_lisp_ref and ao_lisp_poly non-inlineKeith Packard2016-11-17
| | | | | | | These functions are pretty large and end up consuming quite a bit of space if inlined everywhere they are used. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Share mark function for mark and moveKeith Packard2016-11-17
| | | | | | | These two operations both wanted to walk the referenced objects; sharing is caring. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: add length, pack, unpack and flushKeith Packard2016-11-17
| | | | | | lots more builtins Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add towers of hanoi exampleKeith Packard2016-11-17
| | | | | | Uses vt100 escape sequences to animate the display even. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Deal with memory compation in the middle of operationsKeith Packard2016-11-17
| | | | | | | | Handle memory compaction in places where we've got pointers into the heap across an allocation operation. Either re-compute the values from managed global references or add new roots across the allocation. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Improve lisp test program UIKeith Packard2016-11-17
| | | | | | | Add a prompt for stdin, read from other files on command line before stdin. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Make read() return eof atom on end of fileKeith Packard2016-11-17
| | | | | | Also make it an exception to hit eof in the middle of an sexpr. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: use regular read-eval-print loop for make constKeith Packard2016-11-17
| | | | | | No need to open code this sequence of operations. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: add progn, while, read and evalKeith Packard2016-11-17
| | | | | | | | 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>
* altos/lisp: Clean up OS integration bits, add defunKeith Packard2016-11-17
| | | | | | | 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>
* altos/lisp: macros appear to work nowKeith Packard2016-11-17
| | | | | | | | 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>
* altos/lisp: working on lexical scopingKeith Packard2016-11-17
| | | | | | Not working yet Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lambdakey-v1.0: Tweak memory allocationsKeith Packard2016-11-17
| | | | | | With non-recursive GC, more memory is available for the heap Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: convert GC to non-recursiveKeith Packard2016-11-17
| | | | | | | 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>
* altos/lisp: more GC issues. add patomKeith Packard2016-11-17
| | | | | | | 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>
* altos/lisp: make sure stack->formals_last gets moved during GCKeith Packard2016-11-17
| | | | | | Failing this leads to broken formals chains Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Change GC move APIKeith Packard2016-11-17
| | | | | | | | 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>
* altos/lisp: get builtin macros working againKeith Packard2016-11-17
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Start rewriting eval as state machineKeith Packard2016-11-17
| | | | | | | 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>
* altos: Add lambdakeyKeith Packard2016-11-17
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add lambda support to lispKeith Packard2016-11-17
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Separate out values from atomsKeith Packard2016-11-17
| | | | | | | | | | | 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>
* altos/lisp: add set/setq and ' in readerKeith Packard2016-11-17
| | | | | | Along with other small fixes Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Add lisp to include directoriesKeith Packard2016-11-17
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/kernel: Make ao_cmd_readline public. Return char from ao_cmd_lex.Keith Packard2016-11-17
| | | | | | | With these two changes, the readline function can be used by other code. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Change lisp objects to use ao_poly everywhere. Add constKeith Packard2016-11-17
| | | | | | | | | | | 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>
* altos: Add lisp readerKeith Packard2016-11-17
|
* Add first lisp bitsKeith Packard2016-11-17
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* ao-bringup: Improve EasyMini turnon and test scriptsKeith Packard2016-11-17
| | | | | | | | 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>
* altos/test: Fix testsKeith Packard2016-10-30
| | | | | | | 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>
* altos/nucleo-32: Add basic support for STM32F042 Nucleo-32 boardKeith Packard2016-10-30
| | | | | | This hooks up the LED, USB and the USART. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Add USART supportKeith Packard2016-10-30
| | | | | | | 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>
* augment TeleDongle turn on script to support serial number on command lineBdale Garbee2016-10-02
|
* Update pdclib to version using arm-specific 'ar' programKeith Packard2016-09-22
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* Fix release note html to remove xml bitsKeith Packard2016-09-05
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* Remove pyro wizard file from masterKeith Packard2016-09-05
| | | | | | This isn't done yet. Signed-off-by: Keith Packard <keithp@keithp.com>