BASICODE: A Bit Like Java, But From The 1980s

Those of us ancient enough to remember the time, or even having grown up during the heyday of the 8-bit home computer, may recall the pain of trying to make your latest creation work on another brand of computer. They all spoke some variant of BASIC, yet were wildly incompatible with each other regardless. BASICODE was a neat solution to this, acting as an early compatibility standard and abstraction layer. It was essentially a standardized BASIC subset with a few extra routines specialized per platform.

But that’s only part of the story. The BASICODE standard program was invented by Dutch radio engineer Hessel de Vries, who worked for the Dutch national radio broadcaster Nederlandse Omroep Stichting (NOS). It was designed to be broadcast over FM radio! The idea of standardization and free national deployment was brilliant and lasted until 1992, when corporate changes and technological advancements ultimately led to its decline.

The way this was achieved was to firstly use only the hardware instructions that were common among all the computers, which meant BASICODE applications couldn’t utilize graphics, sound, or even local storage. This may seem very limiting, but there’s still a lot you can do with that, especially if you don’t have to write it yourself, pay for it, or even leave the room! First, the BASICODE program needed to be loaded from local storage, which, when started, allowed the import of the BASICODE application that you previously recorded off the radio. It’s kind of like a manually loaded bootloader, except it includes an additional software library that the application can use.

Later versions of the standard included storage handling (or an emulation of it), basic monochrome graphics, and eventually sound support. The linked Wikipedia article mentions a list of about 23 BASICODE platforms; however, since there is a standard, you could easily create your own with some effort. In addition to allowing users to send application programs, BASICODE also enabled the reading of FM-broadcast ‘journals,’ which were transmissions of news, programming tutorials, and other documents that might interest BASICODE users. It was an interesting concept that this writer had never encountered at the time, but that’s not surprising since only one country adopted it.

If this has got you hankering for the good old days, before the internet, when it was just you, your trusty machine and your own imagination, then we think the ten-line BASIC competition might be of interest. Don’t have such a machine, but have a web browser? (we know you do), then check this out. Finally, if you want to see something really crazy (for a BASIC program), then we’ve got that covered as well.

Thanks to [Suren Y] for sending this in!

