Gesucht: Audio-Tool für alte Daten-MCs

rick

Well-Known Member
Servus,

habe noch einige (ur-)alte Datenkassetten mit Programmen, Texten, etc. (z.B. Homecomputer) ausgegraben, die ich aber nicht "entsorgen" möchte. Per Kassettenrecorder, Soundkarte und Tools wie Audacity werde ich die Daten sicherlich als Audiodateien in den Rechner bekommen. Aber wie weiter? Hat jemand eine Idee, wie ich die Signale (Tonhöhen- bzw. Tonlängen-codierte Bits und Bytes) wieder in Binär- resp. Textdaten konvertieren kann? Oder muß ich da die Elektronik nachbauen?
Vielen Dank vom alten Nostalgiker.
 
sind die Daten überhaupt in Tonhöhe codiert?
Das ist ja schon lange her und es hatte mich damals nie wirklich interessiert, Kassetten als Datenträger hatte ich auch nie benutzt, aber irgendwann hatte ich mal einen Kurs für Bandlaufwerke, die wesentlich größere Kassetten benutzten. Die waren an einen SCSI Bus angeschlossen und später sah ich was ähnliches von Tandberg, die ja auch heute noch Laufwerke für Bänder herstellen.
Ich meine mich zu erinnern, dass es hieß, die Daten seien direkt als magnetisiert, nicht magnetisiert für Eins und Null drauf geschrieben und die Tonhöhen, das gezwitschere der Daten, ergibt sich dann automatisch beim Abspielen.
Ich bin nicht absolut sicher dabei.
Wir hatten eine Spur einer EC-Karte (mit einem anderen Gerät natürlich) untersucht, das ist ja im Grunde ein Stück leicht zugängliches Tape und da haben wir mit einer Suspension, die Eisenspähne in einer flüchtigen Flüssigkeit enthielt das Bitmuster dargestellt. Das konnte mit einer Lupe gut gesehen werden und da waren dann echte Striche mit Eisenspänen und Leerstellen zu sehen, quasi eine Art Barcode.
Vielleicht hat sich das bei mir deshalb eingeprägt und ich gehe automatisch davon aus, dass es bei Bändern dann genauso war.
Ich weiß es nicht, woher ich zu wissen glaube, dass die Information auf den Bändern nicht in unterschiedlichen Tonhöhen zu finden ist, also etwa 1kHz=1, 100Hz=0. Grundsätzlich geht das ja auch, aber ich meine eben, dass es anders war.

Dabei ist aber das einlesen der Einsen und Nullen erst der unbedeutende Anfang.
Danach weißt du ja gar nicht, wie diese zusammen passen.
Bei Texten in ASCI sehe ich noch eine relativ große Chance, weil die in Bytes zusammengefasst gelesen werden können. Da brauchen also nur (die richtigen) acht Bit jeweils zusammengefügt zu werden, dann hast du die Bytes, die eine bekannte Bedeutung haben. Wann wo welche Kontrollbytes eingefügt sind, lässt sich vielleicht erahnen, weil das Ergebnis ja ein schlüssiger Text werden soll und deshalb einige unsinnige Kombinationen ausgeschlossen werden können und daher als nicht direkt zum Text gehörig bestimmbar sind.
Bei allem anderen sieht das sehr sehr viel schlechter aus, denn du müsstest dann ja wissen, wie die jeweiligen Programme die Daten abgelegt haben.
Da gibt es nur für einige Dateien Festlegungen, etwa mp3 Dateien oder jpg Dateien.
Und dann ist natürlich die HW des benutzten Rechners mit entscheidend, wie brauchte der denn die Daten? Hat der überhaupt in Bytes gespeichert? oder andere Mengen von Daten hintereinander geschrieben?
Da gab es ja eine Unmenge an Möglichkeiten, bevor sich einiges dann durchsetzte, was wir heute noch sehen.

