RISC OS Reincarnated

I finally got around to watching the YouTube talk about the Acorn Archimedes referenced by Wikipedia and I highly recommend it:

36C3 – The Ultimate Acorn Archimedes talk

Since I’ve been reading and watching so much about consciousness, the soul, and reincarnation-related themes, the fact that I’m interested in RISC OS today, despite not having any easy access to, nor interest in collecting, the original Archimedes hardware, is a real example of an OS surviving through being ported to more commodity single-board computers like the Raspberry Pi 3 that I’m using it on.

The original lifetime of the Archimedes was tragically limited compared to the value that Acorn was offering for the money. I agree 100% with the conclusions of Matt Evans, the presenter, that the Amiga 500 and then Amiga 1200 offered equally good value for the money for playing games, and by 1991 the “serious” market was divided between PC clones running Windows 3.x, or Mac 68030/040 models for people with serious money to spend.

Thankfully, I’m looking at C and not ARM assembler for the SMB client that I’ve decided to upgrade to SMB 2.x client support, for the challenge and also the cash bounty, and I’m grateful that I only have a small bug or two to fix in the SMB 1 client code, for completeness’ sake. There’s something not very fun about 1990s software protocols. The retro hardware is quite charming, but not a 722-page CIFS spec.

Microsoft made a lot of improvements in the interval between Windows XP and the much-maligned Windows Vista, without which the later versions of Windows wouldn’t have been very good, and building a new SMB 2 protocol without any of the ancient obsolete and poor design decisions, was very smart. I can see now why there was so much potential in SMB 1 for buffer overflow exploits consider how it’s both sloppy and overly complicated.

There’s no money to be made in puzzling over BBC BASIC type-in programs from the early 1990s, to upgrade the 26-bit assembly code to be compatible with the ARMv8 in my Pi 3, which has the least backwards-compatibility. Thankfully, the RISC OS Open folks have put all the ARMv7 compatibility fix info on one page.

I’d have known of Sophie Wilson as the designer of the ARM instruction set (if I were a chip designer, I’d be more interested in Steve Furber‘s design of the chip itself, but I’m a software guy). But I wouldn’t have fully appreciated her second big influential contribution that I think is equally if not more impressive, which is the design and implementations of BBC BASIC, particularly the RISC OS version.

There are a lot of bold decisions in both the ARM instruction set and BBC BASIC, with only the 26-bit + flags program counter leading to trouble later. But keep in mind that 64MB of RAM cost as much as a small car back then and they were trying to optimize for fast memory access.

Case sensitivity in BBC BASIC was a bold decision that I don’t think I would have made, but at least the StrongED text editor will auto-capitalize keywords. That’s not always a good thing for the type-in programs that use a lowercase variable that’s the same as a keyword, which you’re allowed to do (“colour” vs. COLOUR). That’s on top of having to tell 0 from O and 1 from l in a dot-matrix printout reproduced in a magazine and then scanned into a PDF.

From a marketing perspective, it’s hard to explain to people what was essentially a 68030 (ARM2) or 68040 (ARM3) machine for a 68000 or 68020 price, when the ARM was doing so much more per clock cycle. And they really wanted to save pushing an extra 32 bits of RAM on a context switch. Hence the 26-bit mode.

I remember as a kid getting one of the Loadstar disk magazines for the Commodore 64 that had a public domain version of COMAL, which was a more Pascal-like BASIC, and there was actually a version of COMAL for the BBC Micro. There was an Acorn User series circa 1990 that covered different programming languages and one of them was COMAL. The article pointed out that BBC BASIC was so good and already Pascal-like that there was little need for anything else.

There were actually BBC BASIC interpreters from other companies for a bunch of other systems, including the Mac and there was a BBC Micro emulator for the Amiga that you could get in the UK (I also learned by reading Acorn User). But I had no idea that BBC BASIC existed, much less was as good as it was, since there was no native Amiga version comparable to the RISC OS version until many years later.

Another issue of Acorn User covered both C and its precursor, BCPL, in the same article, which amused me because that language is both British and an annoyance to Amiga coders because the original version of AmigaDOS was written mostly in BCPL and so addresses and strings are stored in data structures differently than you normally do in C.

It’s nice to be able to experience the current incarnation of what is in some cases decades-old code (updated for 32-bit mode) that’s still perfectly useful, but I’m still somewhat jealous that I didn’t have the option to have tried to acquire from my parents an Archimedes instead of an Amiga 500, because both the C compiler and 68000 assembly language were somewhat intimidating to me and gave me low self-esteem as a programmer that I might not have had if I’d had an ARM and BBC BASIC available, including on the 8-bit computers at school, instead of Applesoft and Commodore 64 (POKEs and PEEKs!) BASIC with all their respective ugliness.

I spent so many hours as a kid typing in long strings of hex digits of assembly language programs for the C64 and not learning anything other than how to recognize a few common sequences like JSR $FFD2 from their hex codes. But there are some really ambitious type-in programs in Acorn User, for both the 8-bit BBC Micro line, including the less popular models, and the Archimedes, including demos of ray tracing and other advanced graphics, and even a COBOL compiler and COBOL interpreter (spread across two issues). I’m sure it’s a somewhat limited subset of the language, but I would’ve learned a lot more from those examples.

Oh, speaking of bold decisions that not everyone would make, on RISC OS, it’s the mouse down event that triggers buttons, not mouse up, so if you start to click on something, you’d better have committed to actually following through because you can’t move the mouse before releasing. On the plus side, it feels snappier.




Leave a Reply

Your email address will not be published. Required fields are marked *