BASICODE

Last updated
BASICODE's "Esperanto for computers" claim, from the East German publication radio fernsehen elektronik. Basicode.jpg
BASICODE's "Esperanto for computers" claim, from the East German publication radio fernsehen elektronik.

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).

Contents

The language implementations were architecture-specific utility applications that executed calls of subroutines for text and audio defined in the BASICODE language standard, adapted according to the abilities of the host computer system. These applications, called Bascoders, also enabled the sharing of data and programs across different computer platforms by defining a data format for the cassette tapes that were regularly used as storage media in the 1980s. [1] A BASICODE program stored on cassette could be loaded and run on any computer supporting the language. BASICODE was often called "Esperanto for computers" for that reason. [2]

BASICODE

The situation at the beginning of the 1980s

Commodore 64 Commodore-64-Computer-FL.jpg
Commodore 64
Atari 800 XL Atari-800XL.jpg
Atari 800 XL

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. All 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 the fact 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

Sinclair ZX Spectrum ZXSpectrum48k.jpg
Sinclair ZX Spectrum

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. [1]

In 1982 the executives at NOS decided to develop a unified data format. An application that was specific for each computer model, called Bascoder, managed the recall and storage of programs and data in this unified format from tape. The Bascoders were broadcast by NOS as well, but could also be bought from NOS on cassette and shared among friends and acquaintances. The format, which was very well-protected against interference, could be read and written by many popular home computer systems. The robustness of the format also made broadcasting via mediumwave radio possible, which increased the range and in turn the number of potential users. For example, data broadcast by the Dutch radio station Hilversum could be received in large parts of the German Democratic Republic.

BASICODE 2

ZX81 Sinclair-ZX81.jpg
ZX81
Apple II Apple-II.jpg
Apple II

The standard solved one of the aforementioned problems, the incompatible data formats. However, programs still had to be adapted to each computer's BASIC dialect and hardware capabilities. Limiting the programs to only use instructions common across all dialects meant big limitations in terms of functionality, for example completely refraining from using graphics and sound whilst limiting functionality for data input using the keyboard and character output on the screen. For these reasons, in 1983 the enhanced standard BASICODE 2 was created. [1] Bascoders using this standard did not only contain routines for input and output of data to tape. In addition to a set of about 50 BASIC commands, functions and operators that were common across all BASIC dialects, the language standard of BASICODE 2 defined a library of subroutines that emulated the same capabilities across all supported computers.

To achieve this, all program lines below 1000 were reserved for the Bascoder, and BASICODE programs could only start at line number 1000. The subroutines of the Bascoder in the lines below 1000 were called with a GOSUB command. [1] Necessary arguments were passed to the Bascoder by using special predefined variables that were reserved for use by the Bascoder. The standard contained a number of additional rules that were made necessary by the limitations of some computer models. For example, on a KC series computer, a line of code could not be longer than 60 characters. These limitations had to be enforced for all BASICODE programs to guarantee platform independence, because the Bascoder was interpreted by the same computer specific BASIC interpreter as the BASICODE program itself.

Thus, the Bascoders were loaded on the various computers like normal programs, and when run, they provided the additional routines for the common standard and cassette I/O. Programs written in BASICODE were only usable after the Bascoder had been loaded and started. However, on some computers the BASICODE programs could be merged with the routines of the Bascoders and saved in the native data format. The resulting program was not platform independent any longer, but due to the higher data density of most native formats it could be loaded much faster than the same program in BASICODE format. Also, because it was not necessary to load the complete Bascoder to run the program, more RAM remained available at run time.

There were BASICODE 2 Bascoders for the Exidy Sorcerer, Colour Genie, PET, VIC-20, Commodore 64, Amiga, ZX81, ZX Spectrum, QL, Acorn Atom, BBC Micro, Electron, TRS-80, MSX, Oric Atmos, P2000T, Grundy NewBrain, Amstrad CPC, IBM PC, Apple II, TI-99/4A, Aquarius and others. Additionally, advanced users were able to write their own Bascoder for their system of choice, since the language standard and data format were open and well-documented. The BASICODE 2 standard made the development of platform independent programs with advanced capabilities (for the time) possible. In addition, BASICODE was used to transmit and share information like computer scene news via radio, in the form of so-called "journals". Similarly, BASICODE coding tutorials and other documentation could also be transmitted this way.

