version: Update to 4.08, update year to 2014
[syslinux/sherbszt.git] / core / abort.inc
blob9b181363e0b93ec30a20e3c892ce65aede60acf6
1 ; -----------------------------------------------------------------------
3 ;   Copyright 2005-2009 H. Peter Anvin - All Rights Reserved
4 ;   Copyright 2009 Intel Corporation; author: H. Peter Anvin
6 ;   This program is free software; you can redistribute it and/or modify
7 ;   it under the terms of the GNU General Public License as published by
8 ;   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
9 ;   Boston MA 02111-1307, USA; either version 2 of the License, or
10 ;   (at your option) any later version; incorporated herein by reference.
12 ; -----------------------------------------------------------------------
15 ; abort.inc
17 ; Code to terminate a kernel load
20                 section .text16
23 ; dot_pause: same as abort_check, except prints a dot, too
24 ;            assumes CS == DS
26 dot_pause:
27                 push si
28                 mov si,dot_msg
29                 call writestr_qchk
30                 pop si
31                 ; fall through
34 ; abort_check: let the user abort with <ESC> or <Ctrl-C>
36 abort_check:
37                 call reset_idle                 ; Not idle despite pollchar
38                 call pollchar
39                 jz .ret1
40                 pusha
41                 call getchar
42                 cmp al,27                       ; <ESC>
43                 je .kill
44                 cmp al,3                        ; <Ctrl-C>
45                 je .kill
46 .ret2:          popa
47 .ret1:          ret
49 .kill:          mov si,aborted_msg
50                 mov bx,enter_command
51                 jmp abort_load_chain
54 ; abort_load: Called by various routines which wants to print a fatal
55 ;             error message and return to the command prompt.  Since this
56 ;             may happen at just about any stage of the boot process, assume
57 ;             our state is messed up, and just reset the segment registers
58 ;             and the stack forcibly.
60 ;             SI    = offset (in _text) of error message to print
61 ;             BX    = future entry point (abort_load_chain)
63 abort_load:
64                 mov bx,error_or_command
65 abort_load_chain:
66                 RESET_STACK_AND_SEGS AX
67                 call writestr                  ; Expects SI -> error msg
69                 ; Return to the command prompt
70                 jmp bx
73 ; error_or_command: Execute ONERROR if appropriate, otherwise enter_command
75 error_or_command:
76                 mov cx,[OnerrorLen]
77                 and cx,cx
78                 jnz on_error
79                 jmp enter_command
81                 section .data16
82 aborted_msg     db ' aborted.', CR, LF, 0
84                 section .text16