Also, ich sehe da so planko gesagt kaum Chancen, diese Daten noch zu nutzen.
Jedenfalls nicht durch einfaches Bitweises einlesen und schon sind sie da.
Mal ein kleines Experiment dazu. Hier eine meiner kleinsten, echt sinnvollen Dateien in Einsen und Nullen.
Das Beispiel ist nicht deshalb ausgewählt, weil es besonders kryptisch und nicht zu knacken wäre, ganz im Gegenteil. Die Datei gehört zu der Gruppe der standardisierten und hat einen kleinen Header, der näheres sagt und deshalb eigentlich die Sache einfacher machen sollte.
Wer es knackt, denn bitte ich dennoch um Diskretion. ich möchte nicht, dass es auf beliebigen Webseiten auftaucht.
Code:
[FONT="Courier New"]01000111 01001001 01000110 00111000 00111001 01100001 00101011 00000000 
00111000 00000000 10000000 00000000 00000000 00000000 00000000 00000000 
11111111 11111111 11111111 00100001 11111110 00011100 01000011 01110010 
01100101 01100001 01110100 01100101 01100100 00100000 01110111 01101001 
01110100 01101000 00100000 01010100 01101000 01100101 00100000 01000111 
01001001 01001101 01010000 00100000 01100010 01111001 00100000 01010000 
01101001 01110100 00000000 00100001 11111001 00000100 00000001 00001010 
00000000 00000001 00000000 00101100 00000000 00000000 00000000 00000000 
00101011 00000000 00111000 00000000 00000000 00000010 11101000 10001100 
10001111 01111001 11000000 11101010 00001111 00100001 00001000 10101100 
11001110 10001000 10100101 11011101 00111100 01111011 11001010 10000101 
11010110 00010111 10001001 01100110 01000101 00111010 11100111 01111010 
10100101 00000110 11011011 01001100 10100001 00001011 11001110 01101111 
01101011 10111010 11011101 00100101 11100011 01100010 01101010 01111011 
11000100 10000010 00011001 01011011 00100011 10110001 00100010 10110001 
00010110 11001011 01001111 00010010 11010001 11110100 00111100 01111101 
00100111 01100101 10000111 10000010 10101101 00111101 10100101 10011011 
11000101 00001101 11010110 00101010 10000010 10100011 01011100 11110010 
00010101 01111000 10100110 10000101 01001011 01000111 00011010 01110010 
11101101 10000110 11110110 10110010 01011111 10111000 00000010 00111110 
00011110 01110101 00100101 10100000 01111010 01111110 11011000 10100110 
11110001 11110110 10100111 11000101 11110111 00100010 10110111 10100111 
10110101 10000011 01010010 00100100 00010100 10010110 01010110 10000011 
00110001 01010111 11100110 01101000 00000111 01110101 11101000 01100100 
11001001 01011000 01000010 00100111 10000110 10110111 11001001 01100111 
11101001 01111000 00000111 00101010 11010100 00101001 00001001 00111010 
01000010 10101001 01110001 10100110 01101010 11000101 10010110 00011000 
10001001 10100110 00011001 00010100 00001011 01011011 10011010 01000100 
11000100 11101010 10001010 01100010 00000100 10101001 11110010 01100011 
11101010 01100111 00111011 10011000 11110011 00110110 01001100 11001100 
00010100 10100101 01000111 10000110 11001000 11101100 01011010 01011100 
00010101 11011101 01001011 10010100 01000111 01111010 11110101 00100111 
11101101 10111100 10010111 01101101 10101100 10001100 11011101 01011101 
10101101 10101101 00011000 10001110 00011100 00011011 11001110 11011101 
01001100 01101110 00111101 10100110 00110010 11111101 11010011 11101110 
10011001 00011011 01111111 01011011 01000101 10111000 00111011 01111111 
01101111 10011110 10001111 10011110 10111101 11011110 00001111 00110000 
00100000 00001100 01111100 00000010 00000011 00010100 00000000 00000000 
00111011                                                                [/FONT]
Und das ist nun wirklich einfach, weil ich nur genau diese Datei als Folge von Einsen und Nullen nach Bytes geordnet schicke. Auf dem Band müsstest du den Anfang der Datei erkennen und wissen, wie das organisiert ist, wo etwa der Name steht und ob das Band halt formatiert ist und wie.

Mit ausreichend Information und sehr sehr viel Geduld, könnte da meiner Ansicht nach vielleicht eine Chance bestehen. Einfach so wird es nicht gehen, davon bin ich überzeugt.
Ich würde mir das nicht antun wollen!
 
Ich hatte ja nie einen Brotkasten, aber da schloß man AFAIR einen normalen Kassettenrecorder an und da der nun mal für HIFI gedacht war und zwischen 20Hz und 20kHz arbeitet, würde ich schon davon ausgehen, daß es um Gezwitscher geht.
Ohne aber auch nur halbwegs eine Ahnung zu haben, was da damals wie abgespeichert wurde, dürfte das eine ziemlich aussichtslose Sache sein, fürchte ich.
 
http://de.wikipedia.org/wiki/Bandlaufwerk
vs
http://de.wikipedia.org/wiki/Datasette

Irgendwie immer wieder wikipedia ;)

Der Artikel zur Datasette (was für ein Wort!) ist für uns natürlich interessanter und lässt, denke ich, alle Hoffnungen ziemlich tief sinken.
Da könnte vielleicht sogar mit passenden Filtern aus einem Audiostream die Null und Eins-Information rausgezogen werden, aber wie schon befürchtet: es gibt da eine Reihe an Steuerbits und die müssen dann ja richtig identifiziert werden und den Nullen und Einsen sieht man das ja nicht an, wofür die mal gut waren.
 
