BASICODE

BASICODE was a computer project with the aim to define a standard language for the programming language BASIC. BASIC was indeed widespread on many popular home computers, but in countless mutually incompatible versions. The project was founded in 1980 by the Dutch broadcasting association Nederlandse Omroep Stichting (NOS ) in the broadcast series Coop hobby into life.

The basis of the system were machine-specific add-ons, which carried out the views defined by the BASICODE language standard subroutines for input and output of text, graphics and sound depending on technical possibilities of the respective computer. These so-called Bascoder programs enabled beyond the program and data exchange between various home computer platforms through the definition of a uniform data format for the then usual as disk compact cassettes. BASICODE is often referred to as "Esperanto computer ".

  • 4.1 BASICODE 2
  • 4.2 BASICODE 3/3C

Development

The initial situation

From the late 1970s until the late 1980s, home computers were very popular on the basis of 8 -bit processors among private users. Among the most famous case belonged to the TRS -80 Tandy, the PET 2001, VC20, C64 and C128 and Plus / 4 Commodore, Atari 400/800 (XL / XE) series, the Apple II, the Schneider / Amstrad CPC models, the computers of the company Sinclair Research ( ZX80, ZX81, ZX Spectrum) and the GDR the computers of the series, Z1013, Z9001, KC85 / 1 and KC87 and KC85 / 2 to KC85 / 4 Together was these machines that they with an 8 -bit processor of type MOS Technologies 6502 or Zilog Z80, between 16 and 64 Kbytes of RAM memory, a connection for tape recorder or a built-in cassette drive for data storage on Compact Cassette and a often in ROM memory permanently installed interpreter for the then widely used programming language BASIC were equipped. The ease of learning the language BASIC designed for beginners as well as their immediate availability on all these computers meant that many owners of home computers programmed themselves and their programs were exchanging with each other.

Problematic for exchanging programs and data between computers from different manufacturers but was, firstly, that the BASIC variants used were completely incompatible with each other in many areas. So you used for the same action (eg like deleting the screen, the drawing of a point on the screen, or output of a tone ) various BASIC commands, so that for example a program written on a C64 BASIC program without manual adjustment in the rule did not work on an Atari XL and vice versa. Secondly, the computer differed in their technical equipment, so for example the screen resolution, the number of possible colors or available for the sound output options. Third, the data formats used on different computers for storing data and programs on compact cassette were also mutually incompatible.

The first standard

Around 1980, the Dutch broadcasting organization NOS began to broadcast computer programs on the radio. Because programs and data are stored on the compact cassette as sounds, it was possible to record those broadcasts on a tape recorder and then subsequently read the programs they broadcast to the computer. From the problems described at the outset, however, there was a program that had to be specially adapted for all popular types of computers almost always and was then sent to the corresponding versions several times on the radio. The in storage on compact cassettes very sparse compared to today's media meant that the radio broadcast and hence the recording lasted sufficiently long, and thus in a consignment, only a very limited number could be sent to programs. The broadcast of the same program in several different versions was thus a major drawback.

In 1982, then those responsible came up with the idea to develop a uniform data format for NOS. A specific for each type of computer program, called Bascoder, it took over the reading in this format of the cassette or the storage of programs and data in this standard format to the cartridge. These programs were distributed by NOS via radio. They could be purchased on compact cassettes of NOS beyond, and were passed between computer users in private. The respect interfere with the transmission of very robust format could be read and written by all the then widespread home computers to the respective data input and output. The robustness of this standard allowed for the broadcast on medium wave frequencies, which in turn increased the range and therefore the number of potential recipients. The channels broadcasted in the Dutch broadcasting by the NOS Hilversum could be received, for example, in large parts of the German Democratic Republic (GDR). In western Germany, the BBC broadcasts from the UK could be used for good reception, which also aired BASICODE programs. Largest awareness BASICODE should have attained in the Federal Republic of Germany by the WDR Computer Club, which sent on Sundays under the name "Hard -bit Rock" BASICODE programs on the TV sound signal. As no further moderation in the mission was possible during the broadcast of programs BASICODE programs were transmitted by means Videodat later. This system used the so-called blanking interval in the video signal of the television image to silent data transfer.

BASICODE 2

