Erluterung zu COPYPROT V1.40 vom 26.02.1991
Autor: Thomas Muthmann

Dieses Programm ist Shareware und darf von jedem kopiert und weitergegeben
werden. Voraussetzung ist die Weitergabe im Originalzustand, d.h. alle unten
aufgelisteten Dateien drfen nicht verndert werden. Da sich nach eigener
Erfahrung das Kozept der Shareware in Deutschland noch nicht so toll
durchgesetzt hat, nehme ich Anregungen und Verbesserungsvorschlge nur
nach einer Registrierung an. Ausgenommen davon sind Fehlerbeschreibungen.

Eine Registrierung erfolgt gegen Einsendung von 
DM 25.-- an folgende Adresse:

Thomas Muthmann
Duisburger Str. 153
4330 Mlheim/Ruhr

Dies schliet eine Diskette mit der neuesten Version, Porto
und Verpackung ein.

ACHTUNG !!!
Zu diesem Programm wird ein spezielles Kabel und ein zweites Floppy
bentigt. Die Idee zu diesem Projekt stammt von der Firma

|                  1st STOP Computer Systems Ltd
|                       7085 Corporate Way
|                       Dayton, Ohio 45459
|
|              Order Line (Toll-free all 50 states)
|                          800-252-2787
|
|            24-Hour BBS Order Line (3/12/24 - 8/1/N)
|                         (513) 438-0892
|
|                        Information Line
|                         (513) 438-0551
|
|     The suggested retail price is $59.95.  You can order it ready-to-
|     go from us for a limited time for only $44.

mit ihrem Programm 'BLITZ' bzw. dem Nachfolger 'DUPLI-TWIX BLITZ'.
Ich kann hier nur auf die Firma 1st STOP verweisen, da es sich
um ein komerzielles Produkt handelt, kann ich keine Hardwarebeschreibung
rausgeben.

Fr Schden die durch die Benutzung meines Programmes entstehen, bernehme
ich keine Haftung.

