From 4415816330813292de36803086fd3a8417a3514c Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 10 Jun 2017 11:29:21 +0200 Subject: tried some error handling around disk geometry detection, this feature seems to be mainly broken! --- doc/LINKS.TODO | 1 + src/stage2_real_functions.asm | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/LINKS.TODO b/doc/LINKS.TODO index c51106b..4a2f7b3 100644 --- a/doc/LINKS.TODO +++ b/doc/LINKS.TODO @@ -71,6 +71,7 @@ http://www.osdever.net/tutorials/view/loading-sectors http://www.osdever.net/tutorials/view/lba-to-chs LILO boot loader http://www.uruk.org/orig-grub/PC_partitioning.txt +http://wiki.osdev.org/ATA_in_x86_RealMode_%28BIOS%29 C: http://www.drdobbs.com/extending-c-for-object-oriented-programm/184402731 diff --git a/src/stage2_real_functions.asm b/src/stage2_real_functions.asm index 2db8947..273d790 100644 --- a/src/stage2_real_functions.asm +++ b/src/stage2_real_functions.asm @@ -6,7 +6,8 @@ NOF_LOAD_SECTORS equ 36 ; data sections used for reading the kernel from disk SECTORS_PER_CYLINDER: - db 0x13 ; detect parameters enters the correct value here (sectors + 1) + db 0x3F ; detect parameters enters the correct value here (sectors + 1) + ; if detection fails, force int13 to read ahead NOF_HEADS: db 0x02 ; number of heads + 1 SECTORS_TO_LOAD: @@ -25,6 +26,18 @@ detect_disk_geometry: mov es, dx mov ah, 0x08 int 0x13 + jc .error + jmp .ok + +.error: + mov si, DISK_ERROR + call print_string + mov dh, 0 + mov dl, ah + call print_hex + ret + +.ok: add dh, 1 mov [NOF_HEADS], BYTE dh call print_hex -- cgit v1.2.3-54-g00ecf