MarketBASICODE
Company Profile

BASICODE

BASICODE was a computer project intended to create a unified standard for the BASIC programming language. BASIC was available on many popular home computers, but there were countless variants that were mostly incompatible with each other. The project was initiated in 1980 by Hobbyscoop, a radio program of the Dutch broadcasting organisation Nederlandse Omroep Stichting (NOS).

BASICODE
The situation at the beginning of the 1980s From the late 1970s to the late 1980s home computers based on 8-bit processors were popular. Well-known models in the USA included the TRS-80, the PET 2001, VIC-20, Commodore 64, and the Atari 8-bit computers. In Europe, there were also the ZX80, ZX81, ZX Spectrum, Acorn/BBC micros, several Amstrad systems, Dragon 32/64 from Dragon Data and the KC85 family popular in the German Democratic Republic. Most of these computers had a CPU of the MOS Technology 6502 or Zilog Z80, or a variant thereof. Most were supplied with (or could be upgraded to) at least 16 kilobyte of RAM although many were supplied with much more. Most would provide connectors for a cassette drive or have one built-in for data storage, and a BASIC interpreter that was generally stored in ROM. The flat learning curve of BASIC, which had been designed with newcomers to programming in mind, and the instant availability of the language on all these computers led to many users writing and sharing their own programs. A problem was that sharing programs and data across computers by different manufacturers was difficult, because the various BASIC dialects were often incompatible in some areas. Many used different BASIC commands to achieve the same result (such as clearing the screen, drawing a pixel or playing a sound), meaning that for example, a BASIC program written for the C64 was unlikely to work on an Atari XL without modification and vice versa. Another difficulty was that while these computers were similar, they still differed in key hardware aspects like screen resolution, available color palette or audio abilities. Finally, the data formats used for storing data on cassette were incompatible as well. The first standard In 1979 the Dutch broadcaster NOS began transmitting computer programs by radio. Because programs and data were stored as audio on compact cassettes, it was possible to record such a broadcast on tape and load it into the computer later. However, because of the problems mentioned earlier, the program also had to be adapted for a variety of popular computers and broadcast multiple times. Because the compact cassette has a very low data density compared to today's storage media, the recording of the programs took quite a long time, and only a limited number of programs could be broadcast per show. So, the additional broadcasting of different versions of the same programs was a great inconvenience. BASICODE 3 made BASICODE popular in the computer scene of the GDR, and from 1989 onward BASICODE programs were transmitted via radio throughout the GDR. Also, a book was published which included a vinyl record with Bascoders for all computers common in the GDR. The last revision of BASICODE, which featured color graphics, was released as BASICODE 3C in 1991. The end of BASICODE From about 1990 onward the popularity of BASICODE declined rapidly due to the rise of 16- and 32-bit computers, such as the Atari ST, CBM Amiga, Acorn Archimedes and the plethora of IBM-PC compatible clones. Even though there were Bascoders for these machines, BASICODE was too limited to make use of the resources that the new generation of computers provided. As the hardware, Operating Systems and software of new computers became more and more complex, many users were unable or less inclined to write their own programs. The rise of several sophisticated but incompatible graphical user interfaces and the decline in popularity of 8-bit computers, reduced the usefulness of BASICODE, and brought about the demise. The successor of the GDR's state broadcaster, the Deutschlandsender Kultur (which later became part of the new Deutschlandradio), continued to broadcast BASICODE programs until about 1992. A planned standard called BASICODE 4 never became reality, because NOS stopped supporting the project shortly after BASICODE 3C was released. BASICODE is still used by enthusiasts, in particular 8-bit computer fans, for nostalgic value, but is not of any practical relevance. ==Historical significance==
Historical significance
BASICODE was an early attempt at creating a standard for the exchange of programs and data across mutually incompatible home computer systems. It is roughly contemporary to the MSX standard developed by Microsoft, which specified a shared hardware platform in addition to a common BASIC dialect. These computers were sold by multiple companies and directly competed with other popular home computers. MSX was successful mostly in the home markets of the manufacturers, for example Japan, South Korea, the Netherlands and Brazil. Unlike MSX, BASICODE made no effort to standardise the hardware it ran on, rather it offered a standardised subset of the ubiquitous BASIC programming language and a common data format for cassette tapes which could be read and written on all computers for which BASICODE was available. As a result of this device independence, unlike MSX, BASICODE was not limited to computers by specific manufacturers. The installed base of BASICODE is hard to estimate, because both the Basicoders and the programs written in BASICODE were generally freely available. They were available for a large number of home computers sold during this era. Though not a commercial product, several vendors offered versions on tape which could be bought cheaply, presumably aimed at those that could not receive BASICODE radio broadcasts. It must be stated that BASICODE was, by design, unable to use the capabilities of the host computers to their full extent. The language standard defined by BASICODE was the lowest common denominator of all relevant computer systems. This concept was partially abandoned only with BASICODE3/3C, as some computers or computer variants like the ZX80/ZX81 and the KC87 were not capable of graphics and color and the new sections of BASICODE using these capabilities were not usable on them. Especially for applications that relied on timing and graphics or sound, for example video games, BASICODE was clearly inferior to programs written in "native" BASIC or machine code. The strengths of BASICODE were in the areas of application design, education software and data sharing. The BASICODE format was also used for Pascal programs. Pascal was a much more consistent language across systems, but compilers were available only for very few types of home computers. 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. Additionally, the distribution of data and information in the BASICODE data format is reminiscent of current platform-agnostic document types like the Portable Document Format (PDF) and the PDF reader applications it necessitates. ==The BASICODE data format==
The BASICODE data format
In the BASICODE format, the recording of programs is analogous to the recording of data. So, when recording programs, the commands are not read and written in the form of single byte units (tokens), but character by character. A data block begins with the character 02 (STX, start of text), and ends with the character 03 (ETX, end of text). After ETX, a check byte made up of the previous bytes including STX and ETX by binary addition (XOR), is transmitted. A 0D character (decimal 13) marks the end of a line during transmission. Data files created by programs are able to use all characters as data and must contain no control characters. Each byte is transmitted in the sequence "1 start bits - 8 data bits - 2 stop bits". The data bits are sent with the least significant bit first. The most significant bit is transmitted inverted and is always 0 (transmitted as 1) because BASICODE uses only ASCII characters. So another way to describe the transmit sequence is "1 start bit - 7 data bits - 3 stop bits". The resulting redundancy is intended for maximising compatibility with different computers. For the audio signals, square waves in the form of a 1200 Hz wave for a "0" bit and two 2400 Hz waves for a "1" bit are used, resulting in a time of 1/1200 seconds for each bit. A pause longer than 1/1800 seconds between waves marks the beginning of a byte, making the following wave the start bit. After the start bit and before the eight data bits is another pause of at least 1/1800 seconds. A 2400 Hz signal with a length of five seconds marks the beginning of a transmission and is used for synchronization of the reading program. At the end of the transmission, a 2400 Hz signal with a length of one second is sent. The theoretical data rate of this format is 1200 bits per second. Considering the transmission of three additional bits per data byte and the pauses before and after the start bit, this results in a usable data rate of 102 bytes per second, and about 6 kilobytes per minute. ==Decoding audio cassettes==
Decoding audio cassettes
On a modern computer, Basicode audio cassettes can be decoded using minimodem, a freely available software modem. For example, for a cassette converted into a WAV file basicode.wav, can be decoded to its corresponding data bytes via the command: minimodem --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt ==See also==
tickerdossier.comtickerdossier.substack.com