Jump to content

UniATA: what about 9x/ME port ?

Recommended Posts

Well i know that many already knows it, but i believe that a port would benefit Win 9x/ME mutch:

Who and why need this driver ? Let me tell you: it worth installing UniATA if vendor of your new motherboard do not want to supply you with drivers for your old OS. Or vice versa, you have old motherboard and want to install new Windows with it. Of course, it is possible to use standard (generic) drivers those most probably supports this hardware. But what about performance ? You will have PIO mode with 0.5 - 3 Mb/sec transfer rate. UniATA shall use DMA or UltraDMA and have up to 10 times better performance. There is still one common problem with modern hard driver of more than 128 Gb capacity (also known as LBA-48 or BigLba). Old OSes do not support such drives at all, new ones require latest Service Packs. UniATA has built-in support for large drives. And at last - upgrade or downgrade of the motherboard. If you simply connect your harddisk to different motherboard, the driver of the previous one shall not recognize new IDE controller. And the system shall not boot. You will have to connect everything back, change IDE drivers to generic ones, reboot and reconnect hardware again, then change drivers to new ones. You cannot even think about walking with bootable harddrive to some other computers. Or resign yourself to have 0.5 - 3 Mb/sec transfer rate. Since UniATA supports numerous IDE controllers and in addition is capable of driving all standard (onboard primary/secondary) controllers, this problem also appears to be solved. Below you can find more detailed and more technical feature list.

Official website

latest stable version

latest beta (and sources rar / tgz)


Link to comment
Share on other sites

Patchworks, if I am not mistaken, by your own admission, you are not a programmer, (I am not either, so we are even ;)), but you have to understand that Win9x is DOS based and a COMPLETELY different operating system from NT based ones.

We are talking here about a NT kernel driver, not a "high-level" app.

So this is not the case of "porting", but rather to re-write from scratch a .vxd for win9x use.


Link to comment
Share on other sites

you have to understand that Win9x is DOS based and a COMPLETELY different operating system from NT based ones.

Yeah, i know (or the original authors released it themselves) but as for VBEMP i believe that is not impossible: at least you can start from an open source !!!

BTW couldn't KernelEx help ?

Anyway my suggestion don't wanna force anyone to collaborate, (as always) I just try to stimolate the community.

Hope that inspires ! :whistle:

Link to comment
Share on other sites

Actually, if you read carefully on the site, you'll see Win 9x support is present in the "planned" section.

And since, as you mentionned, this site hosts the Universal VESA drivers for Win9x, there's hope...

Thanks for the info Patchworks.

Link to comment
Share on other sites

Yep, what I meant was that "re-writing" a 9x driver from a NT kernel source, is not "porting" something, us re-writing it and there are very few people with the right knowledge for doing such a difficult task, the only ones I know are exactly Alter (main author of UNIATA) and bearwindows/KtP (Author of UNIVBE), besides some of the good guys at ReactOS/Tinykrnl, which are definitely not interested in 9x/Me.

More generally, testing and using a read/write disk driver is VERY, VERY dangerous (much more than a video one).

So I think we have to wait for Alter to succeed in the items listed before 9x/Me support:

Human-friendly setup tool

Full functional Serial ATA AHCI support

RAID support (mirror, stripping, mirror+stripping)

Hot swap for IDE devices under OSes prior w2k (Mike)

correct PNP (WDM) implementation for w2k and higher

SATA-splitters support

Win 9x/ME support


Link to comment
Share on other sites

you have to understand that Win9x is DOS based and a COMPLETELY different operating system from NT based ones.

Yeah, i know (or the original authors released it themselves) but as for VBEMP i believe that is not impossible: at least you can start from an open source !!!

BTW couldn't KernelEx help ?

KernelEx couldn't help because it's focusing on higher level - Win32 API, not Kernel (VxD) API which is completely different and is badly documented.

It is a different story with VBEMP:

first version is made based on framebuf.drv windows 95/98 ddk sample code
Link to comment
Share on other sites

  • 3 weeks later...

According to this M$ article:

Disks and File Systems: The Basics


Technical Notes on Disk Device Support

Windows 95 uses layered block device drivers to manage input and output to block devices such as disks and CD-ROM drives. A block device is a device such as a disk drive that moves information in groups of bytes (blocks) rather than one byte at a time. Layered block device drivers are 32-bit, flat-model device drivers that run in protected mode. These drivers support conventional and SCSI disk drives, plus partitioned and unpartitioned removable media. Windows 95 also uses layered block device drivers to manage Windows 3.x FastDisk drivers, MS-DOS – based real-mode device drivers, and Windows NT miniport drivers.

Each layered block device driver can be loaded dynamically, so the appropriate driver can be loaded or unloaded as needed without restarting the computer. Although the drivers are virtual device drivers (VxDs), they do not use the standard virtual device services and APIs. Instead, the I/O Supervisor provides the services and functions the device drivers need to complete their tasks.

Specifically, the block I/O subsystem in Windows 95 provides the following:

• Architecture to support all Plug and Play features

• Support for miniport drivers that are compatible with Windows NT

• Compatibility support for Windows 3.1 FastDisk drivers and MS-DOS real-mode disk device drivers

• Protected-mode drivers that take over real-mode MS-DOS device drivers when it is safe to do so

For more information about the block I/O subsystem, see Chapter 31, "Windows 95 Architecture."

- This 9x/ME UniATA port is theoretically possible with a minor re-write because win9x contains somewhat NT-compatible API to call scsiport.sys ( in win9x it is named scsiport.pdr ) - it do a lot of generic abstract disk-related work.

Intel's IntelATA driver (IAA 2.3 - http://www.intel.com/support/chipsets/iaa/ ) is made such way, if you haven't already know (intelata.sys is used for NT4, intelata.mpd for Win9x - these drivers/files accessed scsiport driver the same way).

A lot of code in UniATA was taken from linux kernel ide drivers.

Main difference (In UniATA) that in NT-version it supports SMP machines and has A LOT OF SMP code and related i/o synchronization. For different Windows NT-family OS-es (NT 3.51, NT 4.0, W2K, XP) some tweaks and OS detection routines are present to make driver universal. This driver also performs some operations with virtual/physical address space. Win9x system does not need and doesn't support all that stuff above. So it must be accurately removed... But doing it is not an easy stuff...

Edited by bearwindows
Link to comment
Share on other sites

  • 5 months later...

My ECS 755-A2 (SiS 755) the SATA ports had a Win98 driver (supposedly) so I tried it (BIOS set to RAID) and the SATA drive worked in 32 Bit mode. With the BIOS set SATA to IDE it went into compatibility mode. Unfortunately, in RAID mode the ATAPI devices (CD/DVD) were inaccessible (on IDE ports). You could see them but not use them (on IDE ports), in BIOS SATA set to IDE the ATAPI devices worked (IDE ports) but SATA drive was in compatibility mode.

here's the INF file for what it's worth:


; Copyright 2003 SiS corp.









DefaultDestDir = 12 ;Driver directory

MiniPortDriver = 12 ;





%PCI\VEN_1039&DEV_0180.DeviceDesc% = SISRAID , PCI\VEN_1039&DEV_0180

%PCI\VEN_1039&DEV_0180.DeviceDesc% = SISRAID , PCI\VEN_1039&DEV_0181

%PCI\VEN_1039&DEV_0182.DeviceDesc% = SISRAID , PCI\VEN_1039&DEV_0182

%PCI\VEN_1039&DEV_0182.DeviceDesc% = SISRAID , PCI\VEN_1039&DEV_1182
















11 = %DISKNAME1%,,,,




SiS="Silicon Integrated Systems Corp."

PCI\VEN_1039&DEV_0180.DeviceDesc="SiS 180/181 IDE/RAID Controller"

PCI\VEN_1039&DEV_0182.DeviceDesc="SiS 965/966(L) IDE/RAID Controller"

DISKNAME1="SiS 18X IDE/RAID Driver Diskette"

here's the SiS Win98/ME SATA driver:


Edited by gkar
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...