Windows NT4 for PowerPC guest on OPAL on POWER8 in qemu

Sometimes, programming is just for fun. This is what PREPHV is for Andrei Warkentin. To quote the README:

“This is mostly a huge ugly hack, derived from my
ppc64le_hello code. The running philosophy here is
to throw things together late at night with my family
asleep and see how far I get without a real design
or without a real desire to implement boring things
like IDE (*sigh*) emulation”

Since my day job is maintaining the firmware that it runs on, I decided to have a go (it also ties in with the retro stuff I’ve been blogging about). So…

screenshot-from-2016-10-30-17-22-20and I’m off! (yes, this is the very latest qemu and skiboot):

screenshot-from-2016-10-30-17-23-32screenshot-from-2016-10-30-17-23-48Yes, prephv does clear all thirty two megabytes of guest memory

screenshot-from-2016-10-30-17-24-15A quick diversion, if you try Windows NT 3.51 for PowerPC, you get this:


But on NT4, you continue unharmed:

screenshot-from-2016-10-30-17-22-32A sign I needed to hack my filesystem of bits of NT installer bits a bit more:

screenshot-from-2016-10-30-17-22-45But, on my next try:

screenshot-from-2016-10-30-17-25-26Well… looks like there’s an instruction that needs to be emulated (and there’s no code to currently do that). Mind you… this is decently far into booting before we hit anything fatal, which is a pretty impressive effort – and it is tempting to continue and see if it’ll run on real hardware and if it could be made to work well enough to not find any disks :)

4 thoughts on “Windows NT4 for PowerPC guest on OPAL on POWER8 in qemu

  1. have you tried running an old version of VMware player or ESX etc under qemu ? (yes I know its running a hypervisor on an emulator on a hypervisor … I was just curious).

  2. HALPPC (halppc.dll) isn’t the right HAL for OpenFirmware driven NT systems. It was designed by IBM and MS for the IBM Power Series running the old IBM PPS firmware and doesn’t understand anything about OpenFirmware systems.

    The right one which is paired and works with the shipped VEENER is the HALFIRE PowerPC HAL (halfire.dll).

  3. this is a qemu bug at 384# :
    the bug is contain’s:
    1. the spim address at 400000×8 cant be launch on 2×04
    because the memory is trying to launch the “io.bin” binary as halfire.dll , the “io.bin” is not matching with your windows nt memory driver (HAL). so.. the machine has stop the hash Proccess and give you a blue screen or debug or anything like this.
    2. the ARC OpenFrimWare Dosen’t match with NextBootTime (NTLDR), and after you want to boot your windows nt, no boot option here to boot them.
    3. “IO.bin” is designed for mipsel – pseries matching kernels, to read and write memory files, but windows cannot supported them.

Leave a Reply

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