Hi
Ich habe für mein OS eine kleine Konsole geschrieben, um den code zu testen, den ich schreibe (z.B. Treiber)
Jedenfalls lade ich jetzt beim booten nicht 32Sektoren, sondern 40.
ABER, seit dieser kleinen änderung im bootloader gibts ein Problem.
Unter Bochs läuft alles so, wie es soll, aber jetzt wollte ich es auf einem Echten PC testen, und das geht nicht.:
Das Disketttenlaufwerk (bzw der Motor) ist aktiv, da das lämpchen läuchtet, aber sonst tut sich NICHTS!!
woran liegt das?? an den 40 Sektoren, am BIOS, ...??
hier mal der Codeausschnitt:
loadkernel:
; Diskdrive reset (Interrupt 0x13,0)
push ds ; Sichere DS
mov ax, 0 ; Funktion 0 (reset)
mov dl, [bootdrv] ; Dieses Laufwerk ist gewünscht (bootlaufwerk)
int 0x13 ; Interrupt ausführen
pop ds ; DS wiederherstellen
jc loadkernel ; Geht nicht? -> Noch mal!
load1:
mov ax, 0x1000 ; ES:BX = 1000:0
mov es, ax
mov bx, 0
; Sektoren lesen (Interrupt 0x13, 2)
mov ah, 2 ; Funktion 2 (Lesen)
mov al, 40 ; Lese 40 Sektoren (0x0000 -> 0xxxx) !!ICH HABE NUR DIE ZAHL GEÄNDERT
mov cx, 2 ; Cylinder=0, Sector=2
mov dx, 0 ; Head=0, Lauferk=0
int 0x13 ; ES:BX = Daten vom Laufwerk
jc load1 ; Fehler? -> Noch mal!
retn
Ich hoffe ihr könnt mir helfen...