No, well yes, but not really.. I'm not talking about such a high level of hardware abstraction.Schol-R-LEA wrote:OK, then, that clarifies a lot. However, I think you'll find it difficult to abstract the hardware away before you implement either an abstraction layer, or the low-level drivers to fit into said layer; and if your goal is to have abstraction without a defined abstraction layer or interface, uhm... got nothin', sorry. I'd almost be tempted to recommend an exokernel approach, except that the necessary virtualization for an exokernel requires a lot of low-level work - and the whole idea of exokernels is to avoid abstracting the hardware, and instead have each 'application' basically be a slew of independent libraries, which is sort of at cross-purposes for what you seem to want.
I meant that I need those AHCI drivers so that I can implement things like fopen(), fread(), fwrite(). (file system is being worked on, but it's pointless if I can't even read from a drive) So right now I need to make the AHCI read/write work and the rest should be a "piece of cake", compared to this at least.
I'm talking about a level of abstraction allowing me to work with both PATA (for whatever the reason I might need that) and SATA (which is currently the huge problem as without it I can't run my OS on any real hardware) drives.
I'm not looking for any magical hardware abstraction, I just want to avoid working directly with ports. Which is what I need the AHCI driver for, which I would have had if I could get the read() function to work and then somehow figured out write() function. I currently believe that I shouldn't need much more than that, I'm just unsure how difficult that might be.
As I've said, I've mainly developed Windows .NET applications until very recently, except for a couple of microcontroller applications at school. That's why I have such a problem with the hardware, because I haven't worked with it.