29 thoughts on “BASICODE: A Bit Like Java, But From The 1980s

  1. Interesting. But I don’t know what the title has to do with it. A bit like Java? Where? In what? Nothing could be further from Java. Did whoever wrote the title want to write “Java” somewhere because they felt like it? A mystery.

    1. Hardware-independence.
      There had been so many BASIC dialects at the time.
      The only sort of industry “standard” was Microsoft’s BASIC implementation due to popularity, maybe.
      But even here the level of compatibility was hit and miss, depending on the computer model.
      The C64 BASIC V2 was inferior to that of ZX81 or BBC Micro computers, for example.
      There had been learning computers (toy computers) made for kids age 6 and up with more complete BASIC than C64 BASIC.

    2. Agreed. This has much more in common with JavaScript. They’re both interpreted, have janky abstraction and severely limited functionality based on the lowest common denominator. Sadly, I can’t seem to escape either language professionally.

    3. A good bit of this article pulls from the Wiki entry, which points to the Java analogy in this (awkward) sentence, “The underlying concept of BASICODE, which is the definition of a language standard for platform-independent software development and the implementation of said standard as system-specific runtimes (Bascoder) was later revisited in the programming language Java, via operating system-specific Java Virtual Machines which execute Java programs.”

      The analogy should have been reiterated in the final article.

  2. This idea of wanting to reach out beyond your computer in the days before the internet reminds me of how I did this in the early 1990s. (The internet existed at the time, and so did BBSes, but that required money, which I didn’t really have.) I had a portable SCSI hard drive I would take to various college computer labs all over the East Coast, plug into a Macintosh, and then explore the network for warez to download. I would fill up on all sorts of amazing programs, including an early gene sequencing application. I would then take them home and hack them to bypass their copy protections, which often included physical dongles. I got very good at finding where in the code the jumps happened and redirecting them. Ah, those were the days!

  3. The concept was cooler than reality, at least from the perspective of a 13 year old (which was my age at the time). The weekly broadcasts contained stuff like “towers of Hanoi” or a perpetual calendar program or something else that from a technical perspective was fun or interesting, but for my it just didn’t compare to the colorful games and pretty music included with the Arcade games I could copy from my friends at school. So interest dropped pretty quickly.

  4. Although developed in the Netherlands German TV Station WDR used it in their Computer Club Program in the 80s.

    You could record the so called hard bit rock with your cassette recorder in front of the TV (if your family was as nerdy as you and tolerated minutes of screaming data).

    Loved it.

  5. In that early home computer era all those basic dialects were pretty much incompatible with each other, and limiting (sort of) a basic dialect to whatever were the most common features of those dialects never sounded like a good idea to me.

    Sometimes I wonder why C was never used on those home computers. After a bit of reading, one of the earlier versions of C was included in “Version 2 Unix” (1972).

    https://en.wikipedia.org/wiki/C_(programming_language)
    https://en.wikipedia.org/wiki/Research_Unix

    First release of GCC was in 1987
    https://en.wikipedia.org/wiki/GNU_Compiler_Collection

    I bought Borland’s Turbo C++ in the early ’90-ies, not being aware of FOSS software. My first experience with GCC was for Atmels AT90S2313 and that was a quite amazing experience back then.

    Lattice C was apparently the first C compiler for IBM PC’s (1982, USD500), and later also ported to Atari ST and Amiga. But by then the era of the first generation (8-bitters) of home computers was already past.
    https://en.wikipedia.org/wiki/Lattice_C
    https://en.wikipedia.org/wiki/Megamax_C

    I never liked basic much myself. It did too many weird things such as adding carriage returns / newlines just when you wanted to output some text. I sometimes wonder why basic became popular in the first place, but that’s pretty easy. It simply was the only available language for that first generation of home computers, and it (often?) was already included. In later years I even played a bit with an IBM XT that booted directly into basic, but by then that thing was already old and written off, and it got disposed of pretty quick.

    1. There were commercial C compilers that ran on (and produced output for) machines like the Commodore 64 and Apple 2. And these days you can find open-source C compilers (usually cross compilers from modern hardware) for all kinds of 8-bit hardware.

    2. The trouble with compiled languages like C on these early platforms is the compiling step – they don’t have much memory and the source code itself is not directly executable, meaning you need to store two copies of the program – the source code and the machine code. If you have fast random access storage (disc drives) you can get around that of course, but they were not common in home computers in those days, so compiled languages stayed on the minicomputers for a while.

      1. That is indeed a convincing argument. In the early ’80-ies most home computers started with a few kB or ram (I.e, 64kB for the Commodore 64, VIC-20 and TRS80 had much less) and for external storage there only was a cassette tape. Floppy disks did exist back then (Started in early ’70-ies) but were probably too expensive. The whole basic interpreter was crammed into 8kB or so.

        Both Atari ST and Amiga were released in 1985, had built in floppy drives by default, and could be extended to >1MB RAM and HDD’s. (You don’t want your C-compiler on the minimum hardware). So that was around the fist time that home computers were capable enough to run a C compiler, and also the time that the first C compilers for such machines were being sold.

        I’m guessing that Basic was never meant as a generic programming language. In those early home computer days, nearly all commercial software was written in assembly (maybe cross compiled?) Maybe Basic was more intended as a learning tool, and as a sort of predecessor of spreadsheets., and for those tasks it was adequate.

        On my brother’s first computer (A DAI) he had a demo that drew a function in a 3D graph, and that program needed several hours to complete. Compiled on my 80386SX it took 2 seconds or so. On a 80486 (built in coprocessor) it was milli seconds, and the timing algorithm had to be adjusted just to get a sensible reading. And that’s just around 10 years of computer development. >>> log(7200)/log(10) = 3.857 Over a 3x yearly speed increase over those 10 years. That also explains why those early generation home computers became obsolete so quickly.

    1. This actually has a lot more in common with Python or some other interpreted language, where the SOURCE can be run anywhere, than it does with Java, where the compiled bytecode can be run anywhere. (JS is a bad example because there are a TON of different, incompatible JS engines out there. In the general sense, beyond the standardized ECMAScript stuff, Node code can’t be run in a v8 interpreter, or vice versa. Ditto spidermonkey.)

  6. You know what was an ok basic. The c128 basic, had almost all commands for basic which included graphics, sound and a few great functions. I hated the c64 side of basic. Also, the amiga basic was no slouch either it was the beginning of free form basic with no line numbers. I remember having access to intuition functions right from basic. I remember it kind of copied turbo basic in how to program.

  7. I wonder… if sending this over amateur radio would it take more than 10 minutes? If so, would throwing in periodic comments with one’s callsign count as ID’ing?

Leave a Reply to Andrew DroffnerCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.