Discuss: Tutorial: Windows 95/98 guest OSes

Discussions about using Windows guests in VirtualBox.
FranceBB
Posts: 105
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by FranceBB »

javispedro wrote: I have been using the OS/2 museum driver for weeks now and never had that problem, what did you do to trigger it ?
I literally just installed it and then tried to boot with it.
Simple as that.
Anyway, I'll stick with the universal driver for now.
FranceBB
Posts: 105
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by FranceBB »

Here's something you might find interesting.
After people installed all the drivers suggested in the guide, they always come back here in this forum asking about one single device that is still with the question mark "?" and that is the PCI System Peripheral.
I've seen people saying that they don't know what it is and I even saw mods say that it's some virtualized thing that can be ignored as Windows98 doesn't have drivers for it and nothing will happen if you run it with the question mark.
Although it's true that nothing will happen if you leave it there, the fact of having a question mark might annoy some people (like me) and today I can tell you that after some trial and error I actually found out how you can make the yellow question mark disappear.
Right click on the PCI System Peripheral, select properties, reinstall the driver, select "Display a list of all drivers in the specified location", select "System Devices", MCA bus, accept the warning about the fact that the driver wasn't written exactly for that hardware and reboot.
After rebooting you'll see this:
Screenshot from 2023-01-08 03-47-24.png
Screenshot from 2023-01-08 03-47-24.png (4.91 KiB) Viewed 93241 times
Screenshot from 2023-01-08 03-50-28.png
Screenshot from 2023-01-08 03-50-28.png (11.16 KiB) Viewed 93241 times
with the device working just fine. ;)
javispedro
Posts: 58
Joined: 29. Jan 2022, 15:31
Primary OS: openSUSE
VBox Version: OSE other
Guest OSses: Old & New Windows, Linux

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by javispedro »

fth0 wrote:
javispedro wrote:I have read some feedback that the paging issue also affects newer Intel CPUs too -- 12th generation at least.
I'm not so sure. The post was only two hours before the announcement of a newer version which additionally handles the CPU speed issue. Did you clearly read that it's related to the TLB invalidation issue somewhere?
I have now tried for myself a 13th gen Intel CPU and I can confirm that Win98 SE does suffer from the same issue. It is definitely not the CPU speed issue, but something new. The symptoms are exactly the ones described in the first screenshot at https://github.com/JHRobotics/patcher9x . And the issue disappears after applying that patch.

At this point, I would ask for a mod to edit the tutorial to add a link to https://github.com/JHRobotics/patcher9x , since without such a patch, win98 at least is definitely unbootable on "newer" CPUs.

