###   Projekte und Informationen rund um den KC85   ### 

MTOOLS-Update

von Frank Dachselt

Obwohl noch nicht alle geplanten Funktionen realisiert sind, so gibt es inzwischen doch wieder einige Neuerungen, die die Veröffentlichung einer neuen Version rechtfertigen. In der nun vorliegenden Version 1.4 hat sich folgendes verändert:

Geschwindigkeitserhöhung

Nachdem es mir endlich gelungen ist, eigene Assembler-Routinen in C-Programme einzubinden, konnte ich die zeitkritischen Programmteile (z.B. UU-Kodierung/Dekodierung und CRC-Berechnung) bei der Datenübertragung erheblich beschleunigen. Wer mit dem Scannermodul M051 arbeitet, kann diese Geschwindigkeitserhöhung ausnutzen, wenn die Baudrate für die Übertragung auf 19200 Baud eingestellt wird (KC-seitig mit dem Treiber M0510192.KOP). Wie sich die effektiven Baud- und Übertragungsraten im Vergleich zur Vorgängerversion verändern, ist in der folgenden Tabelle zusammengestellt:

  Senden (MPUT) Empfangen (MGET)
  RF,HD --> PC PC --> RF PC --> HD
MTOOLS v1.3
(Textmode)
1400 Byte/s
14000 Baud
760 Byte/s
7600 Baud
680 Byte/s
6800 Baud
MTOOLS v1.4
(Textmode)
1550 Byte/s
15500 Baud
1340 Byte/s
13400 Baud
1080 Byte/s
10800 Baud
MTOOLS v1.4
(Binärmode)
1130 Byte/s
15500 Baud
890 Byte/s
11900 Baud
780 Byte/s
10400 Baud


(RF ... RAM-Floppy, HD ... Festplatte)

Neben den beiden Übertragungsprogrammen MPUT und MGET profitiert von den Assemblerroutinen auch die lokale CRC-Berechnung mit MCRC, die jetzt ebenfalls wesentlich schneller abläuft.

DOS-Variable EXPATH

Ein etwas kurioser Fehler ist mir beim ersten vollständigen Backup meiner Festplatte über die MTOOLS aufgefallen: Sobald die Datei UUDECODE.COM vom KC auf den PC übertragen wurde, meldete MPUT im Binärmode für alle nachfolgenden Dateien fortlaufend Übertragungsfehler. Als Ursache stellte sich schließlich heraus, daß der PC versuchte, für die Dekodierung der UU-kodiert übertragenen Dateien nicht das passende PC-Programm, sondern das sich nun im lokalen Verzeichnis befindende KC-Programm zu verwenden (UUDECODE.COM ist ja auch ein gültiger PC-Programmname). Das konnte natürlich nicht funktionieren; glücklicherweise entstand außer dem beschriebenen Effekt kein weiterer Schaden.

Um diese Fehlfunktion zu vermeiden, gibt es jetzt die DOS-Variable EXPATH, die zur expliziten Pfadangabe für auszuführende PC-Programme dient. Diese Variable muß auf das Verzeichnis mit den ausführbaren Dateien (MCRC.EXE, UUENCODE.COM, UUDECODE.COM) zeigen und wird, wie die anderen Variablen auch, in der Start-Datei (START.SUB) auf dem PC definiert. Das kann zum Beispiel so aussehen:

   set expath=c:\bin\

Diese Zeile ist angepaßt an die eigenen Verhältnisse in der Datei START.SUB auf dem PC zu ergänzen, bevor mit den Programmen der Version 1.4 gearbeitet wird.

Fehlerbeseitigung

Neben einigen kleinen kosmetischen Veränderungen bei den KC-seitigen Programmen funktioniert nun bei MCRC auch die Binäroption. Trotz anderslautender Aussage auf der Hilfeseite und in der Programmbeschreibung wurden bisher alle Dateien als Textdateien interpretiert, was bei Binärdateien zu falschen CRC-Werten führte.

Dateispezifikation bei MPUT und MCRC

Hierbei handelt es sich um keine neue Funktionatität, sondern die im folgenden beschriebenen Möglichkeiten waren schon immer in den Programmen MPUT und MCRC implementiert. So vollständig wie hier waren sie nur bisher in keiner Beschreibung enthalten. Aufgefallen ist mir das eher zufällig, als ich mir kürzlich mal wieder die Dokumentation der entsprechenden Routine (WILDEX20.CRL) ansah. Damit lassen sich nun auch gleich einige Wünsche realisieren, die von MTOOLS-Anwendern geäußert wurden.

Bei den Programmen MPUT und MCRC werden die zu verarbeitenden Dateien des CP/M-Dateisystems als Parameter in der Kommandozeile angegeben. Das allgemeine Format dieser Angabe lautet:

   [u/][d:]filename.ext

mit

  • u ... Userbereich 0...15
  • d ... Laufwerk A, B, C, ...

Den Programmen kann eine Liste mit mehreren, durch Leerzeichen voneinander getrennten Dateispezifikationen übergeben werden. Die Angaben von Userbereich und Laufwerk sind unabhängig voneinander optional. Fehlen diese Angaben, werden die aktuellen Werte verwendet. Zur Dateispezifikation können die Jokerzeichen '?' und '*' für die Bestandteile

  • u ... Userbereich ('?' und '*' haben hier die gleiche Wirkung)
  • filename ... Dateiname
  • ext ... Dateierweiterung

verwendet werden. Jede dieser mehrdeutigen Dateispezifikation wird durch die Programme MPUT und MCRC nach dem Aufruf durch eine Liste aller passenden eindeutigen Dateinamen ersetzt, so als wären diese Dateinamen alle einzeln in der Kommandozeile eingegeben worden. Durch diesen Vorgang entsteht eine neue Liste, die alle in der Kommandozeile spezifizierten Dateinamen in eindeutiger Form enthält. Diese resultierende Liste kann einzelne Dateinamen mehrfach enthalten, wenn diese zu mehreren Spezifikationen in der Kommandozeile passen. So entsteht aus der Angabe

   *.* *.TXT

die Liste aller Dateien (vom aktuellen Laufwerk und Userbereich) an die noch einmal alle TXT-Dateien angehängt werden. Von den Programmen MPUT und MCRC werden mehrfache Dateinamen in der resultierenden Liste nicht erkannt, sondern die Programmfunktion wird in solchen Fällen auf diese Dateien ebenfalls mehrfach angewendet.

Wird einer Dateispezifikation in der Kommandozeile ein '!' vorangestellt, dann werden alle passenden Dateinamen aus der resultierenden Liste entfernt. "Positiv"- und "Negativ"-Spezifikationen können in der Kommandozeile beliebig gemischt auftreten. Die Verarbeitung geschieht derart, daß zuerst die resultierende Liste aus allen Positiv- Spezifikationen aufgebaut wird, aus der im Anschluß alle negativ spezifizierten Dateien ausgeschlossen werden. Ist die erste Angabe in der Kommandozeile eine Negativ-Spezifikationen, dann wird implizit ein vorangestelltes '*.*' angenommen.

Beispiele für Dateispezifikationen:

  • alle TXT- und TXW-Dateien aus allen Userbereichen vom LW D:
    		   */d:*.TXT */d:*.TXW
      
  • alle Dateien außer BAK-Dateien vom LW D: User 0
    		   0/d:*.* !0/d:*.BAK
      
  • alle COM-Dateien vom aktuellen Laufwerk aus allen Userbereichen außer denen von User 8
    		   */*.COM !8/*.COM
      
  • alle Dateien außer !!!TIME&.DAT, BAK- und $$$-Dateien vom aktuellen LW und Userbereich
    		   *.* !!!!TIME&.DAT !*.BAK !*.$$$
      
  • alle Dateien außer COM-Dateien vom aktuellen LW und Userbereich
    		   !*.COM
      

Um die Möglichkeiten bei der Dateispezifikation auszuprobieren sowie schnell und unkompliziert die für die eigenen Wünsche passende Variante zu finden, habe ich das Programm LMDIR (als LMDIR.COM auf der Beilagendiskette) geschrieben. Das ist ein Directory-Programm, das die beschriebene Art der Dateispezifikation verwendet und alle in der Kommandozeile spezifizierten Dateinamen auf dem Bildschirm ausgibt.

Allen, die auf die neue Version umsteigen wollen, empfehle ich, die Programme aus dem Archiv MTOOLS14.PMA vollzählig zu übernehmen, damit alle Kommandos die gleiche Versionsnummer zeigen. Eine ausführliche Installationsbeschreibung - auch für Neueinsteiger - ist im PC-Archiv MTOOLS14.ZIP enthalten.