Bei ebay das nötige Equipment zusammensuchen dürfte der schnellere und günstigere Weg sein?
 
Danke erstmal für die guten Gedanken.
1. Das Datenformat an sich ist kein Problem, da ich die alten Programme im Source noch habe, die aus den Bits die Bytes machen und aus den Bytes dann die Dateien. Teils als MachCode der alten ROMS, teils als selbst erforschtes Datenformat.
2. Die Geräte, für die die Kassetten benutzt wurden, sind einmal ein TRS80-Mod I und noch ein Begleitautomat einer Wersi-Orgel, der einen Z80 enthält.
3. Es geht also "nur" darum, aus den analogen Signalen die Bits zu digitalisieren, und das vorzugsweise per Software. Also wie pit234a sagte, "aus einem Audiostream die Null und Eins-Information rausgezogen", den Rest kriege ich dann schon hin, siehe oben.
 
ich tippe mal einfach ins blaue dass die leute dort eine frequenzmodulation benutzt haben. ein hoher ton fuer eins, ein tiefer fuer 0 oder so etwas.

wenn du audacity benutzt wirst du schon an den stroemen was sehen koennen.
eine fft die breite der symbole gerechnet wird dir dann schon einen peak bei der einen oder anderen frequenz liefern.

octave ist da dein freund.
anschliessend musst du noch herausfinden wie die bits zu bytes zusammenzufassen sind.

sind das 8? oder 7? mit parity, oder ohne?
big endian?
little endian?

ziemlich grosser aufwand eigentlich.
ich wuerde an deiner stelle nochmal gucken ob das genug doku dazu gibt.
 
Nun, mein Kollege hatte vor einigen Jahren ein sehr ähnliches Problem mit einem Kunden. Dieser Kunde hatte in der Computerfrühzeit wie viele Unternehmen auf die relativ preisgünstige Hardware aus dem Heimcomputerbereich gesetzt. Nun war der Kram schon lange verschrottet, als klar wurde, dass man Daten von uralten und schlecht gelagerten Datasetten ziehen muss. Relativ schnell wurde klar, dass es ein größeres Unterfangen werden würde, denn es gab nicht DIE Datasette. Zwar war das physische Aufzeichnungsverfahren immer gleich, jedoch existierten eine Unmenge logischer Möglichkeiten die Daten auf dem Band zu organisieren. Es resultierte wohl daher, dass es unterschiedlichste Tape-Loader gab. Grundsätzlich ist der beste Weg wie oben bereits genannt der direkte: Datasettenlaufwerk -> Tolles Kabel -> Computer -> Tolle DOS-Software. Fall erledigt. Leider fiel diese Möglichkeit weg, da es nicht möglich war ein Laufwerk zu finden, welches die Bänder noch korrekt lesen konnte.

Damit sind wir bei Weg Nummer 2. Einlesen der Kassette durch ein hochwertiges(!) Hifi-Tapedeck über den Line-In der Soundkarte in den Computer. Das Ergebnis ist dann eine Wave-Datei. Diese Stufe ist die mit Abstand komplizierteste, da alles weitere nur so gut klappen kann, wie man die Kassette ausgelesen bekommt. Das bedeutet:
1. Ein gutes Tapedeck nutzen, möglichst ohne Auto-Reverse (führt zu nicht hörbaren aber vorhandenen Echos).
2. Die Tonköpfe vor jeder Kassette reinigen.
3. Alle Filter wie Dolby in seinen diversen Inkarnationen oder auch die "Abgesoffene Höhen hochziehen"-Funktion ausschalten, den Pitch auf 0 stellen.
4. Ein hochwertiges Kabel zum Computer nutzen.
5. Eine gute Soundkarte nutzen, was heute aber dank HDA keine Magie mehr ist.
Auch sollte man jede Kassette gleich mehrmals auslesen, damit man später einzelne Dumps vergleichen und somit garantiert auftretende Fehler ausfiltern kann. In jedem Fall hast du nach dieser Prozedur einige wunderschöne Wave-Dateien.

Nun werden die eben erstellten Wave-Dateien durch einen Wave -> TAP Converter gejagt. Dieses Programm ist grob das, nach dem du oben gefragt hast. Es nimmt die Wave-Datei, liest sie ein, interpretiert die Töne und das unvermeidbare Rauschen und erzeugt daraus einen binären Datenstrom. Mein Kollege weiß leider nicht mehr, was für ein Tool er genutzt hat. Aber Bing (Google kotzt mich an, da ihr dummes Javascript mit Operas Shortcuts kollidiert) ist unser Freund und bringt uns nach ein wenig graben zu wav2tap, was Teil dieses Projekts ist: http://sourceforge.net/projects/c64tapedecode/ Könnte sogar auf Systemen Abseits von Windows laufen, weiß ich aber nicht. Wichtig ist an dieser Stelle, dass man alle oben angefertigten Wave-Dateien konvertiert und die sich ergebenden TAP-Dateien abgleicht. Sind die Dateien gleich, kann der nächste Schritt übersprungen werden. Sind sie unterschiedlich - und das werden sie sein - muss man die Dateien aufarbeiten.