Although the standard established by BASICODE solved one of the problems described at the outset, namely that of mutually incompatible data formats. However, programs had to continue on each individual machine type to the respective BASIC dialect and be adapted to the specific technical conditions. A possible limitation to those elements of the BASIC language, which was common to all dialects, meant unsatisfactory restrictions on the functionality of the programs, such as the waiver of graphics and sound and just uncomfortable possibilities for data input from the keyboard and to control the data output to the screen. For this reason, the standard BASICODE 2 was created in 1984. The based on this standard Bascoder contained not only the routines for input and output of programs and data on compact cassettes. In addition efehlen at a rate of about 50 BASIC-B, functions and operators that were identical in all BASIC dialects, the language standard of BASICODE 2 beyond first defined a library of subroutines that are called on all computers the same functionality ready presented.

For this set, that the range of program lines was reserved below the line number 1000 for the Bascoder and BASICODE written programs thus could only start from the line number 1000. The subroutines of Bascoders in the line numbers below 1000 were then called by the GOSUB statement. This necessary arguments were passed by the corresponding values ​​were assigned before calling certain, reserved for the Bascoder variables. The BASICODE language standard also contained a number of other provisions which resulted from the limitations of some types of computers. How could, for example, in contrast to the BASIC dialects of almost all other computers on the ZX81 a program line only contain a single BASIC command or program line in BASIC dialect of the KC series could not be longer than 60 characters. Such restrictions had since the Bascoder was processed along with the BASICODE program from each computer specific BASIC interpreter, apply to all BASICODE programs to achieve full platform independence.

The Bascoder were therefore loaded on their computers as normal programs and then put the additional routines for common language and standard for the input and output on cassettes available. The data written in BASICODE programs were thus usable only after loading and starting the Bascoders. On some machines, however, the BASICODE programs could be saved with the voice part of the Bascoders in the type-specific data format. Thereby it was not possible, using this recording to other types of computers. However, the type-specific data formats almost always had a much higher data density, so that the same program could be loaded much faster than in BASICODE format. In addition, standing without the need to load the entire Bascoder before executing the BASICODE program, significantly more memory for program execution time.

Bascoder for BASICODE -2 standard existed among other things, the type of computer Exidy Sorcerer, DAI, Colour Genie, Commodore PET, VIC -20, C64, Amiga, Sinclair ZX81, Sinclair ZX Spectrum, Sinclair QL, Philips P2000T, Acorn Atom, BBC, Electron, Tandy TRS80, MSX, Oric Atmos, Grundy NewBrain, Amstrad CPC 464, IBM PC, Apple II, Texas Instruments TI-99/4A, Mattel Aquarius, and others. Experienced computer owners, were also found to be able to develop its own Bascoder for their particular system because the language standard and the data format were disclosed and well documented. The point defined by BASICODE 2 standard language already permitted the development of system-independent programs for that time relatively advanced ways. BASICODE importance was also used, for example, to send in the form of so-called journals information about news from the computer scene in the radio and pass among computer users. Also, a comprehensive programming course in BASICODE and other documentation were distributed in this way.

BASICODE 3/3C

1986, the new standard BASICODE 3 was developed. This contained a significant innovations routines for simple monochrome graphics output, reading and storing data from within programs and for the issuance of sound. With BASICODE 3 BASICODE was known especially in the computer scene of the GDR, and BASICODE programs were sent from 1989 also in the broadcast of the GDR. The Dutch station TROS ( Televisie s Radio Omroep Stichting) sent BASICODE 3 programs. In the GDR, in addition, a book, which came with a small record with the Bascodern for all popular types of computers appeared in the GDR. The last revised BASICODE version that contained the particular screen color output as novelty, was published in 1991 as BASICODE 3C.

The end of the popularity of BASICODE

With the beginning of the 1990s the popularity of BASICODE due to the ever-widening spread of 16 took - and 32 -bit computers, and especially new variants of the IBM PCs plus compatible devices very quickly. Although these computers usually still Bascoder were developed BASICODE was too limited to exploit adequately the technical possibilities of this generation of computers. In addition, accounted for by the most extensive concentration on a few computer architectures in the 16 - and 32- bit range of the main reason for the development and use of BASICODE. Many people were due to the increasing complexity of hardware and software for the new systems are no longer interested or able to program yourself. The increasing popularity of graphical user interfaces contributed to the rapid decline of the proliferation of 8 -bit computers, and thus also of BASICODE.

