Prof. Dr. rer. nat. habil. H0RST VÖLZ

Datenaustausch mit Basicode


In diesem Beitrag wird das Datenformat von Basicode, in dem seine universelle Anwendbarkeit begründet liegt, im Detail beschrieben. Des weiteren wird die Grundschaltung eines Interfaces zu einer parallelen Schnittstelle behandelt, mit deren Hilfe alle Rechner, sofern nicht für sie bereits die entsprechenden Baskode existieren, schnell an das Basicode-Austauschformat angepaßt werden können.

Seit September 1989 hat sich der Rundfunk der DDR für seine Computersendungen auf Basicode konzentriert, wodurch ein ziemlich direkter Zugriff auf alle Rechnertypen besteht. Ein wesentlicher Teil von Basicode ist sein genau festgelegtes Übertragungsformat für Daten jeder Art, also auch für Programme. Dieses Format besitzt mehrere Vorteile, die es geeignet erscheinen lassen, es in noch breiterem Rahmen zu nutzen.
So könnte dies ein universelles Austauschformat für die Datenübertragung und -speicherung sein. Nicht von ungefähr haben sich bereits die Funkamateure stark für dieses Prinzip interessiert. Ist es doch möglich, Sendungen auf Mittelwelle von Radio TROS aus Holland in der DDR fehlerfrei zu empfangen, darunter seitenlange Bulletins mit technischen Hinweisen. Auch der fehlerfreie Empfang von Basicode-Sendungen aus der DDR in Holland wurde uns bereits bestätigt.
Die Orientierung der Aufzeichnung auf Kassette erscheint zunächst nur für Kleinstrechner akzeptabel. Es hat sich aber gezeigt, daß ein entsprechendes Kassetteninterface sehr einfach für jeden Rechner, z. B. über eine parallele Schnittstelle, zu realisieren ist. Dadurch ist der Datenaustausch zwischen wirklich allen Rechnern möglich. Dem Autor wurden im Rahmen der Vorbereitung von Basicode schon ganze Manuskripte auf diese Weise übergeben. Sie konnten dann mühelos auf Diskette übernommen und somit mit einem beliebigen Rechner weiterverarbeitet werden. Auch viele Programme für die Rundfunksendungen der letzten Zeit wurden im Basicode-Format weitergeleitet.
 

Datenformat

Beim Basicode-Verfahren müssen bis zu vier hierarchisch gestaffelte Informationsebenen unterschieden werden:
•  das Bitniveau
•  das asynchrone Byteniveau
•  der Datenblock, der z. B. ein Basicode-Programm sein kann
•  das Datenfile, das aus mehreren Datenblöcken bestehen kann.

Bild 1: Datenformat von Basicode

Bitniveau

Ein einzelnes Bit kann den Wert 0 oder 1 besitzen. Die zugehörigen Signale sind so festgelegt, daß sie die gleiche zeitliche Länge von 1/1200s besitzen. Die 0 wird durch eine 1200-Hz-Rechteckschwingung und die 1 durch zwei Schwingungen von 2400 Hz realisiert. Dieses Prinzip hat mehrere Vorteile:
•  Beide Signale sind gleichstromfrei.
•  Beide Signale sind leicht zu detektieren.
•  Die Phasenlage der Signale ist ohne Bedeutung. Die beiden Möglichkeiten sind im Bild dargestellt.
•  Zur Übertragung genügt eine Bandbreite von 400 ... 3600 Hz.

