PMARC - Der Dateiarchivierer

Das Dateiarchivierungs-Paket PMxxx wurde 1990 von Yoshihiko Mino ursprünglich für MSX Systeme geschrieben. Die Original Dokumentation stammt von Pierre Gielen, Nijmegen/Niederlande. PMAUTOAE.COM mit der Original Dokumentation wurde zusammengesteilt von Johnathan Taylor 1993. Das folgende Dokument ist der Versuch, die spärliche und ursprünglich englische Dokumentation des PMxxx Archivpaketes etwas mehr mit Inhalt zu füllen und außerdem einzudeutschen. Darüberhinaus werden Erweiterungen zum Original-Paket erläutert.

Werner Cirsovius, März 1995



Das Dateiarchivierungs-Paket PMxxx wurde, wie bereits erwähnt, ursprünglich für MSX Systeme geschrieben. Glücklicherweise sind diese Programme auch unter CP/M lauffähig. In der sich selbst auspackenden Datei PMAUTOAE.COM sind folgende Dateien enthalten:
     PMARC    .COM  Das Archivierungsprogramm
     PMEXE2   .COM  Das Modul für selbst ausführbare Dateien
     PMSFX2   .COM  Das Modul zum selbst auspacken von Dateien
     PMCAT    .COM  Ein Archiv Hilfsprogramm
     PMSET    .COM  Ein Hilfsprogramm zum Verändern von
                    Voreinsteilungen (Defaults)
     READ     .ME   Dokumentation
     PMARCEXT .DOC  Dokumentation
     PMCHGMX  .MAC  Ein Assembler Hilfsprogramm für MSX
     PMEXT    .COM  Das Archiv Auspackprogramm
     ADDENDUM .DOC  Dokumentation
Erweiterungen:

Für die beiden Hauptprogramme, PMARC.COM und PMEXT.COM, sind gegenüber den Originalen folgende Funktionen eingeführt:
  1. Es wird jetzt Gebrauch gemacht von der CP/M 3.x Uhrzeit. D.h. bei allen Benutzern eines PCW/JOYCE werden in die Archive das aktuelle Datum und die Uhrzeit eingetragen. Allerdings muß zuvor das CP/M Komando DATE SET ausgeführt werden.
  2. Beide Programme lassen sich per Control-C Sequenz (am PCW/JOYCE die STOP Taste) unterbrechen. PMARC wird sofort abgebrochen, PMEXT extrahiert die aktuelle Datei und bricht dann ab. Es versteht sich von selbst, daß die unter PMARC erstellte Archivdatei unbrauchbar ist, sie sollte anschließend gelöscht werden. Dies gilt auch für das selbst auspackende Programm PMSFX2, das wie PMEXT auf Control-C reagiert.
Derzeit wird versucht, allen Programmen deutschen Text beizubringen, was aber nicht bedeuten muß, daß die Meldungen nun verständlicher werden. Leider beißen sich ja bekanntlich einige ASCII Zeichen mit deutschen Sonderzeichen, z.B. [ mit Ä. In der Originaldokumentation werden die Zeichen []/ verwendet, die deutsche Dokumentation verwendet dafür ()-. Diese Umsetzung ist in den folgenden Beschreibungen nicht berücksichtigt.
Hardware Abhängigkeiten.

PMEXT erlaubt die Ausgabe von Dateien auch auf die Konsole und den Drucker. Mit der Option '/P' wird der (Page) Seitenmodus angewählt, d.h. PMEXT hält nach einer Anzahl Zeilen die Ausgabe auf der Konsole an bzw. sendet einen Seitenvorschub an den Drucker. Für die Konsole wird u. U. die ESCAPE Sequenz zum Löschen des Bildschirms benötigt. Eine Einstellung dieser Werte erfolgt mit dem Hilfsprogramm PMSET. Die Voreinstellungen beziehen sich auf den PCW/JOYCE:
PMSET PMEXT.COM Zeigt die aktuellen Einstellungen und kann von folgenden Parametern begleitet werden:
/con,lst Einstellen der Bildschirm- bzw. Druckerzeilen pro Seite.
Einstellung:
con=30, lst=60
C/code Einstellen der Bildschirmlösch-Sequenz.
Einstellung: <ALT>ÄE<ALT>ÄH
<ALT> steht hier für die gleichlautende Taste auf dem PCW/JOYCE. In Befehlssequenzen wird diese Taste durch Eingabe des Exponentenpfeils ^ (neben der Taste <ß>) dargestellt.
PMARC

Dieses Hilfsprogramm legt LZH-ähnliche Archive mit der Extension .PMA an. Die Kompression ist so effektiv wie beim MSDOS Programm LHA, allerdings sind die Archive nicht kompatibel.
PMARC <ARCHIV>[=<BASIS-ARCHIV>][/w:][d:]<DATEI>[=<NAME>][/BDHMNT]

Das Basis-Archiv kann z.B. eines der Module PMSFX2.COM oder PMEXE2.COM sein, die weiter unten erläutert werden.
Bei reinen ASCII-Textdateien (nicht LocoScript) sollte die Option /T verwendet werden. Zwar existiert eine Option zum Löschen von Dateien (/D), nach meiner Erfahrung sollte zur Manipulation an Archiven aber das Programm PMCAT.COM Verwendung finden (siehe unten).
PMEXT

Mit Hilfe dieses Programmes werden sowohl .PMA als auch .LZH Archive ausgepackt (Sogar mit Kompressionsmethode -lh5-). Verglichen mit anderen CP/M LZH Packprogrammen (z.B. LHRD oder LHX) ist PMEXT sehr schnell. Gibt man auch hier nur PMEXT ein, so werden sämtliche verfügbaren Optionen angezeigt.
Sowohl PMARC als auch PMEXT können mehrere Dateien mit einem Aufruf bearbeiten. PMEXT unterstützt neben der Ausgabe in eine Datei auch die Ausgabe auf verschiedene andere Geräte.
Der Aufruf von PMEXT lautet:
PMEXT <Archiv> [[Gerät:]<Name>[=<Name>][Optionen]]

Alle Parameter in [] sind optional.
Falls Gerät nicht angegeben wird, findet das aktuelle Laufwerk Verwendung. Für Gerät: kann angegeben werden:
A:-P: Die CP/M übliche Angabe der Laufwerke. Beim Original PCW/JOYCE beschränkt auf A:, B: und M:
LST: Ausgabe auf dem Drucker. Wenn die Option /P benutzt wird, so wird ein Seitenvorschub ausgegeben nach der Zeilenzahl, die mit PMSET definiert wurde. (Aktuellen Wert abfragen mit PMSET PMEXT.COM)
PUN: Dies ist eine alte CP/M 2.x Bezeichnung und entspricht beim PCW/JOYCE dem logischen Gerät AUXOUT. Hier kann z.B. ein anderer Drucker angeschlossen sein. Die Zuordnung zwischen physikalischem und logischem Gerät erfolgt mit dem CP/M 3.x Befehl DEVICE.
CON: Ausgabe auf dem Bildschirm (Konsole). Wenn die Option /P benutzt wird, kann bei vollem Bildschirm eine der folgenden Tasten betätigt werden:
ENTER/RETURN - Löschen des Bildschirms und Darstellen der nächsten Seite.
A - Abbruch der Ausgabe der aktuellen Datei.
B - Eine Seite zurück.
Q - Quittieren der Lesefunktion und Rückkehr zu CP/M
X - Darstellung einer Zeile zur Zeit.
Leerzeichen - Darstellen der nächsten Seite ohne den Bildschirm zu löschen.
  Beispiel: PMEXT B:* CON:*.DOC/I/P
PMEXT durchsucht das Inhaltsverzeichnis aller Archive ????????.PMA im Laufwerk B nach ????????.DOC Dateien. PMEXT unterdrückt die Ausgabe nicht passender Dateien (/I). Wird eine DOC Datei gefunden, so wird diese auf dem Bildschirm ausgegeben. Bei voller Bildschirmseite können die oben angegebenenen Tasten benutzt werden. Bei Abbruch (A) mitten im Text oder bei Eingabe von ENTER am Ende des Textes, wird die Suche nach der nächsten DOC Datei fortgesetzt. Dies geht bis zum Ende a ller DOC Dateien oder bis zum Quittieren (Q).
EXE: Eine ausgewählte .COM Datei wird in den Speicher geladen und ausgeführt. Eine entsprechende Kommandozeile kann mit angegeben werden. Beispiel:
PMEXT B:SYS EXE:DIR.COM *.DOC [USER=ALL]
PMEXT sucht das Archiv SYS.PMA im Laufwerk B und packt die Datei DIR.COM aus. Danach wird DIR.COM mit der Kommandozeile *.DOC [USER=ALL] ausgeführt. Der Aufruf entspricht also dem CP/M Befehl DIR *.DOC [USER=ALL].
Dieser Befehl bewirkt für PMARC Archive exakt das gleiche wie das Programm LRUN.COM für .LBR Libraries.
PMEXE, PMSFX, PMSET, PMCAT
Bilden Hilfsprogramme für PMARC und PMEXT. Leider ist die Dokumentation in Kanji geschrieben und nur auf MSX-2 oder 2+ Maschinen mit Kanji ROM lesbar. Aber auch wenn die Möglichkeit, Kanji zu lesen gegeben ist, muß es immer noch übersetzt werden. Deswegen basieren die folgenden kurzen Hinweise auf Erfahrungen mit diesen PMARC Hilfsprogrammen.

PMEXE

Dieses Programm ist nur in Kombination mit PMARC.COM sinnvoll. Es ist in der Lage, ausführbare komprimierte .COM-Dateien zu erstellen (ähnlich LZEXE oder PKLITE unter MSDOS). Um eine solche Datei zu erstellen, wird folgender Befehl eingegeben:

PMARC <Archiv>.COM=PMEXE2.COM <Dateiname> [Optionen]

Das Archiv muß die Extension .COM haben, nicht .PMA.

PMSFX

Auch dieses Programm ist nur in Kombination mit PMARC.COM sinnvoll. Es wird benötigt, um selbstextrahierende (SelFeXtracting - SFX) Archive zu erstellen (wie z.B. PMAUTOAE.COM). Ein solches Archiv wird mit folgendem Befehl erstellt:

PMARC <Archiv>.COM=PMSFX2.COM <Dateiname> [Optionen]

Das Archiv muß ebenfalls die Extension .COM haben, nicht .PMA.

Beim Aufruf des Archivs (z.B. PMAUTOAE) werden alle Dateien extrahiert. Daneben kann das Archiv mit folgenden Optionen (ähnlich PMEXT) aufgerufen werden:
  /A Extrahieren mit Attribut.
  /L Dateien im Archiv auflisten.
  /C Dateien im Archiv testen.
  /Q Extrahieren mit Rückfrage.
PMAUTOAE /L zeigt dann zunächst an, welche Dateien verfügbar sind.

MERKE: PMEXE arbeitet nur mit einer einzigen Datei, PMSFX erlaubt das Zusammenfassen mehrerer Dateien.

PMSET

Dieses Hilfsprogramm erlaubt Voreinstellungen (Defaults) für PMARC und PMEXT. Der Aufruf von PMSET ohne Parameter zeigt eine Liste möglicher Optionen. Siehe auch Beispiel oben unter Hardware Abhängigkeiten.

PMCAT

Dieses Hilfsprogramm erlaubt das Aktualisieren, Anhängen oder Löschen von Dateien in einem Archiv. PMCAT ohne Parameter zeigt alle möglichen Optionen, allerdings leider nicht alle ausgeführten. Deswegen hier zusätzlich zum Hilfstext von PMCAT eine vollständigere Übersicht:

1)
PMCAT [-S[E]/R[E]] <Archiv1>[=<Basis-Archiv> [[<Archiv2>[<Maske>]]

Dateien aus Archiv2, die der Maske entsprechen, werden in das Archiv1 kopiert. Falls ein Basis-Archiv angegeben wurde, wird dieses komplett kopiert. Ohne Maske werden alle Dateien kopiert. Ohne Archiv2 werden alle Dateien aus Archiv1 kopiert, dies macht aber nur Sinn mit den Sortier-Optionen, -S[E] für aufsteigende alphabetische Sortierung nach Dateinamen [oder E nach Extensionen] und -R[E] für umgekehrte Reihenfolge der Sortierung.

2)
PMCAT -U <Archiv1> <Archiv2> [<Maske>]

Aktualisieren des Inhaltsverzeichnisses des Archiv1 mit Dateien aus Archiv2 komplett oder ausgewählt durch Maske.

3)
PMCAT -D[D] <Archiv> <Maske>