The emerged from the GDR radio transmitter Germany culture, which later merged with other transmitters to Germany Radio, still beaming from around 1992 BASICODE programs. An even planned standard BASICODE 4 was never officially implemented since the NOS gave their support of the project shortly after the release of BASICODE 3C. BASICODE is still used today by some enthusiasts, in particular 8 -bit computer fans, mostly of nostalgic interest, but has no practical relevance more.

Historical Significance

BASICODE was one of the early attempts to create on various mutually incompatible computer architectures a common standard for exchanging programs and data in the home user area. It was around the same time as the language developed by Microsoft MSX system, its standardization beside a uniform BASIC language standard also included a defined hardware specification. Such computers were sold by various companies, and therefore were in competition to other popular home computers. Successfully to a greater extent MSX was almost exclusively in the home markets of the manufacturer, such as Japan and South Korea, the Netherlands and Brazil. In contrast to MSX BASICODE no defined hardware specification but a standard language for the almost universally available on home computers BASIC programming language and a data format for compact cassettes that could be read and written across all equipped with BASICODE computers. The implementation of BASICODE carried out exclusively by the addition of software and was therefore not restricted to certain computer hardware manufacturer. The proliferation of BASICODE is difficult to assess since both the Bascoder and developed in BASICODE programs were freely available and have been passed. Bascoder, however, were available for almost every home computer ever sold this computer era. Commercial BASICODE was due to its free dissemination of no relevance.

Due to the concept, it was not with BASICODE possible, however, to fully utilize each specific technical capabilities of a particular machine type. The point defined by BASICODE language standard was limited almost entirely to the lowest common denominator of all relevant computer systems. This concept was partly abandoned only with BASICODE 3/3C, as some computer types or variants such as the ZX80/ZX81-Rechner and the KC87 no real graphical output and no color output enabled and thus the corresponding newly introduced features of BASICODE 3/3C on these computers were no longer usable. Especially for time-critical applications and in the field of graphics and sound output, so for example in the development of computer games, was clearly inferior BASICODE of programming in each system-specific BASIC dialect or directly in machine code. The strengths of BASICODE were thus more likely in the areas of application development, software for education and data exchange. The BASICODE data format was also used for the distribution of programs in the Pascal programming language, which was considerably more standardized in terms of their language definition as BASIC. Pascal compiler, however, were only available on some home computer types.

The basic concept of BASICODE, namely the definition of language standards is the platform independent software development and the realization of this standard by system-specific programs ( Bascoder ), has also been realized later in the Java programming language, namely in the form of operating system-specific Java Virtual Machines to run the Java - programs. The dissemination of data and information in BASICODE data format as journals Further recalls today used platform-independent document formats, such as Portable Document Format (PDF) and the necessary system-specific PDF reader programs.

The BASICODE data format

In BASICODE format the recording of programs is carried out analogously to the recording of data. When recording programs, ie the individual BASIC commands not as often available in the form of 1 -byte units ( tokens ), but character by character are stored and read.

Each byte is transmitted in the form of " 1 start bit - 2 stop bits - 8 bits ". The resulting redundancy is mainly used for security during transmission. Bit 7 is always transmitted negated, what is particularly important in the transmission of ASCII characters useful. These contain at bit 7 is always a 0 bit, so that there are in ASCII characters by the negated transfer three stop bits. The start of a transfer is marked by the character 02 ( STX Start of Text ) the end by the character 03 ( ETX, End of Text ). After a check byte ETX is still sent, which is calculated from the previous bytes, including STX and ETX by bitwise binary addition ( XOR). The 0DH or 13D features in the transfer, the end of a line. From programs data files generated all characters can use as data so that they do not contain control characters. They are read and written in rather 1,024 byte blocks.

Audio signals as square waves are used in the form of a 1200 -Hz vibration for a 0 bit, and two 2400 -Hz vibration for a 1 bit with a length of 1/ 1200 seconds, for each bit signal. A pause of more than 1/ 1800 seconds between two edges marked the beginning of the transmission of a byte, the subsequent oscillation is thus a start bit dar. After the start bit and prior to transfer of the eight data bits followed again a pause of at least 1/ 1800 seconds. A 2400 - Hz signal of five seconds' duration marks the beginning of a transmission and is used to synchronize the reading program. At the end of a transmission, a 2400 Hz signal by a second duration is transmitted.

