Last modified: Sun Jun 2 10:42:24 EDT 2019
After spending too much money on the latest greatest PC components of 2014, naturally the first thing I did was see if I could install Windows 98 SE. At first the answer was no, but coming back to it a year later I did finally get the workarounds sorted out. FreeDOS also runs, but I haven't yet gotten a DOOM-compatible sound card to work.
Chipset | Z97 "Wildcat Point" | |
Motherboard | GA-Z97-HD3 Rev. 2.0, BIOS F6 | |
CPU | SR219, Core i7-4790K (4 GHz quad core with hyperthreading) "Devil's Canyon" | |
RAM | 32 GiB of DDR3-2666 | |
HDD | 2 TB SATA 6 Gb/s 3.5" | |
Other "drives" | SSD, BD rewriter, multi-card reader |
Gigabyte's page for this motherboard supplies drivers for Windows 7, 8, and 8.1 only.
It was a blunder to buy a motherboard with only one PS/2 port when some boards still have separate PS/2 ports for mouse and keyboard. The mouse did not work right in W98SE when relying on the "Legacy USB Support" of the BIOS. Fortunately, the keyboard did.
It is surprising that year 2014 motherboards still provide headers for classic serial and parallel ports and vexing that they don't do the same for a floppy drive. Probably this is due to the floppy drive's dependence on ISA DMA.
The BIOS supports IDE, AHCI, and RAID modes for SATA, with AHCI being the default. There are no PATA headers.
The multi-card reader is a hazard to backward-compatible configuration inasmuch as the BIOS detects a separate "drive" for each of the card slots even though they are empty, which pushes the C: drive into fifth place. OTOH, the BIOS apparently supports floppy emulation for USB mass storage.
I did not allow W98SE's setup program to partition or format the disk but instead used a boot floppy loaded with the patched-up IO.SYS from kb311561 and FDISK from kb263044. (Later, I switched to this unofficial hack of FDISK and FORMAT.) However, I forgot to get a USB floppy drive, so I created a boot CD from the floppy image:
mkdir /tmp/work cp -a W98SE-cleaner.img /tmp/work/BOOT.IMG mkisofs -o W98SE-cleaner.iso \ -V "W98SE" -A "W98SE" \ -no-pad -iso-level 1 -J \ -b BOOT.IMG -c BOOT.CAT \ -hide BOOT.CAT -hide-joliet BOOT.CAT \ /tmp/work rm -rf /tmp/work
Said CD booted to the A:\> prompt on the first try (yay DOS). The "Verifying drive integrity" step of FDISK took excruciatingly long to get past 0% but then curiously sped up and finished in a few minutes. The total disk space was reported as 36548 MiB. As usual, I ignored the reported size, created an 8 GiB partition at the start of the drive for W98SE, rebooted, and did FORMAT /S C:. No problem, and DOS (or the DOS mode of W98SE) was then bootable on C:.
Proceeding to boot the W98SE installation CD into setup, the Oak CD-ROM driver did not find the optical drive. AUTOEXEC.BAT printed "The Windows 98 Setup files were not found" and dropped to an A:\> prompt.
I changed the SATA mode to IDE, but it didn't help.
In the W98SE install CD's boot image, CONFIG.SYS had the following for both the SETUP_CD and CD menu options:
device=himem.sys /testmem:off device=oakcdrom.sys /D:oemcd001 device=btdosm.sys device=flashpt.sys device=btcdrom.sys /D:oemcd001 device=aspi2dos.sys device=aspi8dos.sys device=aspi4dos.sys device=aspi8u2.sys device=aspicd.sys /D:oemcd001
I replaced the named drivers with substitutes from the 2014-10-19 release of the "drivers" package:
DEVICE=XMGR.SYS DEVICE=UDVD2.SYS /H /D:oemcd001
And what the heck, may as well replace MSCDEX.EXE (in AUTOEXEC.BAT) with SHSUCDX version 3.05. All of this only affects Setup; the installed OS would need separate patching.
REM LH MSCDEX.EXE /D:oemcd001 /L:D REM We haven't loaded any UMB provider, so LH is useless. SHSUCDX.COM /C /D:oemcd001 /L:D
With the install disk thusly patched and SATA back in AHCI mode, UDVD2 didn't find the optical drive; but with SATA in IDE mode, it worked. Progress!
I get this for doing FORMAT /S C: ahead of time. Continue....
Copying Windows 98 files to your computer...
Restarting your computer...
Boom.
This known W98 failure always happens when there is more than half a gigabyte of RAM (KB184447 and KB253912). I booted Linux and added the following settings to WINDOWS\SYSTEM.INI:
[386Enh] MaxPhysPage=30000 [vcache] MaxFileCache=131072
I also loaded XMGR.SYS in CONFIG.SYS to prevent it from autoloading the buggy HIMEM.SYS.
It didn't help.
Replacing XMGR.SYS with HIMEMX.EXE 3.32 and reducing MaxPhysPage to 20000 also didn't help.
...A year later, I started over with no edits to WINDOWS\SYSTEM.INI, and just installed HIMEMX 3.34 with the /MAX switch:
DEVICE=C:\WINDOWS\setver.exe DEVICE=C:\HIMEMX.EXE /MAX=523264
That actually worked, and installation continued. The graphics as displayed on the GTX 970 were glitchy, but it was close enough and soon I had a desktop. Installing the VBEMP 9x Universal VESA/VBE Video Display Driver (or here) then cured the graphics glitches.
Once W98SE was fully installed I was able to leave the BIOS set to AHCI and it still booted (from LILO and Grub2 anyway—the original MBR is long gone). However, to get the optical drive to show up, I had to change it back to IDE and install DOS CD-ROM drivers.
Microsoft's MEM showed some bizarre results. FreeDOS's MEM explained why: the remainder of the 32-bit address space wasn't fully hidden, it was just marked as used.
I tried the drivers for the Dio 2496 PCI sound card that happened to be installed but the sound card was never detected. Later, for an SB0100 Sound Blaster Live! 5.1, I tried two driver sets that had worked on older PCs. Again, Windows just did not see the hardware. Perhaps the entire PCI bus was missing.
Other than that, the most obvious glitch was that MS-DOS Prompt windows had like a 1-minute delay and a PC speaker beep before they would appear. No idea what that was about.
With SATA still in IDE mode, I overwrote the W98SE partition with my usual FreeDOS configuration and booted it.
I then reverted SATA to AHCI mode to see what would happen. Although the optical drive once again was not detected, UIDE fell back on BIOS calls for the hard drives and they worked.
Proceeding to test PCI sound cards that support legacy audio.
The drivers for the SB Live! require an EMM. JemmEx 5.78B crashed.
XMGR (2014-10-19) plus W98SE's EMM386.EXE loaded OK, but then I got stuck at this aggravating failure from the sound card initialization program:
I came back to this in 2018-07 with XMGR (2018-06-30) plus JEMM386 5.78, and specifying the usable address blocks manually as recommended by Jack Ellis.
DEVICE=C:\LOCAL\DRIVERS\XMGR.SYS /B /N24 ; Temporary "boot" DEVICE=C:\LOCAL\JEMM\JEMM386.EXE NOEMS I=B000-B7FF X=B800-CFFF I=D000-DFFF X=E000-FFFF DEVICEHIGH=C:\LOCAL\DRIVERS\XMGR.SYS
The SBEINIT failure reproduced. First success at working around was with XMSFIXER.COM:
This then was improved with XHDD (2018-06-30) using 2 GiB of the excess memory for cache. Both the /R switch (to reserve low XMS) and /G (to allocate high and fragmented XMS) were needed for SBEINIT to succeed.
; Work with SB Live! driver. DEVICE=C:\LOCAL\DRIVERS\XHDD.SYS /H /P /E /R512 /S2048 /G
Having done that, Mpxplay worked reliably with its SBA driver, but sadly the Sound Blaster emulation and MIDI did not work at all. DOOM music and sound effects both were silent, and Megamid hung during startup. The JEMM386 option SB, "SoundBlaster driver compatibility mode," made no difference.
Copying the files AU30DOS.COM and AU30DOS.INI from a working W98SE installation on a different PC, the driver initialized the card without error, but then Mpxplay and DOOM both crashed on launch.
The drivers loaded without error. DOOM got OPL3 music but no sound effects. Mpxplay could not play music.
Alarmingly, the PCI card also caused instability with respect to the booting and shutdown behaviors of the motherboard.
As-is, the setup program refused to run, saying "not enough available extended memory." After I replaced the DOS4GW extender with DOS32A, it then brought up a screenful of garbage and crashed.
That's it. I'm out of ammo.