Die Bandbreite wird vom Mittelwellenrundfunk mit etwa 4500 Hz, von Telefonleitungen, von einfachen Kassettenrecordern und vielen anderen Kanälen erreicht. Keiner dieser Kanäle ist störfrei und überträgt alle Frequenzen gleich gut. So erhält man am Ausgang des Kanals ein mehr oder weniger stark verändertes Signal, das auch kein digitales Signal mehr ist, sondern unterschiedliche Amplituden enthält. Insbesondere weicht häufig die Kurvenform deutlich von den gesendeten Rechteckschwingungen ab. Genau hier beginnt die Problematik der Dekodierung. Es müssen Schaltungen und Rechenprogramme gefunden werden, die wieder die originalen L- und H-Werte herstellen. Es muß also ein Übergang vom analogen, gestörten und verformten Signal zum digitalen Signal realisiert werden. Die hierbei auftretenden Probleme hängen ganz wesentlich von den Eigenschaften des Zwischensignals und seinen möglichen Verformungen und Störungen und natürlich auch von dem verwendeten Detektionsprinzip ab. Sowohl theoretisch als auch praktisch ist das hier gewählte Prinzip besonders vorteilhaft. Sein Nachteil liegt in der nicht sehr hohen Datenrate von 1200 baud. Sie genügt jedoch den hier gestellten Anforderungen vollauf.
Es sollen noch mögliche Störungen betrachtet werden. So können bei den meisten Kanälen, z. B. bei Tonbandgeräten und Kassettenrecordern, keine Gleichstromsignale übertragen werden. Die beiden Signale besitzen aber auch dann noch Gleichstromfreiheit, wenn sie in beliebiger Folge hintereinander auftreten und die Bandbegrenzung nicht zu eng erfolgte. Hierdurch bleibt der Mittelwert der Signale sowohl statisch als auch dynamisch im wesentlichen erhalten. Die Rechtecksignale werden dabei nur zu sinusähnlichen Signalen verändert. Ungünstiger wird das Signal durch Phasen- und zum Teil Frequenzgangfehler beeinflußt. Die Kanäle sollten daher so entzerrt sein oder werden, daß immer noch eine gut symmetrische Schwingung mit Rechtecknähe vorliegt. Störend sind starke Einschwingvorgänge bzw. Überschwingen. Beides läßt sich aber immer mit einfachen Mitteln beim Aufbau des Interfaces beseitigen. Es sei erwähnt, daß diesbezüglich Kassettenrecorder mit HiFi-Qualität kaum besser, oft sogar ungünstiger abschneiden als einfache, billige Recorder. Recorder mit großer Bandbreite sind eben für akustische Anwendungen bis zu den höchsten Frequenzen vorwiegend im Frequenzgang und damit auf Kosten des Phasenganges linearisiert. Dadurch können u.a. störende Einschwingvorgänge auftreten. Dieses Problem war zunächst auch bei den Rundfunkübertragungen von Basicprogrammen hinderlich. Bei Stereokanälen besteht außerdem die Möglichkeit, daß nicht beide Kanäle voll identisch sind und sich daher zwei etwas unterschiedliche Signale gegenseitig stören. Daher ist es günstig, nur einen Kanal zu nutzen. Bei Kassettenrecordern ist der rechte aus dem Grunde vorteilhaft, weil seine Spur vom Rand des Magnetbandes entfernt liegt. Weitere Störungen lassen sich durch die richtige Aussteuerung (etwa Vollaussteuerung, u. a. weil hier weniger Rauschen auftritt und sich die Signale in Richtung zu Rechtecksignalen abflachen) senken.
 

Byteniveau

