Logo

tim:schuermann.de

 

mnib 0.35

Burst Nibbler für DOS

von Tim Schürmann 
(mit großem Dank an Markus Brenner)

Die guten alten Commodore-Disketten überspielt man in der Regel mit dem Universalprogramm StarCommander auf den PC. Leider muss das Schweizer Messer der Imagedateien bei vielen Originalprogrammen und Spielen passen. Mit mnib veröffentlichte Markus Brenner ein Leseprogramm, das endlich auch viele Kopierschutzverfahren berücksichtigt.

Die Disketten des C64 sind einem langsamen, aber unaufhaltsamen Verfallsprozess unterlegen. Besitzer zahlreicher Originalsoftware stellen sich daher mit zunehmendem Wert die Frage, wie man die guten alten Magnetscheiben am besten konserviert. Zwar nagt der Zahn der Zeit nicht von heute auf morgen ein Loch in die Disketten, dennoch beruhigt eine Sicherheitskopie und beugt dem schlimmsten Fall vor. Eine Möglichkeit der Datensicherung besteht im Einlesen der Disketten auf den PC und dem anschließenden Brennen auf CD-ROM. Dies hat auch gleich den angenehmen Nebeneffekt, dass man seine Software bequem in einem Emulator weiternutzen kann. Standard für dieses Verfahren bildet heutzutage das Gespann aus dem kostenlosen StarCommander [2] und einem entsprechenden Kabel der X1541-Familie [3]. Leider bleiben damit die meisten kopiergeschützten Originaldisketten außen vor.

Ein bisschen Technik 
Eine Diskette besteht im Kern aus einer Magnetscheibe. Ein Schreib/Lesekopf fährt über die ovale Diskettenöffnung und ermittelt beim Lesevorgang die Magnetisierung an der jeweiligen Kopfposition. Durch die Rotation der Scheibe können vom Kopf alle Positionen auf der Diskette erreicht werden. Um die gespeicherten Daten später möglichst schnell wieder zu finden, teilt man die Diskette in logische Bereiche auf. Commodore wählte im Fall der 1541-Laufwerke folgendes Vorgehen: zunächst werden 35 Ringe von außen nach innen gebildet. Diese Ringe werden als Tracks (auf deutsch Spuren) bezeichnet. Nur auf diesen Tracks werden die einzelnen Daten gespeichert. Auf Track 18 ist z. B. das Inhaltsverzeichnis der Diskette zu finden. Jeder Track wird noch einmal in einzelne Sektoren unterteilt - ähnlich wie Tortenstücke bei einem Kuchen. Jeder Sektor speichert schließlich einen Block, der genau 254 Bytes entspricht. Durch das Formatieren legt das Laufwerk alle Informationen auf einer neuen Diskette an, die zur späteren Arbeit mit diesem Aufbau notwendig sind. Die Tracks werden aufgrund des Radius der Magnetscheibe von außen nach innen immer kleiner, wodurch außen mehr Sektoren als innen zu finden sind.
Die Floppys für den C64 sind schon fast ein eigenständiger Computer. Sie enthalten sogar einen Prozessor, Speicher und eigene Ein- und Ausgabebausteine. Dank dieser Ausstattung lassen sich Programme in die 1541 laden und dort ausführen - was sich auch mnib zunutze macht.

Arbeitsweisen

In den 80er Jahren des vorigen Jahrhunderts entwickelte die Firma Eurosystems aus Holland ein fast schon legendäres Kopierprogramm. Es arbeitete so gut, dass es sich nicht nur unter Crackern wie ein Lauffeuer verbreitete. Das Erfolgsrezept des Burst Nibblers war extrem simpel. Es las einfach ganz brutal die Diskette vom Anfang bis zum Ende so aus, wie sie war. Jedes einzelne gelesene Byte wurde direkt an den C64 übertragen. Durch dieses Vorgehen wurde jedoch das Erkennen der einzelnen Sektorgrenzen unmöglich. Als unmittelbare Folge war Burst Nibbler gezwungen, immer einen ganzen Track in einer Umdrehung einzulesen. Positiver Nebeneffekt: Kopierschutzverfahren, die die Sektorgrenzen manipulieren, wurden so gleich mit erschlagen. Die dabei anfallende Datenmenge konnte aber nicht mehr in der dafür notwendigen Geschwindigkeit in den Hauptspeicher des C64 gepresst werden. Der standardmäßig serielle Anschluss des Diskettenlaufwerkes war hierfür einfach zu langsam. Für den Betrieb des Burst Nibbler benötigte man daher ein spezielles Kabel, das fest in die Floppy eingebaut werden musste. Eurosystems griff hierbei auf ein Standardkabel zurück, das ursprünglich mit dem Beschleunigungssystem Speeddos eingeführte wurde. Es verbindet den Eingabe/Ausgabebaustein (6522) der Diskettenstation direkt mit dem Userport des C64. Um das Kabel einzusetzen, muss der angesprochene Chip auf einem Sockel sitzen. Ist der Baustein fest eingelötet, bedeutet dies zwangsweise den Griff zum Lötkolben. Viele andere Floppyspeeder wie z. B. Professional DOS oder Dolphin DOS 2.0 verwendeten übrigens das gleiche Kabel. In späteren Versionen sprach der Burst Nibbler auch mit den Sonderlösungen von Prologic DOS Classic und Dolphin DOS 3.0.

