# RootPrompt.org   Nothing but Unix.[Home] [Features] [Programming] [Mac OS X] [Search]


 Feature: 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 Steve Hosgood built a Unix clone at home. He 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 programming.
He did not 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 - Steve didn't have any of these advantages!

 (Submitted by Noel Wed Apr 12, 2000 )

  

OMU - "One Man Unix"

History:

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 Manchester MkI 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 programming.
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 OK.

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:

6809 OMU - Singletasking.

( Same contents, but packed in 3 different ways )
Source RPM file or Gzipped Tar file or DOS/Windows ZIP file

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.

NEW! The above packages now include some utilities which I did write from scratch:

  • adb An interactive disassembler. (Doesn't debug core-dumps though, just lets you look at code in files).
  • aka ("Also Known As") - finds other files hardlinked to the one mentioned on the command-line.
  • chbase Prints the number(s) given on the command-line in octal, decimal & hex.
  • hex Makes Motorola S-record files for sending to the 6809. Usually runs on a host machine (a PDP-11 originally).
  • ida An intelligent disassembler - shares source-code with 'adb' above.
  • sh The tiny shell needed by the OMU kernel. OMU runs this as if it was the 'init' process.
  • sirius An interactive disk-examination program.
  • unhex A program to convert Motorola S-records into an OMU-loadable file. Usually runs on the 6809 itself of course.
Sorry, no documentation, but the source-code should be documentation enough!

I don't 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!

Initial 68000 Port of OMU with Hard Disk and Multitasking.

( Same contents, but packed in 3 different ways )
Source RPM file or Gzipped Tar file or DOS/Windows ZIP file

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:

68000 RTOS version of OMU.

( Same contents, but packed in 3 different ways )
Source RPM file or Gzipped Tar file or DOS/Windows ZIP file

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 FreeDOS , and getting OMU to run on 8086/80286 machines of which there must be loads 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.

Acknowledgements:

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


Our content can be syndicated: Main page Mac Page

Copyright 1999-2005 Noel Davis. Noel also runs web sites about sailing and kayaking.
All trademarks are the property of their owners.
All articles are owned by their author