detect vm86 and abort
authorJohn Tsiombikas <nuclear@member.fsf.org>
Sat, 30 Sep 2023 05:07:28 +0000 (08:07 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Sat, 30 Sep 2023 05:07:28 +0000 (08:07 +0300)
src/loader.asm

index 4f3d99d..6b4f288 100644 (file)
@@ -18,7 +18,16 @@ _start:
        xor ax, ax
        mov sp, ax
 
+       ; check for VM86 and abort
+       mov eax, cr0
+       test ax, 1
+       jz .notvm86
+
+       mov si, str_errvm86
+       call printstr
+       jmp exit
 
+.notvm86:
        call enable_a20
 
        ; calculate GDT linear address
@@ -78,9 +87,10 @@ _start:
        mov es, ax
        mov ss, ax
 
-       mov ax, 4c00h
+exit:  mov ax, 4c00h
        int 21h
 
+str_errvm86 db 'Error: memory manager detected! Stop it and try again (e.g. emm386 off)',10,0
 str_enterpm db 'Entering 32bit protected mode ...',10,0
 
 enable_a20: