$I would like to think that you are correct, and I know of your
$credentials. I am currently upgading from Xenix 2.3.4 to Unix OS5
$Enterprise. You may have seen a few of my queries on the Compuserve
$forums lately. I phoned Wordperfect, to see if I could continue using
$WP for Xenix, 5.0 when I make the switch. They tell me that I can't.
I'm not sure if there are any bits of the Xenix ABI which are
not carried over to Unix ... even if Unix provides a 100% faithful
implementation of the Xenix ABI (more on that later), it's still easy
to write a program which will refuse to run properly on Unix if you
really want to.
For example, some utilities may be in a different directory
on the two operating systems. Look for "more" sometime on Xenix
and on Unix, for example; if memory serves, it's in /usr/bin
on Xenix and /bin on Unix. All I have to do is write a program
which is hard-coded to expect that more is in /usr/bin, rather
than looking down the path for it, and it won't work properly on
Unix. Yes, it would be a stupid decision to write such a
program, but it's a very trivial example of a Xenix program which
doesn't work quite like you'd expect on Unix.
A somewhat less silly example might be a program which expects
to do odd things with the print spooler. I personally don't like
such programs, and I do recall WordPerfect wants to know far
more about print spooling than it ought to, but I don't remember just
how much it wants to know. I think there are some differences in the
print spooling system between the two OSes, aren't there? It's
been a while since I did a Xenix->Unix upgrade and had to worry
Or you could write some program which, you decide, needs
to read directory entries directly, rather than using standard
APIs for it. Write such a program to understand the Xenix
filesystem, and try running it on an EAFS filesystem with symbolic
links and long filenames, and see what happens.
See? There are lots of ways you can write a Xenix program which
technically runs properly on Unix (as in it uses all correct API
calls) but which includes some broken assumptions which make it
not run as you'd expect.
I have an old manual here from Unix 3.2.2. Its release notes
say that there is support for
- binaries developed for Xenix System V/386, release 2.2.0 or
- binaries developed for Xenix System V/286, release 2.0 or later
- binaries developed for Xenix System V/8086, release 2.0 or later
It also says that there are differences in the ptrace(),
ulimit(), and uname() system calls function somewhat
differently on Unix and on Xenix.
So all in all, it looks like the ABI support is very close to,
but not quite, 100% in that old version of SCO Unix.
Stephen M. Dunn, CNE, ACE, Sr. Systems Analyst, United System Solutions Inc.
104 Carnforth Road, Toronto, ON, Canada M4A 2K7 (416) 750-7946 x251