I bet most would never imagine an article like this. And yes, it’s really Bill Gates on the cover. And yes the lead story is about Xenix. Really.
And can you imagine what magazine would have such a glowing photo shoot of Gates? I almost wonder if anyone can imagine which one it would be?
The main point of course is binary compatibility between x86 distros, and killer apps. Of course not quite in that terminology but it’s there. Even in 1985 the hints of the far superior 80386 was being actively talked up, and the promise of a Xenix for the 386 as well.
A bunch of early issues found their way onto archive.org, and it’s great stuff going over the old ads for SUN, HP, and all the old vendors, the articles wondering what will the future of BSD be, and Bill Gates on Xenix.
I know this will be a great score for all my Xenix fans!
So retrohun is doing their blog thing on github of all things, and the latest entry, is of course Xenix tales. As mentioned in comments on this blog & other places they found another driver for Xenix TCP/IP!
Going back years ago, the tiny NIC driver support for the elderly Microsoft/SCO Xenix 386 v2 included 3COMA/B/C and SLIP. However it’s been recently unearthed that D-Link had drivers for their DE-100 & DE-200 models, and as it happens the DE-200 is a NE-2000 compatible card!
That means that Qemu can install/run Xenix, and it can get onto the internet* (there is a catch, there is always a catch).
You can download the driver either from github or my password protected mirror. Simply untar the floppy under Xenix (tar -xvf /dev/fd0) and do the install via ‘mkdev dlnk’
Setting up the driver is… tedious. Much like the system itself. I found Qemu 0.90 works great, and is crazy fast (in part to GCC 3) even though Qemu 0.9’s floppy emulation isn’t good enough to install or read disks. With all the updates to Qemu 3.1 use that, it’ll read the disks, and allow for networking.
To give some idea of speed I ran the age old Dhrystone test, compiled by GCC 1.37.1 and scored the following:
Dhrystone(1.1) time for 5000000 passes = 8 This machine benchmarks at 625000 dhrystones/second
When compared to the SGI Indy’s 133Mhz R4600SC score of 194,000 @ 50000 loops that makes my Xeon W3565 322 times faster, under Qemu 0.90! And that’s under Windows!
Setting up the commandline/launching is pretty much this:
qemu.exe -L pc-bios -m 16 -net nic,model=ne2k_isa -net user -redir tcp:42323::23 -hda ..\xenix.vmdk added SLIRP adding a [GenuineIntelC] family 5 model 4 stepping 3 CPU added 16 megabytes of RAM trying to load video rom pc-bios/vgabios-cirrus.bin added parallel port 0x378 7 added NE2000(isa) 0x320 10 pci_piix3_ide_init PIIX3 IDE ide_init2  s->cylinders 203 s->heads 16 s->sectors 63 ide_init2  s->cylinders 0 s->heads 0 s->sectors 0 ide_init2  s->cylinders 2 s->heads 16 s->sectors 63 ide_init2  s->cylinders 0 s->heads 0 s->sectors 0 added PS/2 keyboard added PS/2 mouse added Floppy Controller 0x3f0 irq 6 dma 2 Bus 0, device 0, function 0: Host bridge: PCI device 8086:1237 Bus 0, device 1, function 0: ISA bridge: PCI device 8086:7000 Bus 0, device 1, function 1: IDE controller: PCI device 8086:7010 BAR4: I/O at 0xffffffff [0x000e]. Bus 0, device 1, function 3: Class 0680: PCI device 8086:7113 IRQ 0. Bus 0, device 2, function 0: VGA controller: PCI device 1013:00b8 BAR0: 32 bit memory at 0xffffffff [0x01fffffe]. BAR1: 32 bit memory at 0xffffffff [0x00000ffe].
In the file /etc/tcp the default installation does a terrible job of setting up the NIC. I changed the ifconfig line to this:
So there you go, all 20 Xenix fans out there! Not only a way to get back online, but to do it in SPEED!
Thanks to Mark for pointing out that there has been tremendous progress with version 3.1 of Qemu, and it’s TCG user speed is up to the 0.90 levels of speed (at least with dhrystone/Xenix), and it just takes a little (lot) of massaging to get up and running with Xenix with the right flags:
(This is a guest post by Antoni Sawicki aka Tenox)
Dear lazyweb. I have been collecting operating systems and system software since 1991. My archive was always intended to be eventually made publicly available. A few years ago I began researching various hosting options. In the end I decided to settle on archive.org. Nothing beats free and maintained by someone else.
The whole hoard is ver very large and it will probably take a long time to upload. Due to a popular demand I started with smaller items mostly sought after. Enjoy.
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.
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.
Now I ended up having to download the source to mame 0.151 (mame0151s.zip) 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.
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!
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.
Building this was.. . Involved, but I finally got it to link! Oh happy days! But then disaster struck!
USER Not enough parameters
Not enough parameters? And the worst thing is that I got this error EVERYWHERE… Googling this has become useless as everyone just says google it, so google made all that turn into a negative feedback loop! Or even useful advice like ‘upgrade your client, LOL’, but after going through an hour of `fun` getting this to run on Xenix I wasn’t going to try a new version of the source just yet.
Going through the source, looking for the USER command and where its used and found this:
And of course the WDC in question is one of these ‘new fangled’ LBA disks. Booting up on LBA mode it looks like this:
hda: WDC AC32100H, 2014MB w/128kB Cache, LBA, CHS=1023/64/63, DMA
The other mode, is CHS which of course gives us this:
hda: WDC AC32100H, 2014MB w/128kB Cache, CHS=1023/64/63, DMA
So I thought I could just ‘override’ the disk parameters under Xenix, and tell it, that its 1023/16/63. Sure that worked for formatting but booting? nope!
I pulled up the data sheet and it informs me of this as its native capabilities:
Recommended Setup Parameters
Landing Zone 4092
Jumper Setting Information Six Pin Drive
But how to get there? What was worse, is that doing a probe under MS-DOS I kept on seeing output like this:
But the numbers look good!?
And yet trying to override the geometry with these parameters only lead to disaster. Clearly what these programs were telling me were conflicting, what I needed was something to just tell me what it sees. So I thought I’d use Linux.
But not some 8GB download, because that’d take far too long. No weighing in a just over 2MB is the specialized ‘doom speaker sound‘ distribution. Its UMS DOS based, meaning that you can just unzip it onto a FAT drive, without any formatting/partitioning, and boot from MS-DOS into Linux. So sure enough this is what I saw:
Drive translation in action
First, yes I have two disks, I’m only interested in the ide0/hda. but as you can see its translating. I found the same result for both CHS/LBA. The only thing I didn’t notice for some reason was an option to turn drive translation OFF in the BIOS. Oops!
There we go!
So now I was able to boot the Xenix install, and it finally saw what it should have seen!
4092 Cylinders, 16 heads, 63 sectors/track!
then tell it that the disk was only 1024 cylinders, as mentioned in the usenet posting, along with changing the landing zone. I knew it was going to work so I figured I’d make a separate /u filesytem for the heck of it. Divvy takes me back to doing disklabels on 4.3 BSD
bust out the calculator!
With that all said and done, it was time to reboot, and it booted from the hard disk! I could then complete the install. After that was out of the way I noticed that it was not mounting the /u filesystem!
The following entry needed to be added to the /etc/default/filesys file:
Now it mounts up like you’d expect! If you plan on making the /u for peoples home directories don’t forget to alter the /etc/default/mkuser file!
I have no idea if this works on a 1TB IDE disk, but I’d imagine if you can somehow get it into the limited geometry Xenix can understand, it should work…. Of course why you’d want to run a Unix that can only address 16mb of ram is beyond me…
Now that it’s booting, the next step will be to get it onto the internet….
That’s right! from the homepage you can find screenshots, and download links, and ready to run systems too!
Xenix on the XT!
Pretty snazzy as the major hurdle with these old UNIX’en is that they talk directly to the old XT disk controllers, not using the BIOS.. The AT & beyond we got lucky as even in 2012 PC’s still emulate the old WD-1003 controller…
Not that I could imagine *WHY* you would want to run the 8088 version of Xenix (or the 286 version too for that matter) but rest assured you now can.