Allow pressing ESC in boot screen to cancel selection without making a choice. Add more information on which options to choose and link to http://board.kolibrios.org to report bugs.

git-svn-id: svn://kolibrios.org@3989 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Yogev Ezra 2013-10-08 22:35:49 +00:00
parent 88ac946b40
commit c5f6557ef5
6 changed files with 76 additions and 73 deletions

View File

@ -51,18 +51,20 @@ getkey: ; Use BIOS INT 16h to read a key from the keyboa
; get number in range [bl,bh] (bl,bh in ['0'..'9']) ; get number in range [bl,bh] (bl,bh in ['0'..'9'])
; in: bx=range ; in: bx=range
; out: ax=digit (1..9, 10 for 0) ; out: ax=digit (1..9, 10 for 0)
mov ah, 0 ; If 'int 16h' is called with 'ah' equal to zero, the BIOS will not return control mov ah, 0 ; If 'int 16h' is called with 'ah' equal to zero, the BIOS will not return control to the caller
int 16h ; to the caller until a key is available in the system type ahead buffer. On return, int 16h ; until a key is available in the system type ahead buffer. On return, 'al' contains the ASCII
cmp al, bl ; 'al' contains the ASCII code for the key read from the buffer and 'ah' contains cmp al, 27 ; code for the key read from the buffer and 'ah' contains the keyboard scan code. (27=>ESC)
jb getkey ; the keyboard scan code. Here we compare 'al' with the range of accepted characters. jz @f ; If ESC is pressed, return (user doesn't want to change any value).
cmp al, bh ; If the key pressed is not in the range, continue waiting for another key. cmp al, bl ; Compare 'al' (ASCII code of key pressed) with 'bl' (lowest accepted char from the range).
ja getkey jb getkey ; ASCII code is below lowest accepted value => continue waiting for another key.
cmp al, bh ; Compare 'al' (ASCII code of key pressed) with 'bh' (highest accepted char from the range).
ja getkey ; ASCII code is above highest accepted value => continue waiting for another key.
push ax ; If the pressed key is in the accepted range, save it on the stack and echo to screen. push ax ; If the pressed key is in the accepted range, save it on the stack and echo to screen.
call putchar call putchar
pop ax pop ax
and ax, 0Fh ; ASCII code for '0' is 48 (110000b). 0F4=1111b. (110000b AND 1111b) = 0 and ax, 0Fh ; Convert ASCII code to number: '1'->1, '2'->2, etc. 0Fh=1111b.
jnz @f ; So if key '0' was entered, return 10 in 'ax' jnz @f ; ASCII code for '0' is 48 (110000b). (110000b AND 1111b) = 0
mov al, 10 mov al, 10 ; So if key '0' was entered, return 10 in 'ax'
@@: @@:
ret ret
@ -79,6 +81,18 @@ macro _setcursor row,column
call setcursor call setcursor
} }
macro _ask_question question,range,variable_to_set
{
_setcursor 16,0
mov si, question ; Print the question
call print
mov bx, range ; range accepted for answer
call getkey
cmp al, 27 ; If ESC was pressed, do not change the value
jz .esc_pressed
mov [variable_to_set], al
}
boot_read_floppy: boot_read_floppy:
push si push si
xor si, si xor si, si
@ -775,23 +789,21 @@ end if
cmp al, 'e' ; select boot origin cmp al, 'e' ; select boot origin
jnz .show_remarks jnz .show_remarks
; e) preboot_device = from where to boot? ; e) preboot_device = from where to boot?
_setcursor 16,0
mov si, bdev
call print
if defined extended_primary_loader if defined extended_primary_loader
mov bx, '12' ; range accepted for answer: 1-2 _ask_question bdev,'12',preboot_device ; range accepted for answer: 1-2
else else
mov bx, '14' ; range accepted for answer: 1-4 _ask_question bdev,'14',preboot_device ; range accepted for answer: 1-4
end if end if
call getkey
mov [preboot_device], al
_setcursor 14,0 _setcursor 14,0
.d: .d:
if ~ defined extended_primary_loader if ~ defined extended_primary_loader
mov [.bSettingsChanged], 1 mov [.bSettingsChanged], 1
end if end if
.esc_pressed:
call clear_vmodes_table ;clear vmodes_table call clear_vmodes_table ;clear vmodes_table
jmp .printcfg jmp .printcfg
.change_a: .change_a:
call clear_vmodes_table ;clear vmodes_table call clear_vmodes_table ;clear vmodes_table
.loops: .loops:
@ -803,6 +815,9 @@ end if
mov si, word [cursor_pos] mov si, word [cursor_pos]
cmp al, 27 ; If ESC was pressed, do not change the value
jz .esc_pressed ; Just exit the resolution selection box
cmp ah, 0x48;x,0x48E0 ; up cmp ah, 0x48;x,0x48E0 ; up
jne .down jne .down
cmp si, modes_table cmp si, modes_table
@ -873,17 +888,13 @@ end if
jmp .d jmp .d
.change_b: ; b) preboot_biosdisk = use BIOS disks through V86 emulation? .change_b: ; b) preboot_biosdisk = use BIOS disks through V86 emulation?
_setcursor 16,0 ; _setcursor 16,0
; mov si, ask_dma // (earlier was: preboot_dma = use DMA access?) ; mov si, ask_dma // (earlier was: preboot_dma = use DMA access?)
; call print ; call print
; mov bx, '13' ; range accepted for answer: 1-3 ; mov bx, '13' ; range accepted for answer: 1-3
; call getkey ; call getkey
; mov [preboot_dma], al ; mov [preboot_dma], al
mov si, ask_bd _ask_question ask_bd,'12',preboot_biosdisk ; range accepted for answer: 1-2
call print
mov bx, '12' ; range accepted for answer: 1-2
call getkey
mov [preboot_biosdisk], al
_setcursor 11,0 _setcursor 11,0
jmp .d jmp .d
;.change_c: ; // VRR is an obsolete functionality, used only with CRT monitors ;.change_c: ; // VRR is an obsolete functionality, used only with CRT monitors
@ -896,21 +907,11 @@ end if
; _setcursor 12,0 ; _setcursor 12,0
; jmp .d ; jmp .d
.change_c: ; c) preboot_debug = duplicates kernel debug output to the screen .change_c: ; c) preboot_debug = duplicates kernel debug output to the screen
_setcursor 16,0 _ask_question ask_debug,'12',preboot_debug ; range accepted for answer: 1-2
mov si, ask_debug
call print
mov bx, '12' ; range accepted for answer: 1-2
call getkey
mov [preboot_debug], al
_setcursor 12,0 _setcursor 12,0
jmp .d jmp .d
.change_d: ; d) preboot_launcher = start the first app (right now it's LAUNCHER) after kernel is loaded? .change_d: ; d) preboot_launcher = start the first app (right now it's LAUNCHER) after kernel is loaded?
_setcursor 16,0 _ask_question ask_launcher,'12',preboot_launcher ; range accepted for answer: 1-2
mov si, ask_launcher
call print
mov bx, '12' ; range accepted for answer: 1-2
call getkey
mov [preboot_launcher], al
_setcursor 13,0 _setcursor 13,0
jmp .d jmp .d
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -15,10 +15,10 @@ $Revision: 2455 $
d80x25_bottom: d80x25_bottom:
db 186,' KolibriOS comes with ABSOLUTELY NO WARRANTY. See file COP' db 186,' KolibriOS comes with ABSOLUTELY NO WARRANTY. See file COPYING for details ',186
db 'YING for details ',186 db 186,' If you find any bugs, please report them at: http://board.kolibrios.org ',186
line_full_bottom line_full_bottom
d80x25_bottom_num = 2 d80x25_bottom_num = 3
msg_apm db " APM x.x ", 0 msg_apm db " APM x.x ", 0
novesa db "Display: EGA/CGA",13,10,0 novesa db "Display: EGA/CGA",13,10,0
@ -79,7 +79,7 @@ preboot_device_msgs dw 0,pdm1,pdm2,0
pdm1 db "real floppy",13,10,0 pdm1 db "real floppy",13,10,0
pdm2 db "C:\kolibri.img (FAT32)",13,10,0 pdm2 db "C:\kolibri.img (FAT32)",13,10,0
else else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3 preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1 db "real floppy",13,10,0 pdm1 db "real floppy",13,10,0
pdm2 db "C:\kolibri.img (FAT32)",13,10,0 pdm2 db "C:\kolibri.img (FAT32)",13,10,0
pdm3 db "use already loaded image",13,10,0 pdm3 db "use already loaded image",13,10,0
@ -100,6 +100,7 @@ _rs:latin1 '║ │ ????x????@?? SVGA VESA │ │',13,
_bt:latin1 '║ └───────────────────────────────┴─┘',13,10,0 _bt:latin1 '║ └───────────────────────────────┴─┘',13,10,0
remark1 db "Default values were selected to match most of configurations, but not all.",0 remark1 db "Default values were selected to match most of configurations, but not all.",0
remark2 db "If the system does not boot, try to disable the item [b].",0 remark2 db "If the system does not boot, try to disable option [b]. If the system gets",0
remarks dw remark1, remark2 remark3 db "stuck after booting, enable option [c], disable option [d] and make photo.",0
num_remarks = 2 remarks dw remark1, remark2, remark3
num_remarks = 3

View File

@ -15,10 +15,10 @@ $Revision$
d80x25_bottom: d80x25_bottom:
latin1 '║ KolibriOS on IGASUGUSE GARANTIITA. Vaata faili COPYING' latin1 '║ KolibriOS on IGASUGUSE GARANTIITA. Vaata faili COPYING info saamiseks. Kui ║'
latin1 ' info saamiseks ║' latin1 '║ leiate vigu, anna neist palun teada aadressil: http://board.kolibrios.org ║'
line_full_bottom line_full_bottom
d80x25_bottom_num = 2 d80x25_bottom_num = 3
msg_apm: latin1 " APM x.x ", 0 msg_apm: latin1 " APM x.x ", 0
novesa: latin1 "Ekraan: EGA/CGA",13,10,0 novesa: latin1 "Ekraan: EGA/CGA",13,10,0
@ -79,7 +79,7 @@ preboot_device_msgs dw 0,pdm1,pdm2,0
pdm1: latin1 "reaalne diskett",13,10,0 pdm1: latin1 "reaalne diskett",13,10,0
pdm2: latin1 "kolibri.img",13,10,0 pdm2: latin1 "kolibri.img",13,10,0
else else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3 preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1: latin1 "reaalne diskett",13,10,0 pdm1: latin1 "reaalne diskett",13,10,0
pdm2: latin1 "C:\kolibri.img (FAT32)",13,10,0 pdm2: latin1 "C:\kolibri.img (FAT32)",13,10,0
pdm3: latin1 "kasuta juba laaditud kujutist",13,10,0 pdm3: latin1 "kasuta juba laaditud kujutist",13,10,0
@ -100,6 +100,7 @@ _rs:latin1 '║ │ ????x????@?? SVGA VESA │ │',13,
_bt:latin1 '║ └───────────────────────────────┴─┘',13,10,0 _bt:latin1 '║ └───────────────────────────────┴─┘',13,10,0
remark1:latin1 "Vaikimisi väärtused on kasutatavad enamikes arvutites, kuid mitte kõigis.",0 remark1:latin1 "Vaikimisi väärtused on kasutatavad enamikes arvutites, kuid mitte kõigis.",0
remark2:latin1 "Kui süsteem ei käivitu, proovige lülitada kirje [b] välja.",0 remark2:latin1 "Kui süsteem ei käivitu, proovige lülitada kirje [b] välja. Kui see läheb",0
remarks dw remark1, remark2 remark3:latin1 "kinni pärast käivitamist, võimaldama valik [c], keelake [d] ja teha foto.",0
num_remarks = 2 remarks dw remark1, remark2, remark3
num_remarks = 3

