Ich hab jetzt nochmal ein kleines Testprogramm geschrieben. Hier der Code:
#include "stdio.h"
#define _USE_START_
#include "init.h"
int main(int argc, char *argv[])
{
if(argc != 2)
{
printf("Please add a filename\n");
return 0;
}
printf("Opening %s\n", argv[1]);
FILE *dev = fopen(argv[1], "r");
if(dev == 0)
{
printf("Could not open device!");
return 1;
}
unsigned char buffer[512];
fread(buffer, 1, 512, dev);
fclose(dev);
int i;
for(i=0;i<16;i++)
{
printf("%x ", buffer[i]);
}
printf("\n");
return 0;
}
Getestet habe ich das mit Qemu und dieser Commandline:
qemu -boot a -fda build/lost.img -hda build/hdd.img
hdd.img ist einfach eine 20MB große Datei, die nur aus 0-Bytes besteht. Und das Programm selbst rufe ich so auf:
cd apps
test ata:/ata00
Der Output ist dann
Opening ata:/ata00
8c 72 0 40 c0 f1 ff ff da 15 0 40 34 70 0 40
Wenn ich das Programm mit ata:/atapi10 als Parameter aufrufe, gibts ne unbehandelte Ausnahme.
Was auch komisch ist ist, dass es im Programm wohl ein größeres Memory Leak gibt...
Vielleicht liegt das Problem ja auch beim Laden vom ATA Modul. Ich hab in die default.cfg jetzt einfach diese Zeile hinzugefügt:
module /ata.mgz