May 23rd, 2020

Hard Stare

A great price for a cheap BASIC – but with an extremely expensive legacy

Commodore's Jack Tramiel got a very sweet deal from Microsoft for MS BASIC, as used in CBM's PET, once of the first integrated microcomputers. The company didn't even pay royalties. The result is that CBM used pretty much the same BASIC in the PET, VIC-20 and C64. It got trivial adjustments for the hardware, but bear in mind: the PET had no graphics, no colour, and only a beep; the VIC-20 had (poor) graphics and sound, and the C64 had quite decent graphics and sound.

So the BASIC was poor for the VIC-20 and positively lousy on the C64. There were no commands to set colours, draw or load or save graphics, play music, assemble sound effects, nothing.

I.e. in effect the same BASIC interpreter got worse and worse with each successive generation of machines, ending up positively terrible on the C64. You had to use PEEKs and POKEs to use any of the machine's facilities.

AIUI, CBM didn't want to pay MS for a newer, improved BASIC interpreter. It thought, with some justice, that the main uses of the VIC-20 and C-64 were games machines, using 3rd party games written in assembly language for speed, and so the BASIC was a reasonable saving: a corner it could afford to cut.

The C64 also had a very expensive floppy disk drive (with its own onboard 6502 derivative, ROM & RAM) but a serial interface to the computer, so it was both dog-slow and very pricey.

This opened up opportunities for competition, at least outside the US home market. It led to machines like (to pick 2 extremes):
• the Sinclair ZX Spectrum, which was cheaper & had a crappy keyboard, no joystick ports, etc., but whose BASIC included graphics and sound commands.
• the Acorn BBC Micro, which was expensive (like the C64 at launch), but included a superb basic (named procedures with local variables, allowing recursion; if/then/else, while...wend, repeat/until etc., and inline assembly code), multiple interfaces (printer, floppy drive, analogue joysticks, 1nd CPU, programmable parallel expansion bus, etc.)

All because CBM cheaped out and used a late-1970s MS BASIC in an early-1980s machine with, for the time, quite high-end graphics and sound.

The C64 sold some 17 million units, so a lot of '80s kids knew nothing else and thought the crappy BASIC was normal. Although it was one of the worst BASICs of its day, it's even been reimplemented as FOSS now! The worst BASIC ever lives on, while far finer versions such as Beta BASIC or QL SuperBASIC languish in obscurity.

It is also largely responsible, all on its own, for a lot of the bad reputation that BASIC has to this day, which in turn was in part responsible for the industry's move away from minis programmed in BASIC (DEC, Alpha Micro, etc.) and towards *nix programmed in C, and *nix rivals such as OS/2 and Windows, also programmed in C.

Which is what has now landed us with an industry centred around huge, unmaintainable, insecure OSes composed of tens of millions of lines of unsafe C (& C derivatives), daily and weekly mandatory updates in the order of hundreds of megabytes, and a thriving industry centred around keeping obsolete versions of these vast monolithic OSes (which nobody fully understands any more) maintained and patched for 5, 10, even 15 or so years after release.

Which is the business I work in.


It sounds ridiculous but I seriously propose that much of this is because the #1 home computer vendor in the Western world kept using a cheap and nasty BASIC for nearly a decade after its sell-by date.

CBM had no real idea what it was doing. It sold lots of PETs, then lots more VIC-20s, then literally millions of C64s, without ever improving the onboard software to match the hardware.

So what did it do next? A very expensive portable version, for all the businesspeople who needed a luggable home gaming computer.

Then it tried to sell incompatible successor machines, which failed -- the Commodore 16 and Plus 4.

Better BASIC, bundled ROM business apps -- why?! -- but not superior replacements for its best-selling line. Both flopped horribly.

This showed that CBM apparently still had no real clue why the C64 was a massive hit, or who was buying it, or why.

Later it offered the C128, which had multiple operating modes, including a much better BASIC and an 80-column display, but also an entire incompatible 2nd processor -- a Z80 so it could run CP/M. This being the successor model to the early-'80s home computer used by millions of children to play video games. They really did not want, need or care about CP/M of all things.

This sold a decent 5 million units, showing how desperate C64 owners were for a compatible successor.

(Commodore people often call this the last new 8-bit home computer -- e.g. its lead designer Bil Herd -- which of course it wasn't. The Apple ][GS was in some ways more radical -- its 16-bit enhanced 6502, the 64C816, was more use than the C128's 2 incompatible 8-bit chips, for a start -- and came out the following year. Arguably a 16-bit machine, though, even if it was designed to run 8-bit software .

But then there was the UK SAM Coupé, a much-enhanced ZX Spectrum clone with a Z80, released 4 years later in 1989. Amstrad's PcW 16, again a Z80 machine with an SSD and a GUI OS, came out in 1995.)

There was nearly another, incompatible of course, successor model later still, the C65.

That would have been a worthy successor, but by then, CBM had bought the Amiga and wasn't interested any more -- and wisely, I think, didn't want to compete with itself.

To be fair, it's not entirely obvious what CBM should have done to enhance the C64 without encroaching too much into the Amiga's market. A better CPU, such as the SuperCPU, a small graphics upgrade as in the C128, and an optional 3.5" disk drive would have been enough, really. The GEOS OS was available and well-liked.

GEOS was later ported to the x86, as used in the HP OmniGo 100 -- I have one somewhere -- and later became GeoWorks Ensemble, which tried to compete with MS Windows. PC GEOS is still alive and is now, remarkably, FOSS. I hope it gets a bit of a renaissance -- I am planning to try it on my test Open DR-DOS and IBM PC-DOS 7.1 systems. I might even get round to building a live USB image for people to try out.