💾 Archived View for gemini.susa.net › BBC_Micro_Time_Sink.gmi captured on 2022-06-03 at 23:24:58. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
It's weirdly compelling. This is proper low-level stuff right at the metal, something like a PIC microcontroller with a screen, and a keyboard, but I'm starting to realise that it's the architecture of the hardware and software in almost perfect usison that make this computer a bit of a masterpiece. I shouldn't be suprised, I suppose, since these are the people who were already conceiving ARM CPUs.
Okay, so it's custom chips are banal by Jay Miner standards, a serial processor and a video chip (the ULA). It has no hardware sprites, it has eight colours, two of which are black and white, and the other six are garish, and what passes for hardware scrolling is an inadvertent side-effect of the ULA design. On the other hand, here's what stands out to me on this 8-bit micro:
When I say it has what seems like a proper OS kernel, I mean that there's a wealth of services exposed by what are termed OSBYTE calls, whereby you set the A register with the service, using X & Y registers for parameters and return values, and make a call to address 0xFFF4 to invoke some service. Here's a selction of some of the stuff the OS provides:
There are many more, and all of these calls can be invoked from BASIC, or from machine code, or from the command line.
There are also VDU commands that provide services to draw graphics primitives to the framebuffer, render text, control cursors, and drive printers.
The BASIC ROM is organised in a similar way to the OS, where pretty much every feature that BASIC offers can be invoked from your machine code, so if you want to evaluate an expression, or convert a number to a string, or access a BASIC variable from machine code, then there's a consistent way to do all this.
Even with my superficial understanding of this system, I can already see that I could write a BASIC program, enhance its performance with machine code, and then migrate the whole thing to machine code, making use of the ROM routines that are exposed. Really powerful stuff.
And I haven't even started on the use of vectors as a mechanism of plugin system extensions, and the way the ROMs can identify themselves and provide OS handlers for their commands. You can tell this was all designed by people who really knew what they were doing.
One thing that I will add here, on a slightly philosophical note. There's something compelling about a computer that's immediately useable, with absolutely no distractions. As soon as I flick the power switch, the machine beeps and I'm ready to go. It's profoundly joyful, and whatever the underlying reason, I think it's the same thing that makes Gemini so appealing.
I currently have it on our livingroom floor, hooked up to our household telly. I'm waiting for an SRAM chip to wire up as two banks of paged RAM (or simulated ROM), and I'm going to repurpose the printer port as a general purpose IO port. I feel a little sad hacking something so old and relatively pristine, but it does seem made for exactly that purpose.