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
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: