diff options
Diffstat (limited to 'src/bootloader.asm')
-rw-r--r-- | src/bootloader.asm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/bootloader.asm b/src/bootloader.asm index 08d1daf..583c169 100644 --- a/src/bootloader.asm +++ b/src/bootloader.asm @@ -24,7 +24,7 @@ fat_header: .oem_name equ 0x7c03;mkfs.fat - ignored .bytes_per_sector equ 0x7c0b;0x0200 - assumed .sectors_per_cluster equ 0x7c0d;0x01 - assumed -.reserved_sectors equ 0x7c0e;0x0004 - other values handled +.reserved_sectors equ 0x7c0e;0x0002 - handled .n_fats equ 0x7c10;0x01 - assumed .root_dir_entries equ 0x7c11; - .n_sectors equ 0x7c13;0x0b40 - @@ -231,6 +231,12 @@ load_kernel: mov word [dap.offset], bx xor bx, bx shr ebx, 4 + jmp .over_sig + +times $$ + 0x01fe - $ db 0 +dw 0xaa55 + +.over_sig: test ebx, 0xffff_0000 jnz halt mov word [dap.segment], bx @@ -269,9 +275,7 @@ load_kernel: mov ebx, dword [pointers.kernel] - ;Parse kernel executable header, - ;Go through relocation tables, - ;Get kernel_start. + ;TODO cli @@ -292,7 +296,7 @@ dq 0x00c0_9200_8000_0ff7 dap: dw 0x0010 -.length dw 0x0003 +.length dw 0x0001 .offset dw 0x7e00 .segment dw 0x0000 .start dd 0x0000_0001 |