★ APPLICATIONS ★ DISQUE ★ Disketten-Power ★ |
Disc-RSX | Disk-RSX |
»Disc-RSX« ist eine sehr nützliche und mächtige Befehlserweiterung. Sowohl leistungsfähige Kopierprogramme als auch eigene Ko-pierschutz-Mechanismen sind nun eine Kleinigkeit für Sie. Wer sich etwas näher mit der Diskettenspeicherung auseinandersetzt, dem steht mit dem Utility »Disc-RSX« ein mächtiges Hilfsmittel zur Bearbeitung von 3-Zoll-Disketten zur Verfügung. Aber auch Einsteigern, die frisch in diese Materie hineinriechen wollen, sei »Disc-RSX« ans Herz gelegt. Ein gemeinsamer Rat gilt jedoch allen angesprochenen Benutzergruppen: Bevor Sie mit dem Programm arbeiten (oder experimentieren), nehmen Sie alle Disketten mit wichtigen Daten oder Programmen aus Ihren Laufwerken und verwenden Sie zunächst nur solche, bei denen ein eventueller Datenverlust keinen Schaden anrichtet. Speichern Sie aus Sicherheitsgründen die Listings nach der Eingabe erst einmal auf Diskette, bevor Sie zum ersten Probelauf starten. Das Programm besteht aus zwei Teilen. Listing 1 enthält den DATA-Lader für die zusätzlichen Basic-Befehle; daher auch der Name »Disc-RSX«. Zur Nutzung dieser Befehle in eigenen Programmen benötigen Sie nur diesen Programmteil. Um sich unnötige Wartezeiten zu ersparen, läßt sich der erzeugte Maschinencode als Binärdatei speichern. Dazu fügen Sie folgende Zeile ein: 115 SAVE "DISC-RSX ", b, &A000,&121Listing 2 ist eine Demonstration der vielfältigen Funktionen. Schon kurz nach dem Start wird klar, wie schnell man mit diesem Grundgerüst beispielsweise ein schnelles, leistungsfähiges und komfortables Kopierprogramm realisieren kann. Aber auch andere Anwendungen, wie zum Beispiel ein eigener Kopierschutz, werden nun zum Kinderspiel. So geht's Für den sinnvollen Einsatz des Programms ist die Kenntnis der Befehle und ihrer Arbeitsweise notwendig, die v/ir Ihnen anhand von praktischen Beispielen vermitteln. Um eine neue Diskette gebrauchsfertig zu machen, ist es nötig, sie zunächst zu formatieren. Das geschieht im Normalfall mit Hilfe der mitgelieferten Dienstprogramme über CP/M. Die Formatierroutinen halten sich dabei an feste Schemata. So besitzt das sogenannte »Vendor«-Format 40 Spuren (Nummern 0 bis 39) mit jeweils neun Sektoren zu je 512 Byte. Das »CP/M«-Format ist damit völlig identisch, jedoch sind die Spuren 0 und 1 vom CP/M-Betriebssystem belegt. Als weitere Gemeinsamkeit ist die gleiche Verteilung der Sektor-IDs zu beachten. So sind die Sektoren in beiden Fällen von 41 bis 49 hex numeriert. Anders beim »Data-only«-Format. Hier gehen die Nummern der neun Sektoren von CI bis C9 hex. Vollkommen abweichend verhält sich das »IBM«-Format (genauer müßte es eigentlich »IBM-CP/M-86-Single-Sided« heißen) mit seinen nur acht Sektoren pro Spur. Die Sektor-IDs kommen völlig ohne Offset aus, denn sie zählen von 1 bis 8. Allerdings sind die Nummern der Sektoren wegen des sogenannten Skewfaktors immer versetzt. So ist die physikalische Reihenfolge beispielsweise für das Data-Format: C1, C6, C2, C7, C3. C8, C4, C9, C5 hex. Nun gibt es auch noch käufliche Software auf Diskette, bei denen die Sektoren einzelner Spuren (Tracks) mit ungebräuchlichen IDs versehen sind. Diese Spuren sind mit normalen Kopierprogrammen und den über Basic verfügbaren Betriebssystem-Routinen nicht lesbar. Deshalb eignen sich solche Maßnahmen vorzüglich zum Schutz »wertvoller« Programme vor unberechtigtem Zugriff. Leider ist dem Benutzer so aber auch jede Chance genommen, selbst Sicherheitskopien anzufertigen. »Disc-RSX« bietet Ihnen jetzt Funküonen, die sich vorzüglich dazu eignen, von solchen Datenträgern identische Duplikate zu erhalten. Es versteht sich von selbst, daß diese Fähigkeit natürlich keinesfalls zur Produktion von Raubkopien eingesetzt werden darf! Doch nun zu den Hilfsmitteln, die Ihnen in Zukunft helfen, diese »Wunderdinge« zu verwirklichen. Der Befehl |FORMAT,id1,...,id9,anz,drive,track formatiert die Spur »track« auf Laufwerk »drive« (0 für Laufwerk A, 1 für B) mit den Sektor-IDs »idl« bis »id9« (da die Reihenfolge der Parameter »idl« bis *id9« die physikalische Numerierung der Sektoren bedeutet, bedenken Sie bitte den Skewfaktor). Benötigen Sie weniger Sektoren je Spur, begrenzen Sie deren Zahl durch einen kleineren Wert für »anz«. Was tun Sie aber, wenn Sie eine fremde, unlesbare Diskette vor sich haben, von der ja nicht bekannt ist, welche IDs Verwendung finden? Die Zauberformel heißt: |GETID,buffer,drive,track Der Befehl liest auf dem Laufwerk »drive« die Sektor-IDs der Spur »track« und schreibt sie in den Pufferspeicher an Adresse »buffer«. Dieser Puffer ist natürlich vorher in geeigneter Weise zu schützen, also zum Beispiel durch MEMORY 39999 : buffer=40000Sesam öffne Dich An dieser Adresse finden Sie nach dem Aufruf dei Wert 0, wenn die Operation erfolgreich abgeschlossei wurde Steht dort jedoch FF hex, trat während des Lese Vorgangs ein Fehler auf. Der häufigste Grund dafür is eine nicht formatierte Spur. Gehen wir aber weiter von ersten Fall aus, stehen in den folgenden zehn Byte die gefundenen IDs und somit die Kombination zum Öffner dieses Tresors«. Da ja nun — wie oben dargelegt — au derart manipulierte Spuren kein Zugriff über das nor male Betriebssystem möglich ist, brauchen Sie dafüi ebenfalls spezielle Befehle. Mit |READ,buffer, drive, track, id lassen sich jetzt die Sektoren dieser Spur einzeln nach einander lesen. Der Puffer muß hier aber 512 Byte gro/i sein (Sie erinnern sich: jeder Sektor enthält genau diese 512 Byte). Wenn Sie nun in einer Schleife den Wert vor »id* variieren, und für jeden einzelnen Sektor einen ei genen Puffer anlegen, liest der Computer den Inhalt der gesamten Spur »track« in den Arbeitsspeicher, wc er sich dann nach Belieben weiterverwenden läßt. So isl es ein leichtes, ihn mit einem Monitor-Programm zu verändern. Um diese Änderungen zu sichern, greifen Sie zum Befehl |WRITE, buffer,drive, track, id Die Handhabung der Parameter ist die gleiche wie bei READ. Etwas unsinnig erscheint auf den ersten Blick der Befehl |USER,user gehört er doch bereits zum festen Repertoire des AMS-DOS. Tatsächlich bewirkt dieses Kommando im Grunde genommen auch dasselbe. Der Vorteil liegt im größeren Wertebereich für »user«, der nicht mehr auf Zahlen von 0 bis 15 beschränkt ist. sondern von 0 bis FF hex reicht. Sozusagen als »Extrabonbon« enthält »Disc-RSX« einen Befehl, der an sich nicht direkt mit Diskettenoperationen zu tun hat, über dessen Existenz sich viele Programmierer jedoch freuen werden: lCALL,adresse,a,bc,de,hl Damit ist es möglich, aus Basic-Programmen Maschi-nencode-Routinen aufzurufen und diesen Werte für die Register A, BC, DE und HL zu übergeben. Somit sind beispielsweise die kompletten Betriebssystem-Vektoren nutzbar. (Oliver Suttorp/ja) , HappyComputer
|