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.