Dec 132017
Make to Anything (Archive Converter) version 9.01. Excellent!.
File MTA_V901.ZIP from The Programmer’s Corner in
Category Utilities for DOS and Windows Machines
Make to Anything (Archive Converter) version 9.01. Excellent!.
File Name File Size Zip Size Zip Type
MTA.ANS 228 143 deflated
MTA.ASC 176 96 deflated
MTA.CTL 3633 1047 deflated
MTA.EXE 92944 38670 deflated
MTA.NEW 1117 509 deflated
MTABAT.BAT 130 97 deflated
MTADOCEN.DOC 100736 29215 deflated
MTL.EXE 28144 14254 deflated
SWAP12.EXE 7149 6982 deflated

Download File MTA_V901.ZIP Here

Contents of the MTADOCEN.DOC file

MTA Make Them Anything Member
Convert Compressed of the

(c) 1989 Robert W.van Hoeven Badhoevedorp
Release : 9.01 Programmers
Rel.Date: 2th September 1989 Collective


Lines starting with '|' are
changes to release 8.20 !!!

Address: Robert W. van Hoeven P + P
PO. Box 131 C
1170 AC Badhoevedorp
Nederland / Holland

* Warning : The MTL program is incompatible with the old MTA.LOG *
* format. Close your LOG with the old MTL (compress) and *
* after that, use the new MTL with the new MTA *


Please notice the following:

