Hacker News new | past | comments | ask | show | jobs | submit login
VMware mouse driver for Windows 3.x (github.com/nattynarwhal)
281 points by ingve 54 days ago | hide | past | favorite | 85 comments

I've had good results with DOSBox-X to keep old DOS/Windows software up and running:


It's basically a fork of DOSBox that isn't averse to supporting non-gaming apps. For entirely nostalgic reasons, in addition to all of eXoDoS, I've got Windows for Workgroups, Office, Visual C++, Encarta etc. I can't really justify keeping all this around other than it makes me happy.

> I can't really justify keeping all this around other than it makes me happy.

Emotions are underrated as drivers for decisions: I've read here and in a few other places that fMRIs have shown decisions are first taken by the part of the brain responsible for emotions: only later does the part responsible for reasoning "lights up".

This means rationalization happens ex-post. So now, whenever I want to take a decision, I listen to my "heart" which integrates from a large array of inputs, including intuition, and therefore performs generally better than pure logical reasoning (Kirk style vs Spock style)

Even if this doesn't work our for you... at least you'll be happy :)

> Emotions are underrated as drivers for decisions

and also extremely overrated. the number of times my work life has been made a nightmare because A) the decision-maker was shielded from the consequences of their decisions, and B) their technical decisions were based on "vibe" or how good the salesperson made them feel over 25 paid lunches, numbers easily over two dozen.

the worst periods of my career have always been because technical decisions were made on an emotional basis.

I realize that the my parent comment is almost certainly referring to personal decisions in the bit that I quoted; I'm just hoping to bring awareness to bad decisions based on emotion. it's endemic and terrible.

You have chosen a very bad example: a "decision maker" that is both "shielded from the consequences of their decisions", and who also lacks technical depth if I'm to read between the lines.

Except with a miracle, no amount of reasoning can save this person from taking a bad decision.

And no, I'm not referring to "personal decisions" - I make technical decisions based on emotions all the time.

It works for me because I have both skin in the game, and the technical knowledge.

Yet I chose to use emotions as a shortcut, because I have no time and no interest to put on paper why I recommend clickhouse for a timeseries. I do it because it feels right, because I have a bad vibe from the weird benchmarks published by competitors, and a good vibe from clickhouse based on when I last played with it.

This saves me time and effort, which is best spend on things that matter.

Some people use different names for this heuristic (cf "thinking hard and slow"), because emotions have a bad reputation, based solely on bad examples of people who can't rely on anything else, and just don't care about the consequences.

Emotions integrate inputs. Lack of good inputs = bad decisions, emotions or not, aka "garbage in, garbage out"

Hah, I kind of do the same, but I was then put on the spot when an interviewer asked me why I made certain technical decisions/tradeoffs. Somehow I don’t think they were impressed with the answer.

Oh well, their loss.

I usually get back at them by saying something like, "When you have experience as much as I do, sometimes my subconscious mind will recognize patterns that will drive my decision. You may call it 'gut feeling', I call it autonomous decision weighting using experiential pattern matching. And there's no shortcut to that ability; you just have to have decades of experience. Which I do."

So just stop having any form of self control? Yeah, I think that's already proven to not make me happy lmbo

For some of the other apps you might want to try pcem for more advanced and complete emulation. It takes more resources but does it at a lower level which should allow for better compatibility.

Why would you need to justify it?

So happy that people can still write & compile code for Win3.1 or other vintage OS!

Less than 10 years ago I had to write practically the same thing for an active "industrial" user... and I'm quite sure they are still using it.

I know a company that recently upgraded a computer to Windows XP. That computer controls a building-sized machine. The computer was upgraded to XP take advantage of the latest software update for controlling that machine.

The company that makes the software says it will no longer support XP, and if the machine owners want the next version of the software, they'll have to upgrade to a new machine. A new machine, depending on options, runs $200,000-$500,000.

So in order to keep the XP machine safe and happy for many years to come, it's been airgapped from the world. Not "airgapped" as in "I turned off my laptop's WIFI." But airgapped in the sense that it's 2,000 feet from the nearest building, surrounded by a barbed wire fence, and the control computer is at the top of the machine — probably 50 or 60 feet off the ground.

I once did a project which involved migrating an ancient (early 1980s) DOS based application to FreeDOS via a VMWare host. The application controlled an oven in a soft drinks bottling factory and due to EMI, the physical disk had to be cloned every 6-9months to avoid corruption, and sourcing ancient IDE drives was problematic.

The manufacturer was happy to provide updated software, but only alongside a new oven, at a cost of £1 million.

The factory had 4 ovens.

VMWare + Windows 7 + SSDs + proper Siemens industrial PC = much cheaper hack!

Definitely a cool feeling knowing the solution might be in place another 20-30 years :-)

What kind of PC is an industrial PC? More hardened? More resistant to factory floor accidents?

I don’t work in the field, but I was curious too and found the Siemens product offerings: https://new.siemens.com/global/en/products/automation/pc-bas...

Looks like they’re hardened to run continuously, reduce potential causes for maintenance, resist vibrations, and run in ambient temperatures up to 55ºC. You can also find variants certified for use in marine shipping scenarios.

