summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* altos/stmf0: Add some common definitions for flash loadersKeith Packard2018-03-16
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make panic beeps use fixed frequenciesKeith Packard2018-03-16
| | | | | | | This ensures that the beeps will work even before the configuration has been loaded. Signed-off-by: Keith Packard <keithp@keithp.com>
* chaoskey: Create unified ROM image with both loader and appKeith Packard2018-03-16
| | | | | | | Flash the whole thing all at once to reduce the number of steps during turnon. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Move ao-scheme to a separate repositoryKeith Packard2018-01-10
| | | | | | This way it can be incorporated into multiple operating systems more easily. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Allow unicode in lexerKeith Packard2018-01-08
| | | | | | | This just passes any bytes with the high bit set through the system so programs can include UTF-8 in strings and symbols. What the heck. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lambdakey-v1.0: Add LED function back inKeith Packard2018-01-07
| | | | | | We've made things smaller, so there's (barely) space for this now. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: remove debug code from vector writeKeith Packard2018-01-07
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Allow individual lisp keywords to be feature-conditionalKeith Packard2018-01-07
| | | | | | | This lets us build a smaller lisp that is just missing some aliases for existing functionality to save rom space. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Split tests out from build sourcesKeith Packard2018-01-07
| | | | | | Run tests on both tiny and full scheme test programs. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Use double buffering for ChaosKeyKeith Packard2018-01-07
| | | | | | | This improves the USB performance of ChaosKey so that it doesn't NAK during data transfers at all. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: use double buffering for USB rx dataKeith Packard2018-01-07
| | | | | | This also allows us to stop shadowing USB rx buffers in system ram Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Use double buffering for USB tx dataKeith Packard2018-01-07
| | | | | | | This shouldn't have much of an effect, but shows how double buffering works. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Stop shadowing USB tx buffers in system RAMKeith Packard2018-01-07
| | | | | | Use the 16-bit USB memory directly, avoiding the buffer space and the copy Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Remove packet counters from non-debug buildKeith Packard2018-01-07
| | | | | | These counters are only useful for helping debug the USB driver. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/kernel: Use ao_put_string for syntax error messageKeith Packard2018-01-07
| | | | | | Avoid using puts, which can be a large library function. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lambdakey-v1.0: Switch back to command buffered inputKeith Packard2018-01-06
| | | | | | Instead of just reading from stdin with no echo or editing. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Add ports. Split scheme code up.Keith Packard2018-01-06
| | | | | | And lots of other changes, including freeing unreferenced atoms. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: add 'install' target to install both test and tiny testKeith Packard2018-01-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Add vector and string funcs. Test everybody.Keith Packard2018-01-04
| | | | | | | Add a bunch of string and vector functions from r7rs. I think most everything is here now. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Accept more escaped character constantsKeith Packard2018-01-04
| | | | | | Allow all those specified in r7rs Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Allow make-vector value param to be optionalKeith Packard2018-01-04
| | | | | | It can default to #f Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Add builtin list-tailKeith Packard2018-01-04
| | | | | | This is used enough to warrant a builtin, rather than lisp implementation Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Fix macro-detection debuggingKeith Packard2018-01-04
| | | | | | Just update to use ao_scheme_printf Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: add make-string builtinKeith Packard2018-01-04
| | | | | | Allocate a blank string. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Make constant built pool as large as possibleKeith Packard2018-01-04
| | | | | | This allows building with as much constant data as will fit. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Make for-each tail recursiveKeith Packard2018-01-03
| | | | | | | Provides a native version of for-each that is tail recursive, rather than having it just use map and discard the return value. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Add start/end args to vector->listKeith Packard2018-01-03
| | | | | | | This is an r7rs extension which allows you to extract a subset of the vector. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: fix parsing of vector followed by listKeith Packard2018-01-03
| | | | | | | The 'parsing a vector' state value wasn't getting cleared at the end of the vector, so that (#(1 2) (3 4) returned (#(1 2) #(3 4) Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: support %x format for scheme printfKeith Packard2018-01-03
| | | | | | read debugging uses this format. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Add support for hex, octal and binary constantsKeith Packard2018-01-03
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Pull out per-frame vals while printing list of framesKeith Packard2017-12-24
| | | | | | Was using the same vals for all frames, which just doesn't work well. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Add separate floor-quotient builtinKeith Packard2017-12-24
| | | | | | | Does what 'quotient' did before, now quotient rounds towards zero while floor-quotient rounds down. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/micropeak: Remove all compiler resultsKeith Packard2017-12-19
| | | | | | Not just the current version. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/attiny: Add ADC implementationKeith Packard2017-12-19
| | | | | | It's primitive, but might serve to read ADC values. Untested. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/easymini-v2.0: Adapt to final hardware pin assignment changesKeith Packard2017-12-19
| | | | | | | | Beeper moved from PB0 to PB1 (Tim3 CH4) Drogue fire moved from PB6 to PB3 Bootloader moved from PB1 to PB6 Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lambdakey-v1.0: Add back and/or macrosKeith Packard2017-12-19
| | | | | | With scheme shrinking a bit, there's now space for these useful macros. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Replace per-type indexed stash with poly stash heapKeith Packard2017-12-19
| | | | | | | Instead of having a random set of stash arrays with explicit indices used by callers, just have a general heap. Less error prone, and less code. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Replace memory pool macros with inlinesKeith Packard2017-12-19
| | | | | | | | | | AO_SCHEME_IS_CONST -> ao_scheme_is_const_addr AO_SCHEME_IS_POOL -> ao_scheme_is_pool_addr Provides better typechecking and avoids confusion with ao_scheme_is_const inline (which takes an ao_poly instead of a void *) Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: AO_SCHEME_IS_CONS -> ao_scheme_is_consKeith Packard2017-12-19
| | | | | | | This inline was already defined; just use it. Also, switch some places to use ao_scheme_is_pair instead as appropriate. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: ao_scheme__cons -> ao_scheme_consKeith Packard2017-12-19
| | | | | | Fix the double underscore in this name. Ick. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Don't optimize ao_scheme_make_constKeith Packard2017-12-19
| | | | | | | Performance isn't interesting, and it's nice to have a bare system ready for debugging. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Clean up test CFLAGSKeith Packard2017-12-19
| | | | | | make it easy to switch between debug and optimized builds. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: (define (foo . bar)) has a pair, not list as cardKeith Packard2017-12-19
| | | | | | | | When defining a lambda with varargs, the args are not a list as the final element is not a pair or nil. Use pair? instead of list? to detect this form correctly. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: apply also needs to not free value list on lambdasKeith Packard2017-12-19
| | | | | | | | | | When apply is invoked on any function, the cons in the argument list cannot be immediately freed as they have been passed to the function. That applies to both built-ins as well as lambdas; this patch removes the special ao_scheme_skip_cons_free global and just marks the stack in both cases. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Rework display/write codeKeith Packard2017-12-19
| | | | | | | | | | Unify output functions and add bool to switch between write and display mode. Make that only affect strings (as per r⁷rs). Use print recursion detection in frame and stack code, eliminating PRINT flags in type field. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Compile scheme test with -O3Keith Packard2017-12-18
| | | | | | This level of optimization caused trouble, so use it all of the time. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Work around gcc 7.2.0 optimization bug in memory managerKeith Packard2017-12-18
| | | | | | | | | | | | | After marking a set of memory chunks, it's possible that all of them will be packed tight against 'top', in which case none of them will be moving. In that case, gcc 7.2.0 appears to generate incorrect code causing the loop to be abandoned, meaning that we don't actually collect anything at all. Add a quick short-circuit test just after the mark phase that skips the code which wouldn't do anything in this case. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: rearrange debugging definesKeith Packard2017-12-18
| | | | | | | Allow applications to redefine these as desired, add more flexibility in what the various memory debugging flags can do. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: abort when we try to print an invalid valueKeith Packard2017-12-18
| | | | | | | This can catch a host of interpreter bugs; best to abandon the program when it happens. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/scheme: Use memory manager mark code to note recursive printKeith Packard2017-12-17
| | | | | | | This flags any object being printed and checks before recursing to avoid infinite loops. Signed-off-by: Keith Packard <keithp@keithp.com>