forked from KolibriOS/kolibrios
blue screen removal: some bugs fixed
git-svn-id: svn://kolibrios.org@1703 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c5737c5fed
commit
57b74ef78d
@ -47,24 +47,6 @@ printplain:
|
||||
popa
|
||||
ret
|
||||
|
||||
getkey:
|
||||
;get number in range [bl,bh] (bl,bh in ['0'..'9'])
|
||||
; in: bx=range
|
||||
; out: ax=digit (1..9, 10 for 0)
|
||||
mov ah, 0
|
||||
int 16h
|
||||
cmp al, bl
|
||||
jb getkey
|
||||
cmp al, bh
|
||||
ja getkey
|
||||
push ax
|
||||
call putchar
|
||||
pop ax
|
||||
and ax, 0Fh
|
||||
jnz @f
|
||||
mov al, 10
|
||||
@@:
|
||||
ret
|
||||
|
||||
setcursor:
|
||||
; in: dl=column, dh=row
|
||||
@ -90,15 +72,20 @@ boot_read_floppy:
|
||||
jnc @f
|
||||
inc si
|
||||
cmp si, 10
|
||||
jb @b
|
||||
mov si, badsect
|
||||
sayerr_plain:
|
||||
call printplain
|
||||
jmp $
|
||||
jnb $
|
||||
@@:
|
||||
pop si
|
||||
ret
|
||||
|
||||
sayerr_plain:
|
||||
call printplain
|
||||
jmp $
|
||||
|
||||
sayerr:
|
||||
call print
|
||||
jmp $
|
||||
|
||||
|
||||
; convert abs. sector number (AX) to BIOS T:H:S
|
||||
; sector number = (abs.sector%BPB_SecPerTrk)+1
|
||||
; pre.track number = (abs.sector/BPB_SecPerTrk)
|
||||
@ -209,20 +196,16 @@ dfl1:
|
||||
; draw bottom
|
||||
mov si, d80x25_bottom
|
||||
mov cx, d80x25_bottom_num * 80
|
||||
;@@:
|
||||
; lodsb
|
||||
; stoswvmode
|
||||
; loop @b
|
||||
@@:
|
||||
lodsb
|
||||
stosw
|
||||
loop @b
|
||||
|
||||
mov byte [space_msg+80], 0 ; now space_msg is null terminated
|
||||
|
||||
_setcursor d80x25_top_num,0
|
||||
|
||||
|
||||
sayerr:
|
||||
call print
|
||||
jmp $
|
||||
cpugood:
|
||||
cpugood:
|
||||
|
||||
push 0
|
||||
popf
|
||||
@ -336,7 +319,7 @@ cfgmanager:
|
||||
; d) preboot_device = from what boot?
|
||||
|
||||
; determine default settings
|
||||
mov [.bSettingsChanged], 0
|
||||
; mov [.bSettingsChanged], 0
|
||||
|
||||
;.preboot_gr_end:
|
||||
mov di, preboot_device
|
||||
@ -360,287 +343,13 @@ cfgmanager:
|
||||
adc byte [di+preboot_dma-preboot_device], 0
|
||||
cmp byte [di+preboot_biosdisk-preboot_device], 1
|
||||
adc byte [di+preboot_biosdisk-preboot_device], 0
|
||||
; default value for VRR is OFF
|
||||
cmp byte [di+preboot_vrrm-preboot_device], 0
|
||||
jnz @f
|
||||
mov byte [di+preboot_vrrm-preboot_device], 2
|
||||
@@:
|
||||
; notify user
|
||||
_setcursor 5,2
|
||||
|
||||
mov si, linef
|
||||
call printplain
|
||||
mov si, start_msg
|
||||
call print
|
||||
mov si, time_msg
|
||||
call print
|
||||
; get start time
|
||||
call .gettime
|
||||
mov [.starttime], eax
|
||||
mov word [.timer], .newtimer
|
||||
mov word [.timer+2], cs
|
||||
.printcfg:
|
||||
|
||||
_setcursor 9,0
|
||||
mov si, current_cfg_msg
|
||||
call print
|
||||
mov si, curvideo_msg
|
||||
call print
|
||||
|
||||
;<< call draw_current_vmode
|
||||
|
||||
mov si, usebd_msg
|
||||
cmp [preboot_biosdisk], 1
|
||||
call .say_on_off
|
||||
mov si, vrrm_msg
|
||||
cmp [preboot_vrrm], 1
|
||||
call .say_on_off
|
||||
mov si, preboot_device_msg
|
||||
call print
|
||||
mov al, [preboot_device]
|
||||
and eax, 7
|
||||
mov si, [preboot_device_msgs+eax*2]
|
||||
call printplain
|
||||
.show_remarks:
|
||||
; show remarks in gray color
|
||||
mov di, ((21-num_remarks)*80 + 2)*2
|
||||
push 0xB800
|
||||
pop es
|
||||
mov cx, num_remarks
|
||||
mov si, remarks
|
||||
.write_remarks:
|
||||
lodsw
|
||||
push si
|
||||
xchg ax, si
|
||||
mov ah, 1*16+7 ; background: blue (1), foreground: gray (7)
|
||||
push di
|
||||
.write_remark:
|
||||
lodsb
|
||||
test al, al
|
||||
jz @f
|
||||
stosw
|
||||
jmp .write_remark
|
||||
@@:
|
||||
pop di
|
||||
pop si
|
||||
add di, 80*2
|
||||
loop .write_remarks
|
||||
.wait:
|
||||
_setcursor 25,0 ; out of screen
|
||||
; set timer interrupt handler
|
||||
cli
|
||||
push 0
|
||||
pop es
|
||||
push dword [es:8*4]
|
||||
pop dword [.oldtimer]
|
||||
push dword [.timer]
|
||||
pop dword [es:8*4]
|
||||
sti
|
||||
; wait for keypressed
|
||||
xor ax,ax
|
||||
int 16h
|
||||
push ax
|
||||
; restore timer interrupt
|
||||
mov eax, [.oldtimer]
|
||||
mov [es:8*4], eax
|
||||
mov [.timer], eax
|
||||
|
||||
_setcursor 7,0
|
||||
mov si, space_msg
|
||||
call printplain
|
||||
; clear remarks and restore normal attributes
|
||||
push es
|
||||
mov di, ((21-num_remarks)*80 + 2)*2
|
||||
push 0xB800
|
||||
pop es
|
||||
mov cx, num_remarks
|
||||
mov ax, ' ' + (1*16 + 15)*100h
|
||||
@@:
|
||||
push cx
|
||||
mov cx, 76
|
||||
rep stosw
|
||||
pop cx
|
||||
add di, 4*2
|
||||
loop @b
|
||||
pop es
|
||||
pop ax
|
||||
; switch on key
|
||||
cmp al, 13
|
||||
jz .continue
|
||||
or al, 20h
|
||||
cmp al, 'a'
|
||||
jz .change_a
|
||||
cmp al, 'b'
|
||||
jz .change_b
|
||||
cmp al, 'c'
|
||||
jz .change_c
|
||||
cmp al, 'd'
|
||||
jnz .show_remarks
|
||||
_setcursor 15,0
|
||||
mov si, bdev
|
||||
call print
|
||||
mov bx, '14'
|
||||
call getkey
|
||||
mov [preboot_device], al
|
||||
_setcursor 13,0
|
||||
.d:
|
||||
mov [.bSettingsChanged], 1
|
||||
call clear_vmodes_table ;clear vmodes_table
|
||||
jmp .printcfg
|
||||
.change_a:
|
||||
.loops:
|
||||
call draw_vmodes_table
|
||||
_setcursor 25,0 ; out of screen
|
||||
xor ax,ax
|
||||
int 0x16
|
||||
|
||||
mov si,word [cursor_pos]
|
||||
|
||||
cmp ah,0x48;x,0x48E0 ; up
|
||||
jne .down
|
||||
cmp si,modes_table
|
||||
jbe .loops
|
||||
sub word [cursor_pos],size_of_step
|
||||
jmp .loops
|
||||
|
||||
.down: cmp ah,0x50;x,0x50E0 ; down
|
||||
jne .pgup
|
||||
cmp word[es:si+10],-1
|
||||
je .loops
|
||||
add word [cursor_pos],size_of_step
|
||||
jmp .loops
|
||||
|
||||
.pgup: cmp ah,0x49 ; page up
|
||||
jne .pgdn
|
||||
sub si, size_of_step*long_v_table
|
||||
cmp si, modes_table
|
||||
jae @f
|
||||
mov si, modes_table
|
||||
@@:
|
||||
mov word [cursor_pos], si
|
||||
mov si, word [home_cursor]
|
||||
sub si, size_of_step*long_v_table
|
||||
cmp si, modes_table
|
||||
jae @f
|
||||
mov si, modes_table
|
||||
@@:
|
||||
mov word [home_cursor], si
|
||||
jmp .loops
|
||||
|
||||
.pgdn: cmp ah,0x51 ; page down
|
||||
jne .enter
|
||||
mov ax, [end_cursor]
|
||||
add si, size_of_step*long_v_table
|
||||
cmp si, ax
|
||||
jb @f
|
||||
mov si, ax
|
||||
sub si, size_of_step
|
||||
@@:
|
||||
mov word [cursor_pos], si
|
||||
mov si, word [home_cursor]
|
||||
sub ax, size_of_step*long_v_table
|
||||
add si, size_of_step*long_v_table
|
||||
cmp si, ax
|
||||
jb @f
|
||||
mov si, ax
|
||||
@@:
|
||||
mov word [home_cursor], si
|
||||
jmp .loops
|
||||
|
||||
.enter: cmp al,0x0D;x,0x1C0D ; enter
|
||||
jne .loops
|
||||
push word [cursor_pos]
|
||||
pop bp
|
||||
push word [es:bp]
|
||||
pop word [x_save]
|
||||
push word [es:bp+2]
|
||||
pop word [y_save]
|
||||
push word [es:bp+6]
|
||||
pop word [number_vm]
|
||||
mov word [preboot_graph],bp ;save choose
|
||||
|
||||
jmp .d
|
||||
|
||||
.change_b:
|
||||
_setcursor 15,0
|
||||
mov si, ask_bd
|
||||
call print
|
||||
mov bx, '12'
|
||||
call getkey
|
||||
mov [preboot_biosdisk], al
|
||||
_setcursor 11,0
|
||||
jmp .d
|
||||
.change_c:
|
||||
_setcursor 15,0
|
||||
mov si, vrrmprint
|
||||
call print
|
||||
mov bx, '12'
|
||||
call getkey
|
||||
mov [preboot_vrrm], al
|
||||
_setcursor 12,0
|
||||
jmp .d
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
.say_on_off:
|
||||
pushf
|
||||
call print
|
||||
mov si, on_msg
|
||||
popf
|
||||
jz @f
|
||||
mov si, off_msg
|
||||
@@: jmp printplain
|
||||
; novesa and vervesa strings are not used at the moment of executing this code
|
||||
virtual at novesa
|
||||
.oldtimer dd ?
|
||||
.starttime dd ?
|
||||
.bSettingsChanged db ?
|
||||
.timer dd ?
|
||||
end virtual
|
||||
; pop ax ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ??
|
||||
jmp .continue
|
||||
.loader_block dd -1
|
||||
.gettime:
|
||||
mov ah, 0
|
||||
int 1Ah
|
||||
xchg ax, cx
|
||||
shl eax, 10h
|
||||
xchg ax, dx
|
||||
ret
|
||||
.newtimer:
|
||||
push ds
|
||||
push cs
|
||||
pop ds
|
||||
pushf
|
||||
call [.oldtimer]
|
||||
pushad
|
||||
call .gettime
|
||||
sub eax, [.starttime]
|
||||
sub ax, 18*5
|
||||
jae .timergo
|
||||
neg ax
|
||||
add ax, 18-1
|
||||
mov bx, 18
|
||||
xor dx, dx
|
||||
div bx
|
||||
|
||||
; wait 5/4/3/2 seconds, 1 second
|
||||
cmp al, 1
|
||||
mov cl, 's'
|
||||
ja @f
|
||||
mov cl, ' '
|
||||
@@: mov [time_str+9], cl
|
||||
add al, '0'
|
||||
mov [time_str+1], al
|
||||
mov si, time_msg
|
||||
_setcursor 7,0
|
||||
call print
|
||||
_setcursor 25,0
|
||||
popad
|
||||
pop ds
|
||||
iret
|
||||
.timergo:
|
||||
push 0
|
||||
pop es
|
||||
mov eax, [.oldtimer]
|
||||
mov [es:8*4], eax
|
||||
mov sp, 0EC00h
|
||||
.continue:
|
||||
sti
|
||||
_setcursor 6,0
|
||||
@ -651,35 +360,8 @@ end virtual
|
||||
mov si, loading_msg
|
||||
call print
|
||||
_setcursor 15,0
|
||||
cmp [.bSettingsChanged], 0
|
||||
jz .load
|
||||
cmp [.loader_block], -1
|
||||
jz .load
|
||||
les bx, [.loader_block]
|
||||
mov eax, [es:bx+3]
|
||||
push ds
|
||||
pop es
|
||||
test eax, eax
|
||||
jz .load
|
||||
push eax
|
||||
mov si, save_quest
|
||||
call print
|
||||
.waityn:
|
||||
mov ah, 0
|
||||
int 16h
|
||||
or al, 20h
|
||||
cmp al, 'n'
|
||||
jz .loadc
|
||||
cmp al, 'y'
|
||||
jnz .waityn
|
||||
call putchar
|
||||
mov byte [space_msg+80], 186
|
||||
jmp .load
|
||||
|
||||
pop eax
|
||||
push cs
|
||||
push .cont
|
||||
push eax
|
||||
retf ;call back
|
||||
.loadc:
|
||||
pop eax
|
||||
.cont:
|
||||
@ -691,7 +373,6 @@ end virtual
|
||||
call printplain
|
||||
_setcursor 15,0
|
||||
.load:
|
||||
; \end{diamond}[02.12.2005]
|
||||
|
||||
; ASK GRAPHICS MODE
|
||||
|
||||
@ -870,8 +551,8 @@ sayerr_floppy:
|
||||
mov dx, 0x3f2
|
||||
mov al, 0
|
||||
out dx, al
|
||||
mov si, memmovefailed
|
||||
jmp sayerr_plain
|
||||
; mov si, memmovefailed
|
||||
jmp $
|
||||
@@:
|
||||
pop ax ; restore from stack count of words in boot+FAT
|
||||
shl ax, 1 ; make bytes count from count of words
|
||||
@ -1055,37 +736,11 @@ no_sys_on_floppy:
|
||||
mov es, ax
|
||||
|
||||
mov bx, [es:0x9008] ; vga & 320x200
|
||||
; mov bx, ax
|
||||
; cmp ax, 0x13
|
||||
; je setgr
|
||||
; cmp ax, 0x12
|
||||
; je setgr
|
||||
mov ax, 0x4f02 ; Vesa
|
||||
setgr:
|
||||
int 0x10
|
||||
test ah, ah
|
||||
mov si, fatalsel
|
||||
jnz v_mode_error
|
||||
; set mode 0x12 graphics registers:
|
||||
; cmp bx, 0x12
|
||||
; jne gmok2
|
||||
; mov al, 0x05
|
||||
; mov dx, 0x03ce
|
||||
; push dx
|
||||
; out dx, al ; select GDC mode register
|
||||
; mov al, 0x02
|
||||
; inc dx
|
||||
; out dx, al ; set write mode 2
|
||||
; mov al, 0x02
|
||||
; mov dx, 0x03c4
|
||||
; out dx, al ; select VGA sequencer map mask register
|
||||
; mov al, 0x0f
|
||||
; inc dx
|
||||
; out dx, al ; set mask for all planes 0-3
|
||||
; mov al, 0x08
|
||||
; pop dx
|
||||
; out dx, al ; select GDC bit mask register
|
||||
; for writes to 0x03cf
|
||||
jnz $
|
||||
gmok2:
|
||||
push ds
|
||||
pop es
|
||||
|
@ -24,87 +24,43 @@ d80x25_bottom_num = 3
|
||||
|
||||
msg_apm db " APM x.x ", 0
|
||||
vervesa db "Version of Vesa: Vesa x.x",13,10,0
|
||||
novesa db "Display: EGA/CGA",13,10,0
|
||||
;novesa db "Display: EGA/CGA",13,10,0
|
||||
s_vesa db "Version of VESA: "
|
||||
.ver db "?.?",13,10,0
|
||||
|
||||
gr_mode db "Select a videomode: ",13,10,0
|
||||
;s_bpp db 13,10,186," ƒ«ã¡¨ 梥â : "
|
||||
; .bpp dw "??"
|
||||
; db 13,10,0
|
||||
;gr_mode db "Select a videomode: ",13,10,0
|
||||
|
||||
vrrmprint db "Apply VRR? (picture frequency greater than 60Hz"
|
||||
db " only for transfers:",13,10
|
||||
db 186," 1024*768->800*600 and 800*600->640*480) [1-yes,2-no]:",0
|
||||
;vrrmprint db "Apply VRR? (picture frequency greater than 60Hz"
|
||||
; db " only for transfers:",13,10
|
||||
; db 186," 1024*768->800*600 and 800*600->640*480) [1-yes,2-no]:",0
|
||||
|
||||
|
||||
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
||||
;ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
||||
|
||||
bdev db "Load ramdisk from [1-floppy; 2-C:\kolibri.img (FAT32);"
|
||||
db 13,10,186," "
|
||||
db "3-use preloaded ram-image from kernel restart;"
|
||||
db 13,10,186," "
|
||||
db "4-create blank image]: ",0
|
||||
probetext db 13,10,13,10,186," Use standart graphics mode? [1-yes, "
|
||||
db "2-probe bios (Vesa 3.0)]: ",0
|
||||
;memokz256 db 13,10,186," RAM 256 Mb",0
|
||||
;memokz128 db 13,10,186," RAM 128 Mb",0
|
||||
;memokz64 db 13,10,186," RAM 64 Mb",0
|
||||
;memokz32 db 13,10,186," RAM 32 Mb",0
|
||||
;memokz16 db 13,10,186," RAM 16 Mb",0
|
||||
prnotfnd db "Fatal - Videomode not found.",0
|
||||
;modena db "Fatal - VBE 0x112+ required.",0
|
||||
not386 db "Fatal - CPU 386+ required.",0
|
||||
btns db "Fatal - Can't determine color depth.",0
|
||||
fatalsel db "Fatal - Graphics mode not supported by hardware.",0
|
||||
pres_key db "Press any key to choose a new videomode.",0
|
||||
badsect db 13,10,186," Fatal - Bad sector. Replace floppy.",0
|
||||
memmovefailed db 13,10,186," Fatal - Int 0x15 move failed.",0
|
||||
;bdev db "Load ramdisk from [1-floppy; 2-C:\kolibri.img (FAT32);"
|
||||
; db 13,10,186," "
|
||||
; db "3-use preloaded ram-image from kernel restart;"
|
||||
; db 13,10,186," "
|
||||
; db "4-create blank image]: ",0
|
||||
;probetext db 13,10,13,10,186," Use standart graphics mode? [1-yes, "
|
||||
; db "2-probe bios (Vesa 3.0)]: ",0
|
||||
;prnotfnd db "Fatal - Videomode not found.",0
|
||||
;btns db "Fatal - Can't determine color depth.",0
|
||||
;badsect db 13,10,186," Fatal - Bad sector. Replace floppy.",0
|
||||
;memmovefailed db 13,10,186," Fatal - Int 0x15 move failed.",0
|
||||
okt db " ... OK"
|
||||
linef db 13,10,0
|
||||
diskload db "Loading diskette: 00 %",8,8,8,8,0
|
||||
pros db "00"
|
||||
backspace2 db 8,8,0
|
||||
boot_dev db 0 ; 0=floppy, 1=hd
|
||||
start_msg db "Press [abcd] to change settings, press [Enter] to continue booting",13,10,0
|
||||
time_msg db " or wait "
|
||||
time_str db " 5 seconds"
|
||||
db " before automatical continuation",13,10,0
|
||||
current_cfg_msg db "Current settings:",13,10,0
|
||||
curvideo_msg db " [a] Videomode: ",0
|
||||
;start_msg db "Press [abcd] to change settings, press [Enter] to continue booting",13,10,0
|
||||
;time_msg db " or wait "
|
||||
;time_str db " 5 seconds"
|
||||
; db " before automatical continuation",13,10,0
|
||||
;current_cfg_msg db "cfgmanager.printcfg reached",13,10,0
|
||||
;curvideo_msg db " [a] Videomode: ",0
|
||||
|
||||
;modes_msg dw mode4,mode1,mode2,mode3
|
||||
;modevesa20 db " with LFB",0
|
||||
;modevesa12 db ", VESA 1.2 Bnk",0
|
||||
mode0 db "320x200, EGA/CGA 256 colors",13,10,0
|
||||
mode9 db "640x480, VGA 16 colors",13,10,0
|
||||
|
||||
;probeno_msg db " (standard mode)",0
|
||||
;probeok_msg db " (check nonstandard modes)",0
|
||||
;dma_msg db " [b] Use DMA for HDD access:",0
|
||||
usebd_msg db " [b] Add disks visible by BIOS:",0
|
||||
on_msg db " on",13,10,0
|
||||
off_msg db " off",13,10,0
|
||||
;readonly_msg db " only for reading",13,10,0
|
||||
vrrm_msg db " [c] Use VRR:",0
|
||||
preboot_device_msg db " [d] Floppy image: ",0
|
||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||
pdm1 db "real floppy",13,10,0
|
||||
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
||||
pdm3 db "use already loaded image",13,10,0
|
||||
pdm4 db "create blank image",13,10,0
|
||||
loading_msg db "Loading KolibriOS...",0
|
||||
save_quest db "Remember current settings? [y/n]: ",0
|
||||
loader_block_error db "Bootloader data invalid, I cannot continue. Stopped.",0
|
||||
|
||||
_st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿',13,10,0
|
||||
_r1 db 186,' ³ 320x200 EGA/CGA 256 colors ³ ³',13,10,0
|
||||
_r2 db 186,' ³ 640x480 VGA 16 colors ³ ³',13,10,0
|
||||
_rs db 186,' ³ ????x????@?? SVGA VESA ³ ³',13,10,0
|
||||
_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ',13,10,0
|
||||
|
||||
remark1 db "Default values were selected to match most of configurations, but not all.",0
|
||||
remark2 db "If you have CRT-monitor, enable VRR in the item [c].",0
|
||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
||||
remarks dw remark1, remark2, remark3
|
||||
num_remarks = 3
|
||||
;save_quest db "Remember current settings? [y/n]: ",0
|
||||
loader_block_error db "Invalid boot data",0
|
||||
|
@ -112,22 +112,6 @@ int2strnz:
|
||||
inc di
|
||||
ret
|
||||
|
||||
;-------------------------------------------------------
|
||||
;Write message about incorrect v_mode and write message about jmp on swith v_mode
|
||||
v_mode_error:
|
||||
_setcursor 19,2
|
||||
mov si, fatalsel
|
||||
call printplain
|
||||
_setcursor 20,2
|
||||
mov si,pres_key
|
||||
call printplain
|
||||
xor eax,eax
|
||||
int 16h
|
||||
jmp cfgmanager.d
|
||||
;-------------------------------------------------------
|
||||
;
|
||||
|
||||
|
||||
|
||||
;-------------------------------------------------------
|
||||
print_vesa_info:
|
||||
@ -144,18 +128,12 @@ print_vesa_info:
|
||||
mov di,vi
|
||||
int 0x10
|
||||
or ah,ah
|
||||
jnz .exit
|
||||
jnz $
|
||||
@@:
|
||||
cmp [es:vi.VESASignature],'VESA'
|
||||
jne .exit
|
||||
jne $
|
||||
cmp [es:vi.VESAVersion],0x0100
|
||||
jb .exit
|
||||
jmp .vesaok2
|
||||
|
||||
.exit:
|
||||
mov si,novesa
|
||||
call printplain
|
||||
ret
|
||||
jb $
|
||||
|
||||
.vesaok2:
|
||||
mov ax,[es:vi.VESAVersion]
|
||||
@ -241,59 +219,11 @@ calc_vmodes_table:
|
||||
popad
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
;draw_current_vmode:
|
||||
; push 0
|
||||
; pop es
|
||||
|
||||
; mov si,word [cursor_pos]
|
||||
|
||||
; cmp word [es:si+6],0x12
|
||||
; je .no_vesa_0x12
|
||||
|
||||
; cmp word [es:si+6],0x13
|
||||
; je .no_vesa_0x13
|
||||
|
||||
; mov di,loader_block_error
|
||||
; movzx eax,word[es:si+0]
|
||||
; mov ecx,10
|
||||
; call int2strnz
|
||||
; mov byte[es:di],'x'
|
||||
; inc di
|
||||
; movzx eax,word[es:si+2]
|
||||
; call int2strnz
|
||||
; mov byte[es:di],'x'
|
||||
; inc di
|
||||
; movzx eax,word[es:si+8]
|
||||
; call int2strnz
|
||||
; mov dword[es:di],0x00000d0a
|
||||
; mov si,loader_block_error
|
||||
; push ds
|
||||
; push es
|
||||
; pop ds
|
||||
; call printplain
|
||||
; pop ds
|
||||
; ret
|
||||
;.no_vesa_0x13:
|
||||
; mov si,mode0
|
||||
; jmp .print
|
||||
;.no_vesa_0x12:
|
||||
; mov si,mode9
|
||||
;.print:
|
||||
; call printplain
|
||||
; ret
|
||||
;-----------------------------------------------------------------------------
|
||||
check_first_parm:
|
||||
mov si,word [preboot_graph]
|
||||
test si,si
|
||||
jnz .no_zero ;if no zero
|
||||
.zerro:
|
||||
; mov ax,modes_table
|
||||
; mov word [cursor_pos],ax
|
||||
; mov word [home_cursor],ax
|
||||
; mov word [preboot_graph],ax
|
||||
;SET default video of mode first probe will fined a move of work 1024x768@32
|
||||
|
||||
mov ax,1024
|
||||
mov bx,768
|
||||
@ -365,226 +295,29 @@ check_first_parm:
|
||||
ret
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
;default_vmode:
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
draw_vmodes_table:
|
||||
; _setcursor 9, 2
|
||||
; mov si,gr_mode
|
||||
; call printplain
|
||||
|
||||
; mov si,_st
|
||||
; call printplain
|
||||
|
||||
; push word [cursor_pos]
|
||||
; pop ax
|
||||
; push word [home_cursor]
|
||||
; pop si
|
||||
; mov cx,si
|
||||
|
||||
; cmp ax,si
|
||||
; je .ok
|
||||
; jb .low
|
||||
|
||||
|
||||
; add cx,size_of_step*long_v_table
|
||||
|
||||
; cmp ax,cx
|
||||
; jb .ok
|
||||
|
||||
; sub cx,size_of_step*long_v_table
|
||||
; add cx,size_of_step
|
||||
; cmp cx,word[end_cursor]
|
||||
; jae .ok
|
||||
; add si,size_of_step
|
||||
; push si
|
||||
; pop word [home_cursor]
|
||||
; jmp .ok
|
||||
|
||||
|
||||
;.low: sub cx,size_of_step
|
||||
; cmp cx,modes_table
|
||||
; jb .ok
|
||||
; push cx
|
||||
; push cx
|
||||
; pop word [home_cursor]
|
||||
; pop si
|
||||
|
||||
|
||||
;.ok:
|
||||
; calculate scroll position
|
||||
; push si
|
||||
; mov ax, [end_cursor]
|
||||
; sub ax, modes_table
|
||||
; mov bx, size_of_step
|
||||
; cwd
|
||||
; div bx
|
||||
; mov si, ax ; si = size of list
|
||||
; mov ax, [home_cursor]
|
||||
; sub ax, modes_table
|
||||
; cwd
|
||||
; div bx
|
||||
; mov di, ax
|
||||
; mov ax, scroll_area_size*long_v_table
|
||||
; cwd
|
||||
; div si
|
||||
; test ax, ax
|
||||
; jnz @f
|
||||
; inc ax
|
||||
;@@:
|
||||
; cmp al, scroll_area_size
|
||||
; jb @f
|
||||
; mov al, scroll_area_size
|
||||
;@@:
|
||||
; mov cx, ax
|
||||
; cx = scroll height
|
||||
; calculate scroll pos
|
||||
; xor bx, bx ; initialize scroll pos
|
||||
; sub al, scroll_area_size+1
|
||||
; neg al
|
||||
; sub si, long_v_table-1
|
||||
; jbe @f
|
||||
; mul di
|
||||
; div si
|
||||
; mov bx, ax
|
||||
;@@:
|
||||
; inc bx
|
||||
; imul ax, bx, size_of_step
|
||||
; add ax, [home_cursor]
|
||||
; mov [scroll_start], ax
|
||||
; imul cx, size_of_step
|
||||
; add ax, cx
|
||||
; mov [scroll_end], ax
|
||||
; pop si
|
||||
; mov bp,long_v_table ;show rows
|
||||
;.@@_next_bit:
|
||||
;clear cursor
|
||||
; mov ax,' '
|
||||
; mov word[ds:_r1+21],ax
|
||||
; mov word[ds:_r1+50],ax
|
||||
|
||||
; mov word[ds:_r2+21],ax
|
||||
; mov word[ds:_r2+45],ax
|
||||
|
||||
; mov word[ds:_rs+21],ax
|
||||
; mov word[ds:_rs+46],ax
|
||||
; draw string
|
||||
; cmp word [es:si+6],0x12
|
||||
; je .show_0x12
|
||||
; cmp word [es:si+6],0x13
|
||||
; je .show_0x13
|
||||
|
||||
; movzx eax,word[es:si]
|
||||
; cmp ax,-1
|
||||
; je .@@_end
|
||||
; mov di,_rs+23
|
||||
; mov ecx,10
|
||||
; mov bl,4
|
||||
; call int2str
|
||||
; movzx eax,word[es:si+2]
|
||||
; inc di
|
||||
; mov bl,4
|
||||
; call int2str
|
||||
|
||||
; movzx eax,word[es:si+8]
|
||||
; inc di
|
||||
; mov bl,2
|
||||
; call int2str
|
||||
|
||||
; cmp si, word [cursor_pos]
|
||||
; jne .next
|
||||
;draw cursor
|
||||
; mov word[ds:_rs+21],'>>'
|
||||
; mov word[ds:_rs+46],'<<'
|
||||
|
||||
|
||||
|
||||
;.next:
|
||||
; push si
|
||||
; mov si,_rs
|
||||
;.@@_sh:
|
||||
; add to the string pseudographics for scrollbar
|
||||
; pop bx
|
||||
; push bx
|
||||
; mov byte [si+53], ' '
|
||||
; cmp bx, [scroll_start]
|
||||
; jb @f
|
||||
; cmp bx, [scroll_end]
|
||||
; jae @f
|
||||
; mov byte [si+53], 0xDB ; filled bar
|
||||
;@@:
|
||||
; push bx
|
||||
; add bx, size_of_step
|
||||
; cmp bx, [end_cursor]
|
||||
; jnz @f
|
||||
; mov byte [si+53], 31 ; 'down arrow' symbol
|
||||
;@@:
|
||||
; sub bx, [home_cursor]
|
||||
; cmp bx, size_of_step*long_v_table
|
||||
; jnz @f
|
||||
; mov byte [si+53], 31 ; 'down arrow' symbol
|
||||
;@@:
|
||||
; pop bx
|
||||
; cmp bx, [home_cursor]
|
||||
; jnz @f
|
||||
; mov byte [si+53], 30 ; 'up arrow' symbol
|
||||
;@@:
|
||||
; call printplain
|
||||
; pop si
|
||||
; add si,size_of_step
|
||||
|
||||
; dec bp
|
||||
; jnz .@@_next_bit
|
||||
|
||||
;.@@_end:
|
||||
; mov si,_bt
|
||||
; call printplain
|
||||
ret
|
||||
;.show_0x13:
|
||||
; push si
|
||||
|
||||
; cmp si, word [cursor_pos]
|
||||
; jne @f
|
||||
; mov word[ds:_r1+21],'>>'
|
||||
; mov word[ds:_r1+50],'<<'
|
||||
;@@:
|
||||
; mov si,_r1
|
||||
; jmp .@@_sh
|
||||
;.show_0x12:
|
||||
; push si
|
||||
; cmp si, word [cursor_pos]
|
||||
; jne @f
|
||||
|
||||
; mov word[ds:_r2+21],'>>'
|
||||
; mov word[ds:_r2+45],'<<'
|
||||
;@@:
|
||||
; mov si,_r2
|
||||
; jmp .@@_sh
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
;Clear area of current video page (0xb800)
|
||||
clear_vmodes_table:
|
||||
pusha
|
||||
;clear_vmodes_table:
|
||||
; pusha
|
||||
; draw frames
|
||||
push es
|
||||
push 0xb800
|
||||
pop es
|
||||
mov di,1444
|
||||
xor ax,ax
|
||||
mov ah, 1*16+15
|
||||
mov cx,70
|
||||
mov bp,12
|
||||
.loop_start:
|
||||
rep stosw
|
||||
mov cx,70
|
||||
add di,20
|
||||
dec bp
|
||||
jns .loop_start
|
||||
pop es
|
||||
popa
|
||||
ret
|
||||
; push es
|
||||
; push 0xb800
|
||||
; pop es
|
||||
; mov di,1444
|
||||
; xor ax,ax
|
||||
; mov ah, 1*16+15
|
||||
; mov cx,70
|
||||
; mov bp,12
|
||||
;.loop_start:
|
||||
; rep stosw
|
||||
; mov cx,70
|
||||
; add di,20
|
||||
; dec bp
|
||||
; jns .loop_start
|
||||
; pop es
|
||||
; popa
|
||||
; ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user