Various virtualization fun, including games & productivity!
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.
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.
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.
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
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 0×300, and thinnet, and it works fine for me!
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.
So while googling around, I came across the source code to Iris 3.7! SYSV for the old 680×0 based boards. And in there, of course is the source to rogue 3.6 .. And a little more googling I came across rogue.rogueforge.net, which includes cleanups to the source, and binaries for Win32, Linux and DJGPP (MS-DOS!)..
Wow this was without a doubt one of the more confusing things I’ve ever done.
So here is the problem. I want to delete some files from an IMD disk image, and then copy some new ones in. Easy right? .. maybe.
Ok first up the easiest tool I’ve found to manipulate CP/M disk images is cpmtools. Even better their pre-compiled binary is for Win32, so I’ll run it with Wine on OS X. which works fine. Although there is one slight problem, cpmtools doesn’t read the IMD disk format. So you will have to download imd118.zip from a backup of the late author’s computer.
Now using IMD you need to convert the OS disk into a ‘raw’ or ‘binary’ file. Naturally IMD is a MS-DOS program so firing up DOSBox, I ran:
IMDU CPM68K12.IMD CPM.RAW /B
And a few seconds later I had my raw file. Now the next thing was to manipulate the image in cpmtools. cpmtools has a database of disk drive types, and naturally there is no definition for the SAGE2. However thanks to a friend of mine (hi Lorenzo!) I took at look at 22disk, and found their demo version did in-fact have a definition for the SAGE:
BEGIN SAG2 Sage IV – DSDD 96 tpi 5.25″
SIDE1 0 1,2,3,4,5,6,7,8
SIDE2 1 1,2,3,4,5,6,7,8
BSH 4 BLM 15 EXM 0 DSM 315 DRM 63 AL0 080H AL1 0 OFS 2
Which is great, however it took a bit of experimenting to work out how to format this information for cpmtools. I compared a bunch of known formats, and then managed to work this out:
And now I can look at the image file!
$ wine cpmls -f sage2 CPM68K12.RAW
So I tidy up the image, and copy it back to the IMD program for compressing. And this was, without a doubt the most difficult to figure out, until after a bunch of searching, and Lorenzo once more again pointed me in the direction of bin2imd
BIN2IMD X.RAW X.IMD DM=2 N=80 SS=512 SM=1-8 /2
Unfortunately the interpreter doesn’t work right. It could be the disk transfers fault, maybe the SIMH SAGE emulator, or even the 8080 emulator. But it worked this far.
Somehow, I missed this as a ‘beta’ driver for the last public release of SIMH.
What makes the 68000 version of CP/M different from the i8080 version is that it was coded in C. And of course 68k CP/M suffered the same problem every other processor incompatible ‘same os’ OS has ever suffered which is no applications. But that is when I remembered the COM, which started out it’s life as an 8080 emulator for the 68000. With a LOT of creative googlling, I managed to find the source, mysteriously labelled 8088M.ZIP. I also found a binary here. But unfortunately that is as far as I got. I haven’t managed to figure out a way to inject files into the SAGE CP/M IMD disk images.
So this is where I’m stuck, and this is my call for help. If anyone knows how to get files in/out of these IMD files give me a shout. For anyone interested in 68k CP/M this is your chance to get it running.
The one funny thing I found in a hex editor of the disk image was this:
Never mind, me and a friend of mine (hi Lorenzo!) got the disk image thing figured out!
SunOS 4.1.4 was the last version of the BSD based SunOS for the SPARC platform. I had received an email earlier asking if Qemu could run SunOS. Earlier it was ‘capable’ however there were issues with the serial ports. And the framebuffer stuff that the SUN Proms recognized was never mainlined (please tell me I’m wrong?).
But then with a quick google search I came across this wikibook page with detailed instructions on how to install SunOS 4.1.4.
So I quickly built a sparc version of Qemu 1.7.0rc2, and followed the instructions. I was amazed that now we are able to boot off the CD (still attached as a HD though) but label the main hard disk, and install SunOS. I have to say it is very impressive.
Another hint I came across is the more correct way to boot the Sparc Station 20′s
-bios /usr/local/share/qemu/ss20_v2.25_rom -M SS-20 -smp 2,cores=4 -cpu “TI SuperSparc 60″
Sadly there is no graphical output, but the PROM won’t crash. I think you can have 512MB of ram on the SS-20.
So I received an interesting tip, talking about the latest Qemu version, when it was mentioned that it isn’t the hardware that is at fault with Netware not running, but rather something in the emulated CPU.
Because, get this, Novell Netware runs in KVM.
I was taken back, all this time I thought it was something in the -M isapc definition that broke, but it’s the CPU! I even rebuilt Qemu with the TCG interpreter, and it too breaks. I even went one more crazy step, and installed with the ancient isadisk controller, and NE2000 on the ISA bus, and it works!
So for now my old copy of Netware I bought a million years ago lives in the cloud!
So I thought I’d look for the latest release build of ReactOS, and give it a whirl. First I download 61112, and installed it on Qemu 1.7rc2 on OS X. First I gave the VM a 500MB disk, and 500MB of ram… which led to the thing using the whole disk for paging and was terribly unstable, and all around no good.
So next I got smart, used 64MB of ram, and a 1Gig disk, installed then turned off swap. Now it is more usable. I thought I’d do something crazy, and install Visual C++ 4.0. The installer works, except there is no progress, and it can’t create program groups. No problem I think as it does the same thing on CrossOver(wine). I download my QWDOS project with firefox, extract, and open the makefile and… all the menus are blanked out. And dropping down to the CLI, although the installer ‘registered environment variables’ the compiler wasn’t in the path. Clearly registry information is dropping.
So falling back to nmake I can at least compile my release build, and amazingly -it works!
So is it perfect? No far from it, but it certainly is a lot more usable than it was a year ago.
I built 1.7rc2 on OSX, and I’ve only tested the x86 portion… x86_64 of course still fails on vista & friends… 2003 of course hangs at “starting windows” so no progress there. I haven’t tried any MIPS, PowerPC, or SPARC things…
Also the Adlib/SoundBlaster is still broken in this release, there is a source change in adlib.c that has to be made. Also I just noticed that IRQ sharing works in ISA mode again, so the Ne2000 can go back to 0×300 IRQ 9.
Also speaking of emulation, I was thinking of shoving a VAX-11/780 into the world for the heck of it. Although I don’t think anyone would care. I’ll have to dig out the source to 4.3 and give the shell the ability to add new users. I wrote it once, and I fear I’ve lost those changes but it was cool for something back then.
Anyways post back here if you want an account on vax.superglobalmegacorp.com !
Really I saw it right here! It is only in it’s beginning stages, but it can run some very simple COM programs.
I should also say, I ran a nightly build, and it is coming along much more than the last year.. I didn’t trap or anything messing around. What I did do was run out of disk space with a large swap file, and downloading too much crap….
A good friend passed on this link. And what an amazing thing!
So basically a Raspberry Pi (which can be had for sub $50 USD), running a bare metal program can emulate the control signals of an Amiga floppy drive. It reads disk files from a flash card, and serves them to the Amiga. It can even kickstart an Amiga 1000.
I know that floppy emulators have been an on/off hot topic, but this is pretty interesting!
And of course it has a DIY angle to it as well.
Here is a video of it in action: