Ein falsches Bit ist kein Problem

Hier das Originalprogramm in Bild 3. Es wurde auf einem Apple-II geschrieben; einzige systemspezifische Adresse ist jedoch FDED zur Ausgabe eines Zeichens auf dem Bildschirm.
Bild 3 6502-Programm zum Senden und Empfangen von Texten mit automatischer Fehlerkorrektur

Das Programm realisiert sowohl die sendeseitige Erzeugung der Prüfzeichen als auch die empfangsseitige Fehlerkorrektur. Nach der Eingabe kann es mit BSAVE HAMMING,A$300,L$C8 auf Diskette abgespeichert werden. Kernstück sind die beiden Routinen HAMM und CORR zum Errechnen der Hamming-Bits zu einem ASCII-Zeichen und zur Korrektur von ASCII-Zeichen anhand empfangener Hamming-Bits. Hierzu wird die Tabelle TAB verwendet, die wie in Bild 2 die Zuordnung von jeweils zwei abweichenden Hamming-Bits zur Position eines falschen Datenbits in der Matrix angibt, hier allerdings hexadezimal.

Fehlertolerante DFÜ

Entsprechend dem im mc-Modem-Sonderheft veröffentlichten Modem-Programm für die Neucom-6532-Karte wird von einem Beginn des zu übertragenden Textes bei hex 1901 (dezimal 6401) ausgegangen. Ferner wird zur sendeseitigen Erzeugung eines mit Hamming-Bytes ergänzten Textes ein Pufferbereich ab hex 4000 benötigt. Wer statt 1901 und 4000 andere Anfangsadressen verwenden will, kann sie in der Reihenfolge Low/ High-Byte ab hex 0306 im Programm eintragen. Der Text steht mit Bit 7 = 1 im RAM, sein Ende ist mit Bit 7 = 0 markiert. Damit er sich nicht mit dem Puffer überschneidet, darf er zunächst nicht länger als etwa 9 KByte sein. Wie geht man nun konkret vor?
Zum gesicherten Absenden eines bereits ab hex 1901 im RAM stehenden Textes lädt man ggf. das Programm in Bild 3 mit BLOAD HAMMING von Diskette und startet es mit CALL 768 (Basic) oder 300G (Monitor). Der Text steht nun wieder ab hex 1901, jedoch ergänzt mit Prüfbytes, im Speicher, ist also doppelt so lang geworden - das ist der Preis für die automatische Fehlerkorrektur! Er kann so z.B. mit dem erwähnten Modemprogramm ins RAM der Gegenstation übertragen werden (Upload).
Der Empfang gestaltet sich ähnlich einfach: Der empfangene Text steht zunächst ab hex 1901 inklusive der Prüfzeichen im RAM. Startet man das Programm in Bild 3 in Basic mit CALL 771 oder im Monitor mit 303G, so werden die Prüfzeichen im RAM beseitigt (der Text wird hierbei also kürzer!) und die korrekt empfangenen oder ggf. korrigierten Zeichen zur Kontrolle auf dem Bildschirm angezeigt.
Statt solcher Zeichen, die zu viele Bitfehler enthielten und die somit nicht korrigiert werden konnten, wird ein Fragezeichen angezeigt; im RAM steht das Zeichen aber so, wie es empfangen wurde: Es kann ja sein, daß nur das Prüfbyte völlig verstümmelt übertragen wurde und das Zeichen selbst fehlerfrei ist. Der von Prüfzeichen befreite empfangene Text kann nun z.B. in ein lauffähiges Programm umgewandelt oder weiterbearbeitet werden.