Bootloader made to kill
Posted: Mon Apr 14, 2003 4:54 pm
My friend is making a bootloader for my OS. We can't solve a problem when it loads. It seems that the bootloader doesn't load the kernel in correct sections. Here is the kernel loader part of the 32kb p-mode kernel: ;load kernel.bin from disk to 0x100000 | loads 73KB max.
read:
xor ax,ax ; Floppy Reset BIOS Function
mov dl,[drive] ; Select floppy that was booted from
int 0x13
jc read
mov ax,0xffff
mov es,ax ; Data buffer for file
mov bx,0x10 ; Start of segment
mov ah,2 ; Function to read disk
mov al,17 ; Total sectors to read
mov ch,0 ; Track
mov cl,2 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
jc read
mov ax,0xffff
mov es,ax
mov bx, 0x2210
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,0 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0x4610
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,1 ; Track
mov cl,1 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0x6A10
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,1 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0x8E10
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,2 ; Track
mov cl,1 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0xB210
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,2 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0xD610
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,3 ; Track
mov cl,1 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0xFA10
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,3 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
read:
xor ax,ax ; Floppy Reset BIOS Function
mov dl,[drive] ; Select floppy that was booted from
int 0x13
jc read
mov ax,0xffff
mov es,ax ; Data buffer for file
mov bx,0x10 ; Start of segment
mov ah,2 ; Function to read disk
mov al,17 ; Total sectors to read
mov ch,0 ; Track
mov cl,2 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
jc read
mov ax,0xffff
mov es,ax
mov bx, 0x2210
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,0 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0x4610
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,1 ; Track
mov cl,1 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0x6A10
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,1 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0x8E10
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,2 ; Track
mov cl,1 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0xB210
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,2 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0xD610
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,3 ; Track
mov cl,1 ; Sector
mov dh,0 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function
mov ax,0xffff
mov es,ax
mov bx, 0xFA10
mov ah,2 ; Function to read disk
mov al,18 ; Total sectors to read
mov ch,3 ; Track
mov cl,1 ; Sector
mov dh,1 ; Head | Drive is already loaded
int 0x13 ; Call BIOS read disk function