- MTA is a ShareWare product in every right way;
- This means the software confirms to 'WYSIWYG' (What You See Is What
You Get);
- You are asked to register the program by sending me a postcard or
letter to the address above. Most people who have (or use) a PC, have
the money for 1 stamp and some paper or postcard. I am very pleased
with it, and if you have some questions concerning the program, I will
try to answer them;
- You can also address me via NetMail . Look at the bottom of this
document for information;
- The author can not be made responsible for damage of any kind, as a
direct or indirect result of using the supplied software !
- This program only works when you have the right compressors available
on your PC. It does not do any compression of it's own ! The program
only interprets all the supported formats. I can not think of any
problem with that, but if any of the authors/companies of the suppor-
ted products has problems with this program, I will remove that piece
of coding at once (although I could not find any quote like 'You may
NOT call our program in program's of your own' in any of the doc's);


MTA requires: - PC XT/AT/386
- At least 320K free memory
- DOS 2.11 or 3.xx (4.xx not tested) also
running with 4Dos (version 2.xx up);
- HDU optional
- General swap program (optional)


This program is a rewritten version of an earlier program (MTZ 'Make
Them Zip'). MTZ was created out of need. Some friends of mine, own
more than 200 diskettes, all with compressed files (I won't say the
word) on it, and liked to convert them to a newer kind of compressor.
Then Phil Katz introduced his new ZIP and the 'converting fever' went
around like a 'virus'.

Thats the place were I came into action. After I had to clean some
disk-drives for friends, after they converted 50 of their 'dirty white'
diskettes by moving all files to the hard-disk, manualy converting them
and then moving them back to the diskettes, I asked myself, could this
not be done in an easy way.

One of the victims called me and stated that his new ZIP-files would
not fit on his diskettes anymore (the early 090 version actualy made
some files bigger than they were, 092 cleared that with the -ex op-
tion). So I made a 'cruel and ugly' convertor which converted SEA's
and PKWare's ARC's and NoGate's PAK's to ZIP's (thats why the program
was called 'Make Them ZIP'). This program had one nifty feature, not
found in any of the other convertors (and now I know why $#%$#^%# !).
MTZ (when used with a Hard-disk) could convert a diskette and when the
result could not fit on the same diskette, it kept back as many files
as needed. When, later, it reworked a diskette and there was enough
room left on that diskette, it moved that files back to this diskette.

That was the status-quo until now. Now Mr. Yoshi from Japan hit the
marked with his LhArc. Personaly I think Phil will introduce more
reduction-levels and I am not so keen on converting my files to LHZ
files, but you never know. Some of my friends and some of the already
'registered' users would like to convert again, so what could I do...

MTA is hopefully the last of the conversion tools anyone needs, altough
I agree with people who say 'Do I need a canon to shoot a fly ?'. In
any case, hereby I provide you all with a real conversion canon. Please
shoot the right things with it !

Introduction & specs

Those who took the time to read the history (and I know of at least
one, beside myself who hasn't done this) will have a general picture
of MTA's functions. For those who didn't, a brief review and some ge-
neral specs:

MTA can:

- Convert most of the compressed files to almost any other format, pro-
vided, you own the original (de)compression program(s);
- Convert SFX (self extraction) files from ARC/PAK/ZIP/LHarc and LArc
systems to normal compression files of any kind;
- Converting can be done on individual files, whole or partial directo-
ries (not recursive) and whole or partial diskettes (only root) by
providing a valid file-mask to MTA;
- When converting, MTA keeps (optional) a log-file (text-file) with
the result of its actions. MTA appends to an existing log-file or
creates one the first time;
- Most of the important compression options can be configurated with
a control-file (MTA.CTL);
- When converting whole diskettes, MTA can hold back those files that
won't fit on this diskette AFTER the conversion. Later MTA can spool
those files to diskettes with more freespace;
- When converting one (or more) files, MTA can move them to an alternate
- When converting files, MTA converts compression files INSIDE this
files to the same compression system;
- MTA can add comment-files to ZIP-files (nice banners in the ZIP for
Bulletin Boards);
- MTA can run unattended (nice for BBS's);
- Depending on the TARGET format, MTA can preserve directories, as
supported by ZOO, ZIP and LHarc;
- You can configure your own compressor (if you have one), or any new
type of compressor as a user-implemented feature;
- The log-file can be analyzed with the support-program MTL.EXE. This
program is also usefull when you want to 'compress' your logfile;
- Call EXIT's when converting full diskettes;
- Call EXIT after any conversion;
- Call exits before the real start and end of MTA's execution. This
could be handy for those users who use a cache device;
- Run unattended in a BBS configuration while changing FILES.BBS
to reflect the new situation;
- Run unattended in a BBS configuration and only convert the new
- Prepared to run a customized compression/decompression program;
|- Can optimize an archive to the smallest type;

For all its functions MTA 'leans' heavily on it's own control-file.
Most of the fixed options can be toggled with invocation switches.


Most users will have a hard-disk. Owners of a diskette oriented PC can
use MTA (provided you have a second drive). Installation however is
described for hard-disk owners:

- Place MTA.EXE and MTL.EXE in some directory. When using DOS 2.xx,
this MUST be a directory in the DOS-path;

- WARNING: In some cases MTA needs to call itself. ONLY when you
are running DOS 3.xx or higher you can rename the program to
any name you like. MTA then will be able to find itself. If run-
ning under DOS 1.xx or 2.xx (even with 4Dos as command processor)
you CAN NOT rename MTA.EXE to something else;

- Create a MTA.CTL file in the same directory (see instructions);

- Take special care with memory requirements (see description of
MTA.CTL's FreeMemory option);

- Change to your trashcan directory (if one) and do a dummy-run. You
can supply a 'non existing' filemask. MTA checks the MTA.CTL (please
correct the errors) and creates a MTA.LOG file (optional);

Thats all there is to execpt for the real freaks. BBS owners who plan
to use MTA to convert any incomming file to their own compression
system are not ready yet. This is also the case for owners who work
in small (multitasking) environments. They should do the following as
an extra:

- Unpack the supplied file SWAP12.EXE by running it;
- Read the documentation carefull;
- Move SWAP.COM to some directory;
- Add at least a SwapCall option to your MTA.CTL, pointing to the
directory and the SWAP.COM you have just moved to that directory;

WARNING: MTA is tested with the supplied file SWAP12. This combina-
tion is not so successfull under certain 4Dos environ-
MTA with a valid SwapCall active and a 4Dos (V 22a) confi-
guration with (or something alike) results
in hangups or strange messages. When working with SWAP12 and
4Dos (V 22a) is is advised to set the COMSPEC variable to
COMMAND.COM when you want to execute MTA.

Remarks on ARC

MTA supports : All ARC versions up to 6.02

There are no special tricks concerning ARC. When destination is ARC,
no recursive support is available, even if the source is made recur-

Remarks on PAK

MTA supports : All PAK versions up to 2.10

There are a few things to keep in mind when using a PAK version. The
oldest version (also called GSARC) had some trouble with errorlevels.
If you are still using this version, insert the OLDPAK option in

If you use PAK 1.5 to PAK 1.61, everything will be fine with this
version of MTA.

When using PAK 2.0 there is one drawback in functions. MTA does NOT
support the way PAK 2.0 can work with pathnames. PAK 2.0 source files
with pathnames (any PAK 2.0 will contain these paths even if you did
not use /I (/PATH)) are converted to destination files without path
names (excluding PAK itself, because PAK takes the new path-names
over in the new file, but they have no meaning anymore).
It will cost to much to cover PAK's (full) path structure. All other
compressors use (or can use) a relative path (relative to the current
path) but PAK does not (as it seems).

MTA does not support PAK 2.0's /PATH and /I options.

Remarks on ZIP

MTA supports : All ZIP versions up to 1.01

When using ZIP files (as destination), you must remember to set the
correct compression switches in the ZIPCompression option in MTA.CTL.
You can not (of cource) use a switch that is not supported with your
current version of ZIP. So if you use PKZ 0.92, you can not code -es
in the ZIPCompression option.

When adding comments to the ZIP file (ZIPAutoComment option), only
255 bytes are allowed. My current evaluation version (0.92) will
not work correctly with large comments.


MTA supports : All PKPAK/UNPAK versions up to 3.61

There is nothing special in this support. To go along with S.E.A.,
PKPAK/PKUNPAK format is not supported as destination.

Remarks on DWC

MTA supports : DWC version 5.01A

There is nothing special in this support. For included paths, the
same goes as for PAK 2.0 (no support).

Remarks on ZOO

MTA supports : ZOO version 2.01

There is nothing special in this support. Full recursive and relative
path support is available. MTA also supports ZOO 2.01 'extended'.

Remarks on LHarc

MTA supports : All LHarc versions up to 1.13c

MTA supports both ICE and LZH extensions but only the LHarc pro-
gram (or name-like). The ICE extension is only valid for input
(to help confused/converted users).

Remarks on LArc

MTA supports : LArc version 3.33

MTA supports LArc as it can. There is no documentation available to
me, so everything comes from 'the dark'.


The MTA.CTL file is a normal text-file (ASCII-file). You can create
this file with program's like EDLIN or any other ASCII-editor.
MTA.CTL must be in the DOS-path (DOS 2.xx) or in the same directory
as MTA.EXE (DOS 3.xx).

MTA.CTL contains many options. Some of them optional, some of them not.
The general format for the MTA.CTL file is:

Option {parameter} {parameter} ..... {parameter}

There are NO restrictions to the possition you start the command, nor
the starting possition of the (optional) parameters, but the 'option'
and (if present) the 'parameters' have to be separated with one or
more spaces. You can make any mixture of upper and lower case !

Some of the parameters in the MTA.CTL file can be overruled with
command-line switches.

MTA.CTL can (or must) contain the following statements:

ARCPath [path] {opt}
PAKPath [path] {opt}
ZOOPath [path] {opt}
DWCPath [path] {opt}
LZHPath [path] {opt}
LZSPath [path] {opt}
PKZIPPath [path] {opt}
PKUNZIPPath [path]
PKUNPAKPath [path]
Usage : These options are optional. MTA will do an automatic search
for all (de)compression programs. There are some cases where
you want to instruct MTA where and what to find yourself. These
cases are:
- Your HDU is a bit slow, the searches for all the (de)compres-
sion program's takes too long;
- You have renamed some (or all) the (de)compression program(s)
to your own name(s). MTA will never find these program(s);
You can include some (or all) of the above options to instruct
MTA where AND what to find. The supplied options overrule the
automatic search MTA conducts.

Maby you have noticed, but there is NO option for PKPAK. MTA
can only create a destination file of type ARC with the pro-
Also you can not supply PKARC.EXE as a replacement of ARC be-
cause MTA uses the ARC.EXE syntax for compression and decom-

Please notice that you must supply the correct programs to the
above options. If you replace one of the program's with another
one, strange things (errors) can occur and data could corrupt.
Supply the following programs to the options:

ARCPath ARC.EXE or its alias
PAKPath PAK.EXE or its alias
ZOOPath ZOO.EXE or its alias
DWCPath DWC.EXE or its alias
LZHPath LHARC.EXE or its alias
LZSPath LARC.EXE or its alias
PKZIPPath PKZIP.EXE or its alias
PKUNZIPPath PKUNZIP.EXE or its alias
PKUNPAKPath PKUNPAK.EXE or its alias
or PKXARC.COM or its alias
or PKXARC.EXE or its alias

Where 'alias' is the name you renamed the original file to.
Please supply the complete drive, path and filename to any
of the options !

If you don't own one or more of the (de)compression programs,
leave out the related option, otherwise MTA will abort !

| New from release 9.01 and up is the optional third parameter.
| If you supply a 'Y' as the third parameter, you let MTA know
| that this compressor can be used for the optimize test (see
| into the chapter Optimal sizes). If you leave the option out,
| this compresser will not be used. This is also the case when
| you let MTA search for itself for the compressors !!!

Relate: None
Dest. : All

Usage : This parameter is optional. It must be used when you use a
very old version of PAK.EXE (GSARC.EXE). The first versions
of PAK gave always the same error-level. With this option
you skip the errorlevel test after PAK is called, so please
be carefull with this option.

Relate: None
Dest. : PAK

Usage : This parameter is optional. It must be used when you use an
old version op ZIP (lower than 1.00, so 0.90 or 0.92). When
you use this option. MTA will not use special 1.00> options
like -c (comment on files) and -fhrs (mask attributes).
If you leave out this option and you are using an old version
of PKZIP/PKUNZIP, both prorams will abort on call !!

Relate: None
Dest. : ZIP

Usage : This parameter is optional. When you supply this parameter,
MTA will use a special kind of window and uses Int29 to
maintain that window. When you do not supply this option,
MTA uses a window maintained with Int21. There are several
advantages and disadvantages to each method. Please refer
to the chapter 'Screen control'.
| WARNING: This option is due to disappear in one of the fol-
| lowing versions of MTA;

Relate: None
Dest. : All

Usage : This parameter is optional. You can only use this option with
PKZIP V 1.00 and up. When you use the option PKUNZIP will dis-
play ANSI comments (if available) of the ZIP-file when decom-
pressing. This option has only meaning if you also use the
FullScreen option.

| WARNING: This option is due to disappear in one of the fol-
| lowing versions of MTA;

Relate: None
Dest. : ZIP (1.00 and up)

ZIPCompression [options]
Usage : ZIPCompression replaces the old AsciiCompression, Binary-
Compression and OptimumCompression parameters. With the MIX
of PK V 0.90, V 0.92 and V 1.00, the number of compression
types is somewhat difficult.
With [options] you code the current ZIP compression options
you would like to use.
PKZ 0.90 : In general use 'ZIPCompression -eb4 -ea4'
PKZ 0.92 : In general use 'ZIPCompression -ex'
PKZ 1.00 : In general use 'ZIPCompression -ex' or
'ZIPCompression -es'

You must code the options just like you did with PKZIP !

Relate: OLDZip
Dest. : ZIP

Usage : This parameter is optional and controls MTA's touching system.
When used, MTA touches (resets the compressed file's time/date
stamp) to the lowest date of any file inside the compressed
file. See the chapter on this feature.

Relate: TouchCur, TouchHig
Dest. : All

Usage : This parameter is optional and controls MTA's touching system.
When used, MTA touches (resets the compressed file's time/date
stamp) to the highest date of any file inside the compressed
file. See the chapter on this feature.

Relate: TouchCur, TouchLow
Dest. : All

Usage : This parameter is optional and controls MTA's touching system.
When used, MTA touches (resets the compressed file's time/date
stamp) to the current date. See the chapter on this feature.

Relate: TouchLow, TouchHig
Dest. : All

|Usage : This parameter belongs to the MTA touching system. When you
| want to ignore the time on date/time stamps, you must include
| this option. MTA will use 00:00:00 as the time on all files
| when testing. Also the compressed file is touched as 00:00:00.
|Relate: TouchLow, TouchHig, TouchCur
|Dest. : All
|Usage : This parameter belongs to the MTA touching system. When you
| want to include dates that are higher than the current PC's
| system date/time, you must include this option. This means
| that a compressed file with a file inside with the date
| 01-07-98 will actualy get the date 01-07-98 even when the
| current date is lower.
|Relate: TouchLow, TouchHig, TouchCur
|Dest. : All

WarningTime [cycles]
Usage : This parameter is optional and controls MTA's time to display
a warning message. When running unattended (a BBS for example)
long waiting times are not so handy. When running manually they
could be handy.
By default MTA sets the WarningTime to 20 cycles (every cycle
is visualized on the screen). This comes to around 10 seconds.
You can interrupt every message by pressing any key.
When the default is to long for you, you can reduce the value,
when you want more time, increase it. Values from 0 to 65535
are valid.
Value 0 means that MTA will display no warning messages at all.

Relate: None
Dest. : All

Usage : This parameter is optional and controls MTA's logging file.
When MTA run's, it makes (or appends to) a file called MTA.LOG.
This file can be anywhere in the current directory or DOS Path.
When converting many files (a BBS is a good example), this file
can grow very big, because MTA keeps track of almost anything !
When you don't want a log, use NoLog.

Relate: None
Dest. : All

|Usage : With this option you can instruct MTA NOT to convert compressed
| files INSIDE the compressed file. There could be cases where
| you want to use this option. In this case no shelling of a new
| MTA.EXE (neither normal or with swap) is done.
|Relate: None
|Dest. : All

SwapCall [path to swap program] {extra switches}
Usage : When working with compressed files inside compressed files,
MTA calls itself to convert the nested compressed files.
MTA takes around 128K of real storage for it's own usage,
so with one level of nesting you need at least 2 * 128K and
a minimum of around 180K for the (de)compressor. In an empty
machine of 640K this is possible, but you get a problem when
the next level again hast nested compressed files inside.
To reduce the amount of memory needed you can use a memory
swapper to swap the largest part of MTA from memory to EMS
or disk.
In the original MTA installation file, I have added a com-
plete public-domain swapper, but of course you can use one
of your own.
With this option you supply MTA with the information needed
to run with a swapper.
You supply the full drive+path+name of the swap-program and
you can supply extra options that are needed for the swapper
In the case of SWAP12 (if you move the SWAP.COM file to lets
say C:\DOS, the option would be 'SwapCall C:\DOS\SWAP.COM -Q'.

If you do NOT supply a SwapCall option, no swapping takes
Please also read the chapter on 'MTA's running environment' and
the installation notes !!!!!

Relate: None
Dest. : All

Usage : This parameter is optional. If you supply this parameter. MTA
orders every compressor (if that function is included) to
ask for a description of the target compressed file. MTA ignores
this command with compressors that can't create comments to the
compressed file !
You can not use this function in conjuction with ZIPAutodescrip-
tion !
When you use ZIP as destination, -z and -c (both file and archive
comments) are used. This is not valid for versions under 1.00.
In this case you must use the OLDZIP option !

Relate: ZIPAutodescription, OLDZip
Dest. : All (when available)

ZIPAutodescription [filename]
Usage : This parameter is optional. If you supply this parameter, you
also have to supply a valid (and available) text-file. This
file will be appended to a ZIP-file as ZIP-comment.
The file can be of any kind (ASCII, ANSI or even invalid). MTA
reads only the first 255 bytes of the file and appends this to
the created ZIP-file.
Then using PKZIP of PKUNZIP on this file, these programs will
display the appended file as a header. Very nice option for
BBS systems !
You can not use this option in conjunction with Description !

Relate: Description
Dest. : ZIP

TempPath [path] {min free bytes}
Usage : This parameter is optional. If you supply this parameter, you
instruct MTA to pass parameters to the called (de)compressors
to use 'path' as their temporary work path. Most obvious is
the usage of a RAM-disk or EMS-disk for 'path'. Please supply
the full drive AND path, because MTA changes from and to
directories !
This option is only used for (de)compressors who have the
option to use a temporary path.
Mostly LHarc is bound to make trouble when the supplied
drive/path does not exist. There are also problems to expect
when there is too little space on the drive to contain LHarc's
temporary files.

By default MTA will look if there is 256K of free space on
the supplied drive. If there isn't, MTA will ignore the
TempPath option. If you want a lower or higher threshold, you
can supply a third parameter on the TempPath option. This
parameter has to contain the minimum number of free bytes on
the drive supplied in the second parameter. When you want to
ignore threshold testing, you supply a 0.

Relate: None
Dest. : All

MTATempPath [path]
Usage : This parameter is optional. Normaly MTA creates its own working
directory under the current (startup) directory. In some cases
you don't want to use this option (f.i. you have a large RAM or
EMS disk, or your current directory name is very long).
MTA stores the UNCOMPRESSED files in his temporary directory,
so when you supply MTATempPath, please keep in mind that there
must be enough room on the supplied drive to hold all uncompres-
sed files in the larges compression-file !
When you do NOT supply MTATempPath, MTA creates a directory
with a 8 character long name, reflecting the current date and
time in HEX representation. When running as a child (see the
chapter about Compression-In-Compression) MTA creates paths
with the name $.
Please enter the full drive and path (not a relative one) to
this option, because MTA changes directories frequently !

WARNING : The current version of DWC (A501) does NOT like to
see point in other directories than the LAST. F.i.
C:\ZIP.ZIP is your current path, when converting
MTA creates C:\ZIP.ZIP\[mtatemppath|ownpath]. DWC
does NOT like this and this can lead to serious
errors in MTA (error messages).

By default MTA will look if there is 256K of free space on
the supplied drive. If there isn't, MTA will abort.
If you want a lower or higher threshold, you can supply a
third parameter on the MTATempPath option. This parameter
has to contain the minimum number of free bytes on the drive
supplied in the second parameter. When you want to ignore
threshold testing, you supply a 0.

Relate: None
Dest. : All

FDUTempPath [path]
Usage : This parameter is mandatory when using the /D switch. When wor-
king with diskettes (e.g. convert entire diskettes from one
method to another one), MTA makes usage of two special directo-
ries (supplied in FDUTempPath and FDUTrashPath).
Read the chapter about the diskette option.

Please assign full drive and path names to this option. The
first time MTA run's, it creates the directory and leaves it
hat way for the following run's. You may also assign a already
existing path.

Relate: FDUTrashPath
Dest. : All

FDUTrashPath [path]
Usage : This parameter is mandatory when using the /D switch.
The FDUTrashPath contains all files who could not be moved
back to diskettes because of a lack of space.
Read the chapter about the diskette option.

Please assign full drive and path names to this option. The
first time MTA run's, it creates the directory and leaves it
hat way for the following run's. You may also assign a already
existing path.

Relate: FDUTempPath
Dest. : All

Usage : This parameter is optional. You can direct MTA to move ALL
(NON-compression files included) from diskette to the paths
supplied in FDUTempPath an FDUTrashPath. This option has only
meaning with the /D (diskette option) switch.
You should use this option when you are using the parameters
EXITBeforeFill and EXITAfterFill. When using this option, you
get an empty diskette to work with in EXITBeforeFill.

Relate: EXITBeforeFill, EXITAfterFill
Dest. : All

EXITBeforeFill program option option option
Usage : This parameter is optional. You can direct MTA to execute an
other program (or batch-file) before MTA starts with filling
the converted diskette. The obvious usage should be a format
of the diskette, but you can supply almost any program.
MTA preserves the screen BEFORE the external call is made. The
option only works with the /D switch active !
Please notice that when this parameter is used to FORMAT the
diskette, you also must supply AllDisketteFiles because only
then you are sure that the diskette is empty !
All parameters after EXITBeforeFill are passed to a child
DOS-shell (COMMAND.COM /Cyour commands follow here).

Relate: AllDisketteFiles, EXITAfterFill
Dest. : All

EXITAfterFill program option option option
Usage : This parameter is optional. You can direct MTA to execute an
other program (or batch-file) after MTA has filled the con-
verted diskette. The obvious usage should be a disk catalog
program, but you can supply almost any program.
MTA preserves the screen BEFORE the external call is made. The
option only works with the /D switch active !
All parameters after EXITAfterFill are passed to a child
DOS-shell (COMMAND.COM /Cyour commands follow here).

Relate: AllDisketteFiles, EXITBeforeFill
Dest. : All

EXITAfterCompression program option option option %1 %2 %3
Usage : This parameter is optional. You can direct MTA to execute an
other program (or batch-file) after MTA has recompressed a
file. The obvious usage should be to automaticly create a SFX
file of the compressed file, but you can supply almost any
MTA preserves the screen BEFORE the external call is made.
All parameters after EXITAfterFill are passed to a child
DOS-shell (COMMAND.COM /Cyour commands follow here). Inside
the parameters you can code three special parameters (%1, %2
and %3). They can occur everywhere inside the options.
When MTA calls the supplied program (batch) is passes all the
parameters but substitutes %1 with the path (without a trailing
backslash), %2 with the filename and %3 with the compression
type (e.g. ARC, LZS, ZOO).
You can use these parameters in a batch-file to trigger one
or more special functions, depending on the compressiontype.
When the called program (batch) does not use one or more of
these special parameters, you can leave them out.

You can blow MTA sky high with this option, when you are
doing some strange things in the exit. MTA will look after
exit for the following things:
- Is the original compression file still available. MTA ig-
nores the remainder of the process (for this file) when
you delete the file in the exit, so this should not give
any problems;
- Is there a new file with the same name but with the exten-
sion .COM or .EXE. If so, all manipulations to the original
compressed file are also carried out on the .EXE and .COM

Relate: None
Dest. : All

EXITBeforeStart program option option option
Usage : This parameter is optional. You can direct MTA to execute an
other program (or batch-file) before MTA starts the search
and conversion of the files. This could be handy when you
use a cache device. You can instruct the cache to (temporary)
disable its execution because the conversion could influence
the optimalisation of the cacher. Due to the whole process
of MTA, the only benefit you will have when the cacher is
active, is one per archive (unpacking, remembering the un-
packed files, if not to big..., packing).
Besides of cachers you can use this exit for any general

Relate: EXITBeforeEnd
Dest. : All

EXITBeforeEnd program option option option
Usage : This parameter is optional. You can direct MTA to execute an
other program (or batch-file) before MTA ends.
This exit could be used to reverse the process started (or
stopped) in the EXITBeforeStart, but you can inplement any
general purpose routine overhere.

Relate: EXITBeforeStart
Dest. : All

IncludeFile [drive:path\filename] [newname] {CF$}
Usage : This parameter is optional. You can direct MTA to include
the supplied file (second parameter) into every converted
compression-file. Inside the compressed file this file has
the same name or [newname] when you supply the third para-
meter (must only be a filename without path and drive).
This option comes in handy when you want to include a file
with information about yourself (or your BBS) into any up-
load file converted with MTA.
LHarc (LARC) can work with special files like ! and the
AUTOLARC.BAT file, this option can create them for you !

MTA copies the file to its own special temporary path every
time a compressed file is created. The original file is left
intact. You MUST supply a complete path to the original file-

There can be up to 5 IncludeFile options in the MTA.CTL. All
files will be included in EVERY converted extension. When you
leave out the option, nothing is included (of course !).

| If you add CF$ as the last parameter, you let MTA know that
| the file is compressed. MTA will then recompress the file
| when creating the new compression file. In this way, your
| includefile can have a transparent format.

Relate: ExcludeFile
Dest. : All

ExcludeFile [filename]
Usage : This parameter is optional. You can direct MTA to exclude
the supplied file (second parameter) from every converted
This comes in handy when your favourite BBS includes files
like ! and in the files he supplies (sorry for the
bad joke R.).
LHarc (LARC) can work with special files like ! and the
AUTOLARC.BAT file, this option can exclude them for you !

There can be up to 20 ExcludeFile options in the MTA.CTL. All
files will be excluded in EVERY converted extension. When you
leave out the option, nothing is excluded (of course !).

When you are a BBS and you get uploaded files with files
like '!' or 'TheGost.BBS' and you want to convert the files
for YOUR BBS, you should know that MTA first excludes files
and then includes the new ones. So in the case of the '!'
file you could create a MTA.CTL with:

ExcludeFile !
IncludeFile C:\FILES\MY.! !

and the ! is first excluded and then the MY.! is included
as ! (so its a replace).

Relate: IncludeFile
Dest. : All

MoveToDir [path]
Usage : This parameter is optional. You can direct MTA to move all
converted files to another path (option is only valid when
NOT using /D).
Please supply full drive and path names to this option !

WARNING: When you use MoveToDir in conjunction with the
ExitAfterCompression option you have to know the
following extra's:
- When you create an extra file in the exit with
the extension .COM or .EXE and in the same di-
recory as the original compressed file, MoveToDir
moves these files also. When a name-like file al-
ready exist in the MoveToDir target directry, MTA
gives you a warning and leaves the file where it
was. This does not go for the original compressed
file !
Normaly this would not be a problem but when you
create such file with LHARC.EXE (1.12b) as the
result of the creation of a Self-Extraction-File,
LHarc.EXE asks you 'Overwrite [Y/N]'. This would
be very nasty when running unattended ! Please
make a check for the target-file before LHARC
creates the SFX-file !
- When you delete the original compression file in
the exit, MTA will 'see' this and take no further

Relate: None
Dest. : All

Usage : This parameter is optional. When running in an unattended
operation like a BBS, so far, the only way not to convert
all files every time MTA was called, was by meanings of:
- Special file masks;
- Move all converted files to another directory
The OnlyArchive option lets you change only new archives
that validate the file-mask.
It is presumed that all new compressed files have their
archive-bit in the directory set to ON. When you include
this option, MTA only looks at files that validate the

file-mask AND have their archive-bit set to ON.
After conversion of the file, MTA sets the archive-bit to
OFF, so the next time the file is not selected.
This option only works when MoveToDir (/M) is NOT used. MTA
assumes that when you use MoveToDir (/M) the files are gone
in the directory that MTA converts.

WARNING: Because MTA sets all the archive-bits of converted
files to OFF, there could be problems when working
with backup-program's that only backup files with
the archive-bit set to ON.

Relate: MoveToDir
Dest. : All

LogPath [path]
Usage : This parameter is optional. When MTA runs without this option,
it creates a MTA.LOG in the CURRENT (or /W) directory. When
you run without NoLog, this could cause scattering of MTA.LOG
files all over the place.
When you want to the log-option, supply the full path to the
log-file (this also means that when MTA has to create a log
it will create it on the right spot).
Please supply full drive and path names to this option !

Relate: None
Dest. : All

FreeMemory nnnnnn
Usage : Most BBS SysOp's (author included) tend to use programs under
a child (shell) process of their running BBS or other programs.
MTA consumes a lot of memory (around 128k). This is needed for
all its special options which are many (as you have already
seen). The errors MTA creates when a shelled (de)compressor
abort due to memory shortage are nasty to work away (empty
the temporary directory and its optional trees, deleting this
directories and so on).
When MTA starts, it looks for a reasonable number of free
bytes to work with, after MTA has loaded and created ALL its
own structures. Normaly this would be 256K allowing you to
run every implemented (de)compressor.
You can alter this number of bytes.

You could decrease it when:
- You don't use DWC to around 190K
- You don't use ZIP to around 170K

You must increate it when:
- Using large shells in EXITBeforeFill, ExitAfterFill or

With the optional FreeMemory option, you can set memory
requirements to your own calculated number of bytes. Please
observe that in most cases you have to experiment with the
The primary usage of the memory requirement test is to
warn you (with a premature abort) when you are running in
a child (shell) process.
When you want to ignore the test, set FreeMemory with a
very large number of bytes.

Relate: None
Dest. : All

CompressionType ttt
Usage : With this option you instruct MTA what type of target files
MTA will create (the default is ZIP).
Valid types (ttt) are ARC (SEA), PAK (NoGate), ZIP (PkWare),
ZOO (R. Dhesi), LZH (Yoshi), DWC (D.W. Cooper), OWN (any-
thing) and LZS (Miki/Okumura).
You can use one of stated options if you own that type of
(de)compression program. Only 1 CompressionType is allowed.

Relate: None
Dest. : All

FilesBBS {optional name}
Usage : With this option you instruct MTA to change converted file-
names in the file FILES.BBS. FILES.BBS must be in the same
directory as the files MTA works on.
Changes are only made correct when the filename in FILES.BBS
has the format fffffff.eee and completely uppercase or com-
pletely lowercase. A mixture is not allowed !
The changes to FILES.BBS are GLOBAL. This means that if the
file-comment also contained the old filename, it is also
changed to the new filename !
Changes in the FILES.BBS are made after every conversion.
IF MTA aborts on a file, all previous filenames are changed

When you run an ExitAfterCompression shell and in this shell
you convert a compressed file to a SFX-file and you delete
the original compressed file, MTA changes the FILES.BBS en-
try to the SFX-name. If you keep the compression-file after
making a SFX-file, MTA changes the FILES.BBS to the new name
of the compressed file AND NOT the SFX-file.
So, for example, you have A.ZIP and you convert it (with
MTA) to A.LZH and in the ExitAfterCompression you create
a A.COM and delete the A.LZH, the FILES.BBS is changed from
A.ZIP to A.COM. The same goes for .EXE. When both .COM and
.EXE are created (?), MTA takes the .COM.

On some Bulletin Board Systems FILES.BBS has another name. Al-
so there are 'normal' people who maintain a list of their files
with (of course) another name than FILES.BBS.
For those users it is possible to overrule the name FILES.BBS
with another name (say MYFILES.LST) by adding that optional
name as the second parameter of the FILES.BBS option. This
must be the name only and NOT the path (or drive). MTA still
assumes that this file is present in the working directory !

Relate: OnlyFileNameInFILESBBS
Dest. : All

RunTime [seconds]
Usage : This option can instruct MTA to run for a maximum number of
seconds. This could come in handy when you want to include
MTA in a BBS event, but also normal users can benefit of this
The number of seconds can go from 0 (same as leaving out the
option) to 2147483647 (same a eternal). You have to keep in
mind that the actual time MTA takes can be longer than the
number of supplied seconds. MTA checks this option after
every converted file (so at least 1 files is converted). If
there is 1 second left, the next file is converted. So MTA
can run as long as RunTime-1+(time for the last compression
in seconds) seconds !
MTA displays the remaining seconds. If there are more than
5 minutes left the display is green, turns to yellow when
there is between 2 and 5 minutes left, turns to red when
there are 2 minutes or less left. When time is up, MTA does
a 'clean' abort.
| RunTime does not function in a MTA-Child process nor when
| you are converting a diskette (/D option).

Relate: None
Dest. : All

Usage : With this option you instruct MTA to change only the file-
names in the file FILES.BBS and not the comment (if it in-
cludes the same filename).
The filename MUST start on position 1 of the FILES.BBS file
and must have the format ffffffff.eee !
You MUST use this option if the filename in your FILES.BBS
contains MIXED case (like MyFile.Bbs).

Dest. : All

Usage : With this option you instruct MTA to 'keep' strange extensions
in the target file. This only works when the source file has
no valid extension (ARC,PAK,PKA,ZIP,ZOO,LZH,LZS,DWC,COM,EXE)
and only if the target is something else than DWC (DWC forces
the extension to be DWC).
So if you have a file JUNK.CPR (it is realy a ARC file) and
you convert to ZIP, the target name stays JUNK.CPR. If the
source is names JUNK.LZH (a ZIP file ) and you con-
vert to ZOO, the target name will be JUNK.ZOO.

Relate: None
Dest. : All

Usage : The most powerfull but also most tricky option is last. The
SFXFiles option is optional (thank god).
When you include SFXFiles, MTA will try to read every file
(if the filename is validated to the commandline filespecs)
and first test if it's a normal compression file. If it is
NOT, it will read the file again (up to 32K of every file)
and test if the file is a ARC (SEA/NoGate/PKWare), PAK, ZIP,
LHarc or Larc compatible SFX-file (self extraction .EXE or
.COM file). If it is, it will try to convert the file to a
temporary file and then convert it to the compression system
you have supplied.
There can occur numerous errors in this test/conversion, but
on my system 99.99% of all SFX-files are done correctly. If
the SFX is not correct, MTA will go on (or abort depending
on the error) but nothing happens with your SFX-file. The
change to get 'Compression' or 'Decompression' errors is
somewhat bigger.
I should suggest to you, to use the option with care, of
to use the /SFX switch on the command-line as a temporary

Relate: None
Dest. : All

OwnCompressPath {drive}{path}[filename]
Usage : You can instruct MTA to include an extra compressor of your
own taste. This can be almost any compressor, but look in
the paragraph 'Customized compression' for the specs on
With this option you supply the full filename (name and
extension and optional path and drive) of the customized
compressor. This has to be a valid filename.

Relate: All Own-options
Dest. : OWN

OwnDeCompressPath {drive}{path}[filename]
Usage : You can instruct MTA to include an extra decompressor of your
own taste. This can be almost any decompressor, but look in
the paragraph 'Customized compression' for the specs on
With this option you supply the full filename (name and
extension and optional path and drive) of the customized
decompressor. This has to be a valid filename.

Relate: All Own-options
Dest. : any, source is OWN

OwnCompressCall [parameters to use]
Usage : When you include a customized compressor, you have to supply
the call to that compressor. This call must do the following:
- Compress all files in the current path to the compression-
- delete all original files from the directory;
- or compress all files with a MOVE (not COPY) option;
The syntax for the [parameters to use] depends on the com-
pressor. Look in the paragraph 'Customized Compression' for
an example. There is one option you can include in the
[parameters to use] and that is the %1 combination. MTA will
substitute %1 with the name of the compressed file.

Relate: All Own-options
Dest. : OWN

OwnDeCompressCall [parameters to use]
Usage : When you include a customized decompressor, you have to supply
the call to that decompressor. This call must do the following:
- Extract all files from the compressed file to the current
The syntax for the [parameters to use] depends on the decom-
pressor. Look in the paragraph 'Customized Compression' for
an example. There is one option you can include in the
[parameters to use] and that is the %1 combination. MTA will
substitute %1 with the name of the compressed file.

Relate: All Own-options
Dest. : All, source is OWN

OwnCompressLowErrorRC [errornumber]
Usage : When you include a customized compressor, you have to supply
the LOWEST doserrorlevel given by the compressor when some-
thing is WRONG. This must be any number between 1 and 255.

Relate: All Own-options
Dest. : OWN

OwnDeCompressLowErrorRC [errornumber]
Usage : When you include a customized decompressor, you have to supply
the LOWEST doserrorlevel given by the decompressor when some-
thing is WRONG. This must be any number between 1 and 255.

Relate: All Own-options
Dest. : All, source OWN

OwnExtension [extension]
Usage : When you want MTA to 'see' your customized compressed files,
you have to supply the name of the extension MTA has to look
for. This can only be 1 extension (e.g. OWN).
For every file that confirms to the supplied wildcards, MTA
will FIRST look if it has an 'OwnExtension'. In that case
MTA will decompress the file with the supplied decompressor.
If the destination is OWN, MTA instruct the customized com-
pressor to create files with extension 'OwnExtension'.

Relate: All Own-options
Dest. : All, including source OWN

Usage : When you implement an own compressor, you have to tell MTA
if that compressor is capable of handling recursive support.
This means that the compressor will look in the current and
all lower directories. If the customized compressor can not
handle recursive support, you have to leave this option out.

Relate: All Own-options
Dest. : OWN

Customized compression

From release 7.01 and up, MTA can work with customized compressors.
This was implemented for special (de)compressors (maybe written by
your own hand) but it also comes in handy when a new version of one
of the common compressors hit the marked and MTA can not (yet) work
with some of the new options.

With an example I will show you how to implement a customized com-
pressor, but first there are some basic rules for the new (de)com-
- It must report an error with an errorlevel higher than 0;
- The first errorlevel that reports an error can not be followed
by a higher errorlevel that does NOT report an error;
- The compressor MUST have an option to delete the files it com-
presses after compression;
- The decompressor CAN have recursive support. This also goes for
the compressor;
- You can NOT use a batch-file to call the compressor/decompressor.
Probably I will include this in a higher version of MTA;

Now the example. Suppose we are implementing the compressor CRA.
CRA is fully compattible with the popular ARC but works backward
and not foreward (maybe YOU like this). The calling syntax is just
like SEA's ARC (c). Now how do you implement this program:

OwnCompressPath C:\SYS\ARC\CRA.EXE
OwnCompressCall m %1 *.*
OwnCompressLowErrorRC 8
OwnDeCompressPath C:\SYS\ARC\CRA.EXE
OwnDecompressCall e %1
OwnDeCompressLowErrorRC 8
OwnExtension CRA

MTA will substitute %1 in OnwCompressCall and OwnDeCompressCall
with the name and location of the compressed file (something like
C:\TRASH\PATH\MYTRASH.CRA), the rest is up to you.
The decompressor has to decompress the files in the CURRENT directo-
ry, the compressor gets its files from the CURRENT directory.

Please feel free to experiment with this options. Next releases of
MTA will extend the features a lot, but this option can help you to
implement some basic compressors.
When you have to replace a common compressor (like ZIP) with a newer
version, the OwnExtension ZIP will do the trick. You must include
all other OWN-options and you have to create files with a destination
of OWN (/OWN). For savety you can comment out the other ZIP-related
options !!!

Recursive support

MTA carries a complete recursive support. This means that MTA will
carry the (relative) path-names (if available in the source file)
into the target file (if the target compression method supports
At this moment ZIP, LZH, LZS and ZOO can contain pathnames. MTA
will look at the target method to determine if the source is de-
compressed with or without path-names. MTA will clean all the
created paths and remove them from under its own temporary path
when compression is done. This means that MTA carries a complete
recursive directory system inside itself.


This is a nice (I think) feature. You should thank Reinier de Groot,
Eef Hartman and John Lots for this feature.

The facts:

- Many compressed files contain extra (also) compressed files with
collections of supporting files (like batches for a communication
- When converting say ZOO files (with ZOO files inside the original
ZOO file) to ZIP, it should be nice als to convert the included
ZOO files to ZIP, giving a ZIP files with ZIP files inside;

My history (or 'why wait until now'):

- In its original form, MTA took about 140K to do 'it's thing'. I
should urge to say that I have done the utmost to optimize all
used variables and to keep the code as small as possible, creating
a mixture of structured and spagetti code (it is inherent to create
spagetti when searching for speed and size);
- I should also like a 'convert compressed in compressed' option, but
again I urge to say that I would only implement this option when
giving (almost) the same options as a normal conversion of a file;
- Doing this with only 1 level of 'compression inside compression'
should cost (again) 100K. Even when the whole MTA program could
be converted to a recursive executable program, memory could not
be limited to a normal size;
- Forgetting the facts above, I would like to see a real conversion.
This means that MTA should convert compressed-in-compressed files
- recursive support;
- description support;
- more levels of compressed-in-compressed (I mean a A.ZIP containing
a B.ZIP containing a C.ZIP containing.... and so on);
This is far more than the easy way where most other programs come
in the picture. I mean, decompressing the original and adding (1
level only) of a next compression file into the original one, thus
(possible) overwriting existing files in the original one.

Facts and fiction:

After reading questions from two users again, I was sure that the
compression-in-compression option was needed. I even got a little
crazy about the whole thing. But after a long and hot night (no
sleep !) I had it.
When I could rewrite MTA in a way that it could called again with
a fresh start, everything would work, but what about memory con-
straint. That was the least of the problems. There are enough program
swappers around !
Depending on the swapper you use (if any) around 1500 to 5000 bytes
are left in memory, the rest is swapped out. Diskette users are
urged to buy a large EMS-card (with every swap around 120KBytes are
set aside) or a hard-disk.

The number of levels depends on two things:
- The length of the source-directory name and the length of the
directory name the called (de)compressor is in;
- The number of bytes available;

When you start with a directory called C:\A the possible number of
levels is higher than when you start with C:\DOWNLOAD\DOWNLOAD.
This is due to the maximum number of characters a directory name
can be (67 bytes).

When working in directory C:\FIRST, MTA normaly creates the directory
C:\FIRST\xxxxxxxx (xxxxxxxx is a Hex representation of the current
time and date with a fixed length of 8 bytes). For every 'level' of
compression files inside the primary compression file, MTA creates
a directory with the name $ under the previous, thus creating
C:\FIRST\xxxxxxxx\$ for the first level, C:\FIRST\xxxxxxxx\$\$ for the
second level and so on.

The following discussion is based on a swapper that releases 124K
with every swap.

When MTA starts is 'takes' 128K. When processing the first 'level'
of compressed-in-compressed, it gives back 124K and holds 4K. The
second level needs 128K, but gives away 124K when working on the
following level.
Every 'give away' is swapped to EMS or DISK when EMS is not availa-
ble or full.

In a diagram (when converting a '2 level' compression-in-compression
file (the numbers are the total bytes occupied by the MTA program(s)
in memory):

MTA (128K) ------> MTA (132K) ------> MTA (136K)
A.ZIP ............ files
B.ZIP............. files

You should add the number of bytes needed for the largest (de)com-
pression program (around 250K), so with a 640K machine, 60 levels
should be the limit (this is 59 times MTA in memory and around
60 * 12k = 7,6 MegaBytes in EMS or on Hard-disk, so be prepared !).

Recursive support inside compression-in-compression files, sounds
like fiction, but with this structure its a FACT. MTA maintains its
complete recursive support with EVERY level of compression-in-compes-
sion !

MTA Touching System

MTA carries a complete file-touching (is (re)setting file time/date
stamps) system. This system works like MTA's small brother MTZ and
another member of the BPPC-programs (ATS).

What can this touching system do ? Well thats easy to tell. Your
compressed files all carry a file time/date stamp. In fact, most of
these time/date stamps say nothing about the file. Sometimes it's the
time/date of creation, sometimes the time/date of download, something
non of the kind.

Some of the compression programs carry a function to set the date of
the compressed file to the highest (or lowest) date in the archive,
but not all the compressors know of this option and when it does, it
has no meaning to you when you get the compressed file in it's com-
pressed form.

MTA has it's build-in touching system to supply you a with this
function, even when the target compressor does not have this function.
MTA extends this feature by letting you choose from 4 kinds of file
touching. These are:

- Touch compressed file with current date (TOUCHCUR parameter);
- Touch compressed file with the lowest date IN the compressed
file (TOUCHLOW parameter);
- Touch compressed file with the highest date IN the compressed
file (TOUCHHIG parameter);
- Leave the compressed file's time/date as it is (supply non of the
three paramateres above or supply /F to the command-line);

There is one thing you must observe ! MTA can give a message (depen-
ding on the WarningTime parameter) about the touching. In fact there
are two possible errors:

- A file IN the compressed file has an invalid date;
- All files IN the compressed file have an invalid date;

An invalid date is a date lower than 01-01-80 (00:00) or higher than
the current date and time.
Messages of these kind can have tho meanings:

- The one who created the compressed file has done something strange
with time/date stamps;
- Your own current date on your PC is incorrect (lower than the ac-
tual date);

|You special cases you want to ignore the time component in a date/time
|stamp. There is an option available for this feature. Also you can in-
|struct MTA to ignore dates that are to high.

The last of the two is the most dangerous and you should look into
it at once !

|Optimal sizes
|From release 9.01 of MTA there is a new feature available. You can
|now construct the smallest compression file from a selection of
|compression programs. All you have to do is to add a third parameter
|to the ..PATH options in MTA.CTL. When you supply a 'Y' as the
|third parameter (after the path and name of the compressor), you let
|MTA know that it can use this compressor as one of a selection of
|compressors that are called to obtain the smallest compressed file.
|MTA optimizes like this:
|- Supply at least 2 (or 1 in the case of ZIP) compressors with the
| 'Y' option;
|- Call MTA with the /OOA switch;
|- MTA decompresses the compressed file;
|- MTA compresses the file with all of the compressors with 'Y' as
| the third parameter. In the case of PKZIP 1.01 (no OldZIP supplied),
| MTA tries both -ex and -eb;
|- MTA selects the smalles compressed file and will create this one
| for you as the target.
|This all means that you can get a mixture of compressed files. Only
|when you include only ZIP as a optimize compressor (only 1.01>) you
|always get ZIP's. In case of all other compressors it is useless
|(and time consuming) to only add 1 optimize compressor because in this
|case MTA will do the same thing twice.
|To keep disk-space inside limits, MTA will delete every temporary
|compressed file after its creation. This means that when a file is
|LZH and the optimizer will choose LZH, you are compressing the file
|twice, but the disk-space used will be the same as when you run MTA
|without /OOA.

Diskette option

MTA's greatest power lies in it's diskette option. With this option
you can easy convert full diskette's (with compressed files) to an-
other compression system.
When activating the diskette option (with the /D switch) MTA goes in
recursive state and will ask for the next diskette when the previous
one is done.

MTA's diskette option depends on a number of parameters in MTA.CTL.
These are FDUTempPath and FDUTrashPath. These parameter MUST be
available (and correct) in the MTA.CTL file.

What steps does MTA take when converting a diskette:

- Read all (selected) files on the diskette and decide which are
compressed files and which are not;
- Move (copy + delete from source) these files to the path supplied
in FDUTempPath;
- Create a temporary directory (MTA$$$$$.MTA or one you named in the
- Take a file until no files left;
- Decompress the file in FDUTempPath to the temporary directory;
- Compress the file to the new system and put the result in the
- Execute the 'Before' EXIT if available;
- Move all files (from big to small) back to the diskette until there
is no room left on the diskette or all files are moved;
- If there was no room on the diskette to store all files, move the
remaining files to FDUTrashPath and keep them there until a next
diskette comes along with enough space to hold one (or more) of
the files in FDUTrashPath;
- If there was still room left after the move to diskette, MTA looks
in FDUTrashPath to see if there are one or more files that will fit
onto this diskette. If so, MTA moves this(these) file(s) to this
- Execute the 'After' EXIT if available;
- Clean up the temporary directory;
- Ask for next diskette or stop;

From the previous description you could learn three things:

- The FDUTrashPath and FDUTempPath directories remains intact after MTA
ends. FDUTrashPath could contain files, FDUTempPath should be empty;
- When the FDUTrashPath directory gets to big (you are using a target
compression program that creates bigger files than the original ones)
you supply MTA with on or more (almost) empty diskettes and MTA will
move files from FDUTrashPath to diskette;
- You could move all your new incomming files (even NON-compression
files) to the FDUTrashPath directory by hand. MTA will move these
files to a diskette when time (and diskette space) comes.

One final word. As you have noticed (I hope) you can add unlimited
power to MTA's diskette option with the 'Before' and 'After' exits
to another program. Please read the EXITBeforeFill and EXITAfterFill
options in MTA.CTL.

Screen control

MTA makes use of three methods of screen control. Two of them are
customized by the user, one is fixed.

For the EXIT options, MTA makes usage of a full-screen window. This
means that MTA will save its current screen and supply the EXIT with
a blank screen. This is done to maintain screen integrity when pro-
grams are called that make use of direct video writes.

For its normal operation MTA can use one of two different kinds of
screen usage. Each of the options has it's advantages and disadvan-

a) Usage of Int29 routines
MTA hooks a Int29 handler and maintains a small window from line
19 to 25 on a normal screen;
- Advantages
- When you are using Int21 alike TSR's like PRINT or a caching
device, you won't have problems with time-outs that can occur
when you use the 'brutal' Int21 routine;
- When you decompress ZIP-files with a ANSI-header, MTA will
display the header on screen. In fact complete ANSI control
is available with this option. See disadvantages;
- The Int29 option is fast while maintaining 'normal' interrupt
- Disadvantages
- Because it is possible to display in ANSI mode, it is possible
that MTA's whole screen is cleared. The Int29 function will
not look at ANSI control characters and 'out of window bounds'
can happen. For this reason MTA will save its current screen
before Int29 is installed. This will take around 3K of extra
memory while running;
- I am not sure if the Int29 sollution will work in a DOS 4.xx
(or higher) environment;
MTA uses Int29 when you supply the FullScreen option in MTA.CTL
of when you supply /S when MTA.CTL does NOT contain the FullScreen

b) Usage of Int21
MTA hooks an Int21 handler and maintains a little window from line
19 to 25;
- Advantages
- 'Out of bound' errors will never occur. Every display is done
inside the window EVEN when ANSI is displayed, but altough
ANSI characters are displayed, they are NOT interpreted. This
will cause something like [35m[0mAll[34m the[0m on the
- You are protected from some (not to be described) viruses;
- (De)Compression is a bit faster than normal because some of
the 'outside' interrupts are masked. See disadvantages;
- Disadvantages
- ANSI escape sequences are displayed but not interpreted. This
can cause some garbage inside the window;
- The Int21 handler 'snatches' the interrupt and masks some
other interrupts. This can cause some problems. When running
programs like PRINT or a cacher this can mean timeouts for as
long as MTA is in charge resulting in halted printers or in-
correct behaviour of cachers;
MTA uses Int21 by default (maby I will change this when there are
no problems 'in the field').

When you are in doubt, please take the following in mind:

- When you run MTA in an 'empty' machine, and when you have no
problems with the fact that ZIP descriptions are displayed as
garbage, use the default option (Int21);

- When you run a machine with print-spooler, cacher and or a multi-
tasker, use the Int29 option, unless you use DOS 4.xx or higher.
When using DOS 4.xx, experiment first with this option. If no
problems occur you can use the fullscreen option;

I dropped the support for a real full-screen window in the (de)com-
pression phase. Most PC's are that fast that the screen swapping
was to fast to be nice.....

|WARNING: In one of the next versions ScreenControl is dropped. MTA
| will only work with (a new) INT29 routine. This routine is
| both faster and saver than the current one. MTA 9.02 is
| currently in BETA......

MTA's running environment

MTA is fully prepared to be swapped from memory, but only in the
case when MTA has to call itself or when the EXIT's are executed.
In the case of the (de)compressor shells, swapping is not implemen-

When running one or more of the possible EXIT's, you must keep in
mind that you do NOT load a Terminate and Stay Resident (TSR) pro-
gram. MTA will try to recover from those kind of actions by saving
and unhooking all important vector before the EXIT is called and
restoring and hooking them after the EXIT is terminated. Eventualy
is is possible for MTA to complete it's own execution, but there is
a chance that MTA's termination will hang the machine or leave the
memory fragmented.

Command-line switches

MTA is driven with the MTA.CTL file, but I can imagine that you want
to use (or change) some of the options temporary. This can be done
with a number of command-line switches.

The syntax to start MTA is:

MTA filespec filespec filespec ... [switches]

Switches must start with a slash ('/') and are separated with one or
more spaces.

You can supply MTA with a maximum of 25 different filespecs (e.g. *.ARC
*.PAK *.ZIP). The various filespecs have NO meaning when you use the
/D switch and MTA.CTL contains AllDisketteFiles !

A complete list of switches follows:

Normaly MTA converts files to the system supplied in the MTA.CTL
option CompressionType. With this switches you can overrule the
current CompressionType with another system. When you supply
more than one of these switches, the last will be active.

/D or /D=d:
This is a 'stand alone' switch, meaning that it has no counterpart
in the MTA.CTL.
This switch must be included when you want to activate the diskette
support (FDUTrashPath and FDUTempPath must be available in MTA.CTL).
When you supply /D, MTA forces to the A: drive, when this is not
what you want, you can supply /D=d: (where d: is a valid drive) to

Normaly MTA works on files in the current directory. When running
unattended or in a BBS configuration or in a batch on more than
1 directory, you should supply /W with a valid pathname and MTA
will use this path as its working path instead of the current

One of these switches (when used) overrule the current option in
MTA.CTL for the MTA touching system.
/C forces to touching on current-date, /H on highest in compressed
file, /L on lowest in compressed file, /F to leave the file date/time
as it was before conversion.

/M or /Mpath
Only /M makes the current setting of MoveToDir in MTA.CTL inactive.
/Mpath (where path is a valid path (absolute or relative to the
current path) forces MTA to use this path to move files to after
conversion (even if MoveToDir was not supplied in MTA.CTL).

This parameter overrules the options for ZIP-compression options in
MTA.CTL. You must code the compression options just like you do when
running ZIP, but if you use more than one option (like -ea4 -eb2),
you must NOT separate them with a space but with an underscore (like
Refer to the PKZIP documentation (-eax, -ebx, -exn, -ex and -es options).

/Z or /Zfile
You can assign a text-file to be added to ZIP files (only when the
destination is ZIP) when you use the /Zfile option. [file] must be
a valid file. You can (must) supply path and drive to the file.
Refer to ZIPAutoDescription in MTA.CTL.
/Z blanks the current setting of ZIPAutoDescription (if set).

When you supply /P, MTA does not write to the MTA.LOG.

You can disable the inclusion (/DI) or exclusion (/DE) of files
from the converted files even if the options in MTA.CTL are set.

These options disable the working of the exits. /E1 disables the
ExitBeforeFill exit, /E2 the ExitAfterFill and /EG the common
ExitAfterCompress exit.

This option toggles the FullScreen option. If this option is not set,
using /S sets the option. If is was set, using /S disables it.

/U or /Ufilename
This option toggles the FILESBBS option. If this option is not set,
using /U sets the option. If is was set, using /U disables it.
You can also set another filename then the default FILES.BBS. In
that case you can code /Ufilename, where 'filename' is the name of
your own FILES.BBS-alike file (only supply the name, not the path).

This option toggles the SFXFILES option. If this option is not set,
using /SFX sets the option. If is was set, using /SFX disables it.


This option toggles the KeepAbnormalExtensions option. If this option
is not set, using /LEA sets the option. If it was set, /LEA disables

This option disables any RunTime parameter in the MTA.CTL file. This
comes in handy with BBS setups where the SysOp wants to use MTA as a
stand-alone program.

This option toggles the OnlyArchive option. If this option is not set,
using /ONA sets the option. If is was set, using /ONA disables it.

|This option activates the MTA optimize option. All files are optimized
|to the smallest amount.
|This option toggles the NoArcInArc option. When this option is availa-
|ble it is set to OFF, otherwise it is set to ON;

Finaly there is on switch YOU MAY NEVER USE YOURSELF. I mention the
switch, because some of you would find it out, even if I did not
mention it and I think you can better know what it does.
/CHILD is used by MTA to call another MTA. The child MTA uses the
same options (in MTA.CTL) as the parent and that is not what should
happen. /CHILD overrules all special options in MTA.CTL that may
not be used when converting Compression-in-Compression files !

One switch is very important for unattended operation in a BBS en-
vironment. This is the /W[path] switch.
With this switch you can instruct MTA to work on the directory you
have supplied in [path] instead of the current directory. This switch
(in combination with the FilesBBS option) can be used to auto-convert
all your uploads to your beloved compression system. An example:

Your upload-paths are C:\USERS\UPLOADS and D:\FRIENDS\UPLOADS (both
contain a FILES.BBS file). Your compression system is LHarc. You
can put the following lines in you daily-event batch:


When MTA is only used in a BBS environment, you could code the
OnlyArchive option in MTA.CTL and leave the /ONA switch out.

Two pieces of advise:

- You can still use the MoveToDir (/M[path]) option but you must under-
stand that the FILES.BBS in the original directory is altered before
the move and the MoveToDir doesn't carry the entry in FILES.BBS over
to the new directory. If you want to be sure, supply the /M switch
to the lines above. Also you must understand that running unattended
means that any exit (e.g. the ExitAfterCompression) must run unat-
tended too !

- Please set the WarningTime to a low value or to 0, otherwise MTA
will wait for nothing when a warning occurs !

Aborting MTA

There is only one way to abort MTA before it's normal end. When MTA
is busy, you can press [ESC]. MTA will (in time) display that it
will terminate soon and terminates after the CURRENT file is con-
verted. You can release the termination by hitting any other key.
In that case MTA will continue.
The termination option does NOT work with the /D switch !!
Apart from terminating with the ESC-key, you can limit the execution-
time with the RunTime option (see MTA.CTL).

LOG file

MTA makes a log of almost everything (unless you specify NoLog in the
MTA.CTL file or supply /L as a runtime switch).
You can browse thru the log with a program like V.Buerg's LIST or with
the 'good old' TYPE command.

Depending on the number of files MTA has to convert, the MTA.LOG file
can get very large. I have supplied a program (MTL.EXE) to solve this
With MTL.EXE you can make a statistical review of your log-file. In
addition, you can instruct MTL to shorten the log-file. MTL will re-
write the MTA.LOG file with only the total counters sofar. The next
run MTL will 'see' this counters again and ajust the current counters
with these values.

MTL depends on the format of the log-file. Therefor you should not make
any changes to the current log-file, but make a copy of the file and
work on the copy and not the original.

If you get tired of the log, delete it, and MTA will create a new one.

When MTA calls itself as a child invocation, the child MTA does not
do any logging !

The (de)compressors

As already stated, MTA depends on the ORIGINAL compression/decompression
programs. As you have seen, you can instruct MTA to look for these pro-
grams in fixed directories.
If you don't supply fixed paths, MTA will search in the current direc-
tory, the directory where MTA.EXE is in (only DOS 3.xx) and the DOS-path
for these files. When you own a rather slow HDU (or machine), it could
take several seconds for MTA to search for all (de)compressors. In these
cases, use the MTA.CTL file to point out where these programs are.

There is one little trick you should know of. Of course you know that
there was a 'war' going on between SEA and PKWare. NoGate's PAK (also
a very nice program) can do best of both worlds and more.

I am no judge, and I will not make any judgements but I find that I
should respect the results of the 'war'. I can imagine that some (or
many) of you have always used PKWare's program's and don't own a copy
of ARC (not even a evaluation copy), but others have both programs.

PAK.EXE is downward compatible with (old) PKWare and PKWare is downward
compatible with ARC.EXE. Depending on the internal structure of the
source file, MTA will take ARC.EXE first, then PKWare and then PAK.EXE.

Concerning the destination options, when you ask for a destination
(CompressionType) of ARC, MTA will only work when you own a copy of
ARC.EXE. It is NOT possible to create a destination of ARC with the
PKWare or Nogate programs !

MTA will search for the following programs if you don't supply the names
in the MTA.CTL file:

- PAK.EXE (NoGate);
- DWC.EXE (Dean W. Cooper);
- ZOO.EXE (R. Dhesi);
- LHARC.EXE (Yoshi);
- LARC.EXE (Miki);

Executing MTA

MTA is started in the directory where the source-files are. Up to now,
there is no (recursive) sub-directory support. The syntax is:

MTA [filespec] .. [filespec] [switches]

[filespec] must be a valid DOS filespec (wildcard included) like *.ZIP,
ABC*.* or MYFILE?.?RC.

You can supply up to 25 different [filespecs]. When you supply a path
to a [filespec] (like C:\TEST\*.ZIP), MTA strips the path ! When you
want to work in another path than the current directory you can:

- Change the directory (ChDir);
- Use /W[path]

If you do not supply an extension, MTA adds .* to the filespec, so
the filespec MTAWOW is extended to MTAWOW.*. If you don't supply a
filespec (lazy bones), MTA uses *.* as filespec.

See the documentation on MTA.CTL and the run-time switches for a
complete understanding of MTA's functions.


Of course no one is perfect, so it is possible that you (or I) made
a mistake. When MTA blows sky-high, you could get a message (only
when needed) about some directories.

When MTA starts its process, it creates a temporary path with the
name supplied in MTA.CTL or as a 8 byte HEX representation of the
current time/day under the current or working (/W) directory.
When MTA is unable to clean this directory before informing you about
an error, you get a message that there are still files in that direc-
tory. There are many causes, but some of the most likely ones I will

-1 MTA is unable to decompress the file. This could be caused by
an invalid compression file (CRC-error, I/O-error) or because
there is too less memory (FreeMemory option !).
You should know (and do the following):
- Before termination, MTA moves the original (faulty ?) compres-
sion file to the temporary directory (deleting it from the
current or working (/W) directory). This is only done when
the decompression program can be activated but aborts for one
or more reasons;
- After termination you have a temporary directory with files
in it. These files can be decompressed files from the ori-
ginal compressed file and (or) the compressed file itself;
- Remove the decompressed files and check to nature of the error.
If the error is caused by an error in the original compressed
file, fix that (or delete the file) and move it back to the
current or working (/W) directory;
- Remove the temorary directory;

-2 MTA has decompressed the files in this directory, but is unable
to compress them again (memory ?). You should do the following:
- Recreate the compressed file from the files in the temporary
directory from the files in the temporary directory;
- Delete the files from the temporary directory;
- Remove the temporary directory;

-3 MTA is unable to remove the temporary directory. You should do
the following:
- Remove the temporary directory yourself.

-4 MTA is unable to change the extension of a compressed file to
a new value because there are already 11 files in the target
directory (e.g. A.ZIP, A.ZI0 .... A.ZI9 or for DWC ????????.DWC,
0???????.DWC .... 9???????.DWC);

Most of the errors explain themselfs. The only tricky one is 'Error
(xx) in shell'. The 'xx' is a number. In fact it is the Dos Error number
(not errorlevel). You can find them in most DOS bibles. The most fre-
quent one is 8 (not enough memory).
Negative numbers are caused by internal errors. If you can not resolve
them yourself, please inform me, I will try to find out the reason.

From release 4.04 and up, MTA makes some noice about files with a
valid compression extension (ARC, PAK, ZOO, ZIP, DWC and LZH/S) but
failed the 'test the compressed file' test. Possible causes are:

- The file is corrupted (sometimes the header only).
Try to decompress the file with the belonging decompression pro-
gram. If it decompressed, delete the original one and create a
fresh compressed file and try again;
- The file is wrong
Some people rename 'normal' files to one of the above extensions.
There is nothing against doing this, but it will confuse MTA like
hell (not to mention other people who get a copy of that file from
you). Try another extension or remove these files from the directory
MTA is working on;

From release 6.11 and up, MTA has introduced a new source of pos-
sible errors. MTA is now able (when you set the right option in
MTA.CTL) to work on SFX (self extracting) compression files in the
formats ARC (all), PAK, ZIP, LZH and LZS.
MTA has to look inside such a file to deduce if it is an SFX-file.
(only COM and EXE). Test are made of several combinations inside
the file, but I can imagine that MTA could deduce a file to be
SFX while it is not.
In this case strange things (from disk-full to I/O error) could
happen. Only use the SFX option when converting SFX files other-
wise leave it off !

One final word about unattended BBS operation. Starting with 6.50
MTA uses some other internal structures (think of the new name for
the temporary directory) to leave BBS operation as undisturbed as
possible. Older version worked unattended but had one major drawback.
When MTA aborted as a result of an invalid compression file, all
next runs of MTA would abort because they saw the same file again
and again. Thats why this file is moved to the temporary directory.
When running in unattended operation, do NOT use the MTATempPath
option but let MTA work out a pathname. The pathnames MTA creates
are logged in the MTA.LOG file.

All this could give you the impression that you should thank the
Lord when MTA runs ok. THIS IS NOT THE CASE. I have converted
around 3000 files on 200 diskettes and 2 HDU's myself again and
again using MTA and so far only 4 errors occured (2 of them in the
SFX support). All these (and more) are already fixed in this release.


MTA preserves memory for executing the shell and uses some space
of its own. To use as limited memory as possible, there is a limit
to the number of files MTA can handle. In any of the given used
directories, you can have a maximum of 750 files (do YOU have a
315 MegaByte HDU, I don't..).

With the current settings MTA will use 128K. The remainder of the
memory can be uses for the shell's. Normaly this leaves enough
memory for all the (de)compressors and/or the shells.
Strange things can occur when you have too little memory and you
have included the SFXFiles (/SFX) option. MTA normaly reads around
32K of each SFX file (or less when the file is smaller), but adjusts
the amount to memory bounds.

MTA uses a little trick when detecting name-like filenames. Imagine
you have a TEST.PAK, TEST.LZH and TEST.DWC in your directory and
you want to convert to ZIP.
The first file is ok (TEST.PAK -> TEST.ZIP), the second gives a little
problem (MTA can not make anouther TEST.ZIP. If MTA should do so, all
the files in MTA.LZH are added (worse updated !) in the first TEST.ZIP)
to work around. MTA warns the user and will create TEST.ZI1. The third
is converted to TEST.ZI2.
All these actions are reflected on the screen with a message and in the
MTA.LOG file.

As you already saw, MTA has its own touching system. This system is
triggered with the TOUCHHIG, TOUCHLOW or TOUCHCUR options in the
If you would like to leave the time/date stamps as is, you must not
supply any of the above options !

When MTA searches for the (de)compression programs, it will not be
confused by the READ-ONLY attribute that some users use to protect
their programs !


Thanks to Rob Lirb for making some mistakes and thereby finding some
bugs in the provious MTZ program. Also thanks for pointing out some
small bugs in early releases of PK(UN)ZIP.

Thanks to Frank Wijmenga and Eef Hartman from Dutch FIDO Emmen for
pointing out the 'Spawn Error' troubles in the old MTZ (3.02 and up).

Thanks to Eef Hartman again for his discussion about compression and
some troubles with video-cards. Also for his constructive comment on
some bugs and flaws (MTA 4.03 and up);

Thanks to Reinier de Groot from Dutch QuickBBS Support Europe, for his
support and his suggestions to make MTA BBS-friendly;

Thanks to Ed v.d. Born, who pointed out the problems with corrupted
compression files;

Thanks to John Lots for pointing out the problems with the Int21
window and his comments;

Thanks to all the users who use the old MTZ and have returned a post-
card or a NetMail message.

Version history

4.xx : First releases.

5.xx : ExitBeforeFill, ExitAfterFill, AllDisketteFiles options;

6.xx : FilesBBS, FullScreen, OnlyFileNameinFilesBBS, Exitafter-
compression, Includefile, Excludefile, FreeMemory,
'Reinier', OldPak and NoSwap options. Included support
for nested archives;

7.xx : OnlyArchive, RunTime options and cleaned code.

8.01 : Major release
- Starting the new serie with support for PKZ 1.00 and
LHarc 1.14;
- Changed options for new support:
- BinaryCompression deleted;
- ASCIICompression deleted;
- ICEPath added (can replaces LZHPath)
- ZIPCompression added
- SWAPCALL added
- OLDZIP added
- Changed the behaviour of MTA when renamed. With DOS
3.xx you can rename MTA.EXE to something else. Under
lower DOS versions the name is still restricted;
- Changed the layout of the timer. When using RunTime,
the timer will now count back and turn from white
(initial) to green (higher than 3 minutes) to yellow
(higher than 2 minutes) to red (almost time).

8.05 : Major release
- Added PAK 2.0 support (Destilled);
- Fixed bug in EnableAnsi. When user added OLDZip AND
EnableAnsi, PKZIP/PKUNZIP would abort. Added extra
test. When using OLDZip and EnableAnsi, MTA will
abort, not PKZIP/PKUNZIP. The dox where clear about
- Fixed serious bugs in PKZ 1.00 support
- When MTA detects a PKZ 1.00 (imploding) file and OLDZIP
is used, MTA will give a warning and skip the file;
- Now both ICEPath and LZHPath can be mixed, but if ICEPath
is available, MTA uses ICE for decompression, so be care-

8.06 : Bug/update release
- Converted to Turbo Pascal 5.5;
- Fixed 'hangup' bug in CFI routine. Only with special
.EXE/.COM files this error could occur and lead to a

8.10 : Minor Release
- Dropped the LHice/ICE support. MTA still recognizes
ICE as a valid extension but MTA does not use the
LHice/ICE program anymore;
- ICEPath and /ICE options are dropped;
- Added ExitBeforeStart and ExitBeforeEnd options;

8.20 : Minor Release
- Fixed bugs in LHarc (4 byte name) support;
- Implemented new CFI routines;
- Added KeepAbnormalExtensions (/LEA) option;
- Documented some bugs with SWAP and 4Dos;

9.01 : Major Release
- Optimize on size option (/OOA);
- IgnoreTimeComponent and AcceptHighDate options;
- NoArcInArc option;
- You can now include compressed files. The previous
verison of MTA accepted all files but if the file
was compressed, no recompression was done (if wanted).
IncludeFile option is extended with an extra parameter;
- /P now toggles the log, in previous versions /P dis-
abled the log. If NoLog was available, there was no
way to temporary create a log, now there is;
- Added (again) new CFI. ZOO's with alias extensions
are now detected;
- The RunTime option is now disabled when using the /D
- The LOG-file is changed somewhat. Use only the new MTL
to view the log;
- Fixed very old bug. MTA would not run of PKZIP was not
available. Now it will.

MTA is tested with PKWare PKPAK release 3.61, PKWare ZIP release 1.01,
NoGate PAK release 2.10, ARC release 6.02 and ZOO release 2.01(X), DWC
release 5.01, LHarc release 1.13c and LARC release 3.33.

Copyright, Trademarks

PKPAK, PKUNPAK, PKZIP and PKUNZIP are trademarks of PKWare Inc.
PAK is a trademark of NoGate Consulting.
ARC is a trademark of SEA inc.
ZOO is a trademark of R. Dhesi.
DWC is a trademark of Dean W. Cooper
LZH and LHarc are trademarks of Yoshi;
LZS and LARC are trademarks of K.Miki H.Okumura and K.Masuyama
CRA is a trademark of BPPC and donated to public domain
4Dos is a trademark of J.P. Software / R.C. Conn and T. Rawson
Swap is a trademark of Nico Mak / Mansfield Software Group

MTA is written in Turbo Pascal 5.5, with help of the Turbo Debugger 1.0
|and makes extensive use of Turbo Professional 5.01 and TxCFI V 7.02.

Turbo Pascal is a trademark of Borland International
Turbo Debugger is a trademark of Borland International
Turbo Professional is a trademark of TurboPower Inc.
TxCFI is a trademark of Robert W. van Hoeven

Sorry for my usage of the English language, it's not my native language
so this can happen.

If you have suggestions, additions or other comments, you can leave a
message, addressed to me (Rob Van.hoeven) at QuickBBS Support Europe
(SysOp Reinier de Groot) 2:2/100.

 December 13, 2017  Add comments

Leave a Reply