Hi,
ich habe eine Funktion geschrieben, die den ersten Sektor einer Festplatte lesen soll, die an ide0,0 hängt. Unter bochs und qemu funktioniert es. Aber unter Vmware, virtual PC und auf meinem PC net (ja da ist die Festplatte auch an ide0,0). Und ich weiß auch das es eine ATA (PATA) Festplatte ist. Muss ich eigentlich etwas mit dem IRQ14 machen? Hier der Code (was ist falsch):
mov dx,1F7h
.5:
in al,dx
test al,80h ;warten bis BSY gelöscht ist
jnz .5
;
;Anzahl der Sektore
mov dx,1F2h
;(7:0)
mov al,1
out dx,al
;Startsektor
mov dx,1F3h
;(7:0)
mov al,0
out dx,al
;(15:8)
mov dx,1F4h
mov al,0
out dx,al
;(23:16)
mov dx,1F5h
mov al,0
out dx,al
;
;Laufwerk
mov dx,1F6h
mov al,11100000b ;Bit7 und Bit5 müssen 1 sein und Bit4 = DRV
out dx,al ;DRV = 0 = master, Bit3-Bit0 = (LBA 27:24)
;Command
mov dx,1F7h
mov al,20h ;read sector(s)
out dx,al
mov ax,1000h ;daten nach 1000h:0000h
mov es,ax
xor di,di
;warten, bis BSY im Statusregister gelöscht und DRQ gesetzt ist
mov dx,1F7h
.4:
in al,dx
test al,80h
jnz .4
test al,08h
jz .4
;Daten übertragen
mov dx,1F0h
mov cx,256 ;und los geht's
rep insw
vielen dank schon mal
bitmaster