From a53534acd20d855b3df3a66d6ec742d1660a717c Mon Sep 17 00:00:00 2001 From: Elaina Claus Date: Fri, 5 Sep 2025 10:33:42 -0400 Subject: [PATCH] clear the carry flag before calling BIOS functions --- include/BIOS/func/E820_memory_map.nasm | 1 + include/BIOS/func/a20enable.nasm | 2 ++ include/BIOS/func/ext_read.nasm | 1 + src/mbr/mbr.nasm | 2 ++ 4 files changed, 6 insertions(+) diff --git a/include/BIOS/func/E820_memory_map.nasm b/include/BIOS/func/E820_memory_map.nasm index 0a7dba9..31bffd7 100644 --- a/include/BIOS/func/E820_memory_map.nasm +++ b/include/BIOS/func/E820_memory_map.nasm @@ -53,6 +53,7 @@ GetMemoryMap: .loop_L1: mov eax, 0x0000E820 ; select 0xE820 function mov edx, 0x534D4150 ; 'SMAP' magic + clc ; clear carry int 0x15 jc GetMemoryMap.error cmp eax, 0x534D4150 diff --git a/include/BIOS/func/a20enable.nasm b/include/BIOS/func/a20enable.nasm index c4b94ea..d0015bb 100644 --- a/include/BIOS/func/a20enable.nasm +++ b/include/BIOS/func/a20enable.nasm @@ -105,6 +105,7 @@ EnableA20: je EnableA20.endp ; A20 is already enabled mov ax, 0x2403 + clc ; clear carry int 0x15 jc EnableA20.do_fallback_a20 ; carry = error...not supported? cmp ah, 0 @@ -121,6 +122,7 @@ EnableA20: ERROR STAGE2_A20_FAILED .do_bios_a20: mov ax, 0x2401 + clc ; clear carry int 0x15 jmp EnableA20.a20_check .do_fast_a20: diff --git a/include/BIOS/func/ext_read.nasm b/include/BIOS/func/ext_read.nasm index 94b23ba..8b0ef11 100644 --- a/include/BIOS/func/ext_read.nasm +++ b/include/BIOS/func/ext_read.nasm @@ -111,6 +111,7 @@ read_disk_raw: mov ah, 0x42 ; call # mov dl, byte [bp + 14] ; drive # + clc ; clear carry int 0x13 jnc .endf diff --git a/src/mbr/mbr.nasm b/src/mbr/mbr.nasm index 3e81ada..9c6ff08 100755 --- a/src/mbr/mbr.nasm +++ b/src/mbr/mbr.nasm @@ -96,6 +96,8 @@ main: mov ah, 0x41 mov bx, 0x55AA mov dl, 0x80 + + clc int 0x13 jnc main.find_active ERROR MBR_ERROR_NO_INT32E ; no extended function support