View File

@ -15,10 +15,8 @@ $Revision$
d80x25_bottom: d80x25_bottom:
db 186,' KolibriOS wird ohne jegliche Garantie vertrieben. ' db 186,' KolibriOS wird ohne jegliche Garantie vertrieben. Details stehen in der ',186
db ' ',186 db 186,' Datei COPYING. Bitte melden Sie Fehler bei: http://board.kolibrios.org ',186
db 186,' Details stehen in der Datei COPYING '
db ' ',186
line_full_bottom line_full_bottom
d80x25_bottom_num = 3 d80x25_bottom_num = 3
@ -81,7 +79,7 @@ preboot_device_msgs dw 0,pdm1,pdm2,0
pdm1 db "Echte Diskette",13,10,0 pdm1 db "Echte Diskette",13,10,0
pdm2 db "kolibri.img",13,10,0 pdm2 db "kolibri.img",13,10,0
else else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3 preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1 db "Echte Diskette",13,10,0 pdm1 db "Echte Diskette",13,10,0
pdm2 db "C:\kolibri.img (FAT32)",13,10,0 pdm2 db "C:\kolibri.img (FAT32)",13,10,0
pdm3 db "Nutze bereits geladenes Image",13,10,0 pdm3 db "Nutze bereits geladenes Image",13,10,0
@ -102,6 +100,8 @@ _rs:latin1 '║ │ ????x????@?? SVGA VESA │ │',13,
_bt:latin1 '║ └───────────────────────────────┴─┘',13,10,0 _bt:latin1 '║ └───────────────────────────────┴─┘',13,10,0
remark1 db "Die Standardwerte sind fur die meisten gewahlt, aber nicht fur jedermann.",0 remark1 db "Die Standardwerte sind fur die meisten gewahlt, aber nicht fur jedermann.",0
remark2 db "Wenn das System nicht bootet, versuchen, das Element [b] deaktivieren.",0 remark2 db "Wenn das System nicht bootet, das Option [b] deaktivieren versuchen. Wenn es",0
remarks dw remark1, remark2 remark3 db "nach dem Booten hangen bleibt, aktivieren Sie Option [c], deaktivieren [d]",0
num_remarks = 2 remark4 db "und machen Fotos.",0
remarks dw remark1, remark2, remark3, remark4
num_remarks = 4

