summaryrefslogtreecommitdiff
path: root/bootloader.asm
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2014-09-27 12:35:35 -0700
committeriximeow <me@iximeow.net>2014-09-27 12:35:35 -0700
commitd5c3d73e7d1ea90cd6e293881bda1a13bd20e3d4 (patch)
treed8a5a6cda55cf205672ec661676eb3a34f60ed41 /bootloader.asm
parentb5b9bbb79304e9e9c24b88f2dedbd32cea1d5acf (diff)
Strip down bootloader and tweak to load multiple blocks
Diffstat (limited to 'bootloader.asm')
-rw-r--r--bootloader.asm75
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