Windows 98SE on Modern Hardware

After some initial passthrough success i tried to continue test with Pericom PCIe-PCI results are bad, i was able to pass through cards, but any of them fully worked. Unless some Trident PCI and Voodoo 3 PCi i other machine, im out of cards… I still have some PCI soundcards to test, but i will remove videocard fan first and test on board native PCI slot which is using Asmedia 1083/1085 chip… to discover if i have same issues with it or not…
Its always problem when only 1 guy is trying something, can easy to some mistake… or i could have problem HW, but i was used that Pericom adapters 2 years ago and it seems to work fine.

Tested cards are results:
- ATI mach - typical segfault whe i try to execute machine
- ATi Rage XL - typical segfault whe i try to execute machine
- SB Audigy SE- when i trying to install driver and reboot, before device is found, i getting Windows boot freeze, with some invalid path error. I dunno, maybe but driver, its strange error.
- Nvidia TNT2 M64- im getting frezes after, i install card drivers, right on logon or after… Before that i had high resolution. If passthrough is working, problem could be that its second Nvidia card in system. Second option is that card is half-dead - it so wanted to test it with other machine, when i got modern Linux login screen freezes (i needed to copy some drivers for Win98) - i though that card is half dead, but after i installed it into Windows 98 machine and played Quake for couple of minutes and it worked fine, so its probably ok… It getting quite hot, so it could in theory overheated - but i doubt it… because freezes where quite consitent on same places.
- Cirrus 5440 - physical machine refuse to boot att all, this card is not big fan of any new board, even without adapter
- S3 virge - physical machine refuse to boot att all,this card is not big fan of any new board, even without adapter
- SB live - got machine freezes (main one) during card installation.

Also some mark that something is not good is that, from few times, i wasnt able to card in adapter by lspci. Its other indication that somethings is not good…

There is also idea that 2 Asmedia + Pericom controllers with one machine, are not good and Pericom would work fine with machine without native PCI slots.

There are 2 main possibilities, there is something wrong with Pericom adapter or with Pericom plus my MB combo… or KVM PCI pass through is really picky from used card perspective, or not working great.

Ok some good news, i made AC97 audio working with 3.41 driver:
http://vogonsdrivers.com/getfile.php?fileid=1319&menustate=0
I tried vxd drivers for Win95 with both VIA controller, both are working, i know that someone prefer them. WDM - Win98 are working too - it tried that for “normal” AC97 Realtek and that for VIA, i dunno if exist some newer 3.x line drivers.
It has also some SB emulation - un tested by me, or it theory you can enable SB16 emulated sound card to, disable Relatek SB emulation and set primary sound card for Windows to Realtek and for legacy and Dos dual boot use SB16 emulation.

I also got some MSFN help with ES1370 Win98 drivers. I managed install them without exclamation mark, but from speakers im geting only noise and when i try to run some games, im getting bluescreens… I dunno if problems is driver or Qemu bugs and missing feature, i havent read any ES1370 + Qemu success stories, so far.
https://msfn.org/board/topic/163376-enso…comment-1178659

Thanks to vogons friendls, i also tried to install intel chipset drivers… i made it working without them, but i guess it should be better:
http://www.vogonsdrivers.com/getfile.php…menustate=30,28 its one worked.

I added also this and sound driver links to guide post and also with new Realtek AC97 3.62 driver, untested.

