diff options
author | iximeow <me@iximeow.net> | 2014-09-27 12:35:35 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2014-09-27 12:35:35 -0700 |
commit | d5c3d73e7d1ea90cd6e293881bda1a13bd20e3d4 (patch) | |
tree | d8a5a6cda55cf205672ec661676eb3a34f60ed41 /bootloader.asm | |
parent | b5b9bbb79304e9e9c24b88f2dedbd32cea1d5acf (diff) |
Strip down bootloader and tweak to load multiple blocks
Diffstat (limited to 'bootloader.asm')
-rw-r--r-- | bootloader.asm | 75 |
1 files changed, 22 insertions, 53 deletions
diff --git a/bootloader.asm b/bootloader.asm index 2993726..cf8ccb4 100644 --- a/bootloader.asm +++ b/bootloader.asm @@ -10,21 +10,10 @@ start: mov si, HELLO call write_str call disk_read - mov si, VERIFY + call verify_read + mov si, READ_NERR call write_str - mov ax, 0x61 - call cursor_next_line - call write_char_default_attr - mov ax, 0x62 - call cursor_next_line - call write_char_default_attr - mov ax, 0x63 - call cursor_next_line - call write_char_default_attr - call write_char_default_attr - call write_char_default_attr - call cursor_back_one - call cursor_backspace + jmp 0x7e00 jmp hang read_err: @@ -33,6 +22,21 @@ read_err: hang: jmp hang +verify_read: + mov al, 0x66 + cmp al, [0x7e00] + jne read_err + mov al, 0x55 + cmp al, [0x7e01] + jne read_err + mov al, 0x66 + cmp al, [0x7e02] + jne read_err + mov al, 0x89 + cmp al, [0x7e03] + jne read_err + ret + write_str: push ax push si @@ -86,14 +90,12 @@ disk_read: mov ah, 0x42 int 0x13 jc read_err - mov si, READ_SUCC - call write_str ret READ_ERR: db 'Read failed: ', 0 -READ_SUCC: - db 'Read didnt fail: ', 0 +READ_NERR: + db 'No err reading, continuing: ', 0 HELLO: db 'Bootloader init: ', 0 CURSOR_LOC: @@ -103,45 +105,12 @@ CURSOR_LOC: LBA_DISK_READ_PACKET: db 0x10 db 0 - dw 1 ; number of blocks to read, reset to # actually read when done + dw 32 ; number of blocks to read, reset to # actually read when done dw 0x7e00 ; read destination address - dw 0 + dw 0x0000 dd 1 ; lba to read from dd 0 ; for extended lba adresses (not really used here) times 510-($-$$) db 0 db 0x55 db 0xAA - -cursor_next_line: - mov di, [CURSOR_LOC] - add di, 160 - mov [CURSOR_LOC], di - ret - -cursor_prev_line: - mov di, [CURSOR_LOC] - sub di, 160 - mov [CURSOR_LOC], di - ret - -cursor_backspace: - push ax - call cursor_back_one - mov ax, 0x00 - call write_char_default_attr - call cursor_back_one - pop ax - ret - -cursor_back_one: - mov di, [CURSOR_LOC] - dec di - dec di - mov [CURSOR_LOC], di - ret - -VERIFY: - db '[x] read next block: ', 0 - - times 1024-($-$$) db 0 |