MTOOLS - A Review by Timothy Swenson
Jonathan Hudson has ported the Unix utility, Mtools, to QDOS. In
the Unix world, Mtools is a set of utilities that read, write, and
navigate MS-DOS disks. With Unix, a single program can be called
by different names and have different behavior. In QDOS this is
not possible, so the full set of these utilities is the program
Mtools is essentually an implementation of a number of MS-DOS
commands, such as COPY, DIR, DEL, TYPE, CD, MD, RD, DELTREE,
ATTRIB, etc. Mtools can handle both DD and HD 3.5" disks. I have
not tested it, but it should handle 5.25" disks also.
The mtools_zip file contains the Mtools executable, the Mtools
manual, a QDOS README file, and a number of Unix man (manual)
pages for each of the commands. The manual covers the all of the
commands. The man pages are added only for completeness.
Besides the Mtools executable, a configuration file and
environment variable are neeed. This means that you must have
environment variables (ENV_BIN) support loaded.
The Mtools configuration (mtools_conf) defines how your disk
drives are setup and how you want to use Mtools. The
configuration file is a text file and can be created with any text
editor. The main thing that is needed in the configuration file
is the definition of your disk drives. You must define what
drives you have, what format they are, and what they are called in
MS-DOS terms. In my case I have a single HD disk drive, so use
the following configuration entries:
drive a: file="flp1_*d2h" 1.44m
drive a: file="flp1_*d2d" 720k
The first line tells mtools that I am using FLP1_ as the MS-DOS
drive A: and that it is an HD (1.44 MB) drive. The second line
says that the same drive can also be a DD (720K) drive. The items
"flp1_*d2h" and "flp1_*d2d" come directly from the ToolKit II
manual and are the direct sector reading devices. This is how
Mtools knows the read the disk drive. If you only have 1 DD
drive, then you would use only the second line. If you have a
second disk drive then you would just add lines with "drive b:".
For ED disks, I believe the device needed is "flp1_*d2e" and it is
only 2.88 Meg. MS-DOS did not support the ED drives at 3.2 Meg.
Once I had a configuration file created, I needed to tell Mtools
where to find it. I used the SETENV command like this:
Since I only have one disk drive, I have to keep all my QDOS files
on RAM1_, FLP1_ is used as the MS-DOS disk. You would use what
ever device you are using for your QDOS files (FLP2_, WIN1_,
The next thing I needed to do is to set the DATA_USE and PROG_USE
devices to the device I am using for QDOS files (RAM1_). Mtools
has a problem using QDOS device names, so it is better not to use
them and let DATA_USE / PROG_USE handle them.
Now I put an MS-DOS disk in the drive and execute Mtools:
exec mtools;"-c mdir a:"
Because of how Mtools was written and how QDOS is, Mtools must be
given a "-c" argument and then the command to run. Mtools also
puts a 'm' before each standard MS-DOS command name. What I am
doing is "DIR A:" in MS-DOS terms. Once Mtools executes, a window
pops up and after a bit of reading the disk, a MS-DOS-looking
directory of the disk appears, including any directories on the
To copy a file from MS-DOS to QDOS Mtools is executed like this:
exec mtools;"-c mcopy a:file.ext file_ext"
I am telling Mtools to copy the file "a:file.ext" to my QDOS
device (set by DATA_USE) as the name file_ext. Mtools recognizes
the "a:" as an MS-DOS device and knows where to get the file.
Copying a file from QDOS to MS-DOS would go something like this:
exec mtools;"-c mcopy file_ext a:"
Mtools knows to convert the _ in file_ext to a standard MS-DOS
period. Now if I had run Mtools like this:
exec mtools;"-c mcopy ram1_file_ext a:"
then a file called "ram1_file.ext" would have been copied to the
MS-DOS disk. Remember, Mtools does not know how to handle QDOS
device names. This is why I set DATA_USE to RAM1_.
Mtools supports the newer MS-DOS file systems that allow lower
case and longer file names, now used by Win95 and NT. Any files
copied to MS-DOS in all caps will remain in all caps.
Because of a problem with C68, Mtools has a problem handling the
MS-DOS device/file seperator back slash (\). In my testing I
tried to create a directory TEST. I used the Mtools command:
exec mtools;"-c mmd a:\test"
Mtools seemed to translate the \t into the Tab character and
wanted to create a subdirectory "a: est". To get around this
problem you have to use two back slashes (\\). So this command
exec mtools;"-c mmd a:\\test"
Mtools also supports the standard Unix seperator slash (/). So
this will also work:
exec mtools;"-c mmd a:/test"
Mtools supports the following commands:
Mattrib - Used to change MS-DOS file attribute flags.
Mbadblocks - Scan an MS-DOS floppy and mark unused bad blocks as
Mcd - Change directory.
Mcopy - Copy a file.
Mdel - Delete a file.
Mdeltree - Delete a whole directory tree.
Mdir - Directory of an MS-DOS disk.
Mformat - Format an MS-DOS disk.
Minfo - Print paramaters of MS-DOS file system.
Mlabel - Label disk.
Mmd - Create a subdirectory.
Mmove - Move a file (Rename).
Mrd - Delete a directory.
Mren - Delete a file.
Mtype - Copy a file to the screen.
Xcopy - Copy a directory tree to another.
I did have one problem with Mtools that Jonathan and I have not
sorted out. Mtools seemed to have problems formating MS-DOS DD
disks on a HD drive. It formatted the HD disks just fine. Since
I only have the one disk drive, I can't rule out my drive as being
I have also noticed that NT seems to have a problem formatting
720K disks also. I formatted a 720K disk on an NT machine at
work, brought it home and tried to read it. Mtools failed to read
it, anong with another MS-DOS disk reading utility I've been using
for years. I doubt an old MS-DOS 3.3 system would also be able to
read the disk.
Mtools is a fairly powerful set of utilties. All of the commands
and the configuration file have a lot more options that I have
discussed. At first it may seem a bit overwhelming to have to
many configuration options, but the simple configuration file like
the one listed above should suit most uses. The manual is fairly
thick but it is very thorough and between it and the QDOS README
file, most of your question should be answered. I wrote this
article in such a way that it can be used as a "quick start"
document and get you up and running.
Mtools may not be for everyone and most who use it will only need
to use just a few of the commands (DIR & COPY), but I am finding
it very handy. Now that 720K disks are going out of style, I
needed a way to read HD disks on my QL. Mtools fills this need
Mtools can be found from most QL Freeware sources, includes QL
BBS's, and on Jonathan's Web page.
)                   ( geocities.com/siliconvalley