Hallo Leute!
Ich hab mitr nen Bootloader geschrieben. Er soll die ersten 5 Sektoren von der erstenb Diskette laden ( erste 5 Sektoren nach dem Bootsektor
)
und wenn das BIOS in CF einen Fehler meldet, dann wiederholt er den Vorgang. Könnte sich den huier bitte!!!!!!! jemand anschauen, ich hab noch keinen einsatzbereit3en Kernel zum testen.
!!!!!!!!!!
edit: Hab Kommentare eingefügt!

Ich hab mitr nen Bootloader geschrieben. Er soll die ersten 5 Sektoren von der erstenb Diskette laden ( erste 5 Sektoren nach dem Bootsektor
)und wenn das BIOS in CF einen Fehler meldet, dann wiederholt er den Vorgang. Könnte sich den huier bitte!!!!!!! jemand anschauen, ich hab noch keinen einsatzbereit3en Kernel zum testen.
!!!!!!!!!!Code: [Auswählen]
ASM ORG 0x7C00 //0x7c00 zu Adressen adieren!
int Startpunkt () //Prototypen von Funktionen.
int main ()
int getData ()
int Startpunkt () //Entrypoint wegen den Stringliteralen.
{
main (); //Sprung zu main.
return 0;
}
int main ()
{
int error = 0;
do
{
error = getData (); //Hier werden die Daten von der Diskette geaden.
}
while (error != 0); //Fehler? -> Wiederholen!
ASM mov ax,0x1000; //Segmentregister einstellen.
ASM mov ds,ax;
ASM mov es, ax;
ASM ret; //Sprung zum Kernel!
}
int getData ()
{
ASM mov al,5; //Instruktionen an Interrupt 13h!
ASM mov ah,02;
ASM mov ch,0;
ASM mov cl,2;
ASM mov dh,0;
ASM mov dl,0;
ASM mov ax,0x1000h
ASM mov es,ax;
ASM mov bx,0;
ASM int 13h; //Interrupt 13h aktivieren!
int error;
ASM lahf; // flags nach ah laden
ASM mov al, ah; // gleich nach al kopieren
ASM and al, 1; // das carry flag isolieren
ASM xor ah, ah; // ah auf 0 setzen
ASM mov error, ax;
return error; //Wert von Überprüfung zurückgeben!
}
ASM times 512-($-$$)-2 db 0; //512 Bytes ist die atei gross!
ASM dw 0x0AA55; //Bootsignatur!edit: Hab Kommentare eingefügt!


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
.
.