VOGONS


First post, by Kahenraz

User metadata
Rank l33t
Rank
l33t

I'm experimenting with different UDMA drivers in DOS and have found that Windows 98 is very unhappy if I try to run it while having one of these loaded. Is Windows universally incompatible with UDMA drivers being loaded from DOS?

Reply 1 of 5, by Gmlb256

User metadata
Rank l33t
Rank
l33t
Kahenraz wrote on 2021-08-18, 00:41:

I'm experimenting with different UDMA drivers in DOS and have found that Windows 98 is very unhappy if I try to run it while having one of these loaded. Is Windows universally incompatible with UDMA drivers being loaded from DOS?

Yes.

You shouldn't be using DOS drivers when running within a Windows 9x environment, only in MS-DOS mode. You should be using drivers specifically designed for Windows.

On Device Manager you should check CDROM and Disk Drivers devices, there should be a DMA checkbox on the Settings tab if it supported on your machine.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 2 of 5, by darry

User metadata
Rank l33t++
Rank
l33t++
Gmlb256 wrote on 2021-08-18, 00:47:
Yes. […]
Show full quote
Kahenraz wrote on 2021-08-18, 00:41:

I'm experimenting with different UDMA drivers in DOS and have found that Windows 98 is very unhappy if I try to run it while having one of these loaded. Is Windows universally incompatible with UDMA drivers being loaded from DOS?

Yes.

You shouldn't be using DOS drivers when running within a Windows 9x environment, only in MS-DOS mode. You should be using drivers specifically designed for Windows.

On Device Manager you should check CDROM and Disk Drivers devices, there should be a DMA checkbox if it supported on your machine.

If you want UDMA under both DOS and Windows, using a PCI IDE controller with a chip from Promise . Those (at least the ones I have tested) default to DMA mode under pure DOS . This might also be the case for at least some Silicon Image PCI controllers (can't recall with certainty). Both of these options will require a specific driver for use in Windows and not all models support all versions of Windows .

Reply 3 of 5, by Gmlb256

User metadata
Rank l33t
Rank
l33t
darry wrote on 2021-08-18, 00:59:

If you want UDMA under both DOS and Windows, using a PCI IDE controller with a chip from Promise . Those (at least the ones I have tested) default to DMA mode under pure DOS . This might also be the case for at least some Silicon Image PCI controllers (can't recall with certainty). Both of these options will require a specific driver for use in Windows and not all models support all versions of Windows .

In the case of Intel chipsets since PIIX4 there are drivers which includes UDMA support for both DOS and Windows such as the Triones for DOS (only for PIIX, PIIX3 and PIIX4 though) and the Intel Chipset INF utility for Windows.

Have not used any standalone PCI IDE controller so I cannot comment on these.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 4 of 5, by darry

User metadata
Rank l33t++
Rank
l33t++
Gmlb256 wrote on 2021-08-18, 01:15:
darry wrote on 2021-08-18, 00:59:

If you want UDMA under both DOS and Windows, using a PCI IDE controller with a chip from Promise . Those (at least the ones I have tested) default to DMA mode under pure DOS . This might also be the case for at least some Silicon Image PCI controllers (can't recall with certainty). Both of these options will require a specific driver for use in Windows and not all models support all versions of Windows .

In the case of Intel chipsets since PIIX4 there are drivers which includes UDMA support for both DOS and Windows such as the Triones for DOS (only for PIIX, PIIX3 and PIIX4 though) and the Intel Chipset INF utility for Windows.

Have not used any standalone PCI IDE controller so I cannot comment on these.

There is still the question of how Windows (and the corresponding driver) will behave if a DOS driver has enabled (U)DMA on one of these prior to Windows starting .

Reply 5 of 5, by hyoenmadan

User metadata
Rank Member
Rank
Member
darry wrote on 2021-08-18, 01:40:

There is still the question of how Windows (and the corresponding driver) will behave if a DOS driver has enabled (U)DMA on one of these prior to Windows starting .

UDMA.sys and cia chokes against VMM IOS subsystem, which doesn't have a way to know how to handshake with it in order to unload it. This doesn't happen with Promise and alike drivers, as their miniports (PDRs) know about the BIOS enabled DMA, and they will shutdown it before them load themselves (just like what happens with BIOS usb support and usbohci/ehci drivers in windows NT). Sometimes certain INT13 DMA-enabled bioses have enough intelligence to know about running on windows and how handshake minimally with the IOS, so them can keep providing DMA even in "DOS Compatibility Mode"... But that isn't a rule, and it can vary from version to version of the same ROM.

Like many people... You may not believe it, but the VMM is actually an operating system in its own right... And doesn't like when unknow code to itself tampers with critical resources such as DMA. That's why "DOS Compatibility with Storage devices", was designed like that, and to work with the bare minimum INT13 and PIO modes.

BTW... IOS has different codepaths to handle "DOS Compatibility Mode". If it detects any DOS code hooked to the INT13, it will use DOSMGR, which will lead to the DMA Choke later in Windows. If it doesn't detect the hooks, it will use BIOSXLAT to manage the access entirely from ROM code, so depending on how the ROM was coded, it can keep providing DMA access to storage on windows... Or just get back to PIO modes.