(And while at it maybe also add a link to http://www.os2museum.com/wp/windows-9x- ... driver-hd/ as yet another alternative to scitech / vbemp :) ).
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by mpack »

javispedro wrote:win98 at least is definitely unbootable on "newer" CPUs.
The picture below shows my unpatched Win98SE VM running quite happily on an Intel i9-10900K (see picture-in-picture insert). I was under the impression that's a fairly new processor when I bought this PC a few months ago. At which point did this "new CPU" incompatibility appear? And certainly this is not a speed issue - individual CPU cores stopped getting faster quite some time ago.

I need to understand this "new CPU" claim much more clearly before I'm willing to refer to it in the tutorial. People have been making similar claims the entire time I've been using VirtualBox, and they always boiled down to one guy having difficulty getting a VM to work and then assuming that it was due to having a new CPU.
Attachments
Capture.JPG
Capture.JPG (29.81 KiB) Viewed 92253 times
javispedro
Posts: 58
Joined: 29. Jan 2022, 15:31
Primary OS: openSUSE
VBox Version: OSE other
Guest OSses: Old & New Windows, Linux

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by javispedro »

mpack wrote:I need to understand this "new CPU" claim much more clearly before I'm willing to refer to it in the tutorial. People have been making similar claims the entire time I've been using VirtualBox, and they always boiled down to one guy having difficulty getting a VM to work and then assuming that it was due to having a new CPU.
Fair enough, albeit I rather doubt it, since it happens with VirtualBox, VMware, kvm/qemu, and when booting barebones, with exactly the same symptom, and, in all cases, the issue disappeared when I applied the extra TLB invalidation patch.
mpack wrote: The picture below shows my unpatched Win98SE VM running quite happily on an Intel i9-10900K (see picture-in-picture insert). I was under the impression that's a fairly new processor when I bought this PC a few months ago. At which point did this "new CPU" incompatibility appear? And certainly this is not a speed issue - individual CPU cores stopped getting faster quite some time ago.
I don't have enough budget to personally analyze all CPU models to see which ones are affected or not, but there's definitely something in the newer CPUs that makes Windows 98 unbootable. My impression is that it appeared on the 12th gen on Intel, and on AMD in the Ryzen 2nd gen. In your screenshot you are showing a 10th gen CPU, much older than that.

I was suggesting to mention it in the tutorial because I have already been getting emails asking about this problem for a while (which I could not reproduce either until I got my hands on a 13rd gen). Even here I saw at least one thread complaining about this very same problem, and someone rightly noted that there's no mention of it in the win9x tutorial. It's easy enough to recognize the issue with a screenshot of the error message, we don't really have to give a detailed list of affected / not affected CPUs. It's also not difficult to patch, and there doesn't seem to be any repercussions from applying the patch, even if your CPU wasn't affected by the issue in the first place.

There's also another workaround that we mentioned a couple pages ago -- disabling "nested paging" -- but it's VirtualBox-specific and it seems to decrease performance noticeably.
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by mpack »

I agree that it would be rather expensive to buy a new PC every time someone makes an incompatibility claim regarding the latest batch of CPUs (which is EVERY generation of CPUs). Ok, I will copy these these last few posts to the tutorial. People should take them as well intended, whether or not the assertion is truly tested.
FranceBB
Posts: 105
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by FranceBB »

I'm back with the Video Drivers and yet another attempt.
So, the drivers you find here: https://github.com/JHRobotics/vmdisp9x/releases are a continuation of the 2022 Michal Necasek's VirtualBox driver project and fix some of the bugs his driver had.

I went on to test with it and the key thing is to set VRAM to 64MB.
If you exceed 64MB, the driver will lead to a blue screen (128MB) or a Guru Meditation crash (256MB), however, as long as you stick to 64MB, it will work like a charm in FULL HD 1920x1080 RGB32:
Screenshot from 2023-06-17 00-21-42.png
Screenshot from 2023-06-17 00-21-42.png (41.66 KiB) Viewed 88135 times

So, now that I've finally got my Windows98SE to work in FULL HD, my mission is actually accomplished. :)
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by mpack »

@FranceBB: That's very interesting, thank you. I didn't realize that the original VirtualBox driver project was open source. I wonder why the limitation of 64MB?
javispedro
Posts: 58
Joined: 29. Jan 2022, 15:31
Primary OS: openSUSE
VBox Version: OSE other
Guest OSses: Old & New Windows, Linux

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by javispedro »

Address space exhaustion is one of the achilles' heels of 9x, since it's very 'compartmentalized'. Same reason it won't support more than a couple GiB of RAM. As a rule I always use the minimum vram VBox suggests (which is around 18MiB for my host's resolution) and I fail to see the reason to use any more.

I'm quite sure the original os2museum driver also works if you use sane values for vram. I got it to work even with 5,120×3,840 resolution, which is the max the control panel applet will display.
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by mpack »

Hmm. Come to think of it, I just checked my own Win98SE VM (working with BearWindows VESA driver) and note that the display RAM is set to 20MB. It's been so long since I created this VM that I don't recall where I got that number from. Probably it was the minimum that stopped VirtualBox giving me an warning.
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by mpack »

@FranceBB: Yesterday I got around to trying that Github Win9x display driver, and it works fine - at least as well as the previously recommended BearWindows and SciTec drivers. So it's a legit option whether or not the claims (which I couldn't test) are valid.

So I hope you don't mind that I copied your above post to the tutorial (viewtopic.php?p=538193#p538193). If you do mind then let me know and I'll replace it with something of my own.
FranceBB
Posts: 105
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by FranceBB »

mpack wrote: 6. Jul 2023, 13:37 Yesterday I got around to trying that Github Win9x display driver, and it works fine
I'm glad to hear that you managed to get it to work too. :)
mpack wrote: 6. Jul 2023, 13:37 So I hope you don't mind that I copied your above post to the tutorial
No problem. ;)
If anything I'm pleased that I've been able to help.
FranceBB
Posts: 105
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by FranceBB »

I actually have an update regarding the VRAM situation.
Turns out it wasn't actually the video driver but rather Windows98 having issues with the VCACHE.VXD driver as explained by the developer here: https://github.com/JHRobotics/vmdisp9x/issues/2

To quote the dev:
Ok, the problem isn’t how much total memory is critical. The problem is that with lots of RAM, memory management is not working correctly (I think that the problematic part was in the VCACHE.VXD driver – but I’m not sure) and sometimes it hits something important. With lots of VRAM (which is permanently mapped in system memory = 1 G of 4 G 32bit space total) it’ll hit something important faster.

Fortunately, there is a patch by R. Loew.
You can use this link, which you can type to IE on Windows 98 directly:

http://files.emulace.cz/patchmem.zip

