From: Gregor M. <Gre...@gm...> - 2001-03-24 10:55:23
|
Hi! I have merged a demo program into the kernel which accesses the ATA/ATAPI drives directly. Not all of it is working, though (playing audio CD doesn't work, for example, and I also had to comment out some lines to get the partition table reader working). I think that it is in the CVS tree, but I have also appended a complete version of the sources I am working on. The driver is in ide/ata.c. It is a lengthy, but not ill-structured source code I got from www.gaztek.org (where I got GazOS from, too). This code shows how the ATA thing works, but no more at the present state. A big drawback with this code is that it was a demo program written for DJGPP/Borland C for DOS. So it doesn't quite fit into a kernel. But I hope it can be of use to you. I also stumbled across a somewhat strange fact: the IDE ports are supposed to be using the IRQs 14 and 15, but the number of the interrupt vectors the handlers get installed to is quite different in kernel/ide/ata.c. I don't know why, because this is an hardware int and according to the docs I have read the PIC (which is responsible for them) only has 16 interrupt chanels ranging from 0 to 15 and thus causing serious confusion with the processor's exeptions, which use the same interrupt vectors. Bye, Gregor PS: There is a limit for the size of posting (including attachments), which currently at about 40kB. With the source archive I'll exceed it (and thus this posting will have to be accepted by the list admin, which is me). I'll move the limit to about 70kB, which I think is still acceptable. And if a posting gets bigger than this, I'll accept it nontheless. -- ***************************************************** * Gregor Mueckl Gre...@gm... * * http://challangeos.sourceforge.net * * * * Math and alcohol don't mix, so please don't drink * * and derive! * ***************************************************** |