In related news, I contributed a Lua backend to Ribbit VM. I'd like to integrate that somehow. There is some overlap, though my main aim is compilation.
Conversation
Anyways I think I know what I want: rebuild the ideas of Staapl (interactive tethered development), but build it on top of standard tools (GDB & C) using a lowest common denominator language (Scheme or Scheme subset) as a focal point.
1
Actually surprised I got compilation from Scheme to GDB script working with so little effort. It can now do functions, if/then/else and while loops (from named let or single-def letrec, with support for nesting).
1
1
Managed to encode anonymous functions - see gist. Unfortunately due to global variables only, there is no re-entrancy. E.g. nested 'map' won't work. Can't think of a simple solution, so will probably resort to inlining.
1
Possible solutions: use nested data structures on target, but this requires target memory. GDB can host arrays so could implement memory which could host a low level VM + GC, but that seems a bit far-fetched.
1
This needed a break apparently... I know where to go next: build something with RTIC first, then see how to mesh the state machine compiler with something that maps to RTIC or some stripped down C version of the RTIC idea (use Cortex M NVIC as a scheduler).
2
Replying to
I'm building a hobby computer + OS, using RTIC as the kernel. One of the first steps is going to be to port my Forth to it to use as a shell.
If you want something less serious to work with, happy to send you some hardware and get you started :)
1
1
Replying to
What hardware is is based on? I might have something in the drawer that can run your software.
1
1
Replying to
nRF52840! Specifically (right now) the Adafruit Feather Express, but any nRF52840 based dev kit could probably work, and honestly anything cortex-m wouldn't be hard to support.
Right now it mostly uses USB, but a regular UART should be possible to support too.
1
Replying to
Hah! That means I need to write some docs :)
The kernel is here: github.com/jamesmunns/pel,
You'll need to install the probe run tool: crates.io/crates/probe-r first
And then you should be able to "cargo run --release" to flash the kernel
Warning:
1
1
I'm still hammering out the syscall interface, and haven't set up usermode, program loading, or loading, and chances are you'll have a slightly different QSPI chip, and will need to modify the pin mapping to suit your board.
It doesn't DO much yet :)
github.com/jamesmunns/pel
1
Show replies