Extract, run patchmem.exe and after rebooting you should be able to set as much memory as you want.
For Windows 9x, as every true 32-bit system, the maximum is about ~3.5 GB.

In other words, the reason why it was bluescreening is that back in the Windows98 era no one really tested it with more than 512MB of RAM, which means that when the value was increased there were unexpected behaviors, like pointing to protected memory locations which were supposed to be already allocated for something different. This, of course, causes bluescreens.
The thing is that when we specify a VRAM value, that memory is reserved 'cause it can then be allocated.
Now, with it being as small as 64MB, it would be pretty hard for the system to mistakenly point to one of the MB reserved for it, however, as its size is increased, it becomes more and more likely that it's hit.
This is why with 128MB of VRAM and 1024MB of RAM, sometimes it bluescreened, some other times it froze etc and it was generally unstable.
By applying the patch by R. Loew, the system no longer points to protected memory (which is reserved) by mistake, allowing Windows98 to have as much as 4 GB of RAM (as every 32bit OS without PAE, the user will see 3.5GB only), which, let's be clear, is basically infinite memory for 98 and the programs developed at the time.
Screenshot from 2023-07-16 23-02-24.png
Screenshot from 2023-07-16 23-02-24.png (7.34 KiB) Viewed 87943 times
This also means that you can have 128MB of VRAM too and the system is pretty stable:
253828115-ed6c6b07-d934-4dc0-a004-3fed0221bc0f.jpg
253828115-ed6c6b07-d934-4dc0-a004-3fed0221bc0f.jpg (97.58 KiB) Viewed 87940 times
253828515-3d1fac28-0633-4f52-9030-f6074c9ae835.jpg
253828515-3d1fac28-0633-4f52-9030-f6074c9ae835.jpg (85.19 KiB) Viewed 87940 times



Never in my wildest dream I thought I was gonna see Win98 work just fine with that much RAM!
As a disclaimer, for those of you thinking about using VBoxManage to uselessly change the VRAM to 256MB, the driver won't use it as it's limited to 128MB (which is plenty of memory anyway and more than you'll ever need, given that we're talking about Windows98).
That being said, if you're really determined, the dev won't stop you, and given that it's open source, you can compile the code with VRAM256MB (in the makefile) so that it will be possible to increase the limit to 256 MB.
Again, there's really no reason to do it, trust me.
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by mpack »

That's a nice bit of detective work, thank you. At some point when I have time I'll copy your new post to the tutorial as well.

And yes, 512MB RAM was a pie in the sky crazy amount in the Win98 era. In 2003 (that's 5 years later), my first XP machine at work had 64MB RAM. I think perhaps by 2006 I had gradually increased that to 512MB. In 2008 when I first started using VirtualBox my PC was dual core with 2GB RAM (and I remember because that's far from ideal for running VMs), but that's a full decade after Win98... back when the technology was moving fast. So I guess it probably wasn't until well into the Win7 era that I found being limited to 4GB a problem.
Kurt_Aust
Posts: 37
Joined: 10. Apr 2009, 04:48
Primary OS: MS Windows 2003
VBox Version: PUEL
Guest OSses: XP x64, W2K, 98se

Re: Discuss: Tutorial: Windows 95/98 guest OSes

Post by Kurt_Aust »

Edit: Updated the post with web archive link showing SciTech released Display Doctor for free.

May I suggest adding the following information to the section 3.2 of the first post

==================================================================================

SciTech made Display Doctor free for personal use prior to the company closing down.

Install and reboot
Register, exit and relaunch SciTech
Choose Monitor Model - (Standard monitor types) - Super VGA 1600x1200
Click Display Driver then change Active Driver to SciTech Nucleus Driver and reboot
Using Windows Explorer double-click the .reg file with the desired resolution and reboot
(optional) Run the Optimize Wizard - Keep Current Mode - Continue Without Centering
GLDirect - Switch to New Technology then switch back to Maximum Compatibility


The supported display modes are 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200

========================================================================================
A couple of notes:
  • By forcing the desired resolution the .reg file skips all the various startup hangs and weird display resolutions
  • The .reg file also disables the update check
  • For some reason the GLDirect samples don't work unless you switch back and forth as mentioned
  • This has been tested with all 3 graphics adaptors in VirtualBox 6.1.42
An updated .iso with the application, registry files and instructions can be downloaded from MediaFire
Attachments
SciTech-1280x1024.reg.txt
(925 Bytes) Downloaded 78 times
SciTech-1152x0864.reg.txt
(923 Bytes) Downloaded 73 times
SciTech-1024x0768.reg.txt
(925 Bytes) Downloaded 82 times
Last edited by Kurt_Aust on 17. Oct 2023, 00:51, edited 1 time in total.
Post Reply