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.
|