BASICODE 3 / 3C

In 1986, the new BASICODE 3 standard was developed. [1] The most important additions were routines for simple monochrome graphics, reading and writing data from within programs and sound output. A booklet was published about the language, which came with a cassette containing Bascoders for various microcomputers. [3] 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. [4] 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 weclones. 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

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

A BASICODE compact audio cassette, the typical BASICODE data storage medium. Basicode2.jpg
A BASICODE compact audio cassette, the typical BASICODE data storage medium.

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

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

Related Research Articles

In computing and telecommunication, a control character or non-printing character (NPC) is a code point in a character set that does not represent a written character or symbol. They are used as in-band signaling to cause effects other than the addition of a symbol to the text. All other characters are mainly graphic characters, also known as printing characters, except perhaps for "space" characters. In the ASCII standard there are 33 control characters, such as code 7, BEL, which rings a terminal bell.

<span class="mw-page-title-main">IBM System/360</span> IBM mainframe computer family (1964–1977)

The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applications and a complete range of applications from small to large. The design distinguished between architecture and implementation, allowing IBM to release a suite of compatible designs at different prices. All but the only partially compatible Model 44 and the most expensive systems use microcode to implement the instruction set, featuring 8-bit byte addressing and fixed point binary, fixed point decimal and hexadecimal floating-point calculations.

<span class="mw-page-title-main">KIM-1</span> Single-board computer produced by MOS Technology

The KIM-1, short for Keyboard Input Monitor, is a small 6502-based single-board computer developed and produced by MOS Technology, Inc. and launched in 1976. It was very successful in that period, due to its low price and easy-access expandability.

<span class="mw-page-title-main">Atari BASIC</span> Dialect of the BASIC programming language

Atari BASIC is an interpreter for the BASIC programming language that shipped with Atari 8-bit computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC and differs in significant ways. It includes keywords for Atari-specific features and lacks support for string arrays.

Microsoft BASIC is the foundation software product of the Microsoft company and evolved into a line of BASIC interpreters and compiler(s) adapted for many different microcomputers. It first appeared in 1975 as Altair BASIC, which was the first version of BASIC published by Microsoft as well as the first high-level programming language available for the Altair 8800 microcomputer.

<span class="mw-page-title-main">MSX</span> Family of standardized home computer architectures released between 1983 and 1992

MSX is a standardized home computer architecture, announced by ASCII Corporation on June 16, 1983. It was initially conceived by Microsoft as a product for the Eastern sector, and jointly marketed by Kazuhiko Nishi, the director at ASCII Corporation. Microsoft and Nishi conceived the project as an attempt to create unified standards among various home computing system manufacturers of the period, in the same fashion as the VHS standard for home video tape machines. The first MSX computer sold to the public was a Mitsubishi ML-8000, released on October 21, 1983, thus marking its official release date.

<span class="mw-page-title-main">Kansas City standard</span> Data storage standard

The Kansas City standard (KCS), or Byte standard, is a data storage protocol for standard cassette tapes at 300 bits per second. It originated in a symposium sponsored by Byte magazine in November 1975 in Kansas City, Missouri to develop a standard for the storage of digital microcomputer data on inexpensive consumer quality cassettes. The first systems based on the standard appeared in 1976.

<span class="mw-page-title-main">Commodore Plus/4</span> 1984 home computer by Commodore International

The Commodore Plus/4 is a home computer released by Commodore International in 1984. The "Plus/4" name refers to the four-application ROM-resident office suite ; it was billed as "the productivity computer with software built in".

Sinclair BASIC is a dialect of the programming language BASIC used in the 8-bit home computers from Sinclair Research, Timex Sinclair and Amstrad. The Sinclair BASIC interpreter was written by Nine Tiles Networks Ltd.