In der Rechentechnik ist die eigentliche Grundeinheit das Byte. Genau diese acht Bit bilden auch die nächstgrößere Einheit bei der Basicode-Übertragung. Sie werden zu einem Rahmen mit einem Start- und zwei Stoppbits zusammengefaßt. So werden aus den eigentlichen acht Datenbits insgesamt elf zu übertragende Bits. Auch diese Redundanz wird bewußt zur Verbesserung der Datensicherheit eingesetzt. Sie wird noch weiter erhöht, indem Bit 7 stets negiert übertragen wird. Der dadurch erreichte Vorteil zeigt sich deutlich bei der Übertragung des ASCII-Kode, bei dem Bit 7 immer 0 ist. Für sie existieren dann sogar drei Stoppbits am Ende des asynchronen Signals.
Das Bild zeigt ein Signal mit der Bitfolge 0 0001 1010 11. Da das L-Bit zuerst gesendet wird, ist der eigentliche, gültige, mittlere Teil rückwärts zu lesen und ergibt daher das Byte 01011000, also 58H. Hier handelt es sich um kein ASCII-Zeichen!
Für die Detektion der Basicode-Signale existieren vielfältige Möglichkeiten. Als Pausenton sind 2400 Hz vorhanden, die zur Synchronisierung dienen. Die Detektion kann z. B. auf Flanken oder Nulldurchgänge orientiert werden.
Bei jeder Flanke wird die Zeit bis zur nächsten Flanke gezählt. Sofern sie später als nach etwa 1/1800s (1,5fache von 2400Hz) erscheint, liegt das Startbit vor. Danach werden wieder 1/1800 s abgewartet und die Signallage getestet. Sie gibt an, ob das erste Bit eine 0 oder 1. ist. Nach jeweils 1/1200 s kann die Entscheidung über die folgenden Bits getroffen werden. Nach den acht Bits des Byte wird wieder auf ein Startbit gewartet.
In anderen Fällen wird immer die Zeit zwischen drei aufeinanderfolgenden Nulidurchgängen, also die Dauer einer ganzen Periode, gemessen.
Auf Grund der zwei bzw. drei Stoppbits spricht die Mehrzahl der guten Leseprogramme immer nach vier oder weniger 2400-Hz-Schwingungen bevorzugt auf ein Startbit an.
Aus den beiden Dekodiermethoden kann schnell abgeleitet werden, daß die Frequenzen nicht exakt bei 1200 Hz und 2400 Hz liegen müssen. Abweichungen um 10% bereiten in der Regel keine Probleme. Es existieren aber auch "intelligente" Leseprogramme, die aus dem Anlaufton jene Parameter bestimmen, die sich der genauen Frequenz anpassen. Dann sind weitaus größere Geschwindigkeitsabweichungen zulässig.
 

Blockniveau bei Programmen

Die nächst höhere Zusammenfassungsebene ist davon abhängig, ob Programme oder Daten übertragen werden sollen.
Zunächst wird die Übertragung von Basicode-Programmen behandelt. Hier wird in Basicode, von wenigen Steuerzeichen abgesehen, nur ASCII-Text übertragen, dessen Zeilen durch 0DH = 13D getrennt sind. Mit diesem Format lassen sich folglich beliebige ASCII-Texte übertragen.
Generell sind diese Übertragungen wieder in sich strukturiert, u. a. sind sie durch 2400 Hz eingerahmt. Den prinzipiellen Aufbau zeigen das Bild und die folgende Aufzählung:
•  ein etwa 5s langes 2400-Hz-Signal zum Synchronisieren des Empfängers
• ein Startbyte mit 82H, als 10000010 [infolge der Invertierung von Bit7 ist dies das übliche STX = 02H (STX - Start of Text)]
• der ASCII-Text mit Zeilentrennung durch 8DH
• der Abschluß mit dem Byte 83H, also 10000011 [ohne Invertierung ist ETX = 03H (ETX - End of Text)]
•  ein Sonderzeichen zur Fehlererkennung,  d. h. ein Kontroll- oder Checkbyte
•  Abschluß mit einem etwa 1 s langem 2400 Hz-Signal.

Das Checkbyte wird aus den vorangegangenen Bytes durch bitweise Binäraddition (XOR) berechnet. Für nur vier Bytes demonstriert dies die Tabelle.

Tabelle 1: Beispiel zur Berechnung des Checkbytes