The theoretical size of this data rate is 1200 bits per second ( bit / s). Due to the transfer of three additional bits per data byte and the pauses before and after a start bit, this results in a real data rate of about 102 bytes per second, which is about six KBytes per minute.

The BASICODE language standard

BASICODE 2

In BASICODE 2 allowed BASIC commands, functions and operators

The mentioned below elements of the BASIC programming are available in the BASIC dialects of all supported types of computers with identical functionality. They are therefore also part of the BASICODE language standards.

  • Commands:

DATA DIM FOR END IF GOSUB GOTO NEXT INPUT ON PRINT READ REM RESTORE RETURN RUN STEP STOP THEN TAB TO functions:

ABS ASC ATN COS EXP INT LEN LOG SIN SGN SQR TAN VAL CHR $ LEFT $, MID $ $ RIGHT AND OR NOT Arithmetic operators:

^ exponential * Multiplication / Division Addition and concatenation of string variables - Subtraction Comparison operators:

= <> <> < => = In BASICODE 2 provided by the Bascoder routines

The following routines contained in Bascoder are implemented in the various BASIC dialects by different, mutually incompatible in their syntax commands or functions. By GOSUB calls will therefore ensure that these opportunities are uniformly available on all relevant computers as part of the BASICODE language standards.

GOSUB 100 clearing the screen GOSUB 110 set the cursor to a specific position            Handover of the position in the variables HO and VE GOSUB 120 determination of the position of the cursor            Returns the position in the variables HO and VE GOSUB 200 reading of a key press            Return of the character in the variable $ IN            Return an empty variable IN $, if no key is pressed GOSUB 210 Wait for a keypress            Return of the character in the variable $ IN GOSUB 250 output of a simple short tone ( "Beep") GOSUB 260 determining a random number between 0 and 1            Return the number in the variable RV GOSUB 270 determine the amount of free memory            Return the value in the variable FR GOSUB 300 converting a numeric value to a string            Transfer the numerical value in the variable SR            Return the string in the variable $ SR GOSUB 310 300 GOSUB analog to additional information:            Passing a fixed string length in the variable CT            Handover of the position of the decimal point in the variable CN GOSUB 350 Output a string to the printer            Transfer of the string in the variable $ SR GOSUB 360 output a line break on the printer More general specifications

A line of a program may BASICODE, including line number and spaces, be up to 60 characters long and should contain only one statement. The argument for the trigonometric functions is in radians. The logical operators AND and OR may not be used for bitwise combination of numbers in BASICODE. When using string functions should be paid to possible differences in the character set between different types of computers. Variable names can contain a maximum of two characters (one or two capital letters or a capital letter and one number ) long. Each variable must be assigned values ​​, since an implicit initialization does not work on all types of computers before its initial use in commands or functions a value. Numeric variables are single precision ( six significant digits ). String variables can be up to 255 characters long. Each BASICODE program begins on line 1000th From the line number 30000 are comments about the program, starting at line 32000 formal facts such as the name of the author or version information.

BASICODE 3/3C

In BASICODE 3 / 3C allowed BASIC commands, functions and operators

With respect to the permissible in BASICODE elements of the BASIC language to BASICODE 3/3C differs only slightly from BASICODE 2 The main difference is the addition of new DEF FN to define their own functions.

  • Commands:

DATA DEF FN DIM FOR GOSUB GOTO IF INPUT LET NEXT READ ON PRINT REM RESTORE RETURN TO STEP TAB THEN Differences to BASICODE 2: Newly added: DEF FN LET Removed: END RUN STOP functions:

ABS ASC ATN COS EXP INT LEN LOG SIN SGN SQR TAN VAL CHR $ LEFT $, MID $ $ RIGHT AND OR NOT Arithmetic operators:

^ exponential * Multiplication / Division Addition and concatenation of string variables - Subtraction Comparison operators:

= <> <> < => = In BASICODE 3/3C provided by the Bascoder routines

