Last modified: Tue Sep 15 19:36:56 EDT 2015
Partitioning and formatting
Windows 98 Setup
After the reboot
Patch for hang-on-shutdown
Problems installing Nvidia drivers
Vanilla DOOM with a PCI sound card
Installing as plain DOS
Despite great advances from Windows NT through Windows 2K and then XP, my first impression of Windows 98 upon returning to it after all these years was "Wow, great upgrade!" It's simpler, smaller, and faster than XP; it runs my favorite game (Classic DOOM); and, it's immune to the kind of troubleshooting nightmare—you know, that bang-your-head-for-hours, occasionally yelling "WHY IS IT DOING THIS?!?" at the ceiling kind of troubleshooting nightmare—that the obscurity and complexity of NT/2K/XP engender. W98 isn't perfect, heck no, but like an older model car, it is possible for a mere mortal to understand its workings and fix it when it breaks. That is a Good Thing.
The original protagonist of this article, which was my workhorse PC for 10 years, is of late 2004 vintage and uses the 865PE chipset released the previous year. W98 drivers for the motherboard chipset (especially the AC97 audio) and the GeForce 6-series video card are available, so with some careful configuration choices it is possible to run W98 on it with relatively little loss of functionality. Two somewhat newer chipsets that I have begun experimenting with have no W98 driver support at all but are booting to desktop.
|Chipset||Chipset release date||Motherboard(s) tested|
|865PE||2003-05||MSI 865PE Neo3-F / ASRock ConRoe865PE|
|PT880 Ultra||2005-01||ASRock 4CoreDual-SATA2|
|nForce 750i SLI||2007||Asus P5N-D|
Probably works but not yet tested:
The following problem cropped up on the 865PE chipset, but (quite unexpectedly) failed to crop up on the two newer chipsets.
With default BIOS settings, I got two reboots into the installation process and then it hung. With BOOTLOG.TXT output enabled, the end of the log looked like this:
[0015B6D2] Initing hsflop.pdr [0015B6F1] Init Success hsflop.pdr [0015B6F1] Initing esdi_506.pdr [0015B6F7] Init Success esdi_506.pdr [0015B6F8] Initing esdi_506.pdr [0015B703] Init Success esdi_506.pdr [0015B703] Initing esdi_506.pdr
esdi_506 is identified as the Windows protected mode IDE disk driver. The problem, apparently, was that the mixture of SATA and PATA interfaces didn't satisfy W98's outdated assumptions about ports and IRQs.
To avoid this problem, you have to configure the BIOS to use "Legacy Mode" or "Compatible Mode," rather than "Native Mode" or "Enhanced Mode," for its ATA channels. This limits you to four devices, but they don't all have to be PATA. The BIOS can map two SATA drives onto an emulated IDE channel.
(From two different AMI BIOSes:)
Beware that changing this configuration on a working system will probably
kill an installation of Windows XP. If Linux stops booting, you just
need to boot off the installation CD and update the device names in
/etc/fstab. A preemptive change to use filesystem volume labels instead
of device names should prevent it from breaking in the first place. See
The BIOSes on the PT880 Ultra and 750i motherboards did not present this compatibility option, but they didn't need it; W98 just worked.*
* Actually, it turned out that W98 installations on the PT880 Ultra get stuck at a BSOD about half of the time, and the guilty driver is "Standard Dual PCI IDE Controller." The rest of the time, however, it just works with no changes.
The regular W98 install process in which it automatically formats a partition before running setup seldom works at all with a larger disk and often trashes the disk before failing. If you FORMAT /S the partition from a boot floppy first, you can then run setup and it should desist from formatting it again. (You do have a floppy drive, right?)
For best results, use the patched-up FDISK from http://support.microsoft.com/kb/263044 (or this unofficial hack thereof) and the patched-up IO.SYS from http://support.microsoft.com/kb/311561 on a W98 boot floppy. Put W98 in the first partition and don't make that partition gratuitously large. W98 must reside entirely within the first 128 GiB (137 GB) of the hard drive to avoid overflowing its 28-bit LBA implementation.
The unhacked Fdisk prints all sizes incorrectly. Ignore them. They are completely bogus. Just tell it to enable large disk support, specify the partition size in MB, let it run, and set the new partition as active.
Various disk-trashing misbehaviors can occur if one does not walk on eggshells around W98 Fdisk and Format.
Continue past the warnings about there already being an OS in the partition and about NT file system (if applicable).
When setup finishes its first phase, you are instructed to remove the floppy (meaning take the CD out) and reboot. If you have 1 GiB or more of memory and let the install process continue without intervention, W98 will now halt with the message "Insufficient memory to initialize windows." As described in KB184447 *, the workaround is to add the following setting to WINDOWS\SYSTEM.INI:
So instead of just taking the CD out, you can swap it for a Linux installation CD, boot that and make the edit to WINDOWS\SYSTEM.INI with vi, THEN let W98 boot itself.
A related problem with the same symptom is described in KB253912, but I did not need to change the MaxFileCache setting at this point. (I did later, though, to get the Nvidia drivers to install.)
* KB184447 claims to apply only to Windows 98 Standard Edition, not to Second Edition, but the fix still works.
Setup has already clobbered the MBR, so when you reboot you enter the GUI portion of Windows 98 SE setup. Enter the product key and configure all that stuff. Two reboots later, W98's hardware wizard is busy installing drivers. Humor it until it goes away. Even when it has no driver for a particular device, it must be allowed to search for it; if you just cancel out, the dialog will come back again every time you reboot. Eventually, the installation process should complete and you should get a Windows 98 desktop.
If you installed Linux before W98, you will need the Linux install CD or an emergency boot something to get you back into Linux to reinstall LILO or GRUB after W98 does its damage. Alternately, you can back up your MBR before installing W98 and then just restore it afterward.
Every version of Windows insists on owning the C: drive, so some workaround is always needed to get two Windows installations to coexist without jumbling their system files together in the same partition. The easiest way to get XP and W98 to be good neighbors is to exploit the fact that W98 ignores NTFS partitions. If you put XP on NTFS in the first partition and put W98 on FAT32 in the second partition, then each OS will see its own partition as the C: drive. If for some reason this approach is unusable then you will have to fall back to more drastic options such as hiding and unhiding partitions or remapping drives at boot time. N.B., even when the NTFS partition comes first, if XP is allowed to see W98's file system it will activate System Restore on it and create a subdirectory called System Volume Information in the root directory. So while it is not strictly necessary to do so, you might want to hide the W98 partition just to keep the taint of XP off of it.
If you run Linux, it is generally easier and more reliable to boot W98 and/or XP using LILO or GRUB than using Microsoft's own boot loader. LILO and GRUB support partition hiding and drive remapping if you should need those features. On the other hand, the XP boot loader provides access to XP's safe mode.
The XP boot manager can be used to boot a W98 and/or Linux partition by
following the example in the antiquated but still mostly accurate NT OS Loader + Linux
mini-HOWTO (v1.11, 2 September 1997). Copy Microsoft's boot sector
(instead of a LILO boot sector as described in the HOWTO) from the W98
partition to a file on XP's C: drive and reference it in XP's BOOT.INI
C:\W98.BIN="Windows 98 SE".
From Microsoft Article 239887 rev. 2.4:
You may experience any of the following symptoms when you select an option in the Shut Down Windows dialog box.
- If you click Shut down and then click OK, the computer may stop responding (hang) while displaying the following message:Windows is shutting down.
- If you click Restart in MS-DOS mode and then click OK, the computer may hang while displaying a blank screen.
- If you click Shut down or Restart in MS-DOS mode and then click OK with fast shutdown enabled, the computer may restart instead of shutting down.
To fix these problems, Microsoft released the Windows 98 Second Edition Shutdown Supplement which is a 504 KiB patch named 4756US8.EXE:
4756US8.EXE: MD5 = BA 65 D8 9B 85 43 56 96 4F EB 25 90 5A 44 FB E7 4756US8.EXE: SHA1 = 332B BA76 54FD FC3B C72C B3E7 D1CF B225 17BC EDC1 4756US8.EXE: RMD160 = EE9B C87D 5750 48BC 6C5E AD6F 94CF 207B 9695 9B53 4756US8.EXE: SHA224 = A1954434 99974266 6DD00C81 E6ECCE53 854AF7CF 7F598E96 24CC0E79 4756US8.EXE: SHA256 = B7C906C4 EB134019 3D28651E BF446F4F E72D5B31 7B9C52AA 81F3DBA4 7EA245C3 4756US8.EXE: SHA384 = 68284670 F8A2608B 263A71AC ABF59970 0E96E3A5 311E5E7B 98651016 FAB2BB13 F42504DE EFD5F64B 5218C305 4C17CA93 4756US8.EXE: SHA512 = CE9A1998 BB4A1D62 4B8D2CEA 2F3D12AA 45ECF694 A357220F DD842592 3E2C6F69 DE7EDBE2 9F6FBB7C 4BCC0B1F 54FD7F3E 52226C9B D880908A F8716A88 9CD5FE19
Unfortunately, most of the links to it on the Microsoft web site are currently broken, but this ugly one still works: http://download.microsoft.com/download/d/d/8/dd8e4f2d-3b66-41d7-8a4a-cefefd8deb2c/4756US8.EXE
If that link breaks too, well, here's a cached copy.
Infinite problems getting the Nvidia drivers to install without everything becoming FUBAR are actually just a symptom of generalized memory-configuration-related instability that is triggered by having more than 512 MiB of RAM. On the 865PE PC with 4 GiB RAM, dramatic improvement occurred when I installed HimemX version 3.32 in CONFIG.SYS (displacing the HIMEM.SYS that came with Windows 98 SE) as recommended by some folks on the Microsoft Software Forum Network. To achieve complete stability, I also had to set a value for MaxFileCache in SYSTEM.INI. However, after doing that, I was able to increase MaxPhysPage to 40000 (1 GiB) without problems.
Working configuration for 865PE:
|Motherboard||MSI 865PE Neo3-F|
|CPU||Pentium 4 540 3.2 GHz (Prescott)|
|RAM||4 GiB DDR PC-3200|
|Audio||Onboard Realtek ALC850 8-CH Audio|
|Video||eVGA GeForce 6800 GT, 256 MiB GDDR3, AGP 8X|
|AGP aperture||256 MiB|
|MaxPhysPage||40000 (1 GiB)|
|MaxFileCache||131072 (128 MiB)|
|OS||Windows 98 SE|
|OS patches||Shutdown Supplement|
INF 18.104.22.1687 20041216 from Intel|
DirectX 9c from Microsoft
Realtek AC97 MB 5.10.00.6230 20070508 from MSI
HimemX v3.32 from Japheth (original site now gone)
Forceware 81.98 from Nvidia
With this configuration I was able to run DOOM 95 with no loss of functionality. Yay. Unfortunately, the motherboard sound drivers weren't really DOS-compatible, though they claimed to be—in DOS DOOM there was no music and the sound effects were crackly.
2013-01: With a different motherboard (MSI 865PE Neo3-F → ASRock ConRoe865PE), a 6800 Ultra EE, a widescreen LCD monitor and a Montego II A3D PCI sound card installed, I decided to see if I could get Vanilla DOOM to run with full music and sound.
The Sound Blaster Pro 2.0 emulation of the Montego II A3D worked eventually, but the drivers were troublesome.
In summary, although I got Vanilla DOOM with music and sound effects technically functional on a P4 system without an ISA slot or DOSBox, better results are obtainable with less effort by sticking with ISA and plain DOS.
See here for summaries of mostly negative Sound Blaster emulation results for other PCI sound cards. These PCI cards are really picky about which motherboards they will work on.
Using W98SE as a version of plain DOS is actually much easier than getting it to work in Windows mode. DOS has no failures triggered by memory over 512 MiB and will use BIOS calls for disk access.
FORMAT /S C:
CONFIG.SYSto taste. Overly complicated examples are shown below.
FreeDOS has a better installer and bundles superior, enthusiast-maintained replacements for many of the DOS programs that come with W98SE. As a compromise, one can take the kernel, COMMAND.COM, FORMAT.COM, FDISK.EXE, and SYS.COM from W98SE for better MS-DOS compatibility, but throw out everything else and use free replacements.
The music player MPXPLAY supports various PCI audio, including the motherboard's builtin sound, but not the Montego II sound card. DOOM sees neither one, but is runnable; the awful PC speaker option for sound effects works and is better than nothing.
|Example CONFIG.SYS||Example AUTOEXEC.BAT||Example MSDOS.SYS|
; 2013-08-12 DWF ; Stuff loaded: ; JEMMEX.EXE Combined XMM + EMM providing VCPI when needed. ; UMBPCI.SYS Turns shadow RAM into real-mode UMBs. Chipset-dependent. ; XMGR.SYS XMM that moves itself to the UMA. ; UIDE.SYS Caching Ultra DMA driver for HDD and DVD. ; UDVD2.SYS Non-caching DVD driver that works without XMS. ; NOTE: DOS/4GW v1.95 and v1.97 (as used by the original DOOM and DUKE3D ; executables, respectively) have bugs that cause serious crashes and hangs ; if large amounts of XMS memory are provided by an XMM working alone. ; Either replace the extender (http://dos32a.narechk.net/) or use one of the ; other options (EMM or MIN). [MENU] MENUITEM=EMM, JEMMEX EMM (needed for AudioPCI or SBLive) MENUITEM=UMB, UMBPCI + XMGR XMM MENUITEM=XMM, Just XMGR XMM, no UMBs MENUITEM=MIN, No memory manager MENUDEFAULT=UMB,20 MENUCOLOR=7,0 [EMM] DEVICE=C:\LOCAL\JEMM\JEMMEX.EXE NOEMS DEVICEHIGH=C:\LOCAL\UIDE\UIDE.SYS /S1024 /H DOS=HIGH,UMB,NOAUTO [UMB] DEVICE=C:\LOCAL\UMBPCI\UMBPCI.SYS DEVICE=C:\LOCAL\UIDE\XMGR.SYS /W DEVICEHIGH=C:\LOCAL\UIDE\UIDE.SYS /S1024 /H DOS=HIGH,UMB,NOAUTO [XMM] DEVICE=C:\LOCAL\UIDE\XMGR.SYS DEVICE=C:\LOCAL\UIDE\UIDE.SYS /S1024 /H DOS=HIGH,NOAUTO [MIN] DEVICE=C:\LOCAL\UIDE\UDVD2.SYS DOS=NOAUTO [COMMON] SHELL=C:\COMMAND.COM C:\ /E:2048 /P BUFFERSHIGH=30 FCBSHIGH=4 FILESHIGH=40 STACKSHIGH=9,256 LASTDRIVEHIGH=E
@ECHO OFF REM 2013-08-12 DWF REM Stuff loaded: REM FDAPM.COM Stop busy-waiting at C:\ prompt. REM SHSUCDX.COM DVD driver (D:). REM DOSLFNMS.COM Make long filenames work. REM RDISK.COM RAM disk (E:). REM CTMOUSE.EXE Mouse driver. PAUSE SET DIRCMD=/OG /A /P SET DOS32A=C:\LOCAL\DOS32A PATH C:\LOCAL\BIN;C:\LOCAL\98 LH C:\LOCAL\BIN\FDAPM.COM APMDOS LH C:\LOCAL\BIN\SHSUCDX.COM /C /D:UDVD1 LH C:\LOCAL\DOSLFN\DOSLFNMS.COM IF %CONFIG%==MIN GOTO SKIP LH C:\LOCAL\UIDE\RDISK.COM /S1024 /:E SET PATH=C:\DJGPP\BIN;%PATH% SET DJGPP=C:\DJGPP\DJGPP.ENV SET TZ=:America/New_York SET TMPDIR=E: :SKIP LH C:\LOCAL\BIN\CTMOUSE.EXE
[Options] SystemReg=0 DisableLog=1 Logo=0
I started a page with more generic configuration notes on W98SE here.
For all the other official and unofficial W98 patches and as much support as you're going to get, visit the Microsoft Software Forum Network.