Die Anfänge von Basicode

 

Basicode entstand aus Versuchen, Programme zu schreiben, die auf einer ganzen Reihe von Maschinen laufen sollen und nicht nur auf der einen, auf der sie geschrieben wurden.

Die meisten Neulinge in der Welt des Computerns entdecken recht bald, daß man nicht einfach irgendein altes Programm kaufen kann, auch wenn es in der weltweit am meisten verwendeten Sprache, Basic, geschrieben ist, und sicher sein kann, daß es auf seinem speziellen Microcomputer laufen wird - man muß sich vergewissern, ob es BBC Basic, QL Super Basic, Commodore Simon's Basic... ist. Sollte Basic nicht eine universelle Sprache sein?

Nun, ja, aber leider haben Computersprachen wie menschliche die Angewohnheit, Dialekte zu entwickeln. Noch schlechter ist, daß diese Dialekte gegenseitig unverständlich sind. Was gewöhnlich passiert, ist, daß jeder Hersteller denkt, er kann sein Basic ein bißchen besser als sein Konkurrent machen, indem er hier diesen Befehl hinzufügt, dort jenen erweitert und überhaupt herumbastelt. So haben zwar alle Basics Befehle wie PRINT, GOTO und FOR ... NEXT gemeinsam, aber der Weg, wie sie den Bildschirm löschen, kann CLEAR sein oder CLS oder sogar eine spezielle Taste, die keine andere Maschine hat.

Das Ergebnis davon ist, daß es fast immer einen oder zwei Befehle in einem Programm geben wird, die das Aufhängen eines "fremden" Microcomputers verursachen werden, wenn er versucht, es laufen zu lassen. Es ist schon eine Schande, daß Maschinen, die in ihrem Basic 95 Prozent kompatibel sind, sich nicht einig werden können, irgendeinen Kompromiß zu finden.

Sie können es doch und sie tun es auch. Jemand im niederländischen Rundfunk hatte tatsächlich den Geistesblitz, mit einer Art von Basic Esperanto herauszukommen, das eine große Zahl von Heimcomputern verstehen kann. Es heißt Basicode und ist in zwei Stufen aufgebaut.

Jedes Basic hat eine Liste von Befehlen wie PRINT und RUN und Operationen wie + und *, die es als zulässig akzeptieren wird. Basicode wählt einfach diese Befehle aus, die in den meisten dieser Listen vorkommen und verzichtet auf die ganzen Versionen, die nur für eine spezifische Maschine gelten. Das Ergebnis wird in der Tabelle gezeigt:

 

ABS IF REM TO
AND INPUT RESTORE VAL
ASC LEFT$ RETURN +
ATN LEN RIGHT$ -
CHR$ LET RUN *
COS LOG SGN /
DATA MID$ SIN ^
DIM NEXT SQR =
END NOT STEP <
FOR ON STOP >
GOSUB OR TAB <>
GOTO PRINT TAN <=
INT READ THEN >=

 

Das ist natürlich schön, bis man ein Programm schreiben möchte, das ein paar von jenen fehlenden Befehlen verwendet. Gerade diese enthalten allgemeine Funktionen wie das Löschen des Bildschirms und die Erzeugung von Zufallszahlen, es muß ein Weg gefunden werden, sie verfügbar zu machen, aber nicht auf eine maschinenspezifische Art.

Der Trick ist, alle diese maschinenspezifischen Befehle in einen gesonderten Teil des Hauptprogramms zu legen und sie aufzurufen, indem GOSUB-Befehle verwendet werden, die ein entsprechendes Unterprogramm aufrufen. Zum Beispiel ist in den Basicodevereinbarungen festgelegt, daß, um den Bildschirm statt mit CLEAR oder CLS zu löschen, GOSUB 100 geschrieben wird. In Zeile 100 findet man den für seine spezielle Maschine zutreffenden Befehl zum Löschen des Bildschirms.

Auf diese Art können all die maschinenabhängigen Befehle in einem seperaten Programm sicher weggespeichert werden, das vor dem Hauptprogramm, das wiederum ganz maschinenunabhängig bleibt, plaziert wird. Dieses spezielle Hilfsprogramm wurde für jede der Maschinen, die Basicode unterstützen, erstellt und wird als erstes geladen, bevor das Hauptprogramm geladen oder geschrieben wird.

Um dies konsistent lösen zu können, sind die gesamten ersten 1000 Zeilen eines Basicodeprogramms für diese speziellen Routinen reserviert und den Routinen feste Zeilennummern zugeordnet. Der Hauptteil des Programms beginnt dann in Zeile 1000 selbst.

Auf diese Art können Programme für eine ganze Reihe von Maschinen geschrieben und ausgeführt werden, vorausgesetzt, die Basicode-Festlegungen zu erlaubten Befehlen und zur Programmstruktur werden befolgt. Aber ein Problem besteht immer noch: es muß noch ein Weg gefunden werden, Programme zu übertragen, ohne alles neu eintippen zu müssen.

Das Problem hierbei ist, daß, wenn auch die meisten Microcomputer die generell gleiche Technik zum Programmespeichern benutzen - auf Kassetten, mit Ton-Entsprechungen für die Nullen und Einsen, die ein Computerprogramm ergeben -, die Details abweichen. insbesondere sind die Frequenzen, die benutzt werden, um Programme auf Bändern zu speichern, von Maschine zu Maschine unterschiedlich.

Wieder löst Basicode das, indem es einfach definiert, welche Frequenzen verwendet werden sollen, und ein Stück Software für jede Maschine schreibt, das diese Frequenzen in die umwandelt, die der spezielle Microcomputer verarbeiten kann.

Die Verwendung dieser Techniken ermöglicht es, Programme von Microcomputer zu Microcomputer zu schreiben und zu transportieren. Tatsächlich hat das niederländische Radio noch größere Pläne vor. Es entwickelte Basicode ursprünglich, um es zu ermöglichen, Programme an Studenten am niederländischen Äquivalent zur Open University zu verteilen. Die Frequenzen werden über den Äther verbreitet statt auf Band gespeichert zu werden.

Das ist ein sehr einfacher Vorgang, aber hat den Nachteil, für Fehler durch schlechten Empfang anfällig zu sein. Es ist auch unschönes Radio, wenn man das Pech hat, es zu hören, statt es dem Computer zu füttern. Deswegen hält man die Übertragungen kurz und verlegt sie auf unsoziale Stunden, um die Zahl der Hörer, die belästigt werden, klein zu halten.

Das ist die Methode, die von Radio Four's Computersendung The Chip Shop übernommen wurde, das die Exklusivrechte für die Übertragung von Basicode in diesem Land hat. Basicodeprogramme werden in den frühen Morgenstunden von Samstagen und Sonntagen, um 5.55 Uhr, gesendet. Um die Übertragungen zu empfangen braucht man nichts weiter als ein Radio und das passende Basicode-Kit für seinen Heimcomputer.

Dieses kostet £3,95 und ist für eine Reihe von Maschinen erhältlich, so für den Apple ][, BBC, Electron, Commodore 64, Dragon, MSX, Oric und Spectrum. Basicode-Kits und mehr Information sind erhältlich beim Broadcasting Support Service, PO Box i, London WS 6X-1.


Zeitschrift YOUR COMPUTER Oktober 1984

Übersetzt von Thomas Rademacher im Oktober 2002