Zum Aufarbeiten hat mein Kollege seinerzeit das Windows-Tool FinalTAP genommen. Es ist eine Freeware, sie findet sich unter http://www.coder.pwp.blueyonder.co.uk/finaltap.htm. Irgendwo gibt's dazu angeblich auch Source, habe ich auf die Schnelle aber nicht gefunden. Zumindest kann FinalTAP die Datei öffnen und auseinandernehmen. Er zeigt dir Dinge wie den genutzten Loader an und wenn du Glück hast auch auf dem Tape vorhandene Prüfsummen. Diese kannst du nutzen um kaputte Blöcke auszufiltern. Hat das TAP Prüfsummen, besitzt du idealerweise zwei gleiche TAPs. Haben sie keine, solltest du mindestens drei gleiche haben. Da die Fehler zufällig verteilt sind, kannst du zwei bzw. drei gleichen sehr sicher sein einen korrekten Dump erzeugt zu haben. Hast du das nicht, hast du mehrere Möglichkeiten. Entweder so oft neu von Kassette einlesen und in TAP konvertieren, bis es mal klappt. Besser ist per Binär-Diff und Hexeditor manuell Fehler auszufiltern und somit in nervenaufreibender Frickelei eine heile TAP-Datei bauen. Wichtig ist, dass du am Ende dieses Schrittes eine TAP-Datei hast, der du trauen kannst.

Nun wird im letzten Schritt mit FinalTAP eine Optimierung durchgeführt. Hierbei versucht das Programm mittels irgendwelcher Magie fehlerhafte Digitalisierungen (Störgeräusche und so) auszufiltern, korrigiert die Abstände zwischen Datenblöcken und so weiter und so fort. Am Ende ergibt sich dann ein sauberes Abbild, was mit entsprechenden Tools wieder zurück auf eine Datasette geschrieben werden könnte. Aber da du das nicht möchtest und es außer für Freaks auch reichlich sinnlos ist, kannst du nun per FinalTAP die Daten extrahieren. Dadurch erhältst du den Inhalt des Tapes als ganz normale Dateien. Alternativ kannst du die TAP-Datei natürlich auch in einen Emulator werfen.

So, dass ist nun viel Text geworden. Ich weiß nicht, ob ich alles richtig wiedergegeben habe und noch weniger wissen wir, ob mein Kollege sich an alles korrekt erinnert hat. Aber in jedem Fall sollte es dir helfen einen Ansatz für weitere Recherche zu finden. :)

EDIT: Auf http://www.zimmers.net/anonftp/pub/cbm/crossplatform/transfer/datassette/index.html finden sich auch noch diverse Tools zum Umgang mit Datasetten. wav-prg kann angeblich ebenfalls von Wave-Dateien in ein anderes Format konvertieren, d.h. den Kram dort herauszupfen. Sehr gut ist auch http://www.luigidifraia.com/c64/index.htm, inklusive Tool zum Visualisieren der Datenimpulse auf dem Tape.
 
Zuletzt bearbeitet:
Nochmals ganz herzlichen Dank für die (so ausführlichen) Tips -- klingt ja doch 1. machbar und 2. vielversprechend. Wird allerdings eine ganze Weile dauern, bis ich's ausprobieren kann, wg. Beruf, Familie und sonstiger Prioritäten (aber wir erwarten ja auch in diesem Herbst wieder schöne, lange, dunkle Abende ...) und in 1-2 Stunden ist das ja nicht durchführbar. Lasse Euch dann jedenfalls das Ergebnis hier wissen.
 
Hast du überhaupt schon mal eine Aufnahme auf dem PC und mit Audacity angesehen?
Würde mich mal interessieren.
Das ogg Beispiel aus dem Wikipedia-Beitrag zur Datasette macht mir zwar schon recht wenig Hoffnung, weil daraus kaum einmal eindeutige Signale zu sehen sind. Trotzdem, da wird eine Amplituden-Modulation gewählt. Anyway, auch Tonhöhen sind recht einfach elektronisch herauszufiltern und ich frage mich daher, ob nicht eine kleine Schaltung hinter dem Tape-Device eine Folge von Einsen und Nullen und den dazugehörigen Takt liefern könnte.
Wie das dann allerdings damit weiter geht, da fehlt mir im Augenblick noch die Vorstellung.
 
Zurück
Oben