Löschen von Dateien, die Maske entsprechen aus dem Archiv. Wird nur -D angegen, so werden lediglich die entsprechenden Dateien als gelöscht markiert. Option DD erzwingt ein wirkliches Löschen, da hier das Inhaltsverzeichnis von Archiv neu geschrieben wird.

Zwei abschließende Bemerkungen zu diesem doch recht mächtigen Werkzeug PMCAT:

  1. Die Option -B erzwingt das Anlegen einer Backupdatei. Aus z.B. DATA.PMA wird DATA.PMB.
  2. Für Maske können maximal 10 Parameter angegeben werden, der Befehl
    PMCAT -D TEST *.JAN *.FEB
    löscht aus dem Archiv TEST.PMA alle Dateien mit den Extensionen *.JAN und *.FEB.
Nach meiner eigenen Erfahrung verhält sich PMCAT manchmal recht eigenwillig. So ist es mir z. B. nicht gelungen, eine Datei aus einem Archiv zu löschen, die als Extension nur einen Buchstaben hatte (also etwa TEST.X).

PMSET und PMCAT (sowie PMEXT) arbeiten auch mit .LZH Archiven, die mit dem MSDOS Archiver LHA 2.11 erstellt sind. Allerdings gilt das nicht in der anderen Richtung.

Im folgenden Teil steht ich für Pierre Gielen.

Ein kurzer Hinweis auf die Kompressionsraten, die ich erzielt und verglichen habe gegenüber verschiedenen Archivprogrammen sowohl für CP/M als auch MSDOS sowie einfachen Kompressionsprogrammen.

Zunächst mag es schwierig sein zu glauben, daß PMARC dem MSDOS Archivprogramm LHA überlegen ist. Es ist auch dem MSDOS ARC-Format Archivprogramm und PKZIP1xx über.legen, obwohl ich nicht glaube, daß PMARC der neueren Version PKZIP2xx aufgrund des neuen Kompressions-Algorithmus überlegen ist.

Offenkundig schlägt PMARC das CP/M Programm ARC.COM sowohl bei der Kompression als auch bei den Möglichkeiten. Das Gespann PMARC und PMEXT kann alles, was das .LBR Format vermag. PMARC schlägt ebenfalls alle Komprimierungsprogramme eingeschlossen CRLZH2O.COM, welches meines Wissens das bisher beste Programm dieser Art war.

Meines Wissens schlägt nur ein Archiv Programm mit den PMA Algorithmus PMARC mit Sicherheit, nämlich das MSDOS Archiv Programm ARJ, allerdings mit keinem großen Vorsprung! Die Differenz liegt bei etwa 2,5% zugunsten ARJ.
Einige letzte Worte:

  1. Der größte Makel am PM Paket ist, daß das DU: Format (ZCPR) nicht unterstützt wird
  2. Wenn der Hochgeschwindigkeitsmodus gewählt wurde (PMARC, Option /H), ist das Programm zwar schneller aber die Kompressionsrate ist nicht optimal.
  3. Beim Arbeiten mit dem PMEXE Archiv ist zu beachten, daß der Speicher (TPA) groß genug ist sowohl zur Aufnahme des Archivs als auch der ausgepackten .COM Datei. Andernfalls ist ein Arbeiten wegen Speicherüberlaufs nicht möglich.

Anhang:

Vergleichsmessungen unterschiedlicher Kompressionsverfahren (nicht des Zeitaufwandes), wie in der JOYCE Klubzeitung Nr.31 veröffentlicht:
Datei Rekords Einsparung %
Original 653 0
SQ 417 36,1
CRUNCH 267 59,1
CRLZH 196 69,9
ARK 290 55,6
PMA 176 73,0

Anmerkung der Redaktion:

Am Beispiel der Befehlszeile für das Programm PMARC hier eine Erläuterung der einzelnen Parameter:
PMARC <Archiv>[=<Basis-Archiv>][/w:][d:]<Datei>[=<Name>][/BDHMNT]

<Archiv> Name des zu bearbeitenden Archivs; fehlt der Dateityp, wird automatisch .PMA angefügt. Dem Archivnamen kann das Laufwerk vorangestellt werden, z. B: m:<Archiv>.
<Basis-Archiv> kennzeichnet ein verfügbares Modul (PMSFX oder PMEXE).
/w: Laufwerk, von dem das Modul (siehe <Basis-Archiv> geladen werden soll.
d: Laufwerk, in dem sich die Datei(en) befinden, die in das Archiv aufgenommen werden soll(en).
<Datei> Name der Datei(en), die in das Archiv aufgenommen werden soll(en) - Wildcards sind erlaubt.
=<Name> Name, unter dem die Datei ins Archiv aufgenommen werden soll.
   
/B (BINARY FILE) Die zu packenden Dateien sind Binärdateien; das EOF-Zeichen wird ingnoriert.
/D (DELETE MEMBERS) Die angegebene Datei wird aus dem Archiv gelöscht.
/H (HIGH-SPEED MODE) Das Archiv wird schneller erstellt, jedoch ist die Packdichte niedriger.
/M (MAKE MEMORANDUMS) Erlaubt das Einfügen von Notizen zu den Dateinamen.
/N (NO COMPRESSION) Die Dateien werden ungepackt in das Archiv aufgenommen.
/T (TEXT FILE) Die zu packenden Dateien sind Textdateien und enden mit EOF-Zeichen (1AH).



Abgedruckt in Klubzeitung Nr. 35. Autor: Werner Cirsovius