<span class="mw-page-title-main">ZX Interface 1</span>

The ZX Interface 1, launched in 1983, was a peripheral from Sinclair Research for its ZX Spectrum home computer. Originally intended as a local area network interface for use in school classrooms, it was revised before launch to also act as the controller for up to eight ZX Microdrive high-speed tape-loop cartridge drives. It also included a DE-9 RS-232 interface capable of operating at up to 19.2 kbit/s. At hardware level it was fundamentally a voltage adaptor, the serial protocol being implemented in software by bit-banging. This led to problems when receiving data, but not when transmitting.

<span class="mw-page-title-main">KC 85</span> Microcomputers made in East Germany from 1984 until 1990.

The KC 85 were models of microcomputers built in East Germany by VEB Mikroelektronik "Wilhelm Pieck" Mühlhausen. The first model in the series, the HC 900, originally designed as a home computer and introduced in 1984, was renamed to KC 85/2 in 1985 to de-emphasize its use as consumer good.

MBASIC is the Microsoft BASIC implementation of BASIC for the CP/M operating system. MBASIC is a descendant of the original Altair BASIC interpreters that were among Microsoft's first products. MBASIC was one of the two versions of BASIC bundled with the Osborne 1 computer. The name "MBASIC" is derived from the disk file name MBASIC.COM of the BASIC interpreter.

Binary Synchronous Communication is an IBM character-oriented, half-duplex link protocol, announced in 1967 after the introduction of System/360. It replaced the synchronous transmit-receive (STR) protocol used with second generation computers. The intent was that common link management rules could be used with three different character encodings for messages.

<span class="mw-page-title-main">Processor Technology</span> Personal computer company, founded 1975

Processor Technology Corporation was a personal computer company founded in April 1975, by Gary Ingram and Bob Marsh in Berkeley, California. Their first product was a 4K byte RAM board that was compatible with the MITS Altair 8800 computer but more reliable than the MITS board. This was followed by a series of memory and I/O boards including a video display module.

MSX-DOS is a discontinued disk operating system developed by Microsoft's Japan subsidiary for the 8-bit home computer standard MSX, and is a cross between MS-DOS v1.25 and CP/M-80 v2.2.

<span class="mw-page-title-main">Vector-06C</span>

Vector-06C is a home computer with unique graphics capabilities that was designed and mass-produced in USSR in the late 1980s.

<span class="mw-page-title-main">Home computer</span> Class of microcomputers

Home computers were a class of microcomputers that entered the market in 1977 and became common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a single, non-technical user. These computers were a distinct market segment that typically cost much less than business, scientific, or engineering-oriented computers of the time, such as those running CP/M or the IBM PC, and were generally less powerful in terms of memory and expandability. However, a home computer often had better graphics and sound than contemporary business computers. Their most common uses were word processing, playing video games, and programming.

The original IBM Personal Computer and IBM PCjr included support for storing data and programs on compact cassette tape.

<span class="mw-page-title-main">Atari Program Recorder</span> Magnetic-tape data storage device

The Atari Program Recorder is Atari's dedicated magnetic-tape data storage device for the Atari 8-bit computers. The original 410 was launched along with the Atari 400 and 800 machines in 1979. The 1010 was a smaller model introduced to match the styling of the XL series released in 1983. XC12 of 1986 matched the XE series and was sold mostly in eastern Europe and South America. Slight variations of all of these models were also introduced from time to time.

References

  1. 1 2 3 4 5 Weet ik! October 1991, ‘Basiscode-3’ by Bob Munniksma
  2. Aarde & Kosmos issue 7, 1986, ‘BASICODE-3, uitgebreid esperanto voor komputers’ by Rien van Dongen
  3. Basicode-3 by Hermine Bakker, 1986, ISBN 90-201-1949-4
  4. BASICODE Mit Programmen auf Schallplatte für Heimcomputer by Horst Völz, 1990, ISBN 3-341-00895-0

Further reading