Virtual Xenix & the internet

This is probably the most significant Xenix post I’ve made since the old days when I managed to get Xenix running in Qemu all those years ago.

3com network card

3comB network card

What has long been a frustration with the beleaguered Xenix community is that although there was a TCP/IP package for Xenix (and a much required streams package…) it only worked with a handful of ethernet cards.  And all of them were early 3com’s.  While the world was using NE2000’s on just about everything, the most common ethernet board Xenix would talk to was the 3c503, which is getting harder and harder to find as the years go on by.

But right now none of this matters.

I was looking at this article on setting up Apollo Domain UNIX, on MESS.  And apparently it will do networking!  Which is cool, so I poke around MESS, and what do I see? 3c503.c. Could it be true?

Now I ended up having to download the source to mame 0.151 ( and building it on OS X.  Of course remembering to alter the makefile to include the ‘USE_NETWORK=1’ statement, and build for Mess.  And just as it looks like something out of SIMH, Mess makes use of libpcap which means that you are *unable* to send/receive on the host computer. (OS X & Win32 binaries).  And of course you’ll need a ROM & Xenix diskettes.

Installing Xenix is pretty straightforward as long as you know your system key, and how to navigate the mess UI without rebooting mess or exiting by mistake (scrolllock on the PC, function/Delete on OS X).

First create a hard disk, and as always it should be ~500MB max.

chdman.exe createhd -o xenix.chd -chs 1015,16,63
chdman – MAME Compressed Hunks of Data (CHD) manager 0.149u1 (Aug 10 2013)
Output CHD: xenix.chd
Compression: none
Cylinders: 1015
Heads: 16
Sectors: 63
Bytes/sector: 512
Sectors/hunk: 8
Logical size: 523,837,440

then with the disk in hand, I just setup a 486 like this:

./mess64 at486 -harddisk1 xenix.chd -isa2 3c503 -ramsize 8388608 -floppydisk1 xenix/n1.vfd

Naturally you’ll need to setup the CMOS, for your memory size, and the hard disk.  The BIOS I’m using didn’t autodetect the IDE drive, but it doesn’t matter as I know it’s characteristics as I created it.

From there Xenix was a pretty straight forward deal.  Mess has good floppy drive emulation so it just worked.  Adding TCP-IP was just as involved, and all went well.  When it came time to install TCP & the network driver, remember to use thinnet, as the thicknet transceiver isn’t connected (as it would seem).  The 3c503 is softset, so I went with IRQ 5, port 0x300, and thinnet, and it works fine for me!

mess xenix networking

Xenix TCP/IP in action, inside of MESS!

Remember you will not be able to attach to it from your computer.  Instead you must attach from another computer.

Also MESS tries to emulate true to hardware so it’ll be just as slow on MESS as it was on the real hardware.  I suppose you could go with the at386 driver, but yeah it’ll be slow.  The current at586 driver has issues booting from the hard disk, and I didn’t mess with it too much as Xenix is known to have issues with some Pentium systems.

Although I think the next place for adventure is the emulated Adaptec 1542CF.

40 thoughts on “Virtual Xenix & the internet

  1. I’m trying to make the PC drivers of MESS recognize an iso inserted after the first one, (eject/insert) but, so far, no luck, so, you can’t swap ISOs at the moment (well technically you can, but it will result in a data scramble)

  2. Thanks for that, I didn’t have a version of Xenix that supports networking to try. BTW, don’t bother with the adaptec, it doesn’t currently work.

  3. Nice!
    Yesterday I installed xenix386 2.3.4 in qemu-0.14.* and set -pty with slip on a linux host. TCP/IP 1.2.0 worked fine 🙂 The launching process is done by a script, which also determines the pty assigned to the virtual serial port…

    Do not forget: echo nameserver >>/etc/resolv.conf

    It seems that resolv.conf doesn’t exist by default, it has to be created if you want proper tcp/ip config.

    • how stable is it? when I tried this ages ago, it’d work fine for a single machine talking to another, but when you piled on 5+ users it’d freak out….

      • it is horribly unstable, tcpip apps like telnet hangs/deadlocks randomly. You cannot interrupt ping easily, just kill it from another getty (sendkey alt-f2, etc)

        A little telnet session from host cut&paste:

        $ telnet
        Connected to
        Escape character is ‘^]’.
        [SSL not available]

        System V.2.3.4 UNIX ( (ttyp00)

        login: root

        Welcome to SCO XENIX System V


        The Santa Cruz Operation, Inc.

        You have mail.
        TERM = (ansi)
        # uname -a | grep -v serial

    • From what I recall… you have to install some tcpip update to get all the drivers….

      3c501 3comA
      3c503 3comB
      3c523 3comC
      3c507 3comD
      IBM 8bit TokenRing cards
      Western Digital WD8003/WD8013
      Where Mess can emulate the 3com503/3c503/3comB driver.

      And that is it. There never was a NE2000 driver. Such a pity.

        • Right no go on the III. Which is a shame as finding a III is far more easier than a II. That is why I feel MESS is a more viable option these days.

          Or if someone were smart enough to port MESS’es 3c503 to Qemu, well that’d be fantastic!

          • Mess’s 3c503 emulation is way different from anything in Qemu so that’s unlikely. Although, given that the 3c503, like the ne2000, uses the dp8390 network controller it shouldn’t be especially hard to adapt the ne2000 to a 3c503 (Mess has a single dp8390 emulation that the ne2000, 3c503 and Macintosh Asante MC3NB use). WRT to Mess and Xenix, here’s another unique WIP, Xenix for the Intel 310 Microcomputer.

  4. Hmmm. I wonder if it’ll work on an am5x86. If it will…I have a 3com ISA NIC or 10 that should be compatible. Should have a drive that’s completely compatible, too.

    Where is this TCP/IP stack/STREAMS package available?

    • it may work, you might have to disable CPU cache on install (like OS/2), and turn off all the pre-cache/32bit access for the IDE disk… I recall the install not being 100% smooth last time I installed it on physical hardware…. And after a few hours it’d screw the disk up. I’m not sure what was wrong with it, as it ran fine on an emulator…

  5. …. just another question about virtualization of Xenix 386…. is it possible to install and run VP/IX on qemu (of course with Xenix, too) ?
    Or is this impossible cause of virtualization within an already virtualized environment ?

  6. I try to get network
    installed xenix ok
    installed streams and tcp ok
    makedev 3comB and makedev tcp ok
    put correct values but work only internal network
    ping esternal ip fail
    telnet internal ip ok
    ping external network ip fail
    i have also add correct route

    my cfg of mess network is correct?

    <device tag=":isa2:3c503:dp8390d" interface="-1"

  7. In 2013 I got Rhapsody DR2 to boot to the desktop with mouse working in MESS 486 as proof of concept. It refused to boot the day I installed it, but one morning I tried again and by some miracle it went so I grabbed this piccy. It was basically unusable, but try to get that far in modern builds of Qemu 🙂

    • I used to run NeXSTEP 3.3 on the x86, as I found out when I bought a cube that the media included the x86 version. Needless to say it was great on the x86 if you had the right drivers. So on the same PC I tried DR2, and it was horribly unstable.

      I never had OPENSTEP, so I formatted it back to NeXTSTEP.

      I suspect Qemu 0.9.0 could run it, this is before GCC changed some of it’s internal workings in the 3->4 transition and it had much better compatibility. Although a recent version could run Novell NetWare 3.12 again so maybe there is hope.

  8. Hey, thanks for the info. I think it is interesting with the early x86 NexTStep’s with very limited hw compatibility like 3.1-3.2 you would think in theory they could install in Vmware with buslogic or in Qemu with the NCR scsi but those versions just won’t pick up on the adapter within Virtualization, well, in Vmware it does detect the drives but it stalls forever on probing. In the past I tried the NCR scsi for a secondary hard drive with Win95 under Qemu which worked & was kind of neat, but things were too unstable, don’t know if the situation has changed since.

  9. Don’t know who I can ask, so that’s only a new try…. if I have installed Xenix and applications, but later I recognize that the initially choosen partition size was far too much, is there a possibility to “shrink” the Xenix partition without data loss ?

    • I’m pretty sure that Xenix is nowhere that flexible. You’ll have to backup & restore. And then deal with the licensing fallout.

      • Hmmm all I know they all just “cook with water”, means there will be a description how this partition sector is structured, and even Xenix will read the size of the partition by reading this special sector. Because there is no tool obviously, I will try to decrease the size of the XENIX partition by manipulating the appropriate numbers of the related boot sector/partition record.
        Will tell you what happened then 😉

  10. VirtualBox emulates an ISA NIC based on the AMD Am79C690 which is apparently also known as the NE2100. Does anyone know if NE2100 cards are supposed to be backwards compatible with NE2000? I suspect not as far as I can tell. Otherwise would be nice to have a Xenix driver for this NIC

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.