What is this Unixism thing anyway?

I had been working with microcomputers (that's what they were called then) in 1978 (6502, 8080/Z80) under various toy operating systems (AppleDOS, CP/M, MP/M). I discovered Unix around 1981, and immediately saw the value of the tools and environment. Since I was doing most of my work on CP/M at that time, I started writing clones of Unix tools for CP/M.

Over time I developed a number of library routines to help with the creation of various tools. For example, how do you run another program (fork/exec) on an OS designed to run one application at a time? Answer: Do something like what the OS does; relocate a small module to the top of memory, swap the current memory image to disk, adjust system pointers to simulate an empty state, trap OS calls, load and run the surbordinate program, catch the exit of that program, reload the original from disk, reset the system pointers and return back to the caller. Simple, right?

As new operating systems were introduced I had to port existing programs to new platforms, so I started bringing my tools along to help with the tasks. I added support for new system features (hierarchical file names, extended memory, far pointers) as they became available (the "swapping spawn" described above was ported to PC-DOS and MS-DOS). These tools have been compiled for 8080, Z80, 8085, 8086 and 80[12345]86 CPUs and run on CP/M, MP/M, CP/M-86, PC-DOS, MS-DOS, OS/2 and Win32 systems.

Early versions of compilers offered standard libraries that were not heavily optimized and were often large and slow. I wrote a complete standard library in 8080/Z80 assembler, cutting every imaginable corner. My floating-point emulation library outperformed every other library available by at least 5%. I ported this library to 8086 assembler shortly after the IBM PC was introduced. The tools used this library for a long time, until the 32-bit compiler libraries became good enough for me to abandon my assembler library.

When combined with other tools like dmake and various GNU packages, this package allows for nearly identical development environments on both Win32 and Unix.


So let's get to it

OK, enough chatter. Here's the package:
  1. Unixism
    Win32 versions of Unix tools. Documentation (in RTF format) is included for each tool. Source is available. Includes cat, chmod, cp, date, df, dos2unix, du, entab, head, ls, mv, pr, rdate, rm, sleep, split, strings, tail, touch, tr, unix2dos, wc, which.

Last updated on February 10, 2006.