RISC OS Pico [1] (I think it was short for Pi Computer) booted the Pi directly into BBC BASIC. It would be great if they'd make it a supported image on the current Pi boards.
The .zip archive is still available if you follow the links on archive.org (and even includes the book "First Steps in Programming RISC OS Computers" and associated demo programs.) Its 2.1MB boot .IMG is somewhat smaller than Ubuntu. Has anyone tried it?
Yes. Or, assuming the old mechanism still works, using *Configure Language to boot into BASIC by default every time the machine starts.
My guess is that the RISC OS version of BBC BASIC will also have slightly better compatibility with things like old printed program listings than BBC BASIC for Linux, so may be a better choice for the full nostalgia hit.
Just did! Has only bootloaders from 2014, though, and firmware changes with the Pi itself mean it won't work on the latest Raspberry Pi models, nor will replacing the RISCOS.IMG from a current version with the Pico version.
Write the latest full RISC OS (through Raspberry Pi Imager or elsewhere). Edit CMDLINE.TXT per their instructions, and after it boots, on your keyboard, press F12 to open a command line at the bottom of the screen, type in the commands from their instructions, and then also type:
Unplug Desktop
Then press Ctrl-Break to reboot. You don't need to copy files to other SD cards or anything. It will boot immediately into BBC BASIC in Mode 7 (40x25, Teletext pixels, 16 colors).
In swapping the SD card between a Pi 1/2 and a Pi 4, I was getting occasional misfires, though, and it wouldn't boot into BASIC, getting hung up on the wrong networking driver, or complaining about a missing desktop. Ctrl-Break to reboot should fix it.
My PC XT didn't boot into BASIC, I wonder why. It's long gone now so I can't investigate what hardware it actually had.
This boots X11/Wayland and then an SDL app on top of it, I wonder what it would take to write a shell or init that the kernel loads straight after it's done loading itself up. Maybe The systemd folks can make systemd-basic...
I remember our school computers you had to start the machine without anything in the floppy drive to get dumped into BASIC.
Unfortunately it was a very limited BASIC. I guess there wasn't much space in the BIOS ROMS. It was pretty much always worth it to boot DOS and start GWBASIC.
You can probably make it boot to basic a lot quicker. Don't need to wait for all services to start up. Even LibreELEC boots faster. If I'm correct and this uses SDL, SDL2 supports kms/drm.
I do recall that there is a port of MMBasic for the Raspberry Pi floating around somewhere. I think it is on the forums at https://thebackshed.com but I couldn't tell you how to find it. I do think it runs under Linux and not on bare metal but I might be mis-remembering.
Actually dug through because I only had a vague recollection. So the Pi-Cromite version I remembered has been discontinued. However, there is a MMBasic for Linux that cribs some code from that project. And, it can be compiled for the Raspberry Pi. I might venture to suggest that this might be one of the most fully featured Basic implementations that can found for the Raspberry Pi.
Link here: https://github.com/thwill1000/MMB4L
There are a number of ways to accomplish this today. All have trade-offs, but generally, the main illusion-breaker is when they are user space programs that run on top of Linux, mostly on account of random console spew (which can be remedied) and boot-to-prompt time (which can be made to generally about <10 seconds, at best — DietPi and TinyCoreLinux are both useful here).
Incidentally, the RISC OS Pico[1] mentioned is out of date and won’t run on the Pi 400 or other newer Pi’s.
Aside from the excellent PC-BASIC[2] and BBC BASIC[3] mentioned, another in that vein is MatrixBrandy[4], a fork of Brandy BASIC[5]. PC-BASIC is excellent if, like me, you grew up on an IBM PCjr, since that is a very specific brand of GW-BASIC with better graphics & polyphonic sound. But, being Python, it’s relatively slow when doing things like POKEing the emulated graphics buffer and the like. MatrixBrandy is C-based and very fast, but has a number of BBC Micro-era quirks in the spirit of emulating those old systems.
Another fun route is emulators that have been ported to a Pi bare metal mode, such as a fork of the C64 emu VICE[6] called BMC64[7].
Lastly, there are some fun from-scratch fantasy consoles like PICO-8[8], TIC-80[9], and LIKO-12[10], all of which are based on SDL under the hood. To my knowledge, the only one with a bare metal version is TIC-80’s[11]. There is also Pixel Vision 8[12]. Generally, you code in Lua in these.
My first computer was a hand-me-down C64 from my dad, and it's part of the reason that I started programming while I was so young. I never got good at programming it, but I thought it was so cool that you start programming immediately after booting up. This would have been ~1998-1999, WELL past the the C64 hayday, but I had a lot of fun playing with it.
I didn't really know how to use DOS on my parents' Windows computer, and so as far as I knew at the time, the only way to do programming there was to install a bunch of compilers and that scared me.
If only you'd known DOS shipped with Q-Basic! After we got a Cyrix 386 back in the 80's I moved on from Commodore Basic (on the C128) to that, then Turbo Basic, Turbo Pascal and then Turbo C.
Yep! Had I known about Q-Basic there's a very high likelihood I would have eaten that up, but this was really before I knew how to use the internet, and I wouldn't have even known what to look for on Lycos if I did know.
I played with C64 Basic for a few years, until eventually I got the courage to download Visual Studio Express and learn a bit of C++ when I was 13, and hop over to Linux full time and use Emacs + GCC when I was 14/15, largely because the heavy reliance on the command line for Linux reminded me a bit of C64 basic.
Occasionally I miss how integrated coding was with the operating system in the past. I think overall de-emphasizing coding is a good thing since I feel like the computer is useful enough to justify non-nerds having access to it, but there was something so cool about how accessible it was to, for example, make a game on the C64.
If I want to make a game now, I basically have two options: A) Start from "scratch" and learn OpenGL/DirectX/Vulkan/SDL and basically learn a masters-degree-level of information about graphics engineering, or B) Download something third-party like Unity or GameMaker [1] and work from there. I'm not going to say it's "worse" now, but it's definitely a steeper learning curve than just hoping into Basic and playing around with `poke`.
[1] To be clear, both of those things are pretty cool, not knocking them.
Only starting with MS-DOS 5.0, until then it was GW-BASIC/BASICA.
And the competition DR-DOS/PC-DOS lacked them (PC-DOS had the early versions though).
I also made a similar Borland progression, although Turbo C 2.0 only took a couple of months and was quickly replaced by Turbo C++ 1.0 on the same year.
After Turbo Pascal 6, dealing with C was a downgrade.
Regarding the BASIC nostalgia, only recently did I became aware that the original BASIC (Dartmouth BASIC) was actually JIT based and it was the adaption of BASIC into the home computers that kind of made its interpreted version more widely known.
While there were several flavours of BASIC compilers there were never as widely spread as these interpreters.
I find it interesting, it could have been yet another what-if, had the compilers been as widely accessible.
Boot-to-Basic Computers are great fun and excellent for learning but just do not have the stack to build real world applications in 2021 on eg SQL, sockets, SSL, etc
I would love to be able to just turn on the computer and have a simple basic program run a touchscreen interface to my factory SQL systems but we truly must stand on the shoulders of giants in this regard.
(talking about boot-to-basic here no basics that run on an OS and can access the whole OS stack)
One of my very first computers was an IBM PCjr. I got it way after it was obsolete, but my parents didn't have money so I took what I could get. With the cartridge inserted I could boot to 'gwbasic'. I started programming there, a long time ago, and I still program today. It's nice to see this part of history resurfacing.
44 comments
[ 2.3 ms ] story [ 128 ms ] threadI, of course, desperately wanted LOGO (and of course the robot turtle, too!), but my family couldn't afford it.
RISC OS Pico [1] (I think it was short for Pi Computer) booted the Pi directly into BBC BASIC. It would be great if they'd make it a supported image on the current Pi boards.
The .zip archive is still available if you follow the links on archive.org (and even includes the book "First Steps in Programming RISC OS Computers" and associated demo programs.) Its 2.1MB boot .IMG is somewhat smaller than Ubuntu. Has anyone tried it?
[1] https://web.archive.org/web/20181109020010/https://www.risco...
My guess is that the RISC OS version of BBC BASIC will also have slightly better compatibility with things like old printed program listings than BBC BASIC for Linux, so may be a better choice for the full nostalgia hit.
https://www.bencollier.info/projects/electronics/emulation/f...
When I tried RISC OS' own instructions to have the equivalent experience with their latest OS versions, they seemed to be missing a step, too, as I'd still boot to a desktop on a Pi 4: https://www.riscosopen.org/wiki/documentation/show/Raspberry...
Write the latest full RISC OS (through Raspberry Pi Imager or elsewhere). Edit CMDLINE.TXT per their instructions, and after it boots, on your keyboard, press F12 to open a command line at the bottom of the screen, type in the commands from their instructions, and then also type:
Then press Ctrl-Break to reboot. You don't need to copy files to other SD cards or anything. It will boot immediately into BBC BASIC in Mode 7 (40x25, Teletext pixels, 16 colors).In swapping the SD card between a Pi 1/2 and a Pi 4, I was getting occasional misfires, though, and it wouldn't boot into BASIC, getting hung up on the wrong networking driver, or complaining about a missing desktop. Ctrl-Break to reboot should fix it.
This boots X11/Wayland and then an SDL app on top of it, I wonder what it would take to write a shell or init that the kernel loads straight after it's done loading itself up. Maybe The systemd folks can make systemd-basic...
Unfortunately it was a very limited BASIC. I guess there wasn't much space in the BIOS ROMS. It was pretty much always worth it to boot DOS and start GWBASIC.
Mine didn't either, it booted into DOS 3.0(?) and I got to BASIC by running BASICA.EXE.
If I had to guess, it booted into DOS if you had a hard disk and otherwise booted BASIC from a ROM?
I still have my IBM PC (5150), taking up a lot of closet space.
[1] https://github.com/AOZ-Studio/AMOS-Professional-Official
Sure what you have then is an Amiga emulator that boots strait into AMOS but I think that’s fine as it would be a great beginner environment.
which is (or was in 2013) a minimal bare-metal BASIC for the Pi.
Via HN: https://news.ycombinator.com/item?id=8228763
I think using a Cortex M7 with its simpler memory model keeps it closer to the spirit of the 8 bit machines than is possible with a Cortex A series.
[1] https://geoffg.net/maximite.html
I do recall that there is a port of MMBasic for the Raspberry Pi floating around somewhere. I think it is on the forums at https://thebackshed.com but I couldn't tell you how to find it. I do think it runs under Linux and not on bare metal but I might be mis-remembering.
Incidentally, the RISC OS Pico[1] mentioned is out of date and won’t run on the Pi 400 or other newer Pi’s.
Aside from the excellent PC-BASIC[2] and BBC BASIC[3] mentioned, another in that vein is MatrixBrandy[4], a fork of Brandy BASIC[5]. PC-BASIC is excellent if, like me, you grew up on an IBM PCjr, since that is a very specific brand of GW-BASIC with better graphics & polyphonic sound. But, being Python, it’s relatively slow when doing things like POKEing the emulated graphics buffer and the like. MatrixBrandy is C-based and very fast, but has a number of BBC Micro-era quirks in the spirit of emulating those old systems.
Another fun route is emulators that have been ported to a Pi bare metal mode, such as a fork of the C64 emu VICE[6] called BMC64[7].
Lastly, there are some fun from-scratch fantasy consoles like PICO-8[8], TIC-80[9], and LIKO-12[10], all of which are based on SDL under the hood. To my knowledge, the only one with a bare metal version is TIC-80’s[11]. There is also Pixel Vision 8[12]. Generally, you code in Lua in these.
[1] https://web.archive.org/web/20181109020010/https://www.risco...
[2] http://robhagemans.github.io/pcbasic/
[3] https://www.bbcbasic.co.uk/bbcbasic.html
[4] https://github.com/stardot/matrixbrandy
[5] https://sourceforge.net/projects/brandy/
[6] https://vice-emu.sourceforge.io
[7] https://accentual.com/bmc64/
[8] https://www.lexaloffle.com/pico-8.php
[9] https://tic80.com
[10] https://liko-12.github.io/
[11] https://github.com/nesbox/TIC-80/tree/master/build/baremetal...
[12] https://pixelvision8.github.io/Website/
I didn't really know how to use DOS on my parents' Windows computer, and so as far as I knew at the time, the only way to do programming there was to install a bunch of compilers and that scared me.
Simpler times!
I played with C64 Basic for a few years, until eventually I got the courage to download Visual Studio Express and learn a bit of C++ when I was 13, and hop over to Linux full time and use Emacs + GCC when I was 14/15, largely because the heavy reliance on the command line for Linux reminded me a bit of C64 basic.
Occasionally I miss how integrated coding was with the operating system in the past. I think overall de-emphasizing coding is a good thing since I feel like the computer is useful enough to justify non-nerds having access to it, but there was something so cool about how accessible it was to, for example, make a game on the C64.
If I want to make a game now, I basically have two options: A) Start from "scratch" and learn OpenGL/DirectX/Vulkan/SDL and basically learn a masters-degree-level of information about graphics engineering, or B) Download something third-party like Unity or GameMaker [1] and work from there. I'm not going to say it's "worse" now, but it's definitely a steeper learning curve than just hoping into Basic and playing around with `poke`.
[1] To be clear, both of those things are pretty cool, not knocking them.
And the competition DR-DOS/PC-DOS lacked them (PC-DOS had the early versions though).
I also made a similar Borland progression, although Turbo C 2.0 only took a couple of months and was quickly replaced by Turbo C++ 1.0 on the same year.
After Turbo Pascal 6, dealing with C was a downgrade.
While there were several flavours of BASIC compilers there were never as widely spread as these interpreters.
I find it interesting, it could have been yet another what-if, had the compilers been as widely accessible.
I would love to be able to just turn on the computer and have a simple basic program run a touchscreen interface to my factory SQL systems but we truly must stand on the shoulders of giants in this regard.
(talking about boot-to-basic here no basics that run on an OS and can access the whole OS stack)
However it does rely on NuttX for the runtime services.
UEFI Basic
https://github.com/LHerrmeyer/UEFI_Basic
10
20
25
30
10 PRINT "CHAZ WOZ ERE "; 20 GOTO 10
You can test it here:
https://bbc.godbolt.org/