View File

@ -15,8 +15,8 @@ $Revision$
d80x25_bottom: d80x25_bottom:
cp866 '║ KolibriOS НЕ ПРЕДОСТАВЛЯЕТ НИКАКИХ ГАРAНТИЙ. ║' cp866 '║ KolibriOS НЕ ПРЕДОСТАВЛЯЕТ НИКАКИХ ГАРAНТИЙ. Подробнее смотрите в файле ║'
cp866 '║ Подробнее смотрите в файле COPYING.TXT ║' cp866 '║ COPYING.TXT. О найденных ошибках сообщайте на http://board.kolibrios.org ║'
line_full_bottom line_full_bottom
d80x25_bottom_num = 3 d80x25_bottom_num = 3
@ -77,7 +77,7 @@ preboot_device_msgs dw 0,pdm1,pdm2,0
pdm1: cp866 "настоящая дискета",13,10,0 pdm1: cp866 "настоящая дискета",13,10,0
pdm2: cp866 "kolibri.img из папки загрузки",13,10,0 pdm2: cp866 "kolibri.img из папки загрузки",13,10,0
else else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4 preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1: cp866 "настоящая дискета",13,10,0 pdm1: cp866 "настоящая дискета",13,10,0
pdm2: cp866 "C:\kolibri.img (FAT32)",13,10,0 pdm2: cp866 "C:\kolibri.img (FAT32)",13,10,0
pdm3: cp866 "использовать уже загруженный образ",13,10,0 pdm3: cp866 "использовать уже загруженный образ",13,10,0
@ -97,7 +97,8 @@ _r2:cp866 '║ │ 640x480 VGA 16 цветов │ │
_rs:cp866 '║ │ ????x????@?? SVGA VESA │ │ ',13,10,0 _rs:cp866 '║ │ ????x????@?? SVGA VESA │ │ ',13,10,0
_bt:cp866 '║ └───────────────────────────────┴─┘ ',13,10,0 _bt:cp866 '║ └───────────────────────────────┴─┘ ',13,10,0
remark1:cp866 "Значения по умолчанию выбраны для удобства большинства, но не всех.",0 remark1:cp866 "Значения по умолчанию выбраны для удобства большинства, но не всех. Если у",0
remark2:cp866 "Если у Вас не грузится система, попробуйте отключить пункт [b].",0 remark2:cp866 "Вас не грузится система, попробуйте отключить пункт [b]. Если она зависла",0
remarks dw remark1, remark2 remark3:cp866 "после запуска, включите пункт [c], отключите пункт [d] и сделайте фото лога.",0
num_remarks = 2 remarks dw remark1, remark2, remark3
num_remarks = 3