Voraussetzungen

Markus Brenner kam bereits vor einigen Jahren auf die Idee, Burst Nibbler auf den PC zu konvertieren. Heraus kam das Programm mnib, das in der Version 0.35 Anfang des Jahres 2003 erstmals für die Öffentlichkeit frei gegeben wurde.
Die in der Floppy ausgeführten Routinen, konnten dabei eins zu eins aus dem Burst Nibbler der Version 1.9 entnommen werden. Soweit bekannt, ist dies auch die letzte von Eurosystems offiziell vertriebene Fassung. Auf der PC-Seite nimmt ein in C geschriebenes Programm die Daten entgegen. Für die Übertragung nutzt mnib den Code des cbm4linux-Projektes [4]. Da letzter unter der GNU General Public License steht, folgt auch mnib der gleichen Lizenz. Der Quellcode war bis zur Veröffentlichung dieses Artikels noch nicht zugänglich, wird aber laut Autor noch nachgereicht.
Wie bereits angesprochen, benötigt der Burst Nibbler ein Parallelkabel - ein einfaches X1541-Kabel reicht daher für die Verbindung zum PC nicht aus. Mnib verlangt zwingend nach einem XP1541, XA1541 oder XE1541 für eine 1541 oder 1541-II, bzw. nach einem XP1571 Kabel für eine 1571. Andere Anschlussmöglichkeiten gibt es derzeit nicht. Diesem Artikel liegt eine Arbeit mit dem XAP1541-Adapter zugrunde. Dieser ist in der Anschaffung zwar etwas teurer, dafür können aber bereits vorhandene Parallel-Kabel ohne erneutes Aufschrauben der Floppy weiter verwendet werden. Als Laufwerk tat eine 1541C ihren Dienst, bei der allerdings das Parallelkabel gegenüber den anderen Floppys leicht modifiziert werden muss [5]. Die Tests verliefen ebenso problemlos, wie bei der Arbeit mit der 1541-II - übrigens der vom Programmautor verwendeten Diskettenstation.

Bedienung

Mnib besteht aus drei Programmen: der Hauptkomponente mnib, sowie drei weiteren Anwendungen, welche die eingelesenen Daten in das von Emulatoren lesbare d64, bzw. g64-Format konvertieren.
Für den Start von mnib benötigt man MS-DOS oder ein dazu kompatibles Betriebssystem. Dies ist notwendig, da nur dort das komplizierte Zeitverhalten in der Kommunikation mit der 1541 ungestört bleibt. Unter anderen Betriebssystem ließen sich Übertragungsfehler nicht ausschließen. Sofern Sie unter einem reinen DOS, wie z. B. DR-DOS, MS-DOS oder FreeDOS arbeiten, wird zusätzlich noch das Hilfsprogramm cwsdpmi.exe benötigt. Bei einem Betriebssystem wie Linux oder Windows XP, bleibt nur die Möglichkeit, mnib auf einer Startdiskette unterzubringen. Die meisten Betriebssysteme bieten die Erstellung einer solchen DOS- oder Rettungs-Diskette an. Beachtet werden muss aber in diesem Fall, dass man von dort aus nicht auf die Dateisysteme der modernen Betriebssysteme zugreifen kann. Hierzu zählt neben den verschiedenen Linux-Dateisystemen auch NTFS von Windows XP. Abhilfe verschaffen spezielle Treiber, die einen Zugriff auf einige der nicht unterstützen Formate ermöglichen. Im Internet finden sich weitere Informationen zu diesen Hilfsprogrammen und ihrer korrekten Installation.
In meinen Tests arbeitete mnib auch in der DOS-Box (Eingabeaufforderung) unter Windows 98 SE problemlos. Hierbei gilt jedoch die Warnung, dass man keine anderen Programme laufen lassen sollte und es keine Garantie gibt, dass diese Art des Betriebs wirklich einwandfrei funktioniert.
Unabhängig vom Betriebssystem sind Kenntnisse über die Bedienung und Syntax der Kommandozeile notwendig, da mnib im aktuellen Stadium über keine grafische Oberfläche verfügt.
Weiterhin ist zu beachten, dass mnib in der vorliegenden Version 0.35 teilweise noch Probleme mit bestimmten Parallelports, insbesondere mit dedizierten PCI-LPT-Karten aufweist. Hier hilft im Moment nur ein Ausweichen auf einen anderen Computer. Die Probleme sind aber bekannt und sollten mit einer der nächsten Versionen der Vergangenheit angehören.

Einlesen

Sind alle Geräte korrekt an den PC angeschlossen und einsatzbereit, kann es losgehen. Legen Sie als erstes die Diskette in das Commodore-Laufwerk ein und starten Sie anschließend mnib unter der Angabe der Image-Datei.
Beispiel: mnib myimage.nib
Bitte beachten Sie die Beschränkung für Dateinamen auf acht Zeichen plus einer Erweiterung von drei Buchstaben. Die Endung ist hier zunächst irrelevant und kann frei gewählt werden (im Beispiel .nib). Versichern Sie sich vor dem Aufruf, dass die Datei nicht bereits existiert: Alle drei Programme des mnib-Archivs überschreiben Dateien ohne Nachfrage.
Nach dem Start sucht Mnib zunächst nach dem Parallelport. Hat das Programm eine Floppy gefunden, führt es eine Ausrichtung des Schreib-/Lesekopfes durch. Dies macht sich durch ein lautes "rattern" bemerkbar - ähnlich wie beim Formatieren einer Diskette. Der Lebensdauer des Schreib/Lesekopf ist dies selbstverständlich nicht gerade zuträglich. Leider gibt es für mnib jedoch keine andere Möglichkeit der Ausrichtung: Aufgrund der verschiedenen Kopierschutzverfahren kann sich der Nibbler nicht auf die Sektor-Checksummen verlassen.
Ist auch dies geschehen, liest mnib die Diskette aus und speichert die angelieferten Daten in der, beim Aufruf angegebenen Datei.

Was ist was

Während des Einlesevorganges gibt mnib einige Informationen aus, die im wesentlichen denen des Burst Nibblers 1.9 entsprechen. Eine Anleitung findet man z. B. unter [6]. Äußerst links steht die Spurnummer. Rechts daneben folgt zunächst die Anzahl der gefundenen Synchronisationszeichen. Steht hier ein F, so enthält (fast) die gesamte Spur Synchronisationszeichen (ein so genannter Killertrack), wohingegen bei einem S keine Synchronisationszeichen gefunden wurden. Ganz rechts findet man schließlich noch die von mnib ermittelte Aufzeichnungsdichte (auch Geschwindigkeit, Speed, Bitrate oder Schreibgeschwindigkeit genannt), gefolgt von einem Pfeil und der tatsächlich verwendeten Aufzeichnungsdichte.
Synchronisationszeichen sind spezielle Sonderzeichen. Sie werden auf einer Diskette aufgebracht, damit das Diskettenlaufwerk Start und Ende der einzelnen Sektoren feststellen kann. Einige Kopierschutzverfahren machen sich dies zunutze und bringen auf der Diskette falsche, zu viele oder gar keine Synchronisationszeichen auf. Gibt mnib ein F oder S aus, so kann dies auf einen Kopierschutzes hindeuten.
Unter der Aufzeichnungsdichte versteht man die Anzahl der geschriebenen, bzw. gelesenen Bits pro Sekunde. Sie ist von Commodore fest vorgegeben und liegt bei den Tracks 1 bis 17 bei 307692, 18 bis 24 bei 285714, 25 bis 30 bei 266667 und 31 bis 35 bei 250000 Bits pro Sekunde. Die Floppy 1541 ist jedoch in der Lage auf einem einzigen Track vier verschiedenen Dichten zu nutzen. Auch diese Fähigkeit machen sich einige Kopierschutzvarianten zu nutze, um normale Kopierprogramme zu verwirren. In mnib wird die Aufzeichnungsdichte durch eine Zahl zwischen 0 und 3 angegeben oder einem Fragezeichen, sofern keine "sehr scharfe Dichte ermittelt werden konnte" [6]. mnib selbst verwendet immer die jeweilige Standarddichte (siehe obige Aufstellung der Dichten). Für die meisten Fälle ist dies ausreichend. Die mnib-Dokumentation spricht hier von 80% aller Disketten, wobei diese Rate in den Tests bestätigt werden konnte. In allen restlichen Fällen, in denen z. B. Fastloader eine andere Dichte fordern, sollte man mnib den Schalter -d mit auf den Weg geben. Im obigen Beispiel würde der Aufruf dann so aussehen: mnib -d myimage.nib.
Wann dieser Schalter notwendig ist, kann leider nicht verallgemeinernd gesagt werden. Die mnib-Dokumentation nennt hier als Beispiel Spiele mit dem Vorpal (Epyx), V-MAX (Cinemaware, I-COM) oder Rapidlok (Accolade) Kopierschutz. Ein erstes Anzeichen für das Setzen des Schalters liegt vor, wenn die ermittelte und tatsächlich verwendete Dichte systematisch voneinander abweichen. Da die Detektion nicht immer zuverlässig arbeitet (und auch vom verwendeten Laufwerk abhängt), sollte man zunächst die Option -d nicht standardmäßig verwenden. Erst wenn das Ergebnis nicht einwandfrei ist, startet man einen zweiten Versuch mit gesetzter Option.

Konvertierung

Ist mnib mit der Arbeit fertig, müssen die Rohdaten noch in ein, von den Emulatoren lesbares Format umgewandelt werden. Hierzu dienen die beiden Hilfsprogramme n2d und n2g. Wie der Name schon andeutet, erzeugt n2d ein Image im d64-Format. Dieses Format ist am weitesten verbreitet und gehört seit einigen Jahren zum Standard. Es wird übrigens auch vom beliebten StarCommander verwendet. Leider muss es aufgrund seines Aufbaus bei vielen Kopierschutzverfahren passen. Des weiteren erstellt die aktuelle Version von n2d keine Disketten, die mehr als 35 Tracks beinhalten. Einige Kopierschutzverfahren verwenden diese normalerweise nicht genutzten, aber technisch zugänglichen Tracks 36 bis 41. Trotz aller genannten Einschränkungen ist n2d bei weitem nicht überflüssig (vgl. Kasten "Tipps").
Sofern Ihr Emulator auch das g64-Format unterstützt, sollte dieses Format die erste Wahl sein. Es wurde von vornherein für die Aufnahme von Kopierschutzverfahren konzipiert. n2g ist für die Erzeugung dieses Formates zuständig. Analog zu n2d wird es unter der Angabe der Imagedatei mit den Rohdaten, sowie dem Namen des zu erzeugenden g64-Images aufgerufen. Im Beispiel:
n2g myimage.nib myimage.g64
Damit ist der Einlesevorgang abgeschlossen und das Programm oder Spiel kann in einem Emulator gestartet werden.
Bislang wurde das ebenfalls mitgelieferte Programm g2d unterschlagen. Es konvertiert Dateien im g64-Format in d64-Images. Es wurde vom Autor hauptsächlich aus Archivierungszwecken beigelegt. Seine Bedienung entspricht der seiner Verwandten n2g und n2d.
In meinen Tests erstellte n2g in einigen Fällen "invalid disk images". Es konnte bislang noch nicht geklärt werden, ob dies am Ergebnis von n2g oder dem Emulator lag. Des weiteren hat n2g aus dem mnib 0.35-Archiv noch Probleme mit überlagen Tracks. Dies wird voraussichtlich in einer der nächsten Versionen behoben sein. Bei zwei Originalspielen erzeugte mnib reproduzierbar Diskettenfehler, obwohl die Disketten selbst einwandfrei waren und von StarCommander ohne Fehler eingelesen wurden. Der Grund hierfür konnte bis zur Veröffentlichung dieses Artikels nicht mehr geklärt werden.

Offen