The scope of the Bascoder subroutines has been significantly expanded with BASICODE 3/3C compared to its predecessor. In particular, the newly added options for audio output (400) to work with external files ( 500-580 ) and graphic display ( 600-650 ) extended the possibilities of BASICODE considerably.

GOTO 20 startup, system reset, deleting all variables GOSUB 100 Initializing the Text mode, clearing the screen GOSUB 110 set the cursor to a specific position            Handover of the position in the variables HO and VE GOSUB 120 determination of the position of the cursor            Returns the position in the variables HO and VE GOSUB 150 Showy displays a string on the screen            (left and right three spaces)            Transfer of the string in the variable $ SR GOSUB 200 reading of a key press            Return of the character in the variable $ IN            Return an empty variable IN $, if no key is pressed GOSUB 210 Wait for a keypress            Return of the character in the variable $ IN GOSUB 220 reading a symbol from the screen            Passing the screen position in the variables HO and VE            Returning the character as a numeric value in the variable IN GOSUB 250 output of a simple short tone ( "Beep") GOSUB 260 determining a random number between 0 and 1            Return the number in the variable RV GOSUB 270 determine the amount of free memory            Return the value in the variable FR GOSUB 280 off or turning on the STOP / BREAK key            Delivery of the desired status in the variable FR (FR = 0 and FR = 1) GOSUB 300 converting a numeric value to a string            Transfer the numerical value in the variable SR            Return the string in the variable $ SR GOSUB 310 300 GOSUB analog to additional information:            Passing a fixed string length in the variable CT            Handover of the position of the decimal point in the variable CN GOSUB 330 converting all lowercase characters in a string to uppercase            Delivery and return of the string in the variable $ SR GOSUB 350 Output a string to the printer            Transfer of the string in the variable $ SR GOSUB 360 output a line break on the printer GOSUB 400 emits a tone            Transfer of the volume, duration and pitch in the variables SV, SD and SP GOSUB 450 wait a certain time for a keypress            Handing over the period in the variable SD ( in 100 -millisecond units) GOSUB 500 Opening a File            Passing the name in the variable $ NF            Establishing a file identifier in the variable NF GOSUB 540 Read a string from a file            Handover of the identifier in the variable NF            Return the string in the variable $ IN GOSUB 560 letter of a string in a file            Handover of the identifier in the variable NF            Transfer of the string in the variable $ SR GOSUB 580 closing a file            Handover of the identifier in the variable NF GOSUB 600 initializing the graphics mode, clear the screen GOSUB 620 setting a point            Handover of the position in the variables HO and VE            Transfer of the color in the variable CN GOSUB 630 Draw a line starting from the current graphics position            Handover of the end point in the variables HO and VE            Transfer of the color in the variable CN            Set the graph position beforehand if appropriate, by placing a point GOSUB 650 Output a string in graphics mode            Handover of the position in the variables HO and VE            Transfer of the string in the variable $ SR 950 GOTO exit the program BASICODE Differences to BASICODE 2: New additions: 20, 150, 220, 280, 330, 400-450, 500-580, 600-650, 950 Notwithstanding: 100 The handover and return of position information in text mode stated in absolute values ​​. In graphics mode, the variables HO and VE are, however, covered with relative values. This means that for the setting of a point in the center of the screen the coordinates HO = 0.5 and VE = 0.5 must be passed, for the top left corner HO = 0 and VE = 0 and for the bottom right corner HO = 1 and VE = 1 This is to be achieved regardless of the screen resolution actually available a comparable output.

More general specifications (in addition to BASICODE 2 standard)

The names of user- defined functions allowed as variable names have a maximum of two characters. The definition of an own string functions is not possible in BASICODE. The program ends with "GOTO 950 " since the commands RUN, END and STOP are prohibited.

The following variable names are not used in the program is available in BASICODE:

- All variables that begin with the letter O - AS, AT, DI, DI $, DS, DS $, EI, EI $, EL, ER, FN, GO, GR, IF, LN, SQ, SQ $, ST, TI, TI $, TO - PI The following variables are used by Bascoder, for example, when passing arguments to the Bascoder subroutines or the return values ​​:

- A, CN, CT, FR, HG, HO, IN, IN $, NF, NF $, RV, SD, SP, SR, SR $, SV, VE, VG comments

107228
de