Basicode Software für alle

von Nikolaus Heusler

Der Rundfunk der DDR bezeichnet es zu Recht als »Esperanto für alle Computer« - die Universal-Programmiersprache Basicode. Bei Basicode handelt es sich um eine Basic-ähnliche Sprache mit einem Umfang von etwa 80 Befehlen. Das Besondere daran: Sie können damit Programme schreiben, die jeder Computer versteht. Man kann ein Programm beispielsweise unter Basicode auf einem Atari XE schreiben - es funktioniert ohne Anpassung sofort auch auf dem C64.

Damit das alles funktioniert, sind spezielle Übersetzerprogramme, sog. »Bascoder«, notwendig. Ein einfaches Beispiel: In einem Basicode-Programm soll ein Pieps ertönen. Im Programmfile wird jetzt nicht der Befehl geschrieben, der den Ton hervorbringt (beim C64 wären dies sogar mehrere Befehle), sondern GOSUB 400 der Befehl für »springe in das Unterprogramm Tonerzeugung«. In den reservierten Variablen SV, SD und SP werden die Lautstärke, Dauer und Tonhöhe übergeben. Wird dieses Programm z.B. auf einem C64 eingelesen, sorgt der C64-Bascoder dafür, daß sich ab Zeile 400 eine Routine mit den entsprechenden POKEs findet, die den Ton erklingen läßt. Wird das Programm auf einem PC eingelesen, löst dieser in Zeile 400 ein PRINT CHR$(7) aus, der auf dem PC einen Ton hervorbringt. Der Bascoder, der dieses Programm auf einem Atari ST umsetzt, hat seinerseits die Befehlsfolge ab Zeile 400, die einen ST zum Tönen bringt. Sie sehen, die Basicode Programme »sagen« nur den Bascodern, die es mittlerweile für sehr viele Computer gibt, was sie zu tun haben. Die Bascoder »wissen«, wie der jeweilige Computer programmiert werden muß, um die gewünschte Aktion - etwa die Ausgabe eines Tons - zu starten. Ein Basicode-Programm darf daher erst ab Zeile 1000 beginnen, da in den Zeilen davor die computerspezifischen Unterroutinen des jeweiligen Bascoders stehen.

Ein anderes Beispiel: Sie wollen in Basicode den Bildschirm löschen. Befehle wie PRINT CHR&(147) bzw. PRINT <CLR HOME> für den C64 oder CLS bzw. CLEAR SCREEN für andere Computer sind verboten, Sie müssen statt dessen GOSUB 100 schreiben. Zeile 100 gehört zum Bascoder-Bereich, sie enthält den Befehl, der auf dem jeweiligen Rechner den Bildschirm löscht. Ähnlich könnte man sich das z.B. mit dem LOCATE-Befehl vorstellen, der einen Text an einer bestimmten Stelle auf dem Bildschirm ausgibt. Da es diese Anweisung im C64-Basic gar nicht gibt, wird der Text vom Bascoder mit Hilfe von POKEs in die System-Speicherzellen, die die Cursorposition bestimmen, hineingeschrieben. Hier einige Beispiele für Befehle, die vom Bascoder umgesetzt werden:

 

GOSUB 100 Bildschirmlöschen
GOSUB 260 Zufallszahl erzeugen
GOSUB 350 Druckerausgabe
GOSUB 400 Ton ausgeben
GOSUB 500 Datei öffnen
GOSUB 630 Linie in Hires-Grafik zeichnen
GOTO 950 Programmende

 

Die Schattenseiten: Natürlich hat dieses System auch einige Nachteile. Beispielsweise müssen Basicode-Programme ein ganz spezielles Format einhalten, damit wirklich jeder Bascoder etwas damit anfangen kann und das Programm für alle verständlich ist. Das Programmieren in Basicode ist daher etwas gewöhnungsbedürftig. Außerdem muß sich der gesamte Basicode-Standard vom Leistungsumfang her am schlechtesten Computer orientieren. Beispiel: Wäre in Basicode eine Grafikauflösung von beispielsweise 640 x 400 Punkten vorhanden, so könnte man Programme, die diese Auflösung verwenden, zwar auf einem Atari ST anwenden, nicht jedoch auf dem C64, der ja nur 320 x 200 Punkte bietet. Da dies der Basicode-Philosophie widerspricht, gibt es keine absolute Vorgabe zur Bildschirmauflösung, sondern nur die Vorschrift, daß das Verhältnis von Zeilen zu Spalten etwa 3:4 sein soll.

Der Bascoder zum C64 arbeitet z.B. mit einer Auflösung von 200 Zeilen mit 288 Punkten. Eine Grafik erscheint so auf allen Rechnern an der gleichen Stelle und in gleicher Form. Nur die Qualität hängt vom jeweiligen Computer ab.

Ein Nachteil ist auch, daß neben dem rechnerspezifischen Bascoder für manche Computer (z.B. PCs) erst zusätzliche Hardware angeschafft werden muß, um ein Kassettenlaufwerk anschließen zu können. Eine kleine Auswahl von Computern, für die bereits ein Bascoder zur Verfügung steht: C64, C128, Plus/4, verschiedene Modelle von Apple, Acorn, IBM-kompatible PCs, ATARI 800, XL, XE, ST (in der Entwicklung) und Sinclair ZX-Spectrum.

Basicode in der Praxis: Zum Betrieb von Basicde auf dem C64 braucht man neben einer normalen Datasette 1530 keine weitere Hardware. Zunächst sollte man sich einen passenden Bascoder beschaffen (z.B. aus dem am Ende des Artikels genannten Buch) und diesen zur Sicherheit auf Diskette kopieren. Dann können die Basicode-Programme ganz einfach auf Tastendruck über die Datasette eingelesen werden, seien es Aufzeichnungen aus dem Radio oder von Freunden bzw. selbst bespielte Kassetten. Wir haben es ausprobiert: Es klappt tatsächlich ohne Probleme. Die Basicode-Programme werden über das Menü des Bascoders bequem von Band eingelesen, was mit der üblichen, nicht besonders hohen Geschwindigkeit vonstatten geht, LOAD ERRORs tauchten erstaunlicherweise nicht auf. Die Programme lassen sich wie gewohnt mit LIST ansehen und editieren oder mit RUN starten. Die Ablaufgeschwindigkeit ist, obwohl es sich doch eigentlich um Basicprograme handelt, recht hoch, weil der Bascoder selbst ein Maschinenprogramm ist.

Basicode im Radio: Die Idee zu Basicode kommt aus Holland, es wurde dort bereits 1979 entwickelt. Zur Zeit wird hauptsächlich die dritte Version der Sprache, Basicode-3, verwendet. Findige Programmierer sind bereits daran, Basicode-4 zu entwickeln. Dank der holländischen Spezialisten stehen Bascoder heute für praktisch alle verbreiteten Rechner zur Verfügung, weitere werden gewiß noch entstehen. Da ein Basicode-Programm für alle Rechner gleich "aussieht" und sich über UKW oder Mittelwelle ausstrahlen und - bei Mittelwelle sogar über viele hundert Kilometer - empfangen läßt, bietet es sich an, die Programme auch im Rundfunk zu verbreiten. Solche Sendungen gibt es in Holland und auch in der DDR regelmäßig.

Ein C64-Anwender, der ein im Radio gesendetes Basicode-Programm anwenden will, geht so vor: Er zeichnet die Radiosendung mit einem beliebigen Kassettenrecorder auf eine normale Kompaktkassette auf. Anschließend ist mit dem C64 der Bascoder von Diskette oder Kassette zu laden und zu starten. Nun wird die Kassette mit der Aufzeichnung vom normalen Kassettenrecorder in die Datasette gelegt, das aus dem Radio aufgezeichnete Programm läßt sich in den C64 einlesen. Anwender anderer Computer gehen genauso vor, immer vorhanden sein muß der systemspezifische Bascoder.

Eine ausführliche deutschsprachige Broschüre über die Programmierung in Basicode mit den Sendefrequenzen von Radio DDR ist auf Anfrage kostenlos bei Radio DDR erhältlich. Leider kann man diese Sendungen in vielen Regionen Westdeutschlands ohne spezielle Antennenanlagen nicht empfangen, das gilt auch für die Sendungen des holländischen Rundfunks. Es ist jedoch nicht ausgeschlossen, daß auch unsere Rundfunkstationen irgendwann einmal die Möglichkeiten von Basicode entdecken und - beispielsweise im Rahmen einer regelmäßigen Sendereihe zum Thema Computer - Programme ausstrahlen. Wir haben auch gleich telefonisch bei einigen Rundfunkanstalten angefragt, doch kaum jemand hatte überhaupt etwas davon gehört. Andererseits fanden alle Befragten die Idee ganz toll, und das geht uns nicht anders. Gerade jetzt, da die DDR sich öffnet, wäre auch hier eine Zusammenarbeit wünschenswert. Je mehr Basicode-Anwender es gibt, desto mehr Software wird es für das "Esperanto der Computer" geben.

Mit freundlicher Genehmigung: Nikolaus Heusler in Rubrik "STORY" 64'er Mai 1990, S. 17f