Also ich hab nicht den Code geändert. Der Kernel+Bootloader aus Lowlevel 1 funktionieren wunderbar. Ich wollte jedoch nen eigenen FAT12 Bootloader schreiben, der nicht funzt. Hier der Code:
org 0x7c00
jmp code
OSName db "FREAK-OS"
BytesPerSec dw 512
SecPerClus db 1
ResvdSecCnt dw 1
NumFATs db 2
RootEntCnt dw 224
TotSec dw 2880
MediaType db 0xF0
FATSize dw 9
SecPerTrack dw 18
NumHeads dw 2
HiddenSec dd 0
TotSec32 dd 0
DrvNum db 0x00
Reserved db 0
BootSig db 0x29
VolumeID dd 1
VolumeLabel db "FREAK-OS "
FileSysType db "FAT12 "
bootdrv db 0
state dw 1
msg_loader db 201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,187,13,10,186," FreakOS Bootloader ",186,13,10,200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,188,13,10,10,0
msg_search db "Kernel wird gesucht...",13,10,0
msg_found db "Kernel wurde gefunden :-)",13,10,0
msg_load db "Kernel wird geladen...",13,10,0
msg_failed db "Kernel konnte nicht gefunden werden :-(",13,10,0
msg_reboot db 13,10,"Bitte Taste dr",129,"cken um neu zu starten.",13,10,0
code:
mov si,msg_loader
call print
mov si,msg_search
call print
;call search
mov [state],1
;mov [ax],state
cmp ax,1
je boot
mov si,msg_failed
call print
call reboot
code_end:
print:
lodsb
or al,al
jz short print_end
mov ah,0x0e
mov bx,0x0007
int 0x10
jmp print
print_end:
retn
;search:
;read1:
;push ds
;mov ax,0
;mov dl,[bootdrv]
;int 13h
;pop ds
;jc read1
;read2:
;mov ax,0x1000 ;Speicherstelle
;mov es,ax ;Register
;mov bx,0 ;Offset Puffer
;mov ah,2 ;Funktion
;mov al,14 ;Anzahl zu lesender Sektoren
;mov ch,2 ;Track
;mov cl,2 ;Erster Sektor
;mov dx,0 ;Head und Laufwerk
;int 13h
;jc read2
;mov ah,1
;mov state,ah
;retn
boot:
jmp reboot
retn
reboot:
mov si,msg_reboot
call print
mov ah,0h
int 16h
db 0eah
dw 0000h
dw 0ffffh
times 512-($-$$)-2 db 0
dw 0x0aa55
mfg, jeb