Industrial PCs are also commonly passively cooled and more or less sealed, using the case itself as a heatsink and protecting the electronics inside from airborne contaminants.

Individual components can also be industrial or automotive grade rather than commercial grade; for example, industrial-grade SSDs are usually rated for 85°C and often have much higher write endurance ratings than client/consumer SSDs, and may also be protected with a conformal coating or epoxy potting across the entire board.

Also a barebones industrial PC can be 3X more expensive than a common one.

The cost of that PC failing can easily be 1000x more than a common one, so it's worth it.

This is correct. The hardware is built and tested to be run in the most horrible conditions. Their support is often top notch too for when the equipment breaks down.

Think of them like "rugged laptops" but for PCs / servers.

They also tend to have lots of legacy IO and expansion slots. Like 8 bit ISA slots on modern hardware.

Aren’t you afraid that three years from now somebody is going to decide that getting to the computer 50 feet in the air is unnecessarily dangerous and decide to add a Wi-Fi card?

Not really. It's the sort of thing that the computer only has to be accessed every six months or so. Even then, there's an access door and a circular stairwell to the computer's location at the top.

The company offered to put in a microwave wireless link (wifi won't work because of machine interference), but that was not in budget.

This is why with a $500000 machine the size of a building you get a contract so the manufacturer guarantees support, with upgrades to a current OS, for the lifetime of the machine.

Security is not the only reason you don’t want to be running Windows XP. New computers don’t run Windows XP, when this one falls over, are they going to look at eBay for a replacement?

I’ve written software for cpm in 2021. It’s still a thing.

Heh. My local nuclear power plant was, just a few years ago, hiring programmers to maintain some of the robotics software written in PDP-11 assembly. Expected to remain in use until the 2050s when the plant is decommissioned.

can you go into more detail? what did you write? why did you write it?

Not the parent poster, but I bought a Z80-based single-board computer last year.

I wrote a simple text-based adventure game for it which I submitted here:


Not new software. Preexisting software written in “pilot” which as you can assume not many people are familiar with. Z80s and cpm are still used in a lot of places (none of them at this time really at choice)

I think Vancouver's original rapid transit line still uses legacy systems with 5 1/4 Floppies.

I've had to for some academic work. Some interesting and promising work that did not catch much attention and was last implemented by some post grad student for proof-of-concept in the Win3.1 era, using some contemporary and very specific dependencies

This is my first time seeing a program versioned 0.0. I'm surprised I didn't think of the idea before! There must be some appropriate uses.

Makes sense. Taking https://0ver.org/ to its logical conclusion.

I can't tell if this is satire or real.

Poe's law still going strong.

It's clearly satire. They're pointing out how silly it is that ancient mature programs are still at version 0.x

It's basically saying, "I bear no responsibility whatsoever if this program messes up your system. It's not even version 1!"

My happy thought: I’m sure that someone, somewhere has an ancient door keycard badge program that they can finally virtualize because of a mouse driver.

It's not the same protocol as in virtualbox, though.


that page is a bit outdated; i do know VBox has changed for at least devices like SVGA, so I think it's possible. that said, i don't use vbox, so i can't say for sure

Nah, it's still the same protocol: https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devic...

What they dropped is the older Chromium/VMGL-based protocol for 3D acceleration , in favor of VMware's solution (which has at least one working open-source guest-side linux driver); but nothing else (and as far as I can see nothing from that page, so it's not really outdated).

Is that why 3d acceleration doesn't work anymore in recent versions of VirtualBox in Windows 2000 or Windows XP guests?

Well, and because they decided not to support the new 3D acceleration method on pre-Vista guests' Additions.

Not bad for a first attempt at x86 assembly! One wonders how much experience the author had with other assembly languages beforehand.

just PowerPC assembly before, but mostly on a much smaller scale (RE or writing basic blocks)

I'm very upset that upgrading to an M1 macbook will mean losing about 5 parallels VM's running x86, old versions of windows and linux.

I used it to run old versions of 3d, graphics, and embedded engineering tools.

I'd pay $100 a year for a tool that provided good emulated guest drivers (3d,audio,network,mouse) for win 9x, XP, 7, Linux on an m1.

I get around this by running windows / Linux virtually on a server in my basement. If there is some software I need I can either ssh or use a Remote Desktop tool.

Which tool even provides good guest drivers for 3d on non-emulated 9x ?


Looks like someone was able to show games working well on an M1 mac build https://github.com/kjliew/qemu-3dfx/issues/23#issuecomment-9... and the project offers a $59.99 service to generate binaries. Might be the perfect answer for GP.

What's the best way to virtualize Windows 95/98? I've read VMware no longer supports it.

Non-support does not necessarily imply non-working. Anyway, QEMU still work just fine.

Still VMware. “Not Supported” in this context just means it’s not continually tested.

There's plenty of hardware Windows 98 no longer works on Mike.

Just tried it on my 2012 mac with Fusion Player 12.1.2 the other day. Windows 98 does no longer boot. Worked fine on Fusion 8. My guess is that it needs Binary Translation support and that's not available with 12.x


My bad.

Figured to see if I could find out why. Upgrading from virtual hardware 4 to virtual hardware 6 seems to help. (yeah yeah, it's an old VM)

edit 2:

With some of the more recent AMD processors however you are out of luck, they really need BT.

they don't need BT, but rather, you can't let the VM manage its own PTEs. virtualbox lets you configure that - just turn off nested paging. vmware unfortunately doesn't do that. if you can get the VM booting in safe mode, flipping the safety options from system properties perf button might help too. (I will say ME runs fine where 98 doesn't. weird!)

but rather, you can't let the VM manage its own PTEs. virtualbox lets you configure that - just turn off nested paging

The background information for that reason is contained in these two detailed articles:



tl;dr: newer AMD processors have non-coherent pagewalks. Intel has maintained coherent pagewalks despite that not being explicitly guaranteed in their documentation. Win9x depends on that.

I will say ME runs fine where 98 doesn't. weird!

Caching/speculative execution related bugs are very sensitive to patterns of memory access.

If that's true then perhaps Mike can have someone take a look ;)

It would be nice if Win98 works for everyone still.

Oh and thanks for the mouse driver :)

This is what I'm talking about - perhaps a Ryzen thing?


Virtualbox 5.4 for example. Install W2K up to SP4, install guest additions, then run:

          regsvr32 %WINDIR%\AppPatch\slayerui.dll
Set up binary compatibility for any exe as you would do in XP. Problem solved.

Microsoft VirtualPC 2005 was pretty good, it had in-box sound and graphics drivers for Windows 9x. I'm unsure to what extent it runs on modern Windows versions though.

I wonder if the guest API of virtualpc is emulatable?

This is a stupid question, but can you run a VMWare Modern instance, and inside of that have a VMWare Ancient instance that runs Windows 95/98? I've never heard of nesting VMs, but I've never looked either.

If the VM depends on hardware virtualization support, you can only go one layer deep. If the VM does not depend on hardware support, then sure you should be able to nest multiple layers.

For really old software, you can probably get away with fairly high overhead emulation rather than virtualization, and it would probably be less buggy. I would imagine something like qemu would have no trouble booting up windows 95.

> f the VM depends on hardware virtualization support, you can only go one layer deep

Most VM support nesting of hardware virtualization, with glaring exceptions being Windows's HyperV (until W11 apparently) and Xen.

Was there even hardware virtualization support to take advantage of if you're going that old?

Yes, that's exactly what I do.

This way you get the binary translation feature from the older VMware version while you can use the hardware accelerated virtualisation in the outer layer.

That's actually how the VMware training courses I participated in were run: each student had their own virtual datacenter made up of multiple VMs.

As mentioned elsewhere in the thread, I've had good luck with DOSBox-X. If you need specialty hardware support then you may need to look elsewhere.

PCem is great for this; it's been made to emulate a wide range of old PC hardware.

VMware still supports it, it just uses an old version of Tools to do so.

No one has mentioned VirtualBox yet?

For good reason. Oracle's licensing is nefarious. They changed the licensing of the extension pack between versions, so now if you run it for personal use but connect to your company's wifi, they'll get your company on the hook for "violating" their license.

Out of curiosity, if one was to bring their laptop to Starbucks, would Oracle lawyers attack Starbucks?

Surprisingly plausible; there's precedent:


However, you don't need the extension pack at all to run 3.11 or 9x.

It doesn't run those OSes very well.

Neither do VMware nor qemu, but they are being announced here. They even fix my (almost periodical) choppy audio regressions when I report them, and that's more support than I get from VMware.

Virtualbox 5.x with Windows 2000 setting up compatibility mode:

        regsvr32 %WINDIR%\AppPatch\slayerui.dll

Thanks, I just needed this!

Whatever for? :D

You can't possibly say that without context.

Well, I've recently discovered the installation disks for Turbo C++ for Windows. And I remembered I still have Symantec C++ somewhere - and a vague memory they had quite nice MFC examples you could learn from. Unfortunately, I had to stop tinkering with them shortly after I started because I had to prepare for university exams and so on, and in the meantime other more successful tools appeared and I never had a chance to go back. But a fond memory has remained, so now that the second lockdown is approaching and I'll have more time, I plan to write a couple of Win32 (well, actually Win16) apps I had in mind back then. And if I feel particularly adventurous, maybe even port them to Windows 11 (I feel I might be able to pull it off with Symantec and MFC; I think Borland depended on their own library but I may be mistaken). In the light of crazy stuff people do in their spare time and post here, I'd call this a very reasonable and mainstream exercise.

What's the situation with the rest of the drivers by the way?

This is awesome, I will definitely use this.

I thought windows 3 supported standard ps/2 or serial mice. If a mouse needs a special driver, I'd classify it as broken. Ok, there's the possibility of it being a USB mouse, but... there's no reason a PC emulator/VM won't support standard ps/2 or serial mouse. Or is it more like the special situation where mouse doesn't needs to be "captured" by the VM?

Maybe consider reading the article.

The most polite RTFA ;)

I agree with you. I should have been more careful before commenting. Nevertheless, still think the title could be a bit more obvious.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact