OS-9

From EDM2
Jump to: navigation, search
Os9logo.gif

A microkernel real time operating system originally developed for Motorola 6809 and 68xxx processors but by now available for most current 32 and 64 bit architectures. Early versions all written in assembly but later a more portable version called OS-9000 that was written in C, for a time the original developer sold both systems but more recently the original version has been dropped and the OS-9000 version renamed OS-9.

The classic OS-9 branch for the 68000 family of microprocessors is commonly known as OSK (OS-9 68K) and notably had a kernel that was only 28k in size.

Porting issues

The userland on OS-9 is very UNIX like meaning that if the software in question takes no or only limited use of the systems real time capabilities it is best to port to and from the system using available Unix like tools, there is some support for Unix like standards like POSIX threads. However if the code takes advantage of the systems hard real time capabilities you will soon find something very alien to most other OS's and real time capabilities that are much more fine grained than you will find on eComStation, or anything else for that matter.

One of the things you will need to pay attention to is the support for what used to be known as "memory colours", that is a different guaranteed real time responses from different parts of the system according to a perceived need. This means it is best for you to do some code refactoring when porting to the system as an optimisation move although you can get away with treating the RT capabilities of the system as simpler than they actually are. But when porting to OS/2 this can look quite a bit different, you could take advantage of the fact that in most cases the code you would be porting would presumably be rather old, and restructure soft hard time requests into normal userland code and simply rely on the relative speed of modern x86 microprocessors to the processors they were originally written for to cope, while hard real time code should reference the timer.

GUI

GUI's are entirely optional on the systems and you cannot write or port software that assumes the existence of one unless you intend to supply one that is, furthermore there is more than one available, there were even more of them at one time including a few third party products (Gespac Windows were popular on OSK and OS9 x86 for instance) and they are all very oriented towards embedded development, lacking most desktop metaphors that we are used to from common desktop OS's. Same applies to porting from the system, GUI elements will have to be re-written from scratch in most cases.

Tools

Note that if you are porting to OS-9 you should try to use the company's ULTRA C/C++ compiler, the C++ portion of it is outdated and clunky but underneath is basically an excellent C compiler. While GCC exists for OS-9 and has been used for porting Unix applications, the main code branch lacks support for some basic OS-9 concepts which has meant that it has been hard to maintain the port and it has frequently gone seriously out of date, thus is not recommended for anything but old style Unix apps, basically if it works on OS/2 using EMX it may be possible to use GCC, but it is not guaranteed to work.

The company claims to offer a rather unusual RTS Hypervisor for x86 systems, that allows OS-9 to share an x86 system with other operating systems and still retain its hard real time capabilities. Intended for production sites, but could be highly useful for cross development as well.

And no, Microware BASIC is no longer supported, you will have to buy a Tandy CoCo for that, but porting old OS-9 Basic applications to something like WD Basic should not be too hard.

See also: OS-9 Tools

Authors

  • Microware
  • Radisys
  • Microware LP

Links

Publications