[net.micro.68k] A Unix

mbs@ecsvax.UUCP (01/12/84)

----------------------------------------------------------------

     A Discussion of a Unix(tm) Look Alike : Idris(tm)

  In response to a recent question about Un*x systems on micros,
I decided to present a medium length article on Whitesmith's look
alike. The one which I am familiar with is for the Omnibyte(tm)
68k machine, and is just about a full implementation (at least
what was bought here).

  Idris supports and has most of the utilities which are familiar
to Unix users, although often different options are required to be
used to run the programs.

  A full 'C' is supported (approx. Version 6 with some of the
Version 7 extensions plus a little extra). The major problem that
I have had with the machine comes from this 'C'. The first and
foremost problem is the fact that *all* (with 2 exceptions) of the
system I/O calls are different in some way are another. The 2 exceptions
are, of course, read() & write(). Even the simple putc() requires a
different order of arguments than does the Unix putc(). Another
problem with I/O is that the formatted file descriptor (FILE * on
Unix) (FIO * on Idris) has differently ordered, and differently
named fields than does Unix. Compound this with the problem that
Unix(sizeof(int)) != Idris(sizeof(int)) and you begin to see a
grave difficulty in trying to port software.

 As far as speed of execution goes, in recent comparison tests
with a library of benchmarking programs, Idris consistently scored
slower in execution than many other machine (including a couple
based on a 68k).

  Coming back to the Operating System and 'C' in general, the
signal mechanism is much more difficult to handle on this machine.
If in a function, and an interrupt occurs which has been designated
to cause a function call, if an enter() call has not been made
previously (it evidently marks the stack for a proper return later),
the program will blow up if a normal return is made from the fnction.
To return properly, one must execute a leave() call. This also means
that the enter()/leave() mechanism must be reset if you are going to
turn the interrupt back on again. There is, I must admit, an
alternate mechanism for doing this, but it follows basically the
same idea (it is _when/_raise. The declarations are so difficult &
the documentation so bad I haven't ever used it properly). I will
note that an exit() call may be made from the function & the
program will terminate normally.

  If all this makes it sound as though I don't like the machine, well,
that isn't true. I've found that it is a good machine for developing
a facility in programming in 'C'. It compiles fairly fast, and we have
a Fortran compiler on it which is used quite a bit. As for doing a
Sysgen, it was a breeze. Even modifying the small kernal file which
we got with our binary-only license has proved to be extremely
easy. Once you get past your original problems with the I/O routines
and write a small includefile which takes care of most problems,it
isn't bad at all. I've reproduced several of the systems utilities
(who, a makeuser, etc.) working from both Whitesmith manual pages
and Unix manual pages without too much difficulty. All in all, I think
it is a good system, and I am willing to try to answer any specific
questions about it which I can.

Note: the above constitutes my opinions only and is not to be
      construed as the official position of **anybody**.

   -- Michael Smith
      East Caroline University
      Department of Physics/Computing & Information Systems
      Greenville, NC 27834
      (919) 757 - 6401