View File

@ -17,10 +17,8 @@ $Revision: 2455 $
d80x25_bottom: d80x25_bottom:
cp850 '║ KolibriOS y viene ABSOLUTAMENTE SIN GARANTíA. ' cp850 '║ KolibriOS viene ABSOLUTAMENTE SIN GARANTíA. Lee el archivo COPYING por más ║'
cp850 ' ║' cp850 '║ detalles. Por favor, informar de los errores en: http://board.kolibrios.org ║'
cp850 '║ Lee el archivo COPYING por más detalles '
cp850 ' ║'
line_full_bottom line_full_bottom
d80x25_bottom_num = 3 d80x25_bottom_num = 3
@ -83,7 +81,7 @@ preboot_device_msgs dw 0,pdm1,pdm2,0
pdm1: cp850 "disquete real",13,10,0 pdm1: cp850 "disquete real",13,10,0
pdm2: cp850 "C:\kolibri.img (FAT32)",13,10,0 pdm2: cp850 "C:\kolibri.img (FAT32)",13,10,0
else else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3 preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1: cp850 "disquete real",13,10,0 pdm1: cp850 "disquete real",13,10,0
pdm2: cp850 "C:\kolibri.img (FAT32)",13,10,0 pdm2: cp850 "C:\kolibri.img (FAT32)",13,10,0
pdm3: cp850 "usar imagen ya cargada",13,10,0 pdm3: cp850 "usar imagen ya cargada",13,10,0
@ -104,6 +102,7 @@ _rs:cp850 '║ │ ????x????@?? SVGA VESA │ │',13,1
_bt:cp850 '║ └───────────────────────────────┴─┘',13,10,0 _bt:cp850 '║ └───────────────────────────────┴─┘',13,10,0
remark1:cp850 "Los valores por defecto puede que no funcionen en algunas configuraciones.",0 remark1:cp850 "Los valores por defecto puede que no funcionen en algunas configuraciones.",0
remark2:cp850 "Si el sistema no inicia, prueba deshabilitar la opción [b].",0 remark2:cp850 "Si el sistema no inicia, prueba deshabilitar la opción [b]. Si se bloquea",0
remarks dw remark1, remark2 remark3:cp850 "después de arrancar, habilite la opción [c], desactivar [d] y hacer fotos.",0
num_remarks = 2 remarks dw remark1, remark2, remark3
num_remarks = 3