:: commit 72741d558c726b9810887bb9f2593bd7ab2a69f4

Mintsuki <mintsuki@protonmail.com> — 2026-03-05 06:43

parents: 333fff9ded

stage1/hdd: Fix 64-bit LBA calculation and carry propagation in disk read loop

diff --git a/stage1/hdd/disk.asm b/stage1/hdd/disk.asm
index cac11200..95ac84ed 100644
--- a/stage1/hdd/disk.asm
+++ b/stage1/hdd/disk.asm
@@ -52,10 +52,16 @@ read_sectors:
 
     pop si
 
-    ; EBP:EAX address to EAX LBA sector
+    ; EDX:EAX byte address to 64-bit LBA sector
+    push eax
+    mov eax, edx
+    xor edx, edx
+    div ebp
+    mov ebx, eax
+    pop eax
     div ebp
     mov dword [si+8],  eax
-    mov dword [si+12], 0
+    mov dword [si+12], ebx
 
     pop dx
 
@@ -67,10 +73,8 @@ read_sectors:
     jc .done
 
     add word  [si+4], bp
-    xor ebx, ebx
-    inc dword [si+8]
-    seto bl
-    add dword [si+12], ebx
+    add dword [si+8], 1
+    adc dword [si+12], 0
 
     loop .loop
 
tab: 248 wrap: offon