https://stardot.org.uk/forums/viewtopic.php?p=331797#p331797 wrote: Over at the Raspberry Pi forum Eric Olsen is working on a port of my BBC BASIC interpreter (with all the 'modern' extensions, like structures and 64-bit integers) to the Raspberry Pi Pico, a $5 computer! This would be, at least initially, a 'console mode' implementation, requiring an external terminal for user I/O.
He has already had considerable success, but is encountering some problems working within the constraints of having only about 256K of RAM in total. Although that sounds generous for BBC BASIC, I have not had to worry about limited memory availability on modern platforms so my code is not optimised for that (for example the string accumulator is currently 64K just because that's a convenient amount).
So he and I are working on ways to reduce the memory footprint, one of which is to reduce the size of the string accumulator. I have also proposed the following approach to memory management, maximising the flexibility of how the limited RAM is divided between the various competing demands, largely by the BASIC programmer tuning the value of HIMEM to suit the particular program:
This is very much in keeping with the BBC BASIC 'philosophy' of giving the programmer low-level control of memory allocation. It's not yet clear whether it will be possible to cajole the Pico's kernel to allow this arrangement (which involves the CPU stack being within our malloc'ed block).
https://stardot.org.uk/forums/viewtopic.php?p=333356#p333356 wrote:BBC BASIC for the Raspberry Pi Pico is now at a stage where it can be experimented with. It's very much a work-in-progress (for example there isn't yet a Thumb2 assembler) but it can run programs and control the GPIO. Installation instructions can be found here.
There are a number of demo programs supplied, including one (gpio.bbc) to blink the LED:https://youtu.be/Kp8Nuf6DxWs
Code: Select all
`gpio_put` = SYS("gpio_put") led_pin = 25 SYS "gpio_init", led_pin SYS "gpio_set_dir", led_pin, 1 REPEAT SYS `gpio_put`, led_pin, 1 WAIT 25 SYS `gpio_put`, led_pin, 0 WAIT 25 UNTIL FALSE