## UZI UTILITIES

by Doug Braun
Modified by Harold F. Bower for UZI180

Beta: 18 August 1998

This package contains several utilities to manage UZI filesystems from a different host operating system. They have been compiled and used under CP/M to build and repair UZI filesystems, and debug device drivers. This has been useful because UZI was developed and compiled under CP/M. They have also been used under SYS V Unix to debug the UZI filesystem code (using a Unix file to serve as a virtual UZI device).

NOTE: UZI180 has only been tested with ZSDOS (a CP/M superset) and the CP/M Filesystem on a variety of hard and floppy media formats.

There are four programs, each contained in the C file of the same name:

- MKFS: This makes a file system. It takes three arguments: a device number, the total number of blocks, and the number of inodes.

- FSCK: This checks file system consistency. It takes a single argument, the device number to check.
BETA NOTE: I have not been able to get this program to work. Help in this area would be appreciated. HFB
- BD: This dumps (in hex) a block of a device. It takes two arguments: the device number, and the block number to dump. The original program was modified to display the data as two screens. Press <Return> after the first screen to display the second 256 bytes and exit.

- UCP: This is an interactive program that performs a number of operations. It can be used to make and delete directories and device files, upload and download files between CP/M and the UZI filesystem, list directories, and print files. It takes a single argument, the device number. It then prompts for commands. Look at the code for a complete list of commands.
BETA NOTE: I experienced corruption when copying files from the UZI file system to CP/M and have not used this feature since. Caution is urged in this area since some files imported might not be eraseable with the CP/M ERA command (lowercase letters and punctuation in Name.Typ).

If you are trying to get UZI running on a new system, these programs will be very helpful in getting your device drivers working, and will allow UZI to have something on its disks when it finally runs.

Each program is linked with the device drivers for your system, some files from UZI itself, and some modified versions of other UZI files (the ones beginning with "x"). To Build executable versions of these utilities, you will need to have the Hi-Tech Compiler/assembler version 3.09 from the CP/M CD-ROM installed on your system, and SUBMIT.COM or compatible (e.g. SUPERSUB) program to automate the build process. Next, follow these steps:

1. First build the kernel. I recommend doing this in a directory by itself, and the utility programs in a different one.
2. Extract all files from the Utilities ZIP file. Within this are platform-specific versions for the different configurations. Select the one suitable for your version and unzip the contents to form a complete set of necessary files.
3. Copy the following files from the kernel directory into the utilities directory:

`DEVFLOP.C`
`DEVHD.C`
`HDCONF.H`
`HDASM.OBJ`

4. Compile/assemble the support files needed by all utilities by either executing the CMPILUTL.SUB script under SUBMIT or compatible (I used SUPERSUB from the CP/M CD-ROM archives), or entering each line from the script as a standalone command line. The script is tailored for use under ZSDOS and includes the RELOG calls to relog the hard disk upon program termination, and may not be necessary in other systems.
5. Execute a Make script for the desired utility. These take the form of a (possibly multi-) line argument for the compiler. They first compile the utility, then link with necessary files to form a CP/M executable utility. Note that in addition to the compiler and files from this library, you will need the CRTCPM.OBJ and LIBC.LIB files from the Hi-Tech package for this step. As an exammple, to make the UCP.COM utiliity, execute:

`C <MAKEUCP`

An alternative to this fully-automated step, or if you are working on the support files, you may first compile the utility once, then simply link all the files with a Link Script. A sample file is for linking UCP is provided which can be adapted to the others by simply changing the output filename.typ and the input .obj file name. This sequence would be (for UCP):

`C -O -C -V UCP.C`
`LINK <LINKUCP`

6. Use the tools to make, examine and populate an UZI filesystem. The files FILFS.ZEX and FILFLOP.ZEX (adapted from Doug Braun's original FILFS.SUB and FILFLIOP.SUB) are ZEX50 scripts tailored for Hard disks and 1.44 MB Floppys which do most of the work. They also serve as examples of how these utilities are used to build and populate UZI filesystems.