diff options
Diffstat (limited to 'src/bootloader/bios_functions/bios_disk.asm')
-rw-r--r-- | src/bootloader/bios_functions/bios_disk.asm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/bootloader/bios_functions/bios_disk.asm b/src/bootloader/bios_functions/bios_disk.asm new file mode 100644 index 0000000..28fc74d --- /dev/null +++ b/src/bootloader/bios_functions/bios_disk.asm @@ -0,0 +1,38 @@ +bios_disk: +.load_sectors: +pusha +mov es, dx + +mov ah, 0x02 ; read disc sectors +mov ch, 0x00 ; track 0 +mov dh, 0x00 ; head 0 +mov dl, [stage0.boot_device] + +int 0x13 + +jc .failed + +mov ah, 0 +popa +ret + +.failed: + +mov bx, .loadsectors_error +mov cx, 0 +call bios_print + +push 0 +mov al, ah +mov ah, 0 ; you need to clean up the bios print function! +push ax +mov cx, 1 +mov bx, sp +call bios_print + + +mov ah, 1 +popa +ret + +.loadsectors_error: db "Error loading sectors: ", 0 |