BASICODE war ein um 1980 von der niederländischen Rundfunkvereinigung NOS (Nederlandse Omroep Stichting) initiiertes Computerprojekt mit Ziel, einen einheitlichen Sprachstandard für die auf den damals populären Heimcomputern weit verbreitete, jedoch in unzählige zueinander inkompatibele Varianten zersplitterte Programmiersprache BASIC zu definieren. Dies wurde durch rechnerspezifische Zusatzprogramme erreicht, welche die Aufrufe der durch den BASICODE-Sprachstandard definierten Subroutinen für die Ein- und Ausgabe von Text, Grafik und Sound entsprechend den technischen Möglichkeiten des jeweiligen Rechners ausführten. Diese als Bascoder bezeichneten Programme ermöglichten darüber hinaus den Programm- und Datenaustausch zwischen verschiedenen Heimcomputerplattformen durch Definition eines einheitlichen Datenformats für die damals als Datenträger üblichen Kompaktkassetten. BASICODE wurde oft auch als "Esperanto für Computer" bezeichnet.

Die Kompaktkassette
Die Ausgangssituation
Zum Ende der 1970er und dem Anfang der 1980er Jahre waren Heimcomputer auf der Basis von 8-Bit-Prozessoren unter Privatanwendern sehr populär. Zu den bekanntesten gehörten dabei der C64 bzw. C128 der Firma Commodore, die Atari 400/ 800 (XL/XE) Reihe, der Apple II, die Schneider/ Amstrad CPC-Modelle, die Computer der Firma Sinclair Research (ZX80, ZX81, ZX Spectrum) und in der DDR die Rechner der Baureihen Z9001, KC85/1 und KC87 sowie KC85/2 bis KC85/4. Gemeinsam war diesen Rechnern, daß sie mit einem 8-Bit-Prozessor der Typen MOS Technologies 6502 oder Zilog Z80, zwischen 16 und 64 KByte RAM-Speicher, einer Anschlussmöglichkeit für Kassettenrekorder oder einem eingebauten Kassettenlaufwerk zur Datenspeicherung auf Kompaktkassetten sowie einem oft im ROM-Speicher fest eingebautem Interpreter für die damals weit verbreitete Programmiersprache BASIC ausgestattet waren. Die leichte Erlernbarkeit der für Einsteiger konzipierten Sprache BASIC sowie ihre unmittelbare Verfügbarkeit auf all diesen Rechnern führte dazu, daß viele Besitzer von Heimcomputern selbst programmierten und ihre Programme untereinander austauschten.
Problematisch für den Austausch von Programmen und Daten zwischen Computern verschiedener Hersteller war jedoch zum einen, daß die verwendeten BASIC-Varianten untereinander in vielen Bereichen völlig inkompatibel waren. Sie verwendeten also für die gleiche Aktion (wie z.B. das Löschen des Bildschirm, das Zeichnen eines Punktes auf den Bildschirm oder die Ausgabe eines Tones) verschiedene BASIC-Befehle, so daß z.B. ein auf einem C64 geschriebenes BASIC-Programm ohne manuelle Anpassung in der Regel nicht auf einem Atari XL funktionierte und umgekehrt. Zum zweiten unterschieden sich die Computer in ihren technischen Ausstattung, also z.B. der Bildschirmauflösung, der Anzahl der möglichen Farben oder den für die Soundausgabe verfügbaren Möglichkeiten. Drittens waren die auf den verschiedenen Rechnern verwendeten Datenformate zum Abspeichern von Daten und Programmen auf Kompaktkassetten ebenfalls inkompatibel zueinander.
Der erste Standard
Um 1980 begann die niederländische Rundfunkvereinigung NOS mit der Ausstrahlung von Computerprogrammen im Radio. Da Programme und Daten auf den Kompaktkassetten als hörbare Geräusche gespeichert wurden, war es möglich, solche Radiosendungen auf einem Kassettenrekorder aufzuzeichnen und die gesendeten Programme dann anschließend mit dem Computer einzulesen. Aus den eingangs dargestellten Problemen ergab sich jedoch, daß ein Programm fast immer für alle populären Computertypen speziell angepasst werden musste und dann in entsprechenden Versionen auch mehrfach im Radio gesendet wurde. Die bei der Speicherung auf Kompaktkassetten sehr geringe Datendichte im Vergleich zu heutigen Datenträgern bedeutete, daß die Ausstrahlung im Radio und damit auch die Aufzeichnung entsprechend lange dauerte, und somit in einer Sendung nur eine sehr begrenzte Anzahl an Programmen gesendet werden konnte. Die Ausstrahlung des gleichen Programms in mehreren verschiedenen Versionen war also ein großer Nachteil.
Im Jahr 1982 kamen dann die Verantwortlichen bei NOS auf die Idee, ein einheitliches Datenformat zu entwickeln. Ein für jeden Computertyp spezifisches Programm, der sogenannte Bascoder, übernahm dabei das Einlesen dieses Formats von der Kassette bzw. das Abspeichern von Programmen und Daten in diesem einheitlichen Format auf die Kassette. Auch diese Programme wurden von NOS über Rundfunk verbreitet. Sie konnten darüber hinaus auf Kompaktkassetten von NOS erworben werden, und wurden auch zwischen Computerbenutzern im privaten Kreis weitergegeben. Die Datendichte dieses Formats lag bei 1.200 Bits pro Sekunde, also 150 Bytes pro Sekunde oder 9 KByte pro Minute.
Die Aufzeichnung von Programmen erfolgte dabei genau wie die Aufzeichnung von Daten, und abweichend von der üblichen Speicherung der einzelnen BASIC-Befehle in Form von 1-Byte-Einheiten (Token), Zeichen für Zeichen in Form eines kurzen 1200Hz-Signals für ein 0-Bit und zwei 2400Hz-Signalen für ein 1-Bit, ergänzt um Start- und Stop-Signale und Prüfsummen. Dieses einfache, aber hinsichtlich Störungen bei der Übertragung sehr robuste Format konnte von allen damals verbreiteten Homecomputern am jeweiligen Datenein- und Ausgang gelesen und geschrieben werden. Die Robustheit dieses Standards ermöglichte auch die Ausstrahlung auf Mittelwelle-Frequenzen, was wiederum die Reichweite und damit die Zahl der möglichen Empfänger vergrößerte. Im niederländischen Rundfunk gesendete Programme konnten z.B. auch in weiten Teilen der DDR empfangen werden.
BASICODE 2
Der damit geschaffene Standard löste zwar eines der eingangs dargestellten Probleme, nämlich das der zueinander inkompatibelen Datenformate. Programme mussten jedoch weiterhin auf jedem einzelnen Rechnertyp an den jeweiligen BASIC-Dialekt und die spezifischen technischen Gegebenheiten angepasst werden. Eine mögliche Beschränkung auf diejenigen Elemente der Sprache BASIC, welche allen Dialekten gemeinsam war, bedeutete unbefriedigende Einschränkungen hinsichtlich der Funktionalität der Programme, z.B. den Verzicht auf Grafik und Sound und nur unkomfortable Möglichkeiten zur Dateneingabe über die Tastatur und zur Steuerung der Datenausgabe auf dem Bildschirm. Aus diesem Grund wurde 1984 der Standard BASICODE 2 geschaffen. Die auf diesem Standard basierenden Bascoder enthielten nicht nur die Routinen zur Ein- und Ausgabe von Programmen und Daten auf Kompaktkassetten. Zusätzlich zu einem Satz von ca. 50 BASIC-Befehlen, die in allen BASIC-Dialekten identisch waren, definierte der Sprachstandard von BASICODE 2 darüber hinaus erstmals auch eine Bibliothek an Subroutinen, deren Aufruf auf allen Computern die gleiche Funktionalität bereitstellte.
Dazu wurde festgelegt, daß der Bereich der Programmzeilen unterhalb der Zeilennummer 1000 für den Bascoder reserviert war und in BASICODE geschriebene Programme somit erst ab der Zeilennummer 1000 beginnen durften. Die Subroutinen des Bascoders in den Zeilennummern unter 1000 wurden dann durch die GOSUB-Anweisung aufgerufen. Dabei notwendige Argumente wurden übergeben, indem vor dem Aufruf bestimmten, für den Bascoder reservierten Variablen die entsprechenden Werte zugewiesen wurden. Der BASICODE Sprachstandard enthielt darüber hinaus noch einige weitere Festlegungen, die sich aus den Einschränkungen einiger Rechnertypen ergaben. So durfte beispielsweise, im Gegensatz zu den BASIC-Dialekten fast aller anderen Computer, auf dem ZX81 eine Programmzeile nur einen einzigen BASIC-Befehl enthalten, oder eine Programmzeile im BASIC-Dialekt der KC-Reihe durfte nicht länger als 60 Zeichen sein. Solche Einschränkungen mussten, da der Bascoder zusammen mit dem BASICODE-Programm vom jeweils rechnerspezifischen BASIC-Interpreter abgearbeitet wurde, für alle BASICODE-Programme gelten, um volle Plattformunabhängigkeit zu erreichen.
Die Bascoder wurden also auf ihren jeweiligen Rechnern als normale Programme geladen und stellten anschließend die zusätzlichen Routinen für den gemeinsamen Sprachstandard und für die Ein- und Ausgabe auf Kassetten zur Verfügung. Die in BASICODE geschriebenen Programme konnten somit erst nach dem Laden und Starten des Bascoders genutzt werden. Auf einigen Rechnern konnten jedoch die BASICODE-Programm zusammen mit dem Sprachteil des Bascoders im typspezifischen Datenformat gepeichert werden. Dadurch war es dann zwar nicht mehr möglich, diese Aufzeichnung auf anderen Rechnertypen zu verwenden. Allerdings hatten die typspezifischen Datenformate fast immer eine deutlich höhere Datendichte, so daß das gleiche Programm deutlich schneller als im BASICODE-Format geladen werden konnte. Darüber hinaus stand ohne die Notwendigkeit, vor der Ausführung des BASICODE-Programms den kompletten Bascoder laden zu müssen, deutlich mehr Arbeitsspeicher zur Programmlaufzeit zur Verfügung.
Bascoder für den BASICODE 2 Standard existierten unter anderem für die Computertypen Exidy Sorcerer, DAI, Color Genie, Commodore PET, VIC-20, C64, Amiga, Sinclair ZX81, ZX-Spectrum, QL, Philips P2000T, Acorn Atom, BBC, Electron, Tandy TRS80, MSX, Oric Atmos, Newbrain, Amstrad CPC 464, IBM PC, Apple II, Texas Instruments TI-99/4A, Mattel Aquarius und andere. Erfahrene Computerbesitzer waren darüber hinaus auch in der Lage, einen eigenen Bascoder für ihr spezielles System zu entwickeln, da der Sprachstandard und das Datenformat offen gelegt und gut dokumentiert waren. Der durch BASICODE 2 definierte Sprachstandard ermöglichte bereits die Entwicklung von systemunabhängigen Programmen mit für die damalige Zeit relativ fortgeschrittenen Möglichkeiten. BASICODE wurde darüber hinaus auch genutzt, um in Form sogenannter Journale Informationen wie z.B. Neuigkeiten aus der Computerszene im Radio zu senden und zwischen Computernutzern weiterzugeben. Auch ein umfangreicher Kurs zur Programmierung in BASICODE und andere Dokumentationen wurden auf diesem Weg verbreitet.
BASICODE 3 / 3C
1986 wurde der neue Standard BASICODE 3 entwickelt. Dieser enthielt als wesentliche Neuerungen Routinen für einfache Grafikausgabe, das Lesen und Speichern von Daten aus Programmen heraus sowie für die Ausgabe von Sound. Mit BASICODE 3 wurde BASICODE insbesondere auch in der Computerszene der DDR bekannt, und BASICODE-Programme wurden ab 1989 auch im Rundfunk der DDR gesendet. In der DDR erschien darüber hinaus ein Buch, dem eine kleine Schallplatte mit den Bascodern für alle in der DDR verbreiteten Computertypen beilag.
Das Ende der Popularität von BASICODE
Ab ca. 1990 nahm die Popularität von BASICODE aufgrund der immer weiteren Verbreitung von 16- und 32-Bit-Computern und insbesondere neuer Varianten des IBM-PCs sowie dazu kompatibeler Geräte sehr schnell ab. Auch wenn für diese Computer meist noch Bascoder entwickelt wurden, war BASICODE zu limitiert, um mit den technischen Möglichkeiten dieser Rechnergeneration mitzuhalten. Darüber hinaus entfiel durch die weitesgehende Konzentration auf wenige Rechnerarchitekturen im 16- und 32-Bit-Bereich der Hauptgrund für die Entstehung und Nutzung von BASICODE. Ebenso waren viele Menschen aufgrund der zunehmenden Komplexität der Hard- und Software der neuen Systeme nicht mehr daran interessiert oder in der Lage, selbst zu programmieren.
Der aus dem DDR-Rundfunk hervorgegangene Deutschlandsender Kultur, der später mit anderen Sendern zum Deutschlandradio fusionierte, strahlte noch bis ca. 1992 BASICODE-Programme aus. Die letzte überarbeitete BASICODE-Version, welche insbesondere die Bildschirmausgabe in Farbe als Neuerung enthielt, wurde als BASICODE 3C veröffentlicht. Ein noch geplanter Standard BASICODE 4 wurde nie offiziell realisiert. BASICODE wird heute noch von einigen Enthusiasten, insbesondere 8-Bit-Computer-Fans, vorwiegend aus nostalgischem Interesse weiterhin verwendet, besitzt jedoch keine praktische Relevanz mehr.
Historische Bedeutung
BASICODE war der erste erfolgreiche Versuch, auf verschiedenen zueinander inkompatibelen Rechnerarchitekturen einen gemeinsamen Standard zum Austausch von Programmen und Daten zu schaffen. Es definierte dabei sowohl einen Sprachstandard für die auf Heimcomputern nahezu universell verfügbare Programmiersprache BASIC als auch ein Datenformat für Kompaktkassetten, welches auf allen mit BASICODE ausgestatteten Computern gelesen und geschrieben werden konnte. Die Verbreitung von BASICODE lässt sich schwer einschätzen, da sowohl die Bascoder als auch die in BASICODE entwickelten Programme frei verfügbar waren und weitergegeben wurden. Bascoder waren jedoch für nahezu jeden jemals verkauften Heimcomputer dieser Computer-Ära verfügbar. Kommerziell war BASICODE aufgrund seiner freien Verbreitung nicht von Relevanz.
Einschränkend muss hinzugefügt werden, daß es mit BASICODE konzeptbedingt nicht möglich war, die jeweils spezifischen technischen Möglichkeiten eines bestimmten Rechnertyps voll auszunutzen. Der durch BASICODE definierte Sprachstandard beschränkte sich nahezu vollständig auf den kleinsten gemeinsamen Nenner aller relevanten Computersysteme. Dieses Konzept wurde erst mit BASICODE 3 / 3C teilweise aufgegeben, da einige Rechnertypen bzw. Varianten wie z.B. die ZX80/ ZX81 und der KC87 keine echte Grafikausgabe und keine Farbausgabe ermöglichten und somit die entsprechenden neu eingeführten Teile von BASICODE 3 / 3C auf diesen Rechnern nicht mehr nutzbar waren. Insbesondere bei zeitkritischen Anwendungen und im Bereich der Grafik- und Soundausgabe, also z.B. bei der Entwicklung von Computerspielen, war BASICODE einer Programmierung im jeweils systemspezifischen BASIC-Dialekt oder direkt im Maschinencode klar unterlegen. Die Stärken von BASICODE lagen somit eher in den Bereichen Anwendungsentwicklung, Software für den Bildungsbereich und Datenaustausch. Das BASICODE-Datenformat wurde darüber hinaus auch zur Weitergabe von Pascal-Programmen genutzt. Die Programmiersprache Pascal war hinsichtlich ihrer Sprachdefinition deutlich besser standardisiert als BASIC. Pascal-Compiler waren allerdings nur auf einigen Heimcomputer-Typen verfügbar.
Das grundlegende Konzept von BASICODE, nämlich die Definition eines Sprachstandards zur plattformunabhängigen Softwareentwicklung und die Realisierung dieses Standards durch systemspezifische Programme (Bascoder), ist später bei der Programmiersprache Java ebenfalls realisiert worden, und zwar in Form der betriebssystemspezifischen Java Virtual Machines zur Ausführung der Java-Programme. Die Weitergabe von Daten und Informationen im BASICODE-Datenformat als Journale erinnert darüber hinaus an heute genutzte plattformunabhängige Dokumentformate wie z.B. das Portable Document Format (PDF) und die dafür notwendigen systemspezifischen PDF-Reader-Programme.
Literatur
- Michael Wiegand, Manfred Fillinger: BASICODE. Mit Programmkassette. Ravensburger Buchverlag, Ravensburg 1986, ISBN 3-47-344010-8
- Horst Völz: Basicode mit Programmen auf Schallplatte für Heimcomputer. Verlag Technik, Berlin 1990, ISBN 3-34-100895-0
Weblinks
- BasiCode – Software für alle Ein Projekt von Thomas Rademacher mit vielen Informationen
- BASICODE: an example of Dutch Computer folklore Beschreibung der Geschichte des Projekts (engl.)