Thiemo Mättig

Minitalk

Bildschirmfoto des DOS-Programms Minitalk

Die Belegarbeit im Fachgebiet Rechnerkopplung (verteidigt am 17. Januar 2001) forderte ein Programm, das Daten zwischen zwei Computern überträgt, die über ein serielles (Nullmodem-) Kabel miteinander verbunden sind. Dabei sollten eventuelle Übertragungsfehler erkannt und möglichst auch korrigiert werden. Die Wahl zwischen Simplex, Duplex, Vorwärts-, Rückwärtskorrektur etc. blieb dabei weitgehend uns überlassen.

Ich entwickelte gemeinsam mit Sebastian Lüth ein komfortables „talk“, wie man es von Unix kennt. Unser „Minitalk“ wird auf beiden Computern gestartet und sendet dann jede gedrückte Taste bidirektional (also in beiden Richtungen) zum anderen PC. Die verwendete Hamming-Kodierung sorgt dafür, dass auch Bytes, bei denen ein Bit verfälscht wurde, noch korrigiert werden können. Dazu wird jedes zu sendende Byte in zwei Halbbytes (je vier Bit) zerlegt. Dann werden je drei Prüfbits berechnet, mit denen die Korrektur eines einzelnen falschen Bits möglich wird. Das übrig gebliebene achte Bit wird für einen zusätzlichen Parity-Check genutzt. Erst später hatten wir die Idee, dieses Bit statt dessen für die Unterscheidung von höher- und niederwertigem Halbbyte zu nutzen. Umgesetzt haben wir diese Idee jedoch nicht mehr.

Um die Funktionalität der Fehlerkorrektur zu testen, implementierten wir einen Fehlermodus (Taste „F1“). Dabei wird per Zufallsgenerator ab und zu ein einzelnes Bit verfälscht. Der zweite, komplexe Fehlermodus (Taste „F2“) verfälscht bis zu vier Bits. Die Hamming-Kodierung kann in diesem Fall naturgemäß nicht mehr funktionieren.

Erwähnenswert ist auch die Tatsache, dass wir das Programm nicht wie gefordert mit Assembler oder C++ programmierten, sondern mit PowerBASIC. Dieser moderne Sprachdialekt bot uns neben der problemlosen Übertragung von Bytes auch die Möglichkeit, die Bildschirmausgaben grafisch und farbig zu gestalten. Bei Prof. Otte lösten wir damit zwar ungläubiges Erstaunen aus, aber da es (bis auf den unnötigen Parity-Check) nichts an unserer Lösung auszusetzen gab, konnten wir uns zufrieden der nächsten Belegarbeit zuwenden… ;-)

Der kommentierte Quelltext für PowerBASIC 3.2 und die ausführbare Programmdatei können hier herunter geladen werden.