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