Hi!
Danke, die Liste von Ralf Brown hab ich schon länger mal runtergeladen. Hab gestern einige Zeit gearbeitet, aber noch immer hab ich große Problem. Also, der Code sollte:
bootloader:
org 0x7c00
stfat:
jmp start
nop
db 0x4D,0x53,0x44,0x4F,0x53,0x35,0x2E,0x30 ;
db 0x00,0x02,0x01,0x01,0x00,0x02,0xE0,0x00 ;
db 0x40,0x0B,0xF0,0x09,0x00,0x12,0x00,0x02 ;
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; FAT12 von einer formatierten Disk
db 0x00,0x00,0x00,0x29,0x8C,0x22,0x2F,0x7C ; God save Hex-Editor :)
db 0x4E,0x4F,0x20,0x4E,0x41,0x4D,0x45,0x20 ;
db 0x20,0x20,0x20,0x46,0x41,0x54,0x31,0x32 ;
db 0x20,0x20,0x20
start:
cli
mov ax,0x9000
mov ss, ax
mov sp, 0
sti
mov [bootdrv], dl
call loada
mov ax, 0x1000
mov es, ax
mov ds, ax
push ax
mov ax, 0
push ax
retf
bootdrv db 0
loadmsg db 'Second Part To Hell has to wait...',13,10,0
putstr:
lodsb
or al, al
jz putstrd
mov ah, 0xE
mov bx, 0x7
int 0x10
jmp putstr
putstrd:
retn
loada:
push ds
mov ax, 0
mov dl, [bootdrv]
int 0x13
pop ds
jc loada
load1:
mov ax, 0x1000
mov es, ax
mov bx, 0
mov ah, 0x2 ; Ab sektor 2
mov al, 0x11 ; 17 Sektoren lesen
mov cx, 2
mov dx, 0
int 0x13 ; Lesen
jc load1
mov ax, 0x1000
mov es, ax
mov bx, 0
mov ah, 0 ; Ab Sektor 0
mov al, 0x13 ; 19 (höchste - hab ich getestet) S lesen
mov ch, 1 ; Spur 1
mov cl, 2
mov dx, 0
int 0x13 ; Lesen
jc load1
; (17+19) * 512 Bytes gelesen
mov si, loadmsg
call putstr
ret
ende:
times (512-(ende-stfat)-2) db 0
dw 0xAA55 ; Boot-sign
und der kernel:
mov ax, 0x1000
mov ds, ax
mov es, ax
start:
mov dx, 0x0
mov si, 0x0
call putstr
call getkey
jmp reboot
msg db 'Welcome to SPTH-OS 1.0',13,10,0
m_boot db 'Press any key...',10,0
putstr:
inc dx ; Counter +1
lodsb ; [si] -> al
cmp al, al ; al=0?
jz putstr al=0 -> next byte
mov ah, 0xE ; schreiben
mov bx, 0x7 ; schreiben
int 0x10 ; schreiben
cmp dx, 0x4400 ; counter < 0x4400?
js putstr ; counter < 0x4400 -> Next byte
ret ; Fertig!
getkey:
mov ah, 0
int 0x16
ret
reboot:
db 0xEA
dw 0x0
dw 0xFFFF
Aber: Es funktioniert nicht.
Der Bootloader läd zwar fertig, dann wird aber nichts geschrieben.
Ich möchte, dass alle Nicht-0s von 0 bis 0x4400 ausgegeben werden (0-0x4400 ist zB: bootloader, Root-Directory-Entry, Dateiinhalte!)
Was kann ich machen?
Besser gesagt: Wo ist das Problem???
grüsse, ...