VOGONS


Reply 40 of 64, by Kahenraz

User metadata
Rank l33t
Rank
l33t

I have a particular Slot 1 system that refuses to work with ANY AudioPCI card in DOS, including the onboard AudioPCI. I think there is some conflict with the VIA chipset. Maybe there is something similar with your Ryzen system that is causing it to fail. I'm pretty sure I've used AudioPCI with fast Coppermines before in another board, so I'm not sure what the deal is with these chips, but they appear to be finicky with some configurations.

Reply 41 of 64, by Paul Galbraith

User metadata
Rank Newbie
Rank
Newbie
Kahenraz wrote on 2023-01-29, 06:47:

I have a particular Slot 1 system that refuses to work with ANY AudioPCI card in DOS, including the onboard AudioPCI. I think there is some conflict with the VIA chipset. Maybe there is something similar with your Ryzen system that is causing it to fail. I'm pretty sure I've used AudioPCI with fast Coppermines before in another board, so I'm not sure what the deal is with these chips, but they appear to be finicky with some configurations.

I don't think that's the case for me. I've been doing a lot of testing, both in VMWare on the 5800X system as well as in nested VMs and also on an older 2nd gen i5 system I have with an old version of VMWare running on a Win XP host. I've been able to get all Win 9x OS's to run successfully in a VM on my Ryzen 5800x host with the exception of Win 98 FE. So no problem with Windows 95 (or 98SE & ME), for example, the patcher works very nicely to get the OS's running on my Ryzen host.

For Windows 98FE in particular, I can get the system installed and running on my Ryzen host so long as I don't install the sound driver, but I'm not convinced it's actually the driver that's failing, or if its presence is somehow indirectly triggering the problem. If I do a logged boot and then check BOOTLOG.TXT from safe mode, the last line is:

[00150E31] Dynamic load success ctpci9x.vxd

