REGS und SREGS für Eigenes OS

14/03/2010 - 22:29 von Jens Kallup | Report spam
Hallo,

versuche gerad Sektoren von der Festplatte zu lesen.
Leider klappt das nicht.
wie bekomme ich den ES:BX buffer in die REGS register?
habe nur eine kleine int386 gebastelt.
Die beiden Makros FP_SEG und FP_OFF habe ich einfach
aus dem Internet kopiert:

#define FP_SEG(fptr) ((unsigned)((unsigned long)(fptr) >> 16))
#define FP_OFF(fptr) ((unsigned)(fptr))

static int chs_biosdisk(int drive, int head, int track, int sector, int
nsects, void *buf)
{
unsigned tries, err;
REGS regs;

regs.w.es = FP_SEG(buf);
regs.b.dh = head;
regs.b.dl = drive;
regs.b.ch = track;
regs.b.cl = ((track >> 2) & 0xC0) | sector;
regs.w.bx = FP_OFF(buf);
regs.b.ah = 0x02;
int386(0x13, &regs, &regs);

err = regs.b.ah;
if (err == 0) return 0;

regs.b.ah = 0;
int386(0x13, &regs, &regs);

printk("chs_biosdisk: error 0x%02x", err);
return err;
}

Ist das richtig so?

Gruß
Jens
 

Lesen sie die antworten

#1 Jan Seiffert
15/03/2010 - 01:48 | Warnen spam
Jens Kallup schrieb:
Hallo,

versuche gerad Sektoren von der Festplatte zu lesen.
Leider klappt das nicht.
wie bekomme ich den ES:BX buffer in die REGS register?
habe nur eine kleine int386 gebastelt.
Die beiden Makros FP_SEG und FP_OFF habe ich einfach
aus dem Internet kopiert:



[snip - code]

Ist das richtig so?




Im Prinzip (ich hab mir jetzt nicht die Details angeschaut), aber:
Wie sieht int386 aus?
Und besonders:
Ist die CPU schon im 32Bit Modus?

Gruß
Jens



Gruss
Jan

Außerdem:
Nur Zwiebel alleine gibt leicht schalen Geschmack; es gehört eine
Möhre, ein Stàngel Sellere, ein Lorbeerblatt und Rosmarin mit rein.
Meinetwegen auch Koriander.

Ähnliche fragen