Basicode - An introduction

Way back in time (well, the early 1980s) the computer market had a large number of different makes of computer (such as the Acorn BBC Micro B, Sinclair ZX Spectrum and the Oric Atoms to name but 3), all of which had different processors (most commonly, the Z80A, 6502 and 6809 chips), their own dialect of BASIC, own way of loading from tape and well, pretty much their own way of doing everything. You could convert BASIC programs from one machine to another, but if it was in assembler, forget it. A lot of the time, it was pretty much a re-write. Something compiled under on machine (using a 6502 processor) would not work under another machine (also using a 6502 processor) - the chips may speak the same language at the core, but higher up, things were different

Basicode was an attempt by the Norwegians to create effectively a runtime that would read in the Basicode programs and through subroutines written in the host machines dialect of BASIC, have the different machines running the same software. The host machine's Basicode "runtime" program would be loaded first then the Basicode program would be loaded and run.

Sound familiar?

There were limitations. For example, some versions of BASIC did not support multiline structures and the likes of the ZX81 did not support colour or sound. If a host platform did not support something, it was removed - a case of the lowest common denominator. This is were Basicode really fell down.

Basicode versions

There were 4 versions of Basicode

  • Basicode 1
  • This was more a proof of concept more than anything.

  • Basicode 2
  • This was the first major usable version of Basicode. At this point, the BBC in the UK started to take Basicode seriously and at the time had a radio programme called "The Chip Shop" on Radio 4 which would broadcast the Basicode programs at 12.15am, just after the midnight news and before the shipping forecast. Versions of the runtime software were available for many of the home micros at the time. It was popular, but never really hit the big time as graphics, sound and colour were not really supported.

  • Basicode 3
  • By this time, the home micro boom days were more or less over. IBM was becoming the big player on the play ground with the home machines supported by the Archimedes, Atari ST and Amiga machines. The days of multiple machines had gone and with it, Basicodes real power.

  • Basicode 3c
  • The final version released (about 1992)

So why bother with it?

Nostalgia really. I love the old machines (I have a very powerful PC here running the most up to date version of Fedora and yet 99.99% of all the games I play are on an old ZX Spectrum emulator. I have no problems with the new games, but I prefer the old) and love this idea of one language for all.

After reading Building your own .NET language and Compiler I thought it would be quite a fun idea to have a bash. Unfortunately, this never really took off (due to the amount of work I had on at the time), but the spec has been published and is available from here if you're interested.

Maybe one day it will become a reality...