A universal BASIC: BASICODE

Some time ago, I wrote about the use of amateur radio services, like the “CB” or “Citizen Band” as a means to transmit data over long distances without the cost of the long-distance call.

But this sure wasn’t the only “exotic” means of data transfer as compared to the more traditional use of a modem. Perhaps the most creative way of data transfer over long distance came about in the 80’s when the Dutch broadcast organization NOS started transmitting programs over the radio. The de-facto standard means of data storage back in those days was the cassette recorder, with the programs basically stored as noise signals on a regular cassette, so the folks over at the NOS came up with the idea of transmitting Basic programs over the ether.

This worked just fine but there was a catch. The computer landscape back in those early days was a patchwork of home computers that each had their own (proprietary) version of Basic as their operating system. So whilst the fundamentals of Basic were the same on all these machines, each one employed different commands, routines etc. to perform the same task. With the slow data transfer speed, which is the major drawback of noise/cassettes as the medium to transfer data, the NOS had to decide which Basic versions they would support and transmit, but that would leave out all other types and hence all users of a home computer whose dialect was not transmitted.

This would remain an issue until in 1982 the NOS decided to create their own data format, which would then be transmitted over the radio. They would develop for each type of Basic a “bascoder”, which would allow the decoding of the NOS data format and recode it into a platform specific Basic. The so called universal Basic, or Basic Esperanto was born and dubbed BASICODE.

Great care was taken when developing the format that the structure itself was made in such a way that it would minimize data loss (i.e. noise interference) when being transmitted, which allowed the NOS to broadcast on the medium radio band.

The programs, sent out from The Netherlands could hence be picked up in Eastern Europe. Soon, the BBC followed suit and started transmitting BASICODE as well. A year later the German TV Show: “WDR Computerclub” started transmitting the signal over the TV as well and gave BASICODE its popular name “hard-bit-rock”.

Wolfgang Back of WDR Computerclub starting the “Hard-bit-rock”

BASICODE continued to evolve with a version 2 being released in 1984. The major enhancement in this release was the inclusion of a library of routines that could be called from any Basic dialect. Basically, the bascoders had a set of universal routines that would be loaded in the first 1000 lines of program code. This meant that BASICODE programs had to start from line 1000, but could call the routines by using GOSUB commands (check out Lennart Benschop’s page on the BASICODE commands and technical specs)

BASICODE would undergo one more major revision in 1986 with version 3. This version allowed BASICODE programs to include graphics, sound and the I/O of data from with programs and was picked up by more and more TV and radio stations.

The version 3C introduced color output in 1991 and would become the final version.

The 90’s had arrived and so had the 16/32 bit machines with their more complex architecture and enhanced capabilities. It became more and more difficult to cater for these higher architectures by means of BASICODE and the NOS dropped its plans for BASICODE 4 and support of the format shortly after the release of BASICODE 3C.

Nonetheless, BASICODE showed the world that it was possible to build software that could run on any platform, no matter how diverse the underlying dialects were. This concept is echoed to this day by for instance JAVA, that by means of the platform specific Java Virtual Machines (i.e. the bascoders) can run on virtually any platform that has its JVM.