Good news, within native ASM 1083 slot TNT2 is working fine, i played Quake 3 for while and there are some ASM108x PCie to PCI adapters i have only one very clunky one (https://i.ebayimg.com/images/g/OyAAAOSwHv1eO3Jf/s-l1600.jpg )… i need something better (if such thing exists). This one really only good to kill MB and addon cards… it would need some card holder at at least.

Old ATI PCI which reporting segfault with Pericom do same thing on ASMedia native slot, so these cards are so far dead for passthrough… i dunno if just feature or KVM Qemu bug…


Can happen due to Driver and X.org issues if the card was previously initialized. Do a lspci -k and check Kernel Driver in use. Blacklist it with a Kernel Parameter and make sure that when you boot again it is in blank (Later it should be catched by vfio-pci. Unless it already is, in which case I don’t have idea). Also do a full power cycle (Shut down, disconnect Power Supply from wall or switch it off, press the Power button several times to discharge, turn it back on again).

So far i never saw Kernel modules: just blank even for cards which worked, there is always vfio-pci . Im trying to blacklist them through this file:
/etc/modprobe.d/blacklist.conf
and there text:
blacklist modulename

For these old ATIs im using:
blacklist atyfb // Im searching modules through lspci -vv

I hope that this is right. But i found other strange thing, im using this tuporial for download card rom to disk:
https://pve.proxmox.com/wiki/Pci_passthr…f.29_compatible
And with this one im getting some I/O errror, but course it could some tool bug.

But this could be interesting for iGPU thing too, i still see that there is listed: snd_hda_intel without Kernel modules in use… so its sort of blank. Should passthrough it with iGPU, i would expect that some HDMI audio device would be part of iGPU, but hda is strange to be, but i some tutorials is recommended to black it too, so my iGPU part of blacklist is this:
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

Its not idea, because i would lost realtek hda which i want to use (but for making iGPU working i did my best)… but find out then i blacklist snd_hda_codec_hdmi that audio device is already gone, as far as i can believe - Sound preferences dialog. I dunno how to check audio devices in terminal.

Im still struggling with make Creative cards working… when install Live / Audigy drivers, i everytime getting during boot this message:
Invalid path, not directory.

I never saw something like this, i still can boot in Safe mode but not to normal mode, how to recover from this?
Is someone some SB Live driver without install just *.inf files and other files?

I finally made SB Live! working… I found some not setup.exe drivers, just info files and archive (attached), sound is clean as native.

So we now have really everything what you would need working - Videocard card passthrough, Soundcard passthrough, virtual networking.

Now we can test more cards etc… i will test some Dos friendly cards (SB live already has some EMS only Dos support) like Yamhas 7x4 and Vortexes, to real DOS/Win98 dual boot heaven, but even without it already great.

I tested nGlide install inside Geforce 6 machine machine with pasthrough and Diablo II, so also 3Dfx - GLide is working within Win98…


If Kernel Driver in use is in blank, it means that no Driver is currently binded to it.
Note that you can blacklist Drivers so that the Linux Kernel doesn’t load a Driver at boot, then manually load a Driver. Check here for an example of the command line parameter: https://bbs.archlinux.org/viewtopic.php?pid=1677243#p1677243
You could, for example, blacklist snd_hda_intel, then manually load it for the IGP HDMI Function and for the integrated Sound Card (In lspci you don’t see the Realtek codec but instead the Intel audio controller), perhaps even automatically with a boot script.
For reference, one of the reasons why it may be preferable to do things that way is because some cards don’t work well if they are initialized at a previous stage. For example, some modern Radeons have reset issues and only work properly the first time that they are initialized, thus you do not want the host to taint them, and instead leave the VM to do full initialization. Suppose that you have two Radeon cards, one for the host, the other for passthrough, assuming that vfio-pci can’t grab the VM card before the host Drivers initializes it (There were some Kernel Parameters to make sure than vfio-pci was loaded before other Drivers, but I never used it that way), it could be viable to blacklist the driver then load it manually for the host card. If I had such scenario, I would do things the way I described.
Since you are using ancient cards and there is no way to know beforehand how they behave in warm resets or re-initialization scenarios, keep that in mind if you have any issues.



I’m glad that you’re advancing rather quick with little help. Do you miss bare metal W98, or believe that virtualization + passthrough can fully replace it? After all the time you already spend on it, you should have an answer. If anything, it will grealy simplify retro gaming because you only need a PCIe-to-PCI adapter and the Video Card that you want instead of fiddling with a lot of vintage Hardware parts.

These seems to be a lot of work left to be done like documenting which Drivers works and which doesn’t, but seems like you’re already working on that. Are there any equivalents to extremely picky Software like the famous 8088 MPH demo that usually only works on genuine IBM PCs so that you can stress test compatibility?

Also, VMs coupled with passthrough can be EXTREMELY HELPFUL for people that wants to reverse engineering Hardware. I suppose that eventually a few guru developers will rely on this the next time that someone wants to implement a specific card emulation. I know that it was one of the IOMMU use cases, but I don’t know how often developers rely on it.

Yamaha 724 PCI soundcard is working fine for Windows native application, there is some Legacy device, so far no sound in Windows 98 dos windows, i will try it in native Dos later.

@ruthan

did you try the drivers on the vogons archive?

http://vogonsdrivers.com/getfile.php?fileid=1470&menustate=0

No i find just some generic 724 driver on disk… it reports version 4.06.1033.

I got hint to use for virtualized graphics - im using it for sound card testing, more user friendly because i can do it remotetly to use instead emulated cirrus videocards, std + universal VESA 2 driver - its working even on real very new videocards. I tested it with Diablo which was with cirrus and its significatly faster at least on Linux with KVM, Windows virtual has not KVM… it has HAXM accelerator possiblity but… but minimally at least 1+other user getting crashes when we reach Win98 desktop… but whpx (Hyper-V) is proven to wrong… at least with some Qemu build, but im not using it because of Vmware conflicts.

VBEX9 Russian Bear download:
https://bearwindows.zcm.com.au/vbe9x.htm

@ruthan

the vogons pack has a newer version - 4.12.01.2019

from what I’ve read on vogons forums, the VxD driver is better than the WDM driver.

I tried to Yamaha i real Dos, but i wasnt able to produce anything else than test 16bit sound, it worked even on MB, where anything else in DOS with any card not worked, so who knows… there is problem that its EMS card and with my 90 KB of Dos ultimate config files and so far unknown Qemu memory map i could get quite mess… so i postponed it.

I tried Aureal Vortex 1 - 8820 - driver 1189, its working fine in Win98 nicely, it also has some SB pro DOS fallback and i was able to produce with it FX sounds - in Warcraft 2 setup, Doom II and Blood, but not FM for some reason… So Qemu has at least some internal wiring to make Dos sound working on pass through card. Wacraft 2 dont started, but would be suprised if it would be bug of Cirrus dos modes implemetation of some Qemu bug, because i wasnt able to turn on Quake 640x480 in dos, i tried lots of things, VBE 2.0 extension, other Qemu video cards… Warcraft 2 is 640x480 games, that 640x480 working with Windows drivers, doesnt really mean much for it.
BTW Qemu videocard speed is funny thing, Doom 2 is slow with its integrated graphics, but Blood is running greatly.

I will try Vortex native Dos sound later, it has advantage that could be loaded in any mode and from command line and if my memory serves even unloaded.

I also discovered that VBE9x is no so great, it is nice for Windows, but when you try to run Dos apps, it get stuck, if im not work its same with real machines.

I have tried Vortex V1 in real Dos, im quite sure that it was set right, but got nothing any game, so probably there is not right i440 DMA sound support, implemented in Quake, so until someone fix it, we have to use for Dos emulated SB16 or play in Windows 98 Dos box with FM. For example there are games like Quake 1 which hasnt have FM music, but cd music here you could get full experience.

Ok some new info to VBE9x, Dos mode is not working in Windows, mode by should work in fullscreen mode:
kjliew: VBEMP9X driver does not support windowed mode in Windows DOS box. I believe this is documented. You need to create a shortcut to force fullscreen, or run the game from a fullscren DOS box instead of clicking the GAME exe directly.

I have tried Yamaha 724 with physical MB… and same driver as with Qemu and Windows Dos windows and sound worked - in Warcraft II demo and Doom2, fine for some reason Blood wasnt able to detect card at all, but its not now important.
Im not saying that some new drivers cant work better, but i doubt that they would fix Qemu i440fx configuration… because i already tried it with modern VIA board, there is still chance but not big one, i also wanted to be sure that card is ok…

@ruthan


This is a huge issue with DOS 9X setups. If you have one drive installed and multiple partitions it’s easier for C: for Boot, D: for 9X.
But when you install another drive it shifts the drive letters.
D1 P1 = C:
D2 P1 = D:
D1 P2 = E: was originally D: for 9X

The only fix is to keep C: as the 9X drive letter but I prefer to have D: as 9X drive letter and use C: as Boot Partition only.

Maybe some tool exists to hide a partition letter before the DOS prompt or force or swap drive letters somehow.