UZI was compiled with the Code Works Q/C C compiler and the Microsoft M80 assembler under the CP/M operating system, on the same hardware it runs on. Also used was a version of cpp ported to CP/M, since the Q/C compiler does not handle macros with arguments. However, there are only a couple of these in the code, and they could easily be removed.
Because UZI occupies the upper 32K of memory, the standard L80 linker could not be used to link it. Instead, a homebrew L80 replacement linker was used. This generated a 64K-byte CP/M .COM file, which has the lower 32K pruned by the CP/M PIP utility. This is the reason for appearance of the string "MOMBASSA" in filler.mac and loadunix.sub.
To boot UZI, a short CP/M program was run that reads in the UZI image, copies it to the upper 32K of memory, and jumps to its start address. Other CP/M programs were written to build, inspect, and check UZI filesystems under CP/M. These made it possible to have a root file system made before starting up UZI. If the demand exists, these programs can be included in another release.
A number of 7th Edition, System V, and 4.2BSD programs were ported to UZI. Most notably, the Bourne shell and ed run fine under UZI. In addition the 4.2BSD stdio library was also ported. This, along with the Code Works Q/C library and miscellaneous System V library functions, was used when porting programs.
Due to obvious legal reasons, the source or executables for most of these programs cannot be released. However, some kernel-dependent programs such as ps and fsck were written from scratch and can be included in future releases. Also, a package was created that can be linked to CP/M .COM files that will allow them to run under UZI. This was used to get the M80 assembler and L80 linker to run under UZI. Cpp was also ported to UZI. However, it was not possible to fit the Q/C compiler into 32K, so all programs (and UZI itself) were cross-compiled under CP/M.
The Minix operating system, written for PCs by Andrew Tanenbaum et al, contains many programs that should compile and run under UZI. Since Minix is much less encumbered by licensing provisions than real Unix, it would make sense to port Minix programs to UZI. In fact, UZI itself could be ported to the PC, and used as a replacement for the Minix kernel.