Since there has been some buzz on Coherent, I thought I’d see what the state of emulation is in 2015.. .While Qemu 1.2.0 can install Coherent, the hard disk access is incredibly slow. Luckily for me, I was basically stuck on hold, and bouncing between tasks so the four hour long install didn’t seem so bad.
So for anyone who wants a pre-installed disk image, here you go! It’s installed on a 500MB disk image, with the geometry CHS=1015/16/63
The first thing I tried to do was to get it to run on Bochs. This was somewhat as easy as mounting the disk, and setting the hard disk to bootable in the Bochs setup program. Coherent boots up, and then starts to print errors that it’s unable to write to the disk.
write cmd 0x31 (WRITE SECTORS NO RETRY) not supported
So, the CPU seems to work, but without the ability to write to the disk, it isn’t too useful.
Next I tried PCem, and I got this error from both the 386DX and 486DX:
Which is a shame, as I thought that PCem would probably handle any sensitive timing issues the best.
Next up, I tried VMware Player.
Which had issues with the hard disk.
Next I thought MESS may actually be able to run it.
First step is the convert the flat disk image into a CHD:
D:\mess>chdman createhd -i \qemu\bochs-flat.img -o coherent.chd -chs 1015,16,63 -c none -f
chdman – MAME Compressed Hunks of Data (CHD) manager 0.153 (Apr 7 2014)
Output CHD: coherent.chd
Input file: \qemu\bochs-flat.img
Logical size: 523,837,440
Compression complete … final ratio = 14.6%
And then to run MESS:
mess64 -window at386 -ramsize 8388608 -harddisk1 coherent.chd
It boots, it seemingly doesn’t crash, but it just hangs there. I assume it’s also plagued by the insanely slow hard disk access that Qemu struggles with.
And finally I thought I’d give Virtual PC 2004 a shot. I converted my raw disk image to a VHD, and fired it up (nested on Windows XP on VMware Player)
qemu-img.exe convert -f raw -O vpc bochs-flat.img coherent.vhd
And shockingly it slams the CPU and acts like it wanted to boot:
I don’t know if this counts for close. But this is the current state of emulation.
So it’s great that there is source, although it looks like it’s several internal branches of the PC branch (the source only mentions the PDP11, 68000 and Z8001 ports in libc), but there is a bunch of RCS files. Its more so a matter of going through all of that to parse out project tree’s and see which ones are newer. Not all parts have RCS files though, the userland is just a straight source dump.
I’d suspect the only viable way to get this running on modern emulation is to really get it either cross compiling, which means building it’s toolchain, and trying to build a new kernel or finding old enough hardware to build on. I can’t even begin to imagine trying to use a compiler on a disk that functions at 1kb/sec.
*** UPDATE ***
It takes about a minute to boot up, as it’ll run an aggressive (and silent) fsck. I can only assume it scans the entire volume as I don’t see why it takes so long. I also didn’t try to do anything special, just a guess on how to ‘tweak’ Qemu to be more friendly…
qemu-system-i386w.exe -cpu 486 -m 8 -hda bochs-flat.img
Although I don’t know if you need to reduce the CPU or limit the RAM (remember Coherent can’t swap!).
I need to test some more, as I managed to corrupt the disk editing some files, but I think you need the fsck @ boottime, and need to cleanly shutdown with a:
shutdown halt 0
Maybe now is a good time to read that manual.