Autor Thema: Die INT 13h extensions  (Gelesen 7101 mal)

BadBeu

  • Beiträge: 28
    • Profil anzeigen
    • http://www.BadBeu.net
Gespeichert
« am: 13. July 2006, 12:46 »
Hallo Leute,

ich bin grade dabei einen netten Bootloader zu coden. Da ich möchte, dass der viel kann möchte ich, dass er sich Module laden kann.
Als Vorraussetzung sei gesagt, dass er weiß, wo seine Module liegen (LBA-Sector-Referenzierung) und dass er weiß, wie viel er laden muss und wohin.
Nun ist mein Problem, dass diese Module vielleicht nicht in den unteren 8 GByte der Platte liegen.
Nun hab ich von den INT 13h extensions gelesen, bin aber nicht so ganz schlau aus dem geworden, was Google mir da ausgespuckt hat.

1. Ist das wirklich eine BIOS Funktion oder ist das ein OS Treiber, der eben auf dem INT 13h liegt.

2. Ist das ein Standard auf modernen Systemen oder spezifisch für eine BIOS-Software bzw. Kann ich abfragen, ob die Verfügbar sind.

3. Gibt es irgendwo Informationen zum Aufruf, also was für Parameter diese Funktion haben will, etc.

Schonmal Danke für Eure Hilfe.

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 13. July 2006, 13:45 »
Hi

ist eine erweiterung des BIOS die seit ca. 1995 enthalten ist.

Abfragen ob es vorhandn ist weis ich nicht ggf gibt das pdf auskunft. ansonsten ausprobieren, wenn fehler ( function not suportet oder so, sollte der int 13 doch liefern wenn er die funktion nicht kennt )

parameter sie siehe PDF.

http://en.wikipedia.org/wiki/BIOS_call
http://www.23cc.com/free-fdisk/specs-edd11.pdf

gruss[/url]

BadBeu

  • Beiträge: 28
    • Profil anzeigen
    • http://www.BadBeu.net
Gespeichert
« Antwort #2 am: 13. July 2006, 14:07 »
Super.
Das ist genau das, was ich gesucht habe.

Danke

BadBeu

  • Beiträge: 28
    • Profil anzeigen
    • http://www.BadBeu.net
Gespeichert
« Antwort #3 am: 14. July 2006, 13:00 »
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.

BadBeu

  • Beiträge: 28
    • Profil anzeigen
    • http://www.BadBeu.net
Gespeichert
« Antwort #4 am: 16. July 2006, 13:11 »
Weiß denn keiner, wo hier der Fehler liegt?
Entweder bei mir oder beim Bochs.

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 16. July 2006, 14:59 »
Hi

In dem PDF wir doch von Fix Disks geredet. somit ist das nur für Festplatten gedacht. Oder hast du Flopy Disks gesehen die mehr als 8 gb haben?

Ich hab auch gedacht das ginge mit Diskettenlaufwerken. Und muste mich eines besseren behlehren lassen.

gruss

BadBeu

  • Beiträge: 28
    • Profil anzeigen
    • http://www.BadBeu.net
Gespeichert
« Antwort #6 am: 16. July 2006, 15:08 »
Hmm. So ein Mist. Und ich probiere da tagelang rum.
Dann werd ich doch erstmal wieder CHS-Input einbauen müssen.
Danke für deine Hilfe.

 

Einloggen