The MASM Forum Archive 2004 to 2012

Miscellaneous Forums => 16 bit DOS Programming => Topic started by: xenon on June 05, 2005, 06:04:10 AM

Title: Hard disk DMA (hardware programming)
Post by: xenon on June 05, 2005, 06:04:10 AM
Can someone point to me a direction to start on "Ultra DMA"?
I tried to google... I think it is a kind of "PCI DMA". But I cannot find the hardware programming information that i need.

What is the difference between Multi-word DMA and Ultra DMA?
I have the experience of programming PIO mode. And Sound Blaster DMA (but i think this DMA is different from Ultra DMA).
Title: Re: Hard disk DMA (hardware programming)
Post by: MichaelW on June 05, 2005, 06:22:16 AM
You can get some information on the drive/controller-related aspects of UDMA from the ATA/ATAPI standards. The draft versions, the last of which is usually very close to the finished standard, are available for download here (the finished standards are also available, but for a substantial fee):

http://www.t13.org

For information on the DMA aspects you could try the Intel documentation for the relevant chipset component.
Title: Re: Hard disk DMA (hardware programming)
Post by: xenon on June 05, 2005, 06:35:51 AM
I already have the draft ATA standards from www.t13.org

Now, is programming the DMA very chipset dependent? or most chipset follow a "standard"?
Programming the DMA is what I need to know now.
Title: Re: Hard disk DMA (hardware programming)
Post by: MichaelW on June 05, 2005, 07:16:37 AM
I think it is fairly well standardized, with the other chipset makers following Intel's lead.
Title: Re: Hard disk DMA (hardware programming)
Post by: xenon on June 05, 2005, 07:21:48 AM
Can anyone tell me what keyword to search for the intel documentation?
Title: Re: Hard disk DMA (hardware programming)
Post by: MichaelW on June 05, 2005, 09:30:49 AM
For the recent chipsets the component that contains the IDE controller and the DMA controller that the IDE controller uses is the I/O Controller Hub (ICHx, where x is a version number).

You can find chipsets listed under products on the home page, and the documentation on the "technical documents" tab on the page for the particular chipset.

IntelĀ® 82801EB (ICH5), 82801ER (ICH5R), 82801DB (ICH4), 82801CA (ICH3), 82801BA (ICH2), 82801AA (ICH), and 82801AB (ICH0) IDE Controller Programmer's Reference Manual:

http://www.intel.com/design/chipsets/manuals/298600.htm