======================= CompDisk & DecompDisk ======================== ====================================================================== CompDisk & DecompDisk © Copyright 1990 by MXM, geschrieben von Olaf Barthel. Wir übernehmen keine Garantien, daß die Programme CompDisk & DecompDisk einwandfrei arbeiten und somit 100%ige Datensicherheit gewährleistet ist. Wer die Programme oder deren Quellcode benutzt, der tut dies auf eigene Gefahr! ============================ Hintergrund ============================= ====================================================================== Derzeit sind für den Amiga soviele Programme zum Komprimieren von Disketten verfügbar wie es Sand am Meer gibt. Diese glänzen entweder durch extrem geringe Länge der resultierenden Datei oder durch extrem hohe Komprimierungsdauer (es ist eben doch nicht alles Gold was glänzt). Wieder einmal ist es Zeit, daß ein weiteres Programm dieser Art das Licht der Welt erblickt. Dieses Programm versucht nicht: - Dreieinhalb Stunden an einer einzigen Diskette zu laborieren, um ein Datenfile von dreizehn Bytes Länge zu produzieren. - Longtracks, exotische Synchronisierungsformate und andere Kopierschutztricks 1:1 zu reproduzieren. - Dem Benutzer eine schwer zu erlernende Benutzerführung aufzuzwingen. Wer eben diese Features erwartet hat, kann CompDisk & DecompDisk guten Gewissens löschen. ========================= Leistungsmerkmale ========================== ====================================================================== Beide Programme lassen sich sowohl vom CLI, als auch von der Workbench aus bedienen. Leider ist der alte Lattice-Arp-Interface-Code nicht in der Lage, residente Programme zu erzeugen. 'ARes' wird bei jedem Aufruf einen Checksum-Error melden. Die Routinen der arp.library und der req.library kommen zum Einsatz, deshalb sollten sie vor der Installation beider Programme in das LIBS: Verzeichnis kopiert werden. Der Lempel-Ziv-Komprimieralgorithmus kommt bei beiden Programmen zum Tragen. Er ist nicht nur vergleichsweise schnell, er komprimiert Daten bis auf weniger 50% ihrer ursprünglichen Länge. Jede Diskette wird Spur für Spur (0-79) komprimiert. Sollte dennoch der Inhalt einer Spur nicht durch Komprimierung verkürzt werden können, wird der ursprüngliche Inhalt übernommen. Über jede Spur wird vor der Bearbeitung eine 16-Bit Prüfsumme angelegt, die mit den schließlich zu schreibenden Daten verglichen wird. Sind Fehler, z.B. während des Transfers über Telefonleitung aufgetreten, werden diese früh genug während der Bearbeitung erkannt und gemeldet. Um den Komprimierungsaufwand zu reduzieren, werden nur wirklich benutze Datenblöcke bearbeitet, leere Blöcke werden mit Nullen aufgefüllt. Im ungünstigsten Fall benötigt die Komprimierung nur etwa sechs Minuten, die Dekomprimierung im ungüstigsten Fall etwa vier Minuten. Für gewöhnlich benötigt die Komprimierung einer Diskette zwischen drei und vier Minuten (Durchschnittswerte nach DIN Martin). Achtung: Die mit CompDisk erzeugten Dateien sind zu keinem anderen Programm kompatibel. Ebenso kann DecompDisk das Datenformat anderer Diskettenkomprimierungsprogramme nicht lesen und umsetzen. ====================== Bedienung der Programme ======================= ====================================================================== Vom CLI akzeptieren die Programme unter folgender Vorgabe FILE/A,DRIVE/A,NOCLEAR/S die entsprechenden Parameter: FILE .......... Der Dateiname, unter dem die komprimierte Datei erzeugt wird. Das Programm DecompDisk liest unter diesem Namen eine komprimierte Datei ein. Hat diese nicht das richtige Format, erscheint ein entsprechender Hinweis. DRIVE ......... Das Laufwerk (DF0: - DF3: oder RAD:) dessen Daten komprimiert werden sollen. Derzeit werden nur die Standardlaufwerke unterstützt. Das Programm DecompDisk erwartet hier den Namen des Laufwerks, auf das die entkomprimierten Daten geschrieben werden sollen. NOCLEAR ....... Nur das Programm CompDisk unterstützt diesen Parameter. Ist er gewählt, werden unbenutzte Datenblöcke einer Diskette nicht gelöscht. Nur vom CLI aus gestartet wird die req.library von den Programmen nicht benötigt und auch nicht geöffnet. Durch einen Doppelklick auf das Icon der Programme lassen sich CompDisk & DecompDisk von Workbench starten. Ein Fenster öffnet sich unter dem Mauszeiger, das sechs Gadgets enthält. Stringgadget .. Hier wird der Pfadname erwartet, unter dem die komprimierten Dateien abgespeichert werden sollen. Im Programm DecompDisk hat dieses Feld keine Bedeutung, stattdessen wird an dieser Stelle der Name der derzeit bearbeiteten Datei angezeigt. Achtung: aus undefinierbaren (huch!) Gründen erscheint dieser Name nicht immer (zumindest nicht bei Neumond am 25. Februar), trotzdem wird die Datei korrekt angelegt, bzw. gelesen. Laufwerke ..... Hier wird das zu bearbeitende Laufwerk angewählt. Bei CompDisk wählt man erst das Laufwerk und legt anschließend die zu lesende Diskette ein. Bei DecompDisk ist es genau umgekehrt: erst wird die Diskette eingelegt, dann das Laufwerk angewählt, in dem sich die Diskette befindet. Der Arbeitsvorgang wird abgebrochen, sobald das Stop-Gadget angeklickt wird, vorher erfolgt jedoch eine Sicherheitsabfrage. Soweit möglich wird für jede erzeugte Datei ein Icon angelegt. Um die Datei von Workbench aus wieder entkomprimieren zu können, muß dieses Icon unbedingt erhalten bleiben! Eine Datei wird von Workbench entkomprimiert, indem ihr Icon doppelgeklickt wird, oder man die Shift-Taste gedrückt hält, die einzelnen Dateien selektiert und zuletzt das Icon von DecompDisk doppelklickt. Übrigens: der Chefkoch empfiehlt, dieses Programm auf einem Amiga mit Accelerator-Board laufen zu lassen, besonders wenn größere Diskettenmengen durch den Wolf geschickt werden sollen, verkürzt sich die Kompressionszeit erheblich (auf einem A2000 mit 33 MHz GVP-68030 Turbo-Board benötigte CompDisk ganze 1.07 Minuten zum Bearbeiten einer 100% vollen Diskette, was in etwa der Geschwindigkeit eines DiskCopy-Befehls von Diskette in die RAD:-Ramdisk entspricht). ==================== Erweiterungen des Programmes ==================== ====================================================================== Es wäre sicherlich eine gute Idee, wenn dieses Programm neben dem Lempel-Ziv Komprimierungsalgorithmus andere Algorithmen unterstützen würde. Der bisher brauchbarste Algorithmus, adaptives Huffman-Squeezing (wie in LHArc), ließ sich bisher nicht erfolgreich adaptieren, da der mir zur Verfügung stehende Quellcode sich nicht unter Lattice 'C' compilieren läßt (der Algorithmus hängt in einer Endlosschleife in EncodeChar() fest). Es ist jedermann freigestellt, Algorithmen zu schicken, selbstverständlich erhält er eine neue Version der Programme als Dank zurückgeschickt. ========================== An den Anwender =========================== ====================================================================== Die Entwicklung dieser Programme hat mehr Schweiß und Zeit gekostet, als ursprünglich abzusehen war. Deshalb möchten wir jeden Anwender, der dieses Programm als gut und benutzenswert erachtet, bitten, uns eine Spende von mindestens DM 15,- zu schicken. Schickt Briefe, Spenden, Fehlerlisten an: Olaf Barthel, MXM Brabeckstraße 35 D-3000 Hannover 71 CompDisk & DecompDisk sind Share-Ware und dürfen nicht zum Gegenstand nicht-autorisierter kommerzieller Vermarktung gemacht werden. Wir möchten darüber unterrichtet werden, wenn eines oder beide Programme in PD-Auswahlserien übernommen werden sollen. Ausdrücklich gestattet ist die Übernahme der Programme in deutsche PD-Serien und die Veröffentlichung im Rahmen des AmigaJuice-Diskettenmagazins. ========================== Quellennachweis =========================== == (or what do you think is the proper translation for 'Credits?') === ====================================================================== Herzlichen Dank an Arp Programmers für Arp 1.3, Stephen Satchell & Chuck Forsberg für die 16-Bit CRC-Routinen, Bruce Dawson & Colin Fox für die req.library und nicht zuletzt an den Autor der Kompressions/Dekompressionsroutinen, dessen Name in der scheußlichen Programmstruktur leider nicht mehr auszumachen war. ======================= Entwicklungsgeschichte ======================= ====================================================================== V1.6 In dieser Version werden jetzt schließlich und endlich die 16 Bytes Sector-Label-Daten für jeden Block mitgepackt und abgespeichert. Unangenehmer Nebeneffekt: diese Version ist nicht mehr abwärtskompatibel zu den älteren Versionen. V1.5 Eine weitere Überarbeitung der Routinen bringt ein bißchen mehr Sympathie für Multitasking, Speicherverwaltung und die Arbeitsgeschwindigkeit der Programme mit sich. V1.4 Sämtlicher Arbeitsspeicher wird jetzt - sofern vorhanden - im Fast-Ram angelegt. Das Komprimieren/Dekomprimieren dürfte damit wieder etwas schneller geworden sein (besonders Besitzer von Accelerator-Boards mit 32-Bit-Ram dürften sich darüber freuen). V1.3 Überarbeitung der gesamten Routinen, Optimierung an allen Ecken und Kanten, Geschwindigkeitsgewinn von etwa 10%-20%. Endlich funktioniert auch der Zugriff auf die Disk-Bitmap einwandfrei. V1.2 Umstellung auf Lattice 'C', kleinere Veränderungen mit großem Effekt in Hinsicht auf Codelänge (jetzt etwa 21K) und Arbeitsgeschwindigkeit (bis zu 60% schneller!). V1.1 Einführung der 16-Bit CRC Prüfsumme, Intuition-Interface (mit dem RCT) eingebaut. Erste Experimente mit der Bitmap der Diskette (die natürlich auch prompt fehlschlugen). V1.0 Komprimierung mit der Holzhammermethode, nicht sonderlich schnell, aber verläßlich. Programmlänge etwa 35K (Aztec 'C' 3.6). ============================ Postscriptum ============================ ====================================================================== Da viele Leute an uns herangetreten sind und fragten, warum wir unsere Doumentationen nicht in Deutsch schrieben, haben wir jetzt erstmals den Versuch gewagt, ein Programmkonzept zuerst im deutschen Sprachraum zu veröffentlichen. Bitte enttäuscht uns nicht, Amigas und Amigos, wir machen diese Arbeit nur für Euch, wir warten auf Eure Reaktionen.