Je Spalte werden also die Anzahl der Bits gezählt. Liegt eine geradzahlige Anzahl vor, wird die entsprechende Stelle 0, sonst 1 gesetzt. Dieses Verfahren wird sowohl bei der Aufzeichnung als auch bei der Wiedergabe auf jedes übertragene Byte, einschließlich von 82H und 83H, angewendet. Wenn dann die bei der Wiedergabe berechnete Zahl mit der empfangenen Zahl übereinstimmt, liegt eine große Wahrscheinlichkeit (besser als 1:256^2 = 1 : 65 536) dafür vor, daß kein Fehler aufgetreten ist. Anderenfalls wird eine Fehleranzeige ausgelöst.
Programm- bzw. ASCII-Texte können sehr unterschiedlich in ihrer Länge sein. Deshalb gibt es über die Anzahl der Bytes keine Aussage. Es sind aber nur die Kodes von 20H (Leerzeichen = Space) bis einschließlich 7EH = 126D (nicht mehr 7FH = 127D) und 13 = ODH für Zeilenende zugelassen. Da Bit 7 invertiert übertragen wird, sind dies die Zeichen 0A0H (160) bis 0FEH (254) und 8DH (141). Am Anfang kommt auch 02H, also 82H, vor. Auch die letzte Programmzeile wird mit 8DH abgeschlossen.
Es sei erwähnt, daß dieses Format sehr der ASCII-Ausgabe (ohne Invertierung von Bit 7) verschiedener Rechner entspricht. Bei den Kleincomputern geschieht dies z. B. mit LIST#1. Allerdings werden bei ihnen im normalen Betrieb nach 0DH noch zehn 00-Bytes eingefügt. Dies kann mit Hilfe des direkten Befehls NULL 0 ausgeschaltet werden. Bei anderen Rechnern erfolgt eine ASCII-Programmausgabe z. B. mit SAVE"Name",A.
 

Übertragung von Datenfiles

Datenfiles werden in Basicode als String ausgegeben. Diese Art und Weise ist aber für das Übertragungsverfahren unwesentlich. Bedeutsam ist dagegen, daß hierbei aber alle Kodewerte von 0 bis 255 auftreten können. Dadurch kann kein Endezeichen eindeutig
definiert werden, und es ist ein Blockaufbau mit genau definierter Länge notwendig. Für einen (Standard-)Block wurden 1024byte festgelegt.
Nun kann aber ein Datenfile sowohl länger als auch kürzer sein. Deshalb müssen einmal mehrere, genau gekennzeichnete Blöcke zugelassen werden. Andererseits kann es auch einen unvollständigen Block geben, in dem die gültigen Zeichen von den zusätzlichen, nicht mehr benötigten getrennt werden müssen. So entsteht ein flexibler Blockaufbau (s. Bild). Es müssen der Startblock, der mittlere Block und der letzte Block unterschieden werden. Es sollen zunächst der gemeinsame Kern aller Blöcke betrachtet und dann die Besonderheiten des ersten und letzten Blockes aufgezeigt werden. Für ihn gilt der folgende Aufbau:
• ein 5 s dauerndes 2400-Hz-Signal
• Startbyte ist 81 H (01 H = STH-Start of Header): zur Unterscheidung von Programmen, bei denen als Startbyte 82H verwendet wird.
• Vor dem Datenblock wird eine Blocknummer eingefügt, die beim ersten Block 80H (0 wegen des invertierten Bits 7) lautet und für jeden folgenden Block um 1 erhöht wird. Der fünfte Block trägt also die Nummer 84H.
• 1024 Datenbytes (Bit 7 invertiert)
• Textende ETX = 83H
• Checkbyte über die vorangegangenen 1027 byte
• ein 1 s dauerndes 2400-Hz-Signal.

Der letzte Block wird inder Regel kürzer als 1024byte sein. Deshalb muß sein Datenteil, also die 1024 byte, etwas anders aufgebaut sein:
• Es werden genau die gültigen Datenbytes mit invertiertem Bit 7 gesendet.
• Dann folgt 84H (04H = EOT-End of Tape).
•  Die fehlenden Bytes werden durch 84H aufgefüllt. Sie werden bei der Wiedergabe nur in das Checkbyte eingerechnet, aber sonst nicht verwendet.

Sehr kurze Datenfiles bestehen nur aus einem Block (s. Bild). Die Blocknummer beträgt 80H.
Infolge des systematischen Aufbaus von Datenfiles ist im Checkbyte Bit 7 ebenfalls immer 1. Bei Programmen kann es dagegen den Wert 0 oder 1 annehmen.
 

