First post, by JH64
Virtualization of Microsoft Windows 9x systems is a bit problematic due to 2 major bugs: TLB invalidation bug and CPU speed limit bug.
My program contains a set of patches to fix these bugs, and can be booted from a floppy on a virtual machine. It either applies the patch to the installed system, or it patches the installation files in order to create (relatively) bug-free installation media.
More info and source code: https://github.com/JHRobotics/patcher9x
CPU speed limit bug included: https://github.com/JHRobotics/patcher9x/releases/tag/v0.7.45
(Windows 95, Windows 98 FE + in theory SE too)
Small bugfix update: https://github.com/JHRobotics/patcher9x/releases/tag/v0.6.27
If you already applied may patch, you don't need install update - I updated is only patcher program, the patched code is same.
A few days ago, I released new version: https://github.com/JHRobotics/patcher9x/releases/tag/v0.6.23 (or in attachment)
Main improvements is that Windows Me is supported too and now is confirmed that it works with it.
There is list which CPU and Virtualization software works (and who tested it). I appreciate all responses, they were very helpful!
Ryzen 5 2500U (QEMU/KVM/WHPX, kjliew)
Ryzen 5 3500U (VirtualBox, JH64)
Ryzen 9 3900 (VMware, Stretch)
Ryzen 5 3600 (VMware, 1541)
Ryzen 9 3950X (VirtualBox, janih)
Ryzen 7 4700U (VirtualBox, JH64)
Ryzen 9 5950X (VMware, computerfan9000)
Core i5-1135G7 (VirtualBox, JH64)
Core i7-1165G7 (QEMU/KVM/WHPX, kjliew)
--- original post ---
I've created a patch for Windows 98 to run on the newest CPU (AMD Zen 2+, 10 nm Intel, ...). So, you can now run this system in virtual machine without restrictions. Bootable floppy with patch is attached or here: https://github.com/JHRobotics/patcher9x/relea … 0.6.14-boot.ima
Problematic code is described here: https://blog.stuffedcow.net/2015/08/win9x-tlb … validation-bug/, so I only injected 2 instructions to flush page table. Larger problem was that code is in file VMM.VXD which is part of WMM32.VXD which is compressed archive of more drivers generated specifically for your HW configuration by installer. Therefore, the patch program is a bit complex. Full code is here: https://github.com/JHRobotics/patcher9x
I've got limited numbers HW configurations for testing (most are laptops with AMD Ryzen 3xxxU and 5xxxU series or Intel i3 and i5 11th generation) and most testing I've done on VirtualBox (with enabled nested paging*), but theoretically all virtualization software (VMware, Qemu + KVM, Hyper-V) should work. I will be happy for info, which configuration (Virtualization software + HW) it works or not works.
Happy retrocomputing 😀
*In VirtualBox you can still disable nested paging, but it has side effects: it’s slower (Windows installation is painfully slower), some DOS programs are broken in this mode (for example DOS scandisk) and Windows 9x are very unstable.