The MASM Forum Archive 2004 to 2012

Miscellaneous Forums => The Orphanage => Topic started by: Transcendencja on March 28, 2007, 09:02:40 PM

Title: IDE Controller programming
Post by: Transcendencja on March 28, 2007, 09:02:40 PM
Hello, I'm new forum member! My english isn't very good, so please, forgive my mistakes. ;)
My question isn't directly related to asm coding, but I think that there are some members with hardware programming experience.
I have to write IDE controller driver, it must handle PIO and DMA modes. My only problem is that I can't find documentation. There is some specification available, but I have to know which ports I must use, etc. Also, I have generally no experience in hardware programming and I want to know how to use DMA. Maybe somebody will show me direction/some links? Everything will be written under control of new actually-in-development OS, so I must do everything manually.
Greetings, Grzegorz.
Title: Re: IDE Controller programming
Post by: Draakie on March 29, 2007, 06:05:49 AM
http://suif.stanford.edu/~csapuntz/ide.html

looks promising....[bottom of web page]

Good luck (u're gonna need it !)
Draakie
Title: Re: IDE Controller programming
Post by: Synfire on March 29, 2007, 06:30:47 AM
Transcendencja,

Check out http://www.osdever.net/documents.php?cat=0&sort=1 and http://www.osdev.org/osfaq2/ These two sites should be in your bookmarks if you are getting into OS and/or driver development.

Regards,
Bryant Keller

PS: If you check osdever.net's links section you would find http://www.ata-atapi.com/hiw.htm which is what your looking for I think. But in general both of those sites are good to have bookmarked. If you need more details then check the other sites listed in osdever's links section, although this one seems to cover most of your basis.
Title: Re: IDE Controller programming
Post by: MichaelW on March 29, 2007, 06:49:35 AM
Transcendencja,

You can get most of the I/O port assignments, and a lot of related information from PORTS.LST in the download version of Ralf Brown's Interrupt list, available here:

http://www-2.cs.cmu.edu/~ralf/files.html

If I recall correctly, the I/O ports can be deduced from information in the standards, if you know the standard names of the interface signals, as used in the standards, but it's been too long for me to recall any details.

I posted some source code and two applications that may be of use to you here:

http://www.masm32.com/board/index.php?topic=6874.msg51027#msg51027

In case you don't already know, the standards, which in my opinion will be absolutely essential for what you are trying to do, are here:

http://www.t13.org

And you can get the source code for a more or less complete PM operating system, with some new patches and updates, here:

http://www.sensorypublishing.com/mmurtl.html
Title: Re: IDE Controller programming
Post by: Transcendencja on March 29, 2007, 12:17:37 PM
Thanks a lot!
I know almost all of these sites, but I simply (don't know why) overlooked informations that I need. Now I see what I have to read and code. ;)
Greetings!