]>
git.gag.com Git - fw/altos/log
Keith Packard [Sun, 9 Apr 2017 19:59:07 +0000 (12:59 -0700)]
cortexelf-v1: Bump SPI pin speed to 40MHz to for sdcard. Fix VGA DMA.
Tell the DMA code to leave the DMA engine enabled so the VGA output
can use it.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 9 Apr 2017 19:56:59 +0000 (12:56 -0700)]
altos: Use MP switch in cortexelf boot loader for force loader mode
Provide a way to get to the boot loader on the cortexelf board by
turning the MP switch on.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 9 Apr 2017 19:55:34 +0000 (12:55 -0700)]
altos: Escape lisp REP loop with () input
Provide a way to get out of a lisp read-eval-print loop that can be
easily input from the keyboard.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 9 Apr 2017 19:54:57 +0000 (12:54 -0700)]
altos: Document a few more SPI mode bits in VGA driver
Just comment changes
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 9 Apr 2017 19:53:34 +0000 (12:53 -0700)]
altos: Drive row low instead of high in matrix driver
Driving it high won't work all that well as we're looking for zero bits.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 9 Apr 2017 19:51:49 +0000 (12:51 -0700)]
altos: Place AS1107 in 'normal' mode at end of init sequence
This makes sure the device is out of reset mode while initializing,
and then placed in normal mode to turn on the display.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 9 Apr 2017 19:48:54 +0000 (12:48 -0700)]
ao-elftohex: Add conditions for skipping ELF sections
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>
Keith Packard [Tue, 4 Apr 2017 23:05:15 +0000 (16:05 -0700)]
cortexelf-v1: More 1802 noodling
Add code to track the address and data displays, change how 1802 pin
tracking works
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 4 Apr 2017 23:04:25 +0000 (16:04 -0700)]
stm: Add more mask-based GPIO controls
Lets cortexelf do more things with groups of pins, rather than one pin
at a time.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 4 Apr 2017 23:03:36 +0000 (16:03 -0700)]
altos: Allow programs to enable SDCARD debugging if desired
Provides for per-application control over SDCARD debugging
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 4 Apr 2017 23:02:46 +0000 (16:02 -0700)]
altos: Disable FAT commands unless requested
This are debugging commands; don't provide them unless requested
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 4 Apr 2017 23:00:56 +0000 (16:00 -0700)]
telegps-v0.1: Hack up for SDCARD debugging
Disable everything not SDCARD related for debugging.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 4 Apr 2017 22:59:56 +0000 (15:59 -0700)]
altos: Define CC115L spi speed in each product
Different SoCs have different SPI speeds available; have each product
specify the speed to use instead of trying to use 4Mhz everywhere.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 18:41:51 +0000 (11:41 -0700)]
cortexelf-v1: Add pin definitions for 1802 connections
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 18:37:21 +0000 (11:37 -0700)]
stm: Add a few more GPIO functions to make dealing with the 1802 easier
ao_gpio_set_mask and ao_gpio_get_all
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 18:36:52 +0000 (11:36 -0700)]
cortexelf-v1: Make bit flipping array constant
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 16:36:00 +0000 (09:36 -0700)]
cortexelf-v1: doodling with 1802 bits
Just some random ideas about how to manage the 1802
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 03:33:49 +0000 (20:33 -0700)]
cortexelf-v1: Add bit flipping array generator
Someone hooked up the data lines between the systems backwards, so we
get to swizzle the bits in software.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 02:32:17 +0000 (19:32 -0700)]
cortexelf-v1: Hook up hex keypad using matrix input driver
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 02:31:45 +0000 (19:31 -0700)]
altos: Allow buttons to be high when pressed rather than low
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 02:30:57 +0000 (19:30 -0700)]
altos: add button matrix driver
Scans the matrix once per clock tick queuing events for changed keys.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 00:39:26 +0000 (17:39 -0700)]
cortexelf-v1: Hook up AS1107 in test mode
Provide a 'L' command to display values
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 3 Apr 2017 00:39:05 +0000 (17:39 -0700)]
altos: Add AS1107 LED display driver
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 23:37:42 +0000 (16:37 -0700)]
cortexelf-v1: Add buttons
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 23:22:28 +0000 (16:22 -0700)]
cortexelf-v1: Add serialblather command.
This reads from stdin and dumps it to both serial ports until you type ~
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 23:17:33 +0000 (16:17 -0700)]
lisp: Fix up lisp build so projects can get ao_lisp_const.h built as needed
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 22:56:17 +0000 (15:56 -0700)]
stm: Use common flash wait loop instead of inlining
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 22:53:17 +0000 (15:53 -0700)]
cortexelf: Add lisp interpreter
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 22:40:03 +0000 (15:40 -0700)]
cortexelf-v1: Use new memory map to access all flash and ram. Add fat.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 22:28:45 +0000 (15:28 -0700)]
cortexelf-v1: Hook up serial consoles for debugging
This will make playing with serial ports easier for now.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 22:18:34 +0000 (15:18 -0700)]
cortexelf-v1: Fix clock to drive VGA at 640/480. Add sdcard, remove others
VGA requires the CPU to run at 24MHz.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 2 Apr 2017 22:04:09 +0000 (15:04 -0700)]
cortexelf-v1: Add ps/2 and vga with graphics
Start hooking up devices with known drivers.
Signed-off-by: Keith Packard <keithp@keithp.com>
Bdale Garbee [Sun, 2 Apr 2017 21:47:31 +0000 (15:47 -0600)]
capture pnpservo makefiles too
Bdale Garbee [Sun, 2 Apr 2017 21:47:14 +0000 (15:47 -0600)]
makefiles too
Bdale Garbee [Sun, 2 Apr 2017 21:41:56 +0000 (15:41 -0600)]
initial skeleton of CortexELF support
Bdale Garbee [Sat, 1 Apr 2017 18:23:24 +0000 (12:23 -0600)]
first rough cut at skeleton of code for pnpservo .. altos boots and runs
Keith Packard [Mon, 6 Mar 2017 06:42:37 +0000 (22:42 -0800)]
doc: Rename telemini doc file from telemini-v1.0.inc to telemini.inc
This file now contains information on both TeleMini versions.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 6 Mar 2017 06:33:36 +0000 (22:33 -0800)]
ao-tools/ao-flash-stm: Use openocd instead of st-utils
openocd upstream and debian package can both flash stm32l processors,
so use that in preference to st-flash.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Thu, 2 Mar 2017 21:37:12 +0000 (13:37 -0800)]
ao-tools/ao-flash-lpc: Adapt to current openocd LPC support
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>
Keith Packard [Wed, 1 Mar 2017 22:01:59 +0000 (14:01 -0800)]
telemini outline svg had wrong version number
Keith Packard [Wed, 1 Mar 2017 21:53:36 +0000 (13:53 -0800)]
Add initial TeleMini v3 docs
Uses pictures of the prototype.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 21 Feb 2017 01:34:43 +0000 (17:34 -0800)]
altos/nucleo-32: Update lisp files, add beeper support
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 21 Feb 2017 01:32:09 +0000 (17:32 -0800)]
altos/lisp: Not quite ready to start making it look like scheme yet
Lots more code to write before these symbols can be exposed.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 21 Feb 2017 01:29:15 +0000 (17:29 -0800)]
altos/stmf0: Support timer 2/3 for the beeper
Tested on timer 2, all four channels.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 21 Feb 2017 00:51:09 +0000 (16:51 -0800)]
altos/stmf0: Support tim1 beeper channel other than 3
ch1 was broken and ch2 didn't have any code at all.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 21 Feb 2017 01:33:37 +0000 (17:33 -0800)]
altos/telemini-v3.0: Add beeper defines needed for more general beeper code
The beeper code now wants to know which timer, port and pin are in use.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:18:58 +0000 (12:18 -0800)]
altos: Add stm-vga demo project
Uses the VGA and PS/2 drivers to provide an interactive console.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:16:27 +0000 (12:16 -0800)]
altos/stm: Add draw and lisp to make search paths.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:21:39 +0000 (12:21 -0800)]
altos: Add console driver using VGA and PS/2
Provides an interactive text console.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:19:42 +0000 (12:19 -0800)]
altos: Add PS/2 keyboard driver
Interrupt driven, includes standard US keymap.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 20 Nov 2016 08:04:27 +0000 (00:04 -0800)]
altos: Add VGA driver for STM32L processors
Generates vsync/hsync using timers and pixel data using the SPI port.
320x240 video using 640x480 mode and a 24MHz "pixel" clock.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:17:42 +0000 (12:17 -0800)]
altos: Add bitmap drawing code
Includes solid fills, text and lines.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:15:45 +0000 (12:15 -0800)]
altos/stm: Add nvic priority register fields. Add more TIM234 defines.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:14:10 +0000 (12:14 -0800)]
altos/stm: Make i2c code handle PCLK1 of 24MHz
Just adds the necessary defines to the code.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 20:12:43 +0000 (12:12 -0800)]
altos/stm: Allow DMA channels to be hijacked by other code
This lets code which needs finer control over DMA to use the channel
without interference, and leaves the DMA engine running so that it can.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 10 Jan 2017 22:45:25 +0000 (14:45 -0800)]
altos: Allow for console to be used for stdio
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 10 Jan 2017 22:43:07 +0000 (14:43 -0800)]
altos/avr: Avoid warning about unused args in stdio_put and stdio_get
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 20 Nov 2016 10:59:40 +0000 (02:59 -0800)]
altos/stm: Allow use basepri instead of primask for masking interrupts
This allows for high priority interrupts (priority 0) to run, even
when other interrupts are blocked. Code executing in such interrupt
handlers must not attempt to control task execution as that will race
with the scheduler.
Select this by defining AO_NONMASK_INTERRUPT in ao_pins.h.
non-maskable interrupt priority is AO_STM_NVIC_NONMASK_PRIORITY
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 21 Nov 2016 04:54:10 +0000 (20:54 -0800)]
altos/stm: Interrupt priority is in the upper bits of the priority mask
Because the STM32L only offers 16 priority levels, the bottom four
bits of each priority mask are not used. All of the interrupt priority
settings in the system were using values < 16, making them all
effectively the same. Fix that by moving them into the upper 4 bits
and using symbolic constants everywhere.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 21 Nov 2016 04:56:01 +0000 (20:56 -0800)]
altos: Don't wait while idle if trying to minimize interrupt latency
Keeping the scanout running reasonably means keeping interrupt latency
constant, and that requires leaving the CPU running. Don't wait for
interrupts when the system is running in this mode.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 6 Jan 2017 17:10:23 +0000 (09:10 -0800)]
ao-tools/ao-usbload: Pad image with 0xff instead of random bits
Clear the temporary block to 0xff before copying in the target data so
that any unused bytes end up being left at 0xff instead of inheriting
whatever data was in the block before.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 18 Dec 2016 04:57:38 +0000 (20:57 -0800)]
altos/cc1111: Remove unneeded initialization in ao_timer.c
The timers are all stopped when the chip boots, so no need to stop
them. This saves some text space, allowing the current code to (just
barely) fit.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 01:36:04 +0000 (17:36 -0800)]
altoslib: Add TeleMini v3 support
eeprom, telemetry and monitor idle. This is just like TeleMini v2,
except the ADC ranges are all difference as the voltage dividers are
different and the ADC itself has a different range.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 01:40:28 +0000 (17:40 -0800)]
altos/telemini-v3.0: Swap main and apogee sense pins.
These were just hooked up wrong in the software.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 01:39:21 +0000 (17:39 -0800)]
altos: Split out TeleMini v3 log/telem labeling
Allow the ground software to know which TeleMini version is in use,
even though they are very similar with only ADC values differing.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 19 Feb 2017 06:56:49 +0000 (22:56 -0800)]
altos/telemini-v3.0: Finish initial turn-on
TeleMini v3.0 is nearly working; there are some ADC issues still, and
lots of altosui work left to decode the new telemetry packet.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 3 Feb 2017 05:52:57 +0000 (06:52 +0100)]
altos/telemini-v3.0: Update to second prototype version
Separate radio xtal means we run the processor at 48MHz.
Fix the battery monitoring voltage divider resistor values.
Disable most of the code until we've got the radio working.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 28 Jan 2017 23:35:48 +0000 (15:35 -0800)]
altos: Initial TeleMini v3.0 code
For first prototype, which attempted to use the SoC clock for the radio.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Mon, 20 Feb 2017 01:42:05 +0000 (17:42 -0800)]
altos/stmf0: Add adc and beep support for TeleMini v3.0
Note that the ADC code is running very slowly as required by the high
impedance dividers on the TeleMini v3.0 pyro circuits.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 19 Feb 2017 06:49:34 +0000 (22:49 -0800)]
altos: Require SPI speed to be declared for cc1200
The cc1200 can't run SPI faster than 10MHz, so make sure every device
picks a SPI clock slower than that.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 19 Feb 2017 06:55:41 +0000 (22:55 -0800)]
altos: Allow applications to define LEDs for ao_report.c
In case they don't have both a red and green LED.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 19 Feb 2017 06:54:35 +0000 (22:54 -0800)]
altos/stmf0: Allow projects to not use the USB boot loader
Let applications define HAS_BOOT_LOADER on their own if desired.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 19 Feb 2017 06:53:03 +0000 (22:53 -0800)]
altos/stmf0: Complain if the SPI configuration isn't complete
If the pin usage values SPI_1_PA5_PA6_PA7 or SPI_1_PB3_PB4_PB5 aren't
defined, then the speed values for the pins aren't going to get set
correctly, which results in erratic SPI behaviour.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 3 Feb 2017 05:51:11 +0000 (06:51 +0100)]
altos/stmf0: Allow apps to leave interrupt vectors at 0
TeleMini v3.0 doesn't need a boot loader, so we'll have the app run
its interrupt vector right at the bottom of the address space instead
of copying it to the bottom of ram and reconfiguring the chip to use that.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 19 Feb 2017 06:46:29 +0000 (22:46 -0800)]
ao-bringup: test-chaoskey needs to use the SerialNumber dmesg line
I had a locally hacked kernel which was reporting the serial number
along with the device name. Instead of depending on that, just look
for the regular SerialNumber report which is in all kernel versions
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 3 Feb 2017 05:47:32 +0000 (06:47 +0100)]
ao-bringup: Allow serial number on turnon_easymega cmdline
This makes it a bit quicker to do a batch of them.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 28 Jan 2017 23:33:53 +0000 (15:33 -0800)]
altos: Eliminate printf format warning with long vs int
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 22 Jan 2017 23:29:13 +0000 (15:29 -0800)]
altos/chaoskey: use both halves of the CRC
When pulling 16 bits from the 32-bit crc, instead of just using the
low bits, xor the two halves together. This appears to even out the
number of zero and one bits.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 18 Feb 2017 20:14:59 +0000 (12:14 -0800)]
altos/lisp: Start adding scheme symbols
Migrating to something more like scheme
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 10 Jan 2017 22:47:03 +0000 (14:47 -0800)]
altos/lisp: Add casts to keep the latest GCC from whinging
Something about alignment issues.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 10 Jan 2017 22:45:59 +0000 (14:45 -0800)]
altos/lisp: Tell compiler that the two lisp memory pools are aligned
Otherwise, it will generate unaligned accesses to things fetched from
them. Sigh.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 20 Nov 2016 09:41:59 +0000 (01:41 -0800)]
altos/lisp: Clean up hanoi.lisp demo a bit
No serious changes.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 07:37:44 +0000 (23:37 -0800)]
altos/lisp: Move stack recursion check after null check
Don't crash when printing null stack this way.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 06:57:22 +0000 (22:57 -0800)]
altos/lisp: Include memory stats for test program
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 06:53:36 +0000 (22:53 -0800)]
altos/lisp: Cleanup some DBG defines
Get rid of the remaining duplicate defines.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 06:52:53 +0000 (22:52 -0800)]
altos/lisp: Share binary search for memory chunk between mark and move
Save some text space.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 06:52:10 +0000 (22:52 -0800)]
altos/lisp: Add builtin 'collect'
Collect memory, return amount free.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 06:41:46 +0000 (22:41 -0800)]
altos/lisp: Sort frames by atom
Fortunately, the collector always retains the relative order between
addresses, so we can sort based on the atom address itself. This
reduces the time spent looking for names in larger (e.g. global)
frames.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 05:17:54 +0000 (21:17 -0800)]
altos/lisp: Build new ao_lisp_stack.c into test and lambdakey
Helpful to include the new source file.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 05:16:11 +0000 (21:16 -0800)]
altos/lisp: bounds check in move_map plus binary search
This makes move_map faster by skipping all addresses which aren't
changing.
Also changed the interface from address to offset to avoid computing
the offset multiple times.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 05:15:33 +0000 (21:15 -0800)]
altos/lisp: Empty lambda body is not an error
It's not very exciting, but it's still legal
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 05:14:47 +0000 (21:14 -0800)]
altos/lisp: Use poly stashes for stacks
Saves some memory.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 05:12:50 +0000 (21:12 -0800)]
altos/lisp: Make DBG settings global
This avoids having different values in different files, which wasn't useful.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Sat, 19 Nov 2016 03:04:05 +0000 (19:04 -0800)]
altos/lisp: Add continuations
This provides call/cc and makes 'stacks' visible to the application.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 18 Nov 2016 02:45:31 +0000 (18:45 -0800)]
altos/lisp: Take advantage of implicit progns in hanoi demo
Remove extra progn wrappers now that cond, lambda and while all
support implicit ones.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 18 Nov 2016 00:52:30 +0000 (16:52 -0800)]
altos/lisp: have 'while' return the last body value
Instead of always returning 'nil', let while return the last body
value.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 18 Nov 2016 00:51:34 +0000 (16:51 -0800)]
altos/lisp: Take advantage of implicit progn in ROM code
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 18 Nov 2016 00:08:15 +0000 (16:08 -0800)]
altos/lisp: Make lambda, cond and while all have implicit progns
This lets all of these execute more than one sexpr, returning the
value of the last.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 18 Nov 2016 00:07:42 +0000 (16:07 -0800)]
altos/lisp: Compile ao_lisp_make_const -no-pie
Makes debugging easier
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 18 Nov 2016 00:06:55 +0000 (16:06 -0800)]
altos/lisp: Fix uninitialized values in ao_lisp_make_const
Signed-off-by: Keith Packard <keithp@keithp.com>