Which is the Creative ES1371 sound driver. On Windows 95, however, I have the exact same driver file (at least it's the same size and reported version) and it works fine.

Reply 42 of 64, by javispedro1

User metadata
Rank Member
Rank
Member

Running 98 SE on a intel 13700x , I saw the same error messages as in the missing TLB invalidation screenshot, both virtualization as well as booting it natively, so I guess we can add the intel 13th gen to the list of affected CPUs.
If someone has done experiments with similarly newer Intel CPUs (either native or virtualization), let us know; I would like to confirm.

With this patch applied, I could boot 98 SE fine (natively!).
MS's himem.sys does not seem to work correctly and I did not investigate (it loaded "fine" but was not giving me an HMA and would freeze later when entering protected mode ) .
Freedos' himemx worked.
Didn't try the igpu, but used a discrete RDNA2 radeon which still has classic video bios.

Btw both AMD & NVidia are not going to update their video bioses to be compatible with resizable BAR. That puts another nail in the coffin of "native" DOS compatibility with future motherboards.

Reply 43 of 64, by JH64

User metadata
Rank Newbie
Rank
Newbie

Sorry for less updating, I was a bit busy… (but on other hand I created this: SoftGPU: OpenGL + DirectX + Glide driver for Windows 95/98/Me => if you need 3D driver under virtual machine).

On Monday I published new version of Patcher, found some bugs, command line argument are now less more confusing and there is more utilities on boot disk – you can now run setup.exe directly from it, but you probably have to add /nm switch (no machine check = no check RAM size). Hope it will be useful 😀

Reply 44 of 64, by JH64

User metadata
Rank Newbie
Rank
Newbie
Kahenraz wrote on 2022-12-10, 20:00:
JH64 wrote on 2022-06-01, 22:38:

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.

Can you explain how this file works and what it contains? I sometimes use CompactFlash cards with Windows 98 on them that I move between different hardware without reinstalling it. Is there potentially a problem with this behavior from this file when moving between very different chipsets or CPUs?

In theory no, only you have installed some drivers and you do not see its files. Practically if your computer has disk or memory errors (or you installed system from broken installation media) errors can accumulate in this file. Basically it is only ZIP or CAB like archive (ok, there is loader and rare compress mechanism, but principle is same).

You can check content of your VMM32.VXD by this command:

patcher9x --vxd-list C:\windows\system\vmm32.vxd

You can also unpack it and have only placebo vmm32.vxd from installation media (Windows refuses start, if file missing, even if this file has no use):

patch9x --vxd-extract-all C:\windows\system\vmm32.vxd C:\windows\system\vmm32
ren C:\windows\system\vmm32.vxd C:\windows\system\vmm32.old
patch9x --cabs-extract D:\win98 "vmm32.vxd|C:\windows\system"

where D:\win98 is path to installation.

Reply 45 of 64, by JH64

User metadata
Rank Newbie
Rank
Newbie

And finally, another possible bug: if VirtualBox is not running natively but under WHPX (Microsoft's Hyper-V and the Windows Hypervisor Platform). Beside incredibly slow I/O performance makes this error: Near half of games can’t be installed because installer makes page fault in _WUTL951.DLL. You can see it on a screenshot.

Can someone with Windows 98 on native HW with some new CPU (Intel 11th gen or AMD Ryzer 3rd gen and newer) can confirm or disprove it? If is confirmed it is another TLB bug and if it is disproved it is another WHPX bug and it’s Microsoft problem, not mine 😀
I have this problem certainly with: Quake 3 Arena, Ultima 9, GTA 2, Test driver 5 (but there’s many others). If VB is running natively (Hyper-V is disabled) it is all fine, so solution exists but I’m curious of source of the problem.

Attachments

  • hyperv-error.png
    Filename
    hyperv-error.png
    File size
    52.41 KiB
    Views
    3357 views
    File comment
    WHPX error
    File license
    Public domain

Reply 47 of 64, by JH64

User metadata
Rank Newbie
Rank
Newbie

Yes, Hyper-V is basically optional system service. Virtualization software have usually 2 options – implement its own virtualization engine, which is system driver, because some instruction requires RING0 execution (btw: on Windows must be this driver digitally signed by Microsoft, so this is very limiting opensource; on Apple computers is situation simitar) or use system some service if present. VMware and VirtualBox have own virtualization engine, unlike QEMU (QEMU is using WHPX or HAXM or KVM on Linux). Intel HAXM is example of another virtualization engine without own Hypervisor, bud sadly recently discontinued.

You shouldn’t run 2 virtualization engine same time on one computer. Hyper-V is type 1 Hypervisor, if it’s enabled your “native” operation system will became virtual too, so no other virtualization engine will run when is Hyper-V is enabled. Advantage of using Hyper-V/WHPX is, you can use multiple virtualization software same time a better load balancing. Disadvantage is, that other virtualization software are degraded to be only interface + some device emulator. Second disadvantage is relative slowness and third are bugs = for example combination QEMU+WHPX on some HW+SW configuration just don’t work.

If is Hyper-V present, VirtualBox will indicate it by little green tortoise on status bar (screenshot in attachment). Another effect of Hyper-V presence is invisibility of virtualization instruction (that because your system is already virtual) – you can see it for example in software like HWiNFO (in screenshot).

Hyper-V can be enabled (or disabled) in control panel -> Programs -> Turn Windows Feature… -> Hyper-V -> Hyper-V platform (on last picture).

Attachments

  • hyperv-vbox.png
    Filename
    hyperv-vbox.png
    File size
    70.64 KiB
    Views
    3317 views
    File comment
    Hyper-V + VirtualBox
    File license
    Public domain
  • hyperv-hwinfo.png
    Filename
    hyperv-hwinfo.png
    File size
    76.15 KiB
    Views
    3317 views
    File comment
    Disabled instruction by Hyper-V
    File license
    Public domain
  • hyperv-control.png
    Filename
    hyperv-control.png
    File size
    58.38 KiB
    Views
    3317 views
    File comment
    Enabled/disable Hyper-V
    File license
    Public domain

Reply 48 of 64, by digger

User metadata
Rank Oldbie
Rank
Oldbie

Great work!

The next piece of the puzzle would be well-working 32-bit AHCI and NVMe drivers.

The late Rudolph Loew wrote an AHCI driver for Windows 9x, but it doesn't seem to work in a VM under VirtualBox or QEMU. Maybe with knowledge and experience in driver development could pick up the sources and add such support.

Intel HDA drivers for Windows 9x would be useful too.

Reply 49 of 64, by sergio_prado

User metadata
Rank Newbie
Rank
Newbie

@JH64 Sorry if this is a dumb question or if this has been answered before, but the TLB patch would offer any benefit to a old PC running Win9x natively? Will this patch will make it more more stable? Or this only apply to a virtual machine?

Reply 50 of 64, by JH64

User metadata
Rank Newbie
Rank
Newbie
sergio_prado wrote on 2023-04-14, 19:43:

@JH64 Sorry if this is a dumb question or if this has been answered before, but the TLB patch would offer any benefit to a old PC running Win9x natively? Will this patch will make it more more stable? Or this only apply to a virtual machine?

For 98 SE and Me no, TLB bug only affect new CPUs.

Theoretically can be useful for older system than 98 SE, if your CPU speed is near breaking point, can improve stability. You can check you CPU with this command:

patcher9x -cputest

But if your CPU is slow enough this patch won't give you any benefit.

Reply 52 of 64, by Kahenraz

User metadata
Rank l33t
Rank
l33t
Stainlesscat wrote on 2023-04-19, 10:36:

It makes me wonder what other types glitches are unearthed because of a newer processor architecture.

I found a serious memory leak that I've been unable to find a workaround for. It occurs in a VM, on real hardware, with lots of memory or little memory, with or without unofficial service packs. I've found records of people mentioning the symptoms in archives, but as it is difficult to trigger and resolves itself with a reboot, I don't think it was ever really identified or studied.

It's extremely annoying, because it destroys the ability of Widows 98 to use command line heavy software, like Cygwin. It also means that a reboot is inevitable, even if all you ever do is open and close Notepad.

Windows 9x: There is not enough memory available to run this program (when there is plenty of memory)

Last edited by Kahenraz on 2023-06-16, 05:49. Edited 2 times in total.

Reply 53 of 64, by tauro

User metadata
Rank Member
Rank
Member

You're a legend.

I commend you on your efforts.
This breathes new life into Windows 9x!

I have a few questions.

Here's the full list of possible patches:

C:\Windows\System\VMM32.VXD
C:\Windows\System\VMM32\IOS.VXD
C:\Windows\System\IOSUBSYS\ESDI_506.PDR
C:\Windows\System\IOSUBSYS\SCSIPORT.PDR
C:\Windows\System\NDIS.VXD

I'm running Win98SE (installed from iso md5sum 7c32b76e1b8374597cb5ef58a22aa635)
The floppy automatically patches VMM32.VXD and NDIS.VXD.

How do I apply the other patches? What does patching IOS.VXD, ESDI_506.PDR and SCSIPORT.PDR do?
ESDI_506.PDR is supposed to give support for bigger hard drives, isn't it?

If I can patch the installation media (WIN98 folder), what's the meaning of (quoting your github)
"VMM32.VXD isn't a generic file -- it is generated by the installer exclusively for your HW configuration."
Does the file exist before the install and thus can be patched in a generic way?

I tried patching the installation media doing
patch9x.exe c:\win98
using the default selection (just pressing enter)

I get this output:

patcher9x.full.output.png
Filename
patcher9x.full.output.png
File size
247.64 KiB
Views
3001 views
File license
CC-BY-4.0

Does this apply all the patches? Why are SCSIPORT and ESDI_506 listed twice? How can I patch them?

Thanks again!

Last edited by tauro on 2023-05-29, 11:15. Edited 2 times in total.

Reply 54 of 64, by tauro

User metadata
Rank Member
Rank
Member

Trying to patch Windows 95B installation cd (md5sum 5c3188e4685d19a98defc011395aaa6b), now it seems it will apply a patch for all the files except for... VMM32.DLL, what gives?

patcher9x.win95b.png
Filename
patcher9x.win95b.png
File size
159.03 KiB
Views
2989 views
File license
CC-BY-4.0

Trying to patch Windows 95A OEM (md5sum 0de0f508d907fbe64083597c349b04f0) this time IOS.VXD is not being patched (if I understand correctly).

patcher9x.win95a.png
Filename
patcher9x.win95a.png
File size
162.94 KiB
Views
2989 views
File license
CC-BY-4.0

Windows 95 RTM (md5sum 3f7919ceca5f53a08a84c26d692dbb8d) gives the same output as 95A OEM

Reply 55 of 64, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for the patch. I can confirm it works on intel Core i7-11850H 4,8GHz and Windows 98SE CZ under VirtualBox 7. Before the patch I couldn't even finish OS installation due to Explorer.exe crash during setup.

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 56 of 64, by Lemon-Meringue

User metadata
Rank Newbie
Rank
Newbie

This patch works brilliantly for my i9-13900K CPU - I can now set up Windows 98 in VirtualBox correctly again and it loads perfectly. In fact it does seem to me that Windows 98 actually runs faster and more stable than before. Thanks for the excellent patch9x software - you made my day finding this website.

Reply 57 of 64, by fanatictentacle

User metadata
Rank Newbie
Rank
Newbie
JH64 wrote on 2023-04-12, 00:57:

And finally, another possible bug: if VirtualBox is not running natively but under WHPX (Microsoft's Hyper-V and the Windows Hypervisor Platform). Beside incredibly slow I/O performance makes this error: Near half of games can’t be installed because installer makes page fault in _WUTL951.DLL. You can see it on a screenshot.

Can someone with Windows 98 on native HW with some new CPU (Intel 11th gen or AMD Ryzer 3rd gen and newer) can confirm or disprove it? If is confirmed it is another TLB bug and if it is disproved it is another WHPX bug and it’s Microsoft problem, not mine 😀
I have this problem certainly with: Quake 3 Arena, Ultima 9, GTA 2, Test driver 5 (but there’s many others). If VB is running natively (Hyper-V is disabled) it is all fine, so solution exists but I’m curious of source of the problem.

I can confirm that I have the same problem, with active Hyper-V I get error messages inside the Win98 guest regarding _WUTL951.dll

When I (correctly) disabled Hyper-V the errors are gone

Host: Windows 10 22H2
AMD Ryzen 7 5800X3D
VirtualBox 7.0.12

Guest: Windows 98SE
Patch9x applied
SoftGPU installed

Attachments

Reply 58 of 64, by NagisaEfi

User metadata
Rank Newbie
Rank
Newbie

Hi,

It's very often to cause app crash after apply Patcher9x.
Host: VMware Pro 17, Windows 10, AMD Ryzen 2400G, Hyper-V features disabled (Virtualization Based Security also disabled)
Guest: Windows Me Japanese, Patcher9x v0.8.50-beta4, VMware Tools installed
https://github.com/JHRobotics/patcher9x/issues/21

Compare to an Intel Core i5 6500, Windows 10, VMware Pro 17 Host and Windows Me Guest (no Patcher9x applied) it has no such problem.

Last edited by NagisaEfi on 2024-01-02, 11:47. Edited 2 times in total.

Reply 59 of 64, by jay1185

User metadata
Rank Newbie
Rank
Newbie

Thank you very much for this patch!

Host: Windows 10 22H2 (OS Build 19045.3693)
VMWare 16.1.0 build-17198959

Guest: Windows 98 SE (4.10.2222 A)

Gigabyte B550M DS3H
Ryzen 5 5600G
32GB (2x16GB) G. Skill Ripjaws V 3200MHz
Zotac Nvidia GTX 1070 8GB Mini
WD Blue 1TB SSD
Barracuda 2TB HDD
Barracuda 1TB HDD