Erreichbar bin ich unter fogender Adresse:
Thomas Muthmann - 2:245/8.5923@FidoNet (Apolonia Point #23)
oder              2:24000/5923

Zum Programm gehrende Files:
-  COPYPROT.PRG Programm
-  COPYPROT.TXT Dieser Text
-  README.TXT   Alle nderungen neuer Versionen
-  BLITZOFF.TOS Deaktiviert die Hardware, kann z.B. in den AUTO-Ordner

Erluterungen zu 'BLITZ':
=========================
Das Programm 'BLITZ' ist dazu da, von kopiergeschtzen Disketten Backups
fr DEN EIGENEN BEDARF zu machen. Es soll dadurch verhindert werden,
da Originale durch die stndige Benutzung defekt werden.
Im Gegensatz zu den reinen Softwarelsungen bietet 'BLITZ' jedoch einige
Vorteile:

1. Keine Benutzung des Floppy-Controllers fr die Datenbertragung, da
   dieser nicht in der Lage ist, eine Spur ohne Datenverlust wieder
   einzulesen. Dies bezieht sich natrlich nicht auf Sektor-Lesebefehle.
   Gngige Kopierschutzmethoden nutzen diese Tatsache aus, um Fehler zu
   produzieren, die zwar nachgewiesen, aber nicht so einfach kopiert
   werden knnen. Andere Kopierprogramme haben deshalb aufwendige
   Analysemechanismen, um aus den zerstckelten Daten, wieder den
   Urzustand vor dem Schreiben herzustellen.
   Da man jedoch den Floppy-Controller auf vielfltige Mglichkeiten
   (siehe 'Scheibenkleister', Maxon-Verlag) auer Gefecht setzen kann,
   gibt es einige Disketten, die sich einfach nicht kopieren lassen.
   Hier setzt nun Blitz an: Das Lesesignal von Floppy A: wird direkt mit
   dem Schreibsignal von Floppy B: verbunden, dadurch entfallen die
   Fehlerquellen des Floppy-Controllers und man kann (theoretisch, dazu
   spter mehr) 1:1 Kopien von JEDER Diskette herstellen.

2. Durch dieses Verfahren wird GLEICHZEITIG gelesen und geschrieben und
   das auch noch ohne Zeitverlust durch Formatieren etc, d.h. eine
   doppelseitige Diskette lt sich samt Kopierschutz in 30 Sekunden
   kopieren.

Der einzige Nachteil ergibt sich aus der Verbindung Floppy B: und Rechner:
Das Floppy wird ber die parallele Schnittstelle angesteuert und ist damit
nicht als normales Laufwerk ansprechbar. Auerdem ist die parallele
Schnittstelle nach dem Booten undefiniert, so da man das Laufwerk nicht
lnger als ntig an den Rechner anschlieen sollte.

brigens hat es sich bei mir als ntig erwiesen, die Leseleitung von
Floppy A: zu verstrken, da bei B: nichts mehr ankam. Dies geht am
einfachsten mit einem 74S04:
Pin 14: +5V
     7: 0V
     1: Eingang zu Floppy A:
     2: Ausgang zu Floppy B:
    
Erluterungen zu 'COPYPROT':
============================
So weit so gut, warum also ein zweites Programm ???
Das Problem des Kopierschutzes ist leider auch bei 'BLITZ' nicht vollstndig
behoben. Dazu mu ich etwas weiter ausholen:
Ein Diskettenlaufwerk macht im Normalfall 300 Umdrehungen/min. Bei jeder
Umdrehung mittels einer Magnet/Readrelais-Kombination wird ein sogenannter
Indexpuls erzeugt. Dieser Indexpuls markiert den logischen Anfang einer
Spur, denn einen physikalischen Anfang gibt es bei einem Kreis ja nicht.
Der Floppycontroller synchronisiert das Lesen einer Spur mit diesem
Indexpuls, d.h er liest von einem zum nchsten. Bei den Sektorbefehlen,
welche ausschlielich vom Betriebssystem benutzt werden, kann der
Floppycontroller auch unabhngig vom Indexpuls lesen oder schreiben.
Ein Sektor, der ber die logische Spurgrenze hinausragt, kann trotzdem
verarbeitet werden. Dies ist brigens der einzige Grund, warum 'BLITZ'
berhaupt funktioniert. DENN:
Die beiden Laufwerke sind bei der Verwendung von 'BLITZ' nicht
synchronisiert. Die Indexpulse treffen also nicht zum gleichen Zeitpunkt
ein. Damit landet der Spuranfang der Originaldiskette irgendwo zufllig
auf der Kopie. Das Betriebssystem merkt davon nichts, auer da die
Kopien vieleicht langsamer als die Originale sind.
Der Knackpunkt ist wieder die geschtzte Software:
Es ist nmlich ohne Probleme mglich nachzuprfen, in welcher Reihenfolge
die Sektoren vom Spuranfang abgelegt sind. Und genau hier versagt 'BLITZ',
denn die Reihenfolge ist zwar gleich, aber der erste Sektor in nicht der
gleiche. Selbst wenn zufllig der erste Sektor des Originals auch der
erste Sektor der Kopie ist, kann man noch aufgrund des Abstandes
Spuranfang<->Sektorheader eine Unterscheidung treffen. Der geneigte Leser
sei hier wiederum auf das hervorragende Buch 'Scheibenkleister' von
C.Brod und A.Stepper verwiesen.

Es mu also eine Synchronisierung der Indexpulse her. Doch hier ergibt sich
ein kleines Problem. Keine zwei Diskettenlaufwerke drehen mit exakt der
gleichen Geschwindigkeit und auerdem kann der Spindelmotor nicht
beeinflut werden. Nun ergibt sich aber doch eine Mglichkeit, indem man
einen der beiden Motoren (in diesem Fall von Laufwerk B:) kurzzeitig
aus- und wieder einschaltet, bis beide Laufwerke genau gleich drehen.
Wenn man nun im richtigen Moment die Datenbertragung startet, hat man
eine echte 1:1 Kopie der Originaldiskette. Genau dies macht das Programm
'COPYPROT', wenn auch mit einigen Einschrnkungen. So kann man nmlich
keine allgemeingltige Funktion zur Anpassung der Indexpulse erstellen,
da jedes Laufwerk anders auf das Ein-Aus-Takten reagiert. Selbst bei ein
und dem selben Laufwerk gibt es mitunter erhebliche Abweichungen. Damit
ist das Ganze natrlich eine recht wacklige Angelegenheit.
Ich habe mich bemht, wichtige Parameter nach auen zu legen, damit der
Benutzer diese an seine Laufwerke anpassen kann.
Auerdem sei natrlich nicht verschwiegen, da ein Kopiervorgang mit dieser
Methode wesentlich! lnger dauert, als mit 'BLITZ'. Es ist nmlich nicht
mit einer einmaligen Synchronisierung getan, sondern es mu dauernd
getaktet werden, da sich die Laufwerke nicht genau gleichschnell drehen
und auerdem durch die Spurwechel aus dem Tritt kommen. Je nach Laufwerkstyp
kann eine stndige Anpassung der Parameter ntig sein. Aber dieses Programm
ist ja auch nur fr wirklich hartnckige Flle gedacht, so da man die
anderen Originale weiterhin mit 'BLITZ' kopieren kann. Bei Kenntnis der
'schwierigen' Spuren brauchen auch nur diese nachtrglich mit 'COPYPROT'
kopiert werden.
Ich habe das Ganze an dem Laufwerksverrenker 'DUNGEON MASTER' von FTL
(mein absoluter Favorit) ausprobiert: 100 prozentige Erfolgsquote !!!
Und gerade bei diesem Programm zahlt sich ja ein Backup aus, da das
Original stndig im Laufwerk sein mu und abgefragt wird.
brigens haben auch die Kopierschutzkarten fr ber DM 400.-- noch einige
Schwierigkeiten mit den angesprochenen Programmen (nicht jede Kopie luft).
Also soweit es sich nicht um eine Pizza handelt, kopiert 'COPYPROT'
wirklich alles. Keine Regel ohne Ausnahme: Es soll auch physikalisch
defekte Disketten geben (ein winziges Loch mithilfe eines Lasers in der
Magnetschicht), solche Sachen kann natrlich kein Kopierprogramm kopieren.

Bedienung von 'COPYPROT':
=========================
Da ich das Programm eigentlich nur mal so eben schreiben wollte (es hat
dann doch etwas lnger gedauert), prsentiert es sich in nchterner
TOS-Umgebung. Es gibt nur zwei Funktionen: RETURN fr Kopieren oder
SPACE fr die Einstellung der Parameter, jede andere Taste verlt
das Programm. Die Parametereingabe erfolgt mit der Gemdos-Stringeingabe,
also kein CTRL-C drcken, sonst wird das Programm abgebrochen. Die Eingabe
ist auf die logische Maximalanzahl begrenzt, so wird z.B. nach zwei Zeichen
automatisch die Trackeingabe verlassen. Zu den Parametern:
Trackstart, Endtrack und Anzahl Seiten brauchen wohl nicht erklrt werden.
Der Rest ist da schon schwieriger. Die Timerroutinen von 'COPYPROT'
haben eine Auflsung von 100 mikrosekunden. Aus diesem Grunde sind alle
folgenden Eingaben in dieser Einheit. Ein Diskettenlaufwerk macht
300 Umdrehungen/s, also dauert eine Umdrehung 2000 * 100 mikrosekunden.
Eine vllige Synchronisierung der Indexpulse liegt logischerweise bei einem
Abstand von 0 zwischen beiden. Da aber das Ganze wie gesagt ein kniffelige
Sache ist, kann man die Grenzen fr den Schreibvorgang einstellen. Falls
sich also der Indexabstand zwischen der unteren und oberen Grenze befindet,
wird die Spur vom Original in A: nach B: bertragen. Da sich alles so um 0
abspielen sollte, habe ich eine obere Grenze>2000 als Abstand-2000 definiert.
Damit gehen also z.B. die Werte 1992 bis 2002 von -8 bis +2, wobei Werte
grer 0 einen verminderten Abstand zwischen Spuranfang und dem ersten
Sektor (gegenber dem Original) ergeben, besser ist es jedoch andersrum.
Daher auch die angegebnen Defaultwerte.

Die restlichen 5 Parameter beeinflussen die Annherung zum gewnschten
Schreibintervall. Es existieren 3 verschiedene Verzgerungsstufen fr
Floppy B: Delay 1 fngt bei 0 an und geht bis Delay 2, dieses
wiederum bis Delay 3. Den bergang von 1 nach 2 bzw. 2 nach 3 kann man
mit den Parametern DelStart 2 und 3 von 0 bis 1999 beeinflussen.
Auerdem kann die Strke der Verzgerung fr alle drei Delays eingestellt
werden.

Beim Kopierstart wird nun je nach aufgefundenem Abstand der Indeximpulse
das passende Dalay bei Floppy B: ausgefhrt. Der aktuelle Abstand wird
stndig unter OFFSET angezeigt. Der Wert bei dem die letzte Spur
geschrieben wurde, ist mit LASTOFFSET bezeichnet. Der Schreibversuch kann
jederzeit mit einer beliebigen Taste abgebrochen werden.

Wie gesagt, jedes Laufwerk verhlt sich anders bei den Delays. Aus diesem
Grunde: probieren, probieren, probieren...

Nachdem man passende Werte ermittelt hat, kann man diese als Defaultwerte
ins Programm bernehmen. Dazu mit einem Diskmonitor die Zeichenfolge
'PATCH-AREA' suchen. 16 Bytes nach dem ersten Byte liegen alle Einstellungen
von Starttrack bis Delay 3 als Integer- (also 2 Byte) Werte im Programm
und knnen somit gepatcht werden.

So noch viel Spa, Thomas