Mnib steht erst am Anfang seiner Entwicklung. So fehlen ihm noch einige Funktionen, die der originale Burst Nibbler bot. An erster Stelle ist hierbei die fehlende Unterstützung für das Zurückschreiben einer Diskette anzuführen. Das Problem liegt hier hauptsächlich im Finden einer geeigneten Strategie, wie man die Rohdaten möglichst originalgetreu und ohne Fehler wieder auf die Diskette zurückschreiben kann. Kopfzerbrechen bereiten hier insbesondere die so genannten "Fat Tracks".
Weiterhin fehlt eine zuverlässige "Track-to-Track" (Spur-zu-Spur) Ausrichtung. Hierbei geht es um die Lage von je zwei benachbarten Spuren zueinander. Im Idealfall beginnen zum Beispiel Sektor 0 von Track 1 und Sektor 0 von Track 2 an derselben Winkelposition der Diskette (relativ zum kleinen Indexloch auf der Diskette). Diese Lage fragen einige Kopierschutzverafahren ab. Beispiele sind die Ali-Lernprogramme (Heureka-Kopierschutz) oder Rapidlok. Das Programm n2g versucht derzeit die Lage der Spuren aus den so genannten Sektor-Gaps herauszufinden. Der "Sektor-Gap" ist eine vorgegebene Anzahl von Leerbytes, die sich stets zwischen zwei Sektoren eines Tracks befinden müssen. Um Drehzahlschwankungen des Laufwerks auszugleichen, ist der Sektor-Gap am Ende eines Tracks größer als die übrigen. n2g sucht nach diesen längeren Sektor-Gaps und richtet die Tracks anhand dieser Informationen aus.
Abschließend stehen auf der Liste der wünschenswerten Eigenschaften noch das automatische Erkennen von "unzuverlässigen" ($00) Bytes, sowie die Unterstützung von Bitraten-Änderungen innerhalb eines Tracks [1].

Fazit

Mit mnib geht der Wunsch vieler Sammler in Erfüllung, ihre Originale endlich sicher konservieren zu können. Allerdings steht mnib noch am Anfang seiner Entwicklung. Besonders vermissen werden viele die Option, die einmal eingelesenen Disketten wieder zurück zu schreiben.
Ebenfalls sollte man im Hinterkopf behalten, dass einige Verfahren, die beim Hersteller mit Speziallaufwerken aufgebracht wurden, auch in Zukunft nicht mit mnib kopiert werden können. Hier stößt auch der originale Burst Nibbler an seine Grenzen.

Nibbler Tipps 
  • Mnib kümmert sich beim Einlesen der Disketten nicht um Fehler - schließlich könnten diese absichtlich aufgebracht worden sein und somit zum Kopierschutz gehören. Um dennoch heraus zu finden, ob eine Diskette Fehler aufweist, kann man n2d heran ziehen. Beim Erstellen der d64-Datei überprüft das Programm auch die so genannten Checksummen, mit deren Hilfe sich Fehler ausmachen lassen. Werden Fehler gemeldet, so sollte man die Diskette mittels StarCommander erneut einlesen. Treten dort die Fehler an derselben Stelle auf, ist die Wahrscheinlichkeit groß, dass es sich nicht um einen Kopierschutz handelt.
  • Hat man mit dem ersten Tipp Fehler ausgemacht, so kann dies auch auf eine nicht optimal eingestellte Diskettenstation zurück zu führen sein. [7]
  • Einige Programme fragen ab, ob eine Diskette schreibgeschützt ist. Sofern die Emulatoren dies erlauben, sollte man die erstellten Images mit einem "virtuellen Schreibschutz" versehen.

Infos 
[1] mnib Hompage: http://markus.brenner.de/mnib/
[2] StarCommander, ein Programm zur Datenübertragung zwischen PC und 1541-Laufwerk: http://sta.c64.org
[3] Die ganze Familie der X1541-Kabel: http://sta.c64.org/cables.html
[4] Das cbm4linux-Projekt: http://www.lb.shuttle.de/puffin/cbm4linux/
[5] Bau eines Parallelkabels für die 1541-Laufwerke: http://sta.c64.org/cbmpar41c.html
[6] Handbuch zum Burst Nibbler 1.9: http://markus.brenner.de/mnib/burstn19.txt

Version 1, veröffentlicht am 23.12.2003


Copyright (C) 2003 Tim Schürmann
Dieser Artikel wird unter der GNU Free Documentation License, http://www.gnu.org/licenses/fdl.html, veröffentlicht und kann frei kopiert werden, solange die Nennung des Autors und der Internetquelle (http://www.tim-schuermann.de) erhalten bleibt.