Zum Umgang mit Kassetten und Recordern

Ein Datenverlust ist immer sehr unerfreulich, da die Wiederherstellung der Daten einen beachtlichen Arbeitsaufwand erfordert. Zuweilen ist sogar die Wiedererzeugung der Daten prinzipiell unmöglich. Hieraus folgt, daß mit Datenträgern auf besondere Weise umzugehen ist. Da es sich bei den mit Basicode übertragenen fast immer um „private" Aufzeichnungen handelt, müssen zwar nicht die Gesetze zum Datenschutz angewendet werden, aber Richtlinien dürften dennoch nützlich sein.
Zunächst sollten die technischen Anlagen in einem guten Zustand sein, bei guten Anlagen tritt fast nie ein Fehler auf. Sie sind auch dann noch als brauchbar einzuschätzen, wenn im Mittel höchstens bei jeder zehnten Aufnahme ein Fehler auftritt. Sind häufiger Fehler zu verzeichnen, sollte zur Verbesserung der Anlage wie folgt vorgegangen werden:

• Vergleich der Fehlerhäufigkeit bei fremden Kassettenaufzeichnungen. Wenn diese einwandfrei gelesen werden können, ist die bisherige Aufzeichnungstechnik nicht in Ordnung.
• Da Fremdkassetten gut gelesen werden können, sind vor allem folgende Fehler möglich:

- Die Ansteuerung ist nicht richtig. Es sollte versucht werden, den Aufzeichnungspegel zu verändern. Dazu kann ein Lautstärkevergleich mit den Fremdkassetten nützlich sein. Es muß aber der Unterschied von automatischer und manueller Aussteuerung beachtet werden. Meist funktioniert die automatische Aussteuerung recht gut.
- Es wird eine falsche Kassettensorte verwendet, z.B. durch Verwechslung von normalen Kassetten (IEC I) und Chromdioxidkassetten (IEC II). Dabei gibt es auch generell ungeeignete Kassetten, z. B. Kassetten mit zu niedriger Qualität oder für sehr hohe HiFi-Ansprüche, wie Metall- bzw. Reinsteisen-Kassetten (IEC IIl oder IV).
- Besitzt das Gerät einen Umschalter für den Kassettentyp, kann auch die Vormagnetisierung oder Entzerrung (Zeitkonstante) bzw. Rauschminderung ungünstig bzw. falsch eingestellt sein.
- Bei einem Stereorecorder sollte auf Monowiedergabe geschaltet oder nur ein, möglichst der rechte Kanal, verwendet werden. Einfache Monorecorder mit Zählwerk sind die günstigsten Geräte.
- Eventuell können sich vorhandene und falsch eingestellte Höhen- und Tiefenregler nachteilig auswirken. Dies ist jedoch nur bei sehr speziellen Geräten möglich. Fast immer wirken diese Regler nicht auf den Diodenanschluß.
- Liegt der Fehler im Aufzeichnungskanal, muß ein anderes Gerät verwendet bzw. das fehlerhafte repariert werden.
• Das Gerät ist generell nicht in Ordnung oder falsch eingestellt. Hierfür sind u.a. folgende Ursachen möglich:
- Der Spalt des Magnetkopfes ist falsch justiert. Dieser Fehler kann mit einem speziellen Rauschband oder mit einer industriellen Musikaufzeichnung nach der besten Höhenwiedergabe durch Verstellen der speziellen Schraube behoben werden.
- Der Magnetkopf ist verschmutzt. Er kann u. a. mit Wattestäbchen und Spiritus gesäubert werden.
- Der Magnetkopf ist magnetisiert worden. Dies kann u.a. durch Kontakt mit magnetischen Geräten erfolgen. Man erkennt es daran, daß eine Schallwiedergabe beachtlich rauscht. Diesen Fehler kann nur ein Fachmann beheben.

Es gibt noch eine weitere Möglichkeit für Fehler bei der Kassettenaufzeichnung. Dann können zwar die eigenen Aufzeichnungen fehlerfrei geschrieben und gelesen werden, aber keine fremden, und andere können diese Aufzeichnungen nicht lesen. Dann gibt es vor allem zwei mögliche Fehlerursachen:

• DieGeschwindigkeit des Recorders weicht zu stark von der Norm ab. Hierfür gibt es zwar einen Regler im Gerät, aber die Einstellung sollte einem Fachmann überlassen werden.
• Der Kopfspalt ist schlecht justiert.

Beide Fehler sind zwar leicht zu beheben, aber danach können eventuell die alten Aufzeichnungen nicht mehr fehlerfrei gelesen werden. Zur Vermeidung sollte man sich in gewissen Abständen von der Austauschbarkeit der Kassetten überzeugen bzw. die Spaltlage kontrollieren.
Aber auch, wenn die Technik in einem guten Zustand ist, also Fehler selten auftreten, sollten die folgenden Hinweise beachtet werden. Generell ist es günstig, ein Programm oder auch einen Datensatz zweimal hintereinander auf Kassette aufzuzeichnen. Dies geht genauso schnell, wie das Aufzeichnen und Verifizieren. Bei einer geringen Fehlerrate der Kassettenaufzeichnungen ist es sogar zuverlässiger. Daß ein Fehler in beiden Aufzeichnungen und dazu noch an gleicher Stelle auftritt, ist äußerst unwahrscheinlich. Von sehr wertvollen Daten sollten immer zusätzliche Back-up-Kopien (Sicherheitsaufzeichnungen) hergestellt und an einem besonderen, entfernten und sicheren Ort, verwahrt werden.
Kassetten sind vor allem vor Staub, Feuchtigkeit, Sonne, Hitze und Chemikalien zu schützen. Es ist günstig, sie daher immer in der Plastehülle und gut gekennzeichnet aufzubewahren. Ein Rückspulen des Bandes sorgt für weitere Sicherheit, da dann nur das Vorspannband im vorderen Ausschnitt liegt und die gesamte Bandoberfläche im Wickel geschützt ist. Außerdem ergibt sich der Vorteil, daß die Zählwerksangabe beim Suchen einer Aufzeichnung stimmen. 
Das Magnetband, das im vorderen Ausschnitt der Kassette frei sichtbar ist, darf nie mit den Fingern berührt werden. Der entstehende Abdruck vom Finger führt fast mit Sicherheit zu künftigen Fehlern.
Kassetten sollten nicht höheren Temperaturen ausgesetzt werden. Bezüglich der Magnetfelder muß man sich, ganz im Gegensatz zu den üblichen Aussagen, so gut wie keine Sorgen machen. Natürlich sollte nicht willkürlich mit einem starken Magnetfeld auf die Kassette eingewirkt werden. Im Haushalt und Büro gibt es jedoch nur zwei gefährliche Einflüsse:

• Haftmagnete, wie sie bei einigen Türverschlüssen, Seifenhaltern usw. oder an Magnettafeln verwendet werden
• Farbfernseher, die beim Einschalten zur Entmagnetisierung der Lochmaske für die Dauer von 1 s ein starkes MagnetfeId entwickeln.

In beiden Fällen genügt es jedoch, einen Abstand von mindestens 15cm einzuhalten. Scheren, Schraubenzieher, Netztransformatoren verfügen über sehr viel schwächere Magnetfelder. Sie können höchstens bei ganz direktem Kontakt zu Störungen führen. Bei Disketten besteht größere Gefahr der magnetischen Beeinflussung. Hier kommt man mit geringerem Abstand an die magnetische Schicht. So können schon Büroklammern, Scheren usw. im direkten Kontakt Aufzeichnungen beschädigen. Auch beim Transport der Kassetten kann kaum eine Störung auftreten. Nur wenn die Kassetten ganz ungünstig in der Nähe von Elektrokarren liegen oder in eine Elektrolok mitgenommen und dort ebenfalls ungünstig gelagert werden, könnten eventuell Aufzeichnungen verändert werden.