Raspberry Pi Boot to BASIC
popey.com
popey.com
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:
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.
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.
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.
I, of course, desperately wanted LOGO (and of course the robot turtle, too!), but my family couldn't afford 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.
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
which is (or was in 2013) a minimal bare-metal BASIC for the Pi.
10 PRINT "CHAZ WOZ ERE "; 20 GOTO 10
You can test it here:
[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.
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
[10] https://liko-12.github.io/
[11] https://github.com/nesbox/TIC-80/tree/master/build/baremetal...
10
20
25
30
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.