BASICODE - oder wie ich dazu kam,
meinen ersten Parser zu schreiben

 

Mein erster richtiger Computer ist ein Memotech MTX 500 mit 32 KB RAM, Z-80 CPU, BASIC, Inline-Assembler und System-Monitor im 24 KB-ROM, den ich, damals noch in Oberhausen wohnend, 1984 in einer der ersten Vobis-Filialen im gut 30 km entfernten Düsseldorf erwerbe.

Hobbyscoop-QSL-Karte

Da dieser Homecomputer zwar gut, aber wenig verbreitet ist, schließe ich mich bald dem MTX-Userclub Deutschland an, dessen Adresse ich in einer der ersten C't-Ausgaben finde. Der Club, mit viel Engagement und Enthusiasmus vom Mathematiker Herbert Herberg (heute: Herbert Zur Nedden) ins Leben gerufen und geleitet, gibt in mehr oder minder regelmäßigen Abständen, etwa monatlich, eine kostengünstige und hoch informative Loseblatt-Zeitschrift mit schwankendem Umfang (meist einige zig DIN A4-Seiten) heraus, die er an seine Mitglieder, die zum Teil ebenfalls sehr aktiv an ihr mitarbeiten, verschickt. In einer dieser „MTX-Infos“ genannten Club-Zeitschriften (46 Ausgaben erscheinen insgesamt) finde ich im Jahre 1987 einen sehr interessanten Bericht des Holländers Hans Gras über die Ausstrahlung von BASIC-Programmen durch einen holländischen Radiosender, NOS.

Dieser strahlt seine Sendungen nicht nur über UKW, sondern auch den Mittelwellenbereich, aus.

Für den Memotech-Rechner aus der „Computer-Schmiede“ in Witney/Oxon (Nähe London) gibt es leider noch keine BASICODE-Firmware, die eine sinnvolle Verwertung der ausgestrahlten Daten ermöglicht. Eine solche zu entwickeln ist auch nicht so ganz trivial, da der Memotech-Computer ein Token-BASIC enthält und der integrierte Zeilen-Editor nur fehlerfreie Programmzeilen in den Speicher übernimmt.

 

Hobbyscoop-Redaktion

Systemwechsel

Im selben Jahr habe ich mir außerdem einen Atari ST zugelegt, so daß meine Entwicklungsenergie in andere Bahnen gelenkt wird. Der Atari verfügt - im Gegensatz zum Memotech-Computer - nicht mehr über eine Kassetten-Schnittstelle. Dafür ist er schneller, hat mehr Speicher (1/2 MB) und einen viel größeren Adreßbereich, was das spätere Einlesen der Textzeichen in den Rechner sehr erleichtert.

Im Januar 1988 schickt mir Joop Engels, NOS, die technischen Unterlagen zu BASICODE zu.

 

Historisches

BASICODE war zu Beginn der 80er Jahre durch den Funkamateur Klaas Roberts entwickelt worden , nachdem Hobbysccop (Sendung der „Nederlandse Omroep Stichting“, NOS) ab 1978 zunächst proprietäre Programme für verschiedene Homecomputer „über den Äther“ an den Hörer gebracht hatte, manche dieser Ausstrahlungen aber - mit bis zu 8 Minuten kakophoner Geräusche - für einen sehr kleinen Nutzerkreis zu viel Sendezeit in Anspruch genommen hatten.

 

Experimente

Nachdem ich ein - sehr simples - Interfaces entwickelt habe, über das der Kassettenrecorder mit dem Atari-Rechner verbunden wird, erfolgen die ersten Einleseversuche mit dem mitgelieferten ST-BASIC.

Schnell stellt sich heraus, daß dieses mit dem Übertragungstempo nicht schritthalten kann. Doch auch die Abfrage des CTS-Signals der RS 232-Schnittstelle, das als Eingang fungiert, durch ein Assembler-Progrämmchen läßt zunächst noch Fragen offen:

BASICODE-Interface für Atari ST

Warum nur tritt in regelmäßigen Abständen - auch bei sauberstem Empfang - ein Lesefehler auf?

Warum ist es nicht möglich, während der Übertragung mehr als eine Zeile der eingelesenen Schriftzeichen direkt auf dem Bildschirm darzustellen?

Die Erforschung dieser Timing-Probleme hält ganz schön auf, weil sie sich naturgemäß allein durch eine Analyse des Programmcodes bzw. Listings nicht erklären lassen. Bald stellt sich heraus, daß diverse System-Interrupts (v.a. der sogenannte VBL-Interrupt) dazwischen- funken und außerdem der Zeilenumbruch des Betriebssystems viel zu viel Zeit in Anspruch nimmt, um eine ganzseitige Darstellung des ausgestrahlten und empfangenen BASICODE- Textes in Echtzeit zu ermöglichen. Die wäre aber erforderlich, um sofort eine Kontrolle über die Qualität der eingespeisten Signale zu haben. Aber auch ein selbst in Assembler programmierter Zeilenumbruch ist zur Laufzeit entschieden zu langwierig, dauert beträchtlich länger als eine Flanke des 1-Bits des BASICODE-Tonsignals (2400 Hz).

Bei einem echten Zeilenumbruch, bei dem alle Schriftzeilen um eine Zeile nach oben geschoben werden, muß einfach zu viel Speicherinformation verschoben werden, zumal beim Atari ST, bei dem jedes Schriftzeichen - in der hohen Auflösung - auch noch aus 16 Scanzeilen besteht. Was nun? Die Lösung des Problems kommt mir mal wieder auf dem Klo - oder war's doch in der Badewanne? Statt ganze Speicherbereiche des Bildschirms aufwendig zu verschieben, wird einfach der Inhalt des Zeigers auf den Speicherbereich des Bildschirmes angepaßt. So wandert der dargestellte Monitortext, sozusagen ein Ausschnitt des übertragenen Textes, über den freien Speicherbereich des Atari ST, noch während dieser mit Textzeichen gefüllt wird. Wir haben somit einen virtuellen Zeilenumbruch - und der geht blitzschnell.

Natürlich wird - separat, zur späteren Weiterverarbeitung - auch noch der ASCII-Code der übertragenen Textzeichen im Speicher abgelegt. Das Einleseprogramm „BV*****“ steht etwa im Sommer 1988, läuft jedoch zu diesem Zeitpunkt weitgehend ohne Interrupts. Spätere Änderungen erfolgen größtenteils wegen der Umstellung auf ein interruptgesteuertes Timing.

 

Auf halbem Wege zu einem Compiler

Als nächstes ist ein Programm erforderlich, das das BASICODE-Programm um die Standard- BASICODE-Unterprogramme ergänzt und den eigentlichen Programmkörper in ein lauffähiges Omikron-BASIC-Programm übersetzt. Sowohl das mitgelieferte ST-BASIC als auch das - eigentlich gängigere - GFA-BASIC erweisen sich nämlich als ungeeignet zur Portierung der BASICODE-Quelltexte, letzteres v.a. aufgrund der fehlenden Zeilennummern.

Die Übersetzung erfordert eine komplette Textanalyse, beinhaltend sowohl einen sogenannten „Scanner“ zur Erkennung der Schlüsselwörter, als auch einen „Parser“ zur Syntaxanalyse, um einerseits sowohl Leerzeichen zwischen Schlüsselwörter einzufügen, weil Omikron-BASIC bei allzu komprimierten Schreibweisen die BASIC-Befehle nicht mehr als solche erkennt, andererseits aber auch abweichende Schreibweisen für ein- und dieselbe Funktion zu transformieren (z.B „LOG“ nach „LN“). Im Dezember 1988 ist der Textkonverter „TR******“ praktisch fertig und wird nur noch , nachdem ich beide Programme zu NOS verschickt habe, entsprechend kleinen Korrekturwünschen angepaßt.

 

Eine GUI für's Assembler-Programm

1990 entwickelt Hans-Joachim Berndt, Solingen, daraus noch eine integrierte graphische (GEM-) Oberfläche, die alle drei Dienstprogramme, zu denen schließlich auch noch das Konvertierungsprogramm „DC******“ gehört, zusammenfaßt, so daß die Software auch für Maus-Artisten ansprechend wird. Allerdings fällt die überaus nützliche Ganzseiten-Darstellung des Einleseprogramms zwangsläufig der GEM-Programmierung zum Opfer.

DX-Aktuell-Team, v.l.: Erwin Schastok, Norbert Schlammer, Reinhardt Walter, Connie Seliger, Ralf Grahlmann, Wolfram Heß (QSL-Karte von DX-Aktuell, dessen Sendung ebenfalls von DS-Kultur auf 177 kHz ausgestrahlt wurde)

Bild links: DX-Aktuell-Team, v.l.: Erwin Schastok, Norbert Schlammer, Reinhardt Walter, Connie Seliger, Ralf Grahlmann, Wolfram Heß (QSL-Karte von DX- Aktuell, dessen Sendung ebenfalls von DS-Kultur auf 177 kHz ausgestrahlt wurde)

Während die Holländer ihre BASICODE- Ausstrahlungen Anfang der 90er Jahre zunächst von der starken Frequenz 774 kHz (und der Ultrakurzwelle, die ich in Oberhausen anfangs noch gut und weitgehend störungsfrei empfange) auf die weniger gute mit 1008 kHz verlagern und bald auch fast ausschließlich Bildschirmzeitungen (“beeldkrant“) ausstrahlen, erlebt BASICODE in Ostdeutschland um die Wende herum eine Renaissance. Von dort empfange ich in der Umbruchphase auf diversen Mittel- und Langwellenfrequenzen bis etwa 1992 Programme und Textbeiträge im BASICODE-Format, zuletzt auf 177 kHz über den „Deutschlandsender-Kultur“. Weil die Empfangsbedingungen für mich immer schwieriger werden, wird mein Equipment, mit dem ich die BASICODE-Sendungen verfolge und auf Band archiviere, mit der Zeit immer besser - ich werde so, ganz nebenbei, zum Radio-Amateur.

Nacheinander schaffe ich mir eine MW-Rahmenantenne und 1988 einen guten Weltempfänger (Yaesu FRG 8800) an. Die Rahmenantenne modifiziere ich mit einem Hex-Codierschalter und einigen Styroflex-Kondensatoren so, daß ich sie auch für den Langwellenbereich einsetzen kann. Zusätzliche Niederfrequenz-Filter eliminieren störende Geräusche am oberen Ende des übertagenen Tonfrequenz-Spektrums. Als die BASICODE-Sendungen - etwa Mitte der 90er Jahre - eingestellt werden, widme ich mich anderen Datendiensten, die über Kurzwelle ausgestrahlt werden: Anfang der 90er Jahre sind noch einige Presseagenturen, v.a. aus Osteuropa, z.B. MTI (Ungarn), PAP (Polen), aktiv, die ihre Texte in RTTY (radio tele type) ausstrahlen, zumeist in englischer Sprache. Doch das wäre eine neue Geschichte.