OMU - "One Man Unix"
In the late 1970s and early 1980s (the good old days of "hobby computing") before
the IBM PC and its clones took over the world, various microprocessor based kits
appeared on the hobbyist market. You could build a Z80-based board with 8K of
RAM, and with its hexadecimal keypad and LED display you could run simple
programs laboriously keyed in hex.
The first generation commercial machines also appeared - usually based on
the 8080 or the Z80 or 6502. The Commodore PET was one of the early sucesses
and it, along with the Amiga, the C64, the Sinclair Spectrum and the BBC Micro
probably accounted for most of the infant home-computer market in Britain.
I decided on a different approach. Unhappy with the concept of having to re-live
the glory-days of the
with the hobby-boards fraternity (!), and unhappy with the straitjacketed
architectures and joke operating systems of the 1st generation home computers,
I yearned for more. Specifically, what I wanted was something
more like a Unix clone at home. I was used to V7 Unix on the PDP-11 at university
and wasn't keen to step backwards 10 years to the technology of CP/M and BASIC
I wasn't to know that eight years later a guy called Linus
Torvalds was going to think the same thoughts and do much the same things. The
big difference was that he was in the right place and the right time and
had internet connectivity - I didn't have any of these advantages!
I went off and built myself a 6809 based computer with 64K of RAM, a 360K
floppy disk drive and an RS232 interface which could drive a glass-TTY.
Please remember that this was 1982. Hard disks, megabytes of RAM and other
familiar modern things were a long way off.
After going through the usual hard work of writing a BIOS complete with
an S-records downloader, I was in a position to write myself an operating
system. Preliminary work on OMU started in late 1983. My earliest surviving
printouts of the sources on yellowed, faded lineprinter paper show that the
bulk of the work on OMU dates from March/April/May 1984.
Work was not helped by the fact that I was having to write a 'C' compiler
in parallel, but certainly by mid 1984 I had a perfectly usable O/S with a
primitive shell, a port of Unix 'ed' for an editor, and with 'fsck' and other
such tools available to repair the filestore disks when they got damaged by
miswrites from the rather dodgy floppy-disk hardware. I remember taking
the machine home over Christmas 1984 and typing up several reports using it
on the kitchen table.
I just found this photo of the 1984 machine amongst a box of slides taken
over that Christmas. It appears to be the only photo of the machine I ever
took at the time.
At this point in its evolution, the hardware was mostly on one double
eurocard, with a floppy-disk interface piggybacked onto it. The floppy-disk
drive is in the metal box at front, and the bigger metal box at the RHS
of the PCBs is the power-supply.
Features and misfeatures list:
Tiny (24K) Kernel.
V7 Unix-compatable filestore (doesn't support triple-indirection blocks).
Not exactly critical on a floppy-disk-only system!
Normal Unix-style use of /dev/* files to interface to devices.
Mountable/dismountable filestores as expected.
Shell is built-in to save space, rather than run as a process.
tty driver is exceedingly minimal, but functional.
No true multitasking (see below).
UIDs and GIDs not implemented. They're ignored on the filestore, and the
process table doesn't bother to hold them. Any files created would be given
UID = GID = 0.
The lack of an MMU and the small amount of RAM available meant that I
decided against trying to implement true multitasking. Instead (like DOS
as it happens) I came up with a scheme whereby a process could launch another
process, but would have to wait for it to complete. Clunky, but it worked
For your entertainment (or possibly if you're interested in the possibility
of porting my old O/S to more modern hardware like that old XT that's
gathering dust under your table) here's a downloadable copy of my
final version of the 6809 OMU as it stood in 1987:
In order to make any use of OMU, I had compiled up a set of utilities like
'ed' and 'mount' and 'fsck'. Sadly I don't think I can make their sources
downloadable here as they were based on the Unix V7 sources for which we had
a Bell Labs "academic use" licence at the university.
The above packages now include some utilities which I did write from scratch:
Sorry, no documentation, but the source-code should be documentation enough!
An interactive disassembler. (Doesn't debug core-dumps though, just lets
you look at code in files).
("Also Known As") - finds other files hardlinked to the one mentioned on the
Prints the number(s) given on the command-line in octal, decimal & hex.
Makes Motorola S-record files for sending to the 6809. Usually runs on a
host machine (a PDP-11 originally).
An intelligent disassembler - shares source-code with 'adb' above.
The tiny shell needed by the OMU kernel. OMU runs this as if it was the
An interactive disk-examination program.
A program to convert Motorola S-records into an OMU-loadable file. Usually
runs on the 6809 itself of course.
suggest any modern user of OMU on a 6809 tries getting GNU utilities running
with it! Bear in mind that V7 sources would compile into a smaller executable
than any modern GNU equivalents. With the 64K memory-address limitation of my
6809, this was important! The BIOS and O/S accounted for about 24K of this, so
user-programs were limited to about 40K total. I never did complete my
page-switched 256K memory system.....
Mind you, if you're contemplating porting to a 68000 or IBM-PC, the size
constraints will be much less of a problem.
My work on OMU was pretty much unnoticed by anyone else in the world (we didn't
have an internet connection in those days), but others in the Electrical
Engineering dept at Swansea University saw the potential to port OMU to one of
several 68000 single-board-computers which began to appear in the department
from about 1984/85 onwards.
My colleage Terry Barnaby and I were variously involved with porting OMU
to several of these 68000 based SBCs. Terry did most of the work!
The first stage was merely to take OMU and get it to run on the new
hardware much as my 6809 version was doing already. This was accomplishe
reasonably quickly, complete with the addition of the OMU's first driver
for a hard-disk.
The much greater memory-addressing ability of the 68000 coupled with the
fact that the SBCs typically had 256K of RAM on board meant that this version
of OMU soon featured some multi-tasking capabilities (though with no MMU
available the processes had to be well-behaved).
For convenience, the details of the filestore layout and the system-call
interface of 68000 OMU was designed to duplicate those of the commercial 68000
V7 Unix system made by "Codata" (we had just taken delivery of two of these
units to augment the aging PDP-11).
It is I think a credit to OMU's potential that
it soon became possible to compile programs on the Codata, and run them on
OMU with no problems. Indeed, it was also possible to take system binaries
shipped with the Codata and run them on OMU too - an easy way to get 'vi'
and other state-of-the-art (!) software on OMU without having to dig out the
sources and recompile!
Terry Barnaby and another of his colleages Tim Ingersoll then made some
fundamental changes to the message-handling abilities of the 68000 OMU port to
make it suitable for Real-Time signal processing and control applications.
This was after all what the two of them really
wanted as part of their Ph.D projects...! In 1988 they finished their
projects, wrote up and left. Part of their legacy was the RTOS version of OMU,
and I managed to salvage a set of sources for that too:
If any reader of these pages feels suitably daring they may be able to
beat me to the target of porting OMU (probably working from Terry's and my
initial 68000 version above) to the IBM PC. I consider that there really is no
point in aiming for the 386 processor machines onwards as Linux already does
everything you could hope for on that class of machines.
It does however seem that there is mileage in starting with the boot-loader
that comes with
and getting OMU to run on 8086/80286 machines of which there must be
lying around virtually unwanted these days.
If you do decide to try such a thing, then I wish you the best of luck and
I'll offer any email help I can. My email address is in the README file
included with the any of the sets of downloadable sources.
My thanks go to Terry and Tim whose work in enhancing OMU is credited here
and really should have been reflected in a name-change from OMU back in the
Eighties! (I never did get it straight in my mind as to whether the "one man"
mentioned in the title were there to signify the number of authors or
the number of simultaneous users. Either way, neither was very relevant once
as the software started its modest spread in the department.)
My thanks also go to Alan Cox (he of Linux networking and kernel hacking fame)
without whose prodding this page might never have been written.
Copyright (c) 1999, Steve Hosgood