From 89d030e9505cddab99b928dd0c20d71b30433c93 Mon Sep 17 00:00:00 2001 From: "Alexey Teplov (" Date: Mon, 18 Feb 2008 11:37:45 +0000 Subject: [PATCH] blue screen: save selected resolution instead of VESA mode number (thanks to Serge) git-svn-id: svn://kolibrios.org@746 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/boot/bootcode.inc | 8 +++++++- kernel/trunk/boot/bootru.inc | 27 ++------------------------- kernel/trunk/boot/bootvesa.inc | 23 ++++++++++++++++------- kernel/trunk/boot/preboot.inc | 5 ++++- 4 files changed, 29 insertions(+), 34 deletions(-) diff --git a/kernel/trunk/boot/bootcode.inc b/kernel/trunk/boot/bootcode.inc index 4b77333ec5..de50f17def 100644 --- a/kernel/trunk/boot/bootcode.inc +++ b/kernel/trunk/boot/bootcode.inc @@ -582,7 +582,13 @@ cfgmanager: .enter: cmp al,0x0D;x,0x1C0D ; enter jne .loops push word [cursor_pos] - pop word [preboot_graph] ;save choose + pop bp + push word [es:bp] + pop word [x_save] + push word [es:bp+2] + pop word [y_save] + mov word [preboot_graph],bp ;save choose + jmp .d .change_b: diff --git a/kernel/trunk/boot/bootru.inc b/kernel/trunk/boot/bootru.inc index bab32a9996..a10051a62f 100644 --- a/kernel/trunk/boot/bootru.inc +++ b/kernel/trunk/boot/bootru.inc @@ -58,8 +58,8 @@ time_str db " 5 ᥪ㭤 " db " ¤®  ¢â®¬ â¨ç¥áª®£® ¯à®¤®«¦¥­¨ï",13,10,0 current_cfg_msg db "’¥ªã騥 ­ áâனª¨:",13,10,0 curvideo_msg db " [a] ‚¨¤¥®à¥¦¨¬: ",0 -modevesa20 db " á LFB",0 -modevesa12 db ", VESA 1.2 Bnk",0 +;modevesa20 db " á LFB",0 +;modevesa12 db ", VESA 1.2 Bnk",0 mode0 db "320x200, EGA/CGA 256 梥⮢",13,10,0 mode9 db "640x480, VGA 16 梥⮢",13,10,0 @@ -81,19 +81,6 @@ loading_msg db " save_quest db "‡ ¯®¬­¨âì ⥪ã騥 ­ áâனª¨? [y/n]: ",0 loader_block_error db "Žè¨¡ª  ¢ ¤ ­­ëå ­ ç «ì­®£® § £àã§ç¨ª , ¯à®¤®«¦¥­¨¥ ­¥¢®§¬®¦­®.",0 -;_oem db 'oem: ',0 - -;db 5 -;s_ven_intel db 'Intel' -;db 2 -;s_ven_s3 db 'S3' -;;db 5 -;s_ven_bochs db 'Bochs' -;db 8 -;s_ven_vmware db 'V M ware' - -;s_mode db " ????-????-?? (?) ",0 -;s_mode1 db " 0640-0480-04 (a) 0320-0200-08 (b) ",13,10,0 _st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿',13,10,0 _r1 db 186,' ³ 320x200 EGA/CGA 256 梥⮢ ³ ³',13,10,0 @@ -101,16 +88,6 @@ _r2 db 186,' _rs db 186,' ³ ????x????@?? SVGA VESA ³ ³',13,10,0 _bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ',13,10,0 -;_tl db 186,' ÚÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄ¿',13,10,\ -; 186,' ³ 4 ³ 8 ³ 15 ³ 16 ³ 24 ³ 32 ³',13,10,\ -; 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄ¿',13,10,0 -;_rs db 186,' ³ ????x???? ³ ³ ³ ³ ³ ³ ³Û³',13,10,0 -;_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÙ',13,10,0 - - -;_sel1 db 0x1A,0 -;_sel2 db 0x1B,0 -;_selc db ' ',0 remark1 db "‡­ ç¥­¨ï ¯® 㬮«ç ­¨î ¢ë¡à ­ë ¤«ï 㤮¡á⢠ ¡®«ì設á⢠, ­® ­¥ ¢á¥å.",0 remark2 db "…᫨ ã ‚ á LCD-¬®­¨â®à, ®âª«îç¨â¥ VRR ¢ ¯ã­ªâ¥ [c] - ®­ ‚ ¬ ­¥ ­ã¦¥­.",0 diff --git a/kernel/trunk/boot/bootvesa.inc b/kernel/trunk/boot/bootvesa.inc index 4892f46e0e..8e7399348c 100644 --- a/kernel/trunk/boot/bootvesa.inc +++ b/kernel/trunk/boot/bootvesa.inc @@ -363,20 +363,29 @@ check_first_parm: jz .ok_found_mode mov si,modes_table + jmp .ok_found_mode + +.no_zero: + mov ax,word [x_save] + mov bx,word [y_save] + mov si,modes_table + call .loops + test ax,ax + jz .ok_found_mode + +; cmp ax,modes_table +; jb .zerro ;check on correct if bellow +; cmp ax,word [end_cursor] +; ja .zerro ;check on correct if anymore + .ok_found_mode: mov word [home_cursor],si ; mov word [cursor_pos],si mov word [preboot_graph],si mov ax,si -.no_zero: - cmp ax,modes_table - jb .zerro ;check on correct if bellow - cmp ax,word [end_cursor] - ja .zerro ;check on correct if anymore - mov ecx,long_v_table .loop: add ax,size_of_step @@ -414,7 +423,7 @@ check_first_parm: ;----------------------------------------------------------------------------- -default_vmode: +;default_vmode: ;----------------------------------------------------------------------------- draw_vmodes_table: diff --git a/kernel/trunk/boot/preboot.inc b/kernel/trunk/boot/preboot.inc index 9280e06f65..70498fbdf2 100644 --- a/kernel/trunk/boot/preboot.inc +++ b/kernel/trunk/boot/preboot.inc @@ -17,7 +17,10 @@ display_modechg db 0 ; display mode change for text, yes/no (0 or 2) display_atboot db 0 ; show boot screen messages ( 2-no ) -preboot_graph db 0 ; graph mode +preboot_graph dw 0 ; graph mode +x_save dw 0 ; x +y_save dw 0 ; y +;pixel_save dw 0 ; per to pixel preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes) preboot_vrrm db 0 ; use VRR_M (1-yes, 2- no) preboot_dma db 0 ; use DMA for access to HDD (1-always, 2-only for read, 3-never)