Ich habe da noch eine Frage zu den INT13h extensions unter Bochs.
In der Docu steht, dass das BIOS EDD v3.0 unterstützt. Das sind ja dann die INT13h extensions, oder?
Denn wenn ich nun die Funktion AH=0x41 (check installation) oder AH=0x42 (extended read sectors) aufrufe bekomme ich nach dem "int 0x13" immer AH=0x01 (function not found) zurück.
Mache ich was falsch.
Hier mal mein Code:
read_disk:
;; select memory location for the DAP
push 0x1000
pop ds
mov si, 0x0000
;; select memory location for the input
push 0x1010
pop es
mov bx, 0x0000
;; push pointer to DAP
push si
;; size of DAP
mov byte [si], 0x10
;; reserved in DAP
inc si
mov byte [si], 0x00
;; sector to read
inc si
mov byte [si], 0x01
;; reserved in DAP
inc si
mov byte [si], 0x00
;; memory location for store
inc si
mov word [si], es
add si, 0x02
mov word [si], bx
;; LBA
add si, 0x02
mov word [si], 0x00
add si, 0x02
mov word [si], 0x00
add si, 0x02
mov word [si], 0x00
add si, 0x02
mov word [si], 0x00
;; pop pointer to DAP
pop si
;; select function
mov ah, 0x42
;; select drive
mov dl, 0x00
;; BIOS interrupt
int 0x13
pushf
;; check for INT13h extensions
xor ah, 0x01
jz .int13_no_support
popf
jc read_disk
ret
.int13_no_support:
mov si, msg_int13h_no_support
call print_error
Ich hab mir das auch mal im Debugger angeschaut und er gibt mit AH=0x01 zurück.
Ist meine DAP falsch?
Oder funktioniert das mit Disketten nicht?
Hab ich was übersehen?
Ich schon am verzweifeln.