warning and chance to abort
authorJohn Tsiombikas <nuclear@member.fsf.org>
Fri, 6 Oct 2023 03:46:01 +0000 (06:46 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Fri, 6 Oct 2023 03:46:01 +0000 (06:46 +0300)
src/loader.asm
src/startup.asm

index 26a0743..f8bb1df 100644 (file)
@@ -35,6 +35,8 @@ _start:
        jmp exit
 
 .notvm86:
+       call warning    ; issue a warning and allow the user to abort
+
 %ifdef CON_SERIAL
        call setup_serial
 %endif
@@ -128,6 +130,25 @@ exit:      mov ax, 4c00h
 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
 
+
+       ; warns the user about the experimental and buggy state of this
+       ; protected mode system, and allows aborting if having to reboot later
+       ; is not acceptable.
+warning:
+       mov si, str_warnmsg
+       call printstr
+       WAITKEY
+       dec al
+       jz exit
+       ret
+
+str_warnmsg:
+       db 'WARNING: this program uses an experimental protected mode kernel, which is ',10
+       db 'still in a very early stage of development, and will probably not be able to ',10
+       db 'return cleanly to DOS on exit. You might be forced to reboot after quitting!',10
+       db 'If this is not acceptable, press ESC now to abort.',10,10
+       db 'Press ESC to abort and return to DOS, any other key to continue...',10,0
+
 enable_a20:
        call test_a20
        jnc .ret
index d18c368..c1d85e5 100644 (file)
@@ -23,13 +23,6 @@ startup:
 
        xor ebp, ebp    ; terminate backtraces
        call main
-       cli     ; XXX
-
-.waitkey:
-       in al, 64h
-       test al, 1
-       jz .waitkey
-       in al, 60h
        retf
 
 ;      global putchar