Synced net branch with trunk (#3358)
git-svn-id: svn://kolibrios.org@3359 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -459,7 +459,9 @@ disk_dereference:
|
|||||||
stdcall disk_call_driver
|
stdcall disk_call_driver
|
||||||
; 3b. Free the structure.
|
; 3b. Free the structure.
|
||||||
xchg eax, esi
|
xchg eax, esi
|
||||||
|
push ebx
|
||||||
call free
|
call free
|
||||||
|
pop ebx
|
||||||
; 4. Return.
|
; 4. Return.
|
||||||
.nothing:
|
.nothing:
|
||||||
ret
|
ret
|
||||||
|
@@ -629,7 +629,9 @@ disk_sync:
|
|||||||
mov [hdd_appl_data], 0
|
mov [hdd_appl_data], 0
|
||||||
call write_cache
|
call write_cache
|
||||||
mov [hdd_appl_data], 1
|
mov [hdd_appl_data], 1
|
||||||
jmp write_cache
|
call write_cache
|
||||||
|
mov eax, [hd_error]
|
||||||
|
ret
|
||||||
@@:
|
@@:
|
||||||
; The algorithm is straightforward.
|
; The algorithm is straightforward.
|
||||||
push esi
|
push esi
|
||||||
|
@@ -340,7 +340,11 @@ hd_timeout_error:
|
|||||||
; call clear_application_table_status
|
; call clear_application_table_status
|
||||||
; mov esi,hd_timeout_str
|
; mov esi,hd_timeout_str
|
||||||
; call sys_msg_board_str
|
; call sys_msg_board_str
|
||||||
|
if lang eq sp
|
||||||
|
DEBUGF 1,"K : FS - HD tiempo de espera agotado\n"
|
||||||
|
else
|
||||||
DEBUGF 1,"K : FS - HD timeout\n"
|
DEBUGF 1,"K : FS - HD timeout\n"
|
||||||
|
end if
|
||||||
|
|
||||||
mov [hd_error], 1
|
mov [hd_error], 1
|
||||||
pop eax
|
pop eax
|
||||||
@@ -352,7 +356,11 @@ hd_read_error:
|
|||||||
; call clear_application_table_status
|
; call clear_application_table_status
|
||||||
; mov esi,hd_read_str
|
; mov esi,hd_read_str
|
||||||
; call sys_msg_board_str
|
; call sys_msg_board_str
|
||||||
|
if lang eq sp
|
||||||
|
DEBUGF 1,"K : FS - HD error de lectura\n"
|
||||||
|
else
|
||||||
DEBUGF 1,"K : FS - HD read error\n"
|
DEBUGF 1,"K : FS - HD read error\n"
|
||||||
|
end if
|
||||||
pop edx eax
|
pop edx eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -362,7 +370,11 @@ hd_write_error:
|
|||||||
; call clear_application_table_status
|
; call clear_application_table_status
|
||||||
; mov esi,hd_write_str
|
; mov esi,hd_write_str
|
||||||
; call sys_msg_board_str
|
; call sys_msg_board_str
|
||||||
|
if lang eq sp
|
||||||
|
DEBUGF 1,"K : FS - HD error de escritura\n"
|
||||||
|
else
|
||||||
DEBUGF 1,"K : FS - HD write error\n"
|
DEBUGF 1,"K : FS - HD write error\n"
|
||||||
|
end if
|
||||||
ret
|
ret
|
||||||
|
|
||||||
hd_write_error_dma:
|
hd_write_error_dma:
|
||||||
@@ -370,7 +382,11 @@ hd_write_error_dma:
|
|||||||
; call clear_application_table_status
|
; call clear_application_table_status
|
||||||
; mov esi, hd_write_str
|
; mov esi, hd_write_str
|
||||||
; call sys_msg_board_str
|
; call sys_msg_board_str
|
||||||
DEBUGF 1,"K : FS - HD read error\n"
|
if lang eq sp
|
||||||
|
DEBUGF 1,"K : FS - HD error de escritura\n"
|
||||||
|
else
|
||||||
|
DEBUGF 1,"K : FS - HD write error\n"
|
||||||
|
end if
|
||||||
pop esi
|
pop esi
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -379,7 +395,11 @@ hd_lba_error:
|
|||||||
; call clear_application_table_status
|
; call clear_application_table_status
|
||||||
; mov esi,hd_lba_str
|
; mov esi,hd_lba_str
|
||||||
; call sys_msg_board_str
|
; call sys_msg_board_str
|
||||||
|
if lang eq sp
|
||||||
|
DEBUGF 1,"K : FS - HD error en LBA\n"
|
||||||
|
else
|
||||||
DEBUGF 1,"K : FS - HD LBA error\n"
|
DEBUGF 1,"K : FS - HD LBA error\n"
|
||||||
|
end if
|
||||||
jmp LBA_read_ret
|
jmp LBA_read_ret
|
||||||
|
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ sysfn_saveramdisk: ; 18.6 = SAVE FLOPPY IMAGE (HD version only)
|
|||||||
mov ebx, saverd_fileinfo
|
mov ebx, saverd_fileinfo
|
||||||
mov [saverd_fileinfo.name], ecx
|
mov [saverd_fileinfo.name], ecx
|
||||||
pushad
|
pushad
|
||||||
call file_system_lfn ;in ebx
|
call file_system_lfn_protected ;in ebx
|
||||||
popad
|
popad
|
||||||
mov [esp+32], eax
|
mov [esp+32], eax
|
||||||
ret
|
ret
|
||||||
|
@@ -91,6 +91,7 @@ boot_read_floppy:
|
|||||||
inc si
|
inc si
|
||||||
cmp si, 10
|
cmp si, 10
|
||||||
jb @b
|
jb @b
|
||||||
|
sayerr_badsect:
|
||||||
mov si, badsect
|
mov si, badsect
|
||||||
sayerr_plain:
|
sayerr_plain:
|
||||||
call printplain
|
call printplain
|
||||||
@@ -145,8 +146,119 @@ FirstDataSector dw 0 ; begin of data
|
|||||||
;=========================================================================
|
;=========================================================================
|
||||||
|
|
||||||
include 'bootvesa.inc' ;Include source for boot vesa
|
include 'bootvesa.inc' ;Include source for boot vesa
|
||||||
|
if defined extended_primary_loader
|
||||||
|
include 'parsers.inc'
|
||||||
|
end if
|
||||||
|
|
||||||
start_of_code:
|
start_of_code:
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
; save data from primary loader
|
||||||
|
mov word [cs:bootcallback], si
|
||||||
|
mov word [cs:bootcallback+2], ds
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov [bootdevice], ax
|
||||||
|
mov [bootfs], bx
|
||||||
|
|
||||||
|
; set up stack
|
||||||
|
mov ax, 3000h
|
||||||
|
mov ss, ax
|
||||||
|
mov sp, 0EC00h
|
||||||
|
|
||||||
|
; try to load configuration file
|
||||||
|
mov ax, 1
|
||||||
|
mov di, config_file_struct
|
||||||
|
call [bootcallback]
|
||||||
|
cld
|
||||||
|
push cs
|
||||||
|
pop es
|
||||||
|
; bx=0 - ok, bx=1 - part of file loaded, assume this is ok
|
||||||
|
cmp bx, 1
|
||||||
|
ja .config_bad
|
||||||
|
; configuration file was loaded, parse
|
||||||
|
; if length is too big, use first 0FFFFh bytes
|
||||||
|
test dx, dx
|
||||||
|
jz @f
|
||||||
|
mov ax, 0FFFFh
|
||||||
|
@@:
|
||||||
|
; ds:si will be pointer to current data, dx = limit
|
||||||
|
xchg ax, dx
|
||||||
|
push 4000h
|
||||||
|
pop ds
|
||||||
|
xor si, si
|
||||||
|
.parse_loop:
|
||||||
|
; skip spaces
|
||||||
|
cmp si, dx
|
||||||
|
jae .parse_done
|
||||||
|
lodsb
|
||||||
|
cmp al, ' '
|
||||||
|
jbe .parse_loop
|
||||||
|
dec si
|
||||||
|
; loop over all possible configuration values
|
||||||
|
mov bx, config_file_variables
|
||||||
|
.find_variant:
|
||||||
|
; get length
|
||||||
|
mov cx, [es:bx]
|
||||||
|
; zero length = end of list
|
||||||
|
jecxz .find_newline
|
||||||
|
; skip over length
|
||||||
|
inc bx
|
||||||
|
inc bx
|
||||||
|
mov di, bx
|
||||||
|
; skip over string
|
||||||
|
add bx, cx
|
||||||
|
; test whether we have at least cx symbols left
|
||||||
|
mov ax, cx
|
||||||
|
add ax, si
|
||||||
|
jc .next_variant1
|
||||||
|
cmp ax, dx
|
||||||
|
jae .next_variant1
|
||||||
|
; save current position
|
||||||
|
push si
|
||||||
|
; compare strings
|
||||||
|
repz cmpsb
|
||||||
|
jnz .next_variant2
|
||||||
|
; strings are equal; look for "=" with possible spaces before and after
|
||||||
|
@@:
|
||||||
|
cmp si, dx
|
||||||
|
jae .next_variant2
|
||||||
|
lodsb
|
||||||
|
cmp al, ' '
|
||||||
|
jbe @b
|
||||||
|
cmp al, '='
|
||||||
|
jnz .next_variant2
|
||||||
|
; ok, we found the true variant
|
||||||
|
; ignore saved position on the stack
|
||||||
|
pop ax
|
||||||
|
; call the parser
|
||||||
|
call word [es:bx]
|
||||||
|
; line parsed, find next
|
||||||
|
.find_newline:
|
||||||
|
cmp si, dx
|
||||||
|
jae .parse_done
|
||||||
|
lodsb
|
||||||
|
cmp al, 13
|
||||||
|
jz .parse_loop
|
||||||
|
cmp al, 10
|
||||||
|
jz .parse_loop
|
||||||
|
jmp .find_newline
|
||||||
|
.next_variant2:
|
||||||
|
; continue to the next variant, restoring current position
|
||||||
|
pop si
|
||||||
|
.next_variant1:
|
||||||
|
; continue to the next variant
|
||||||
|
; skip over the parser
|
||||||
|
inc bx
|
||||||
|
inc bx
|
||||||
|
jmp .find_variant
|
||||||
|
.parse_done:
|
||||||
|
.config_bad:
|
||||||
|
|
||||||
|
; set up segment registers
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
else
|
||||||
cld
|
cld
|
||||||
; \begin{diamond}[02.12.2005]
|
; \begin{diamond}[02.12.2005]
|
||||||
; if bootloader sets ax = 'KL', then ds:si points to loader block
|
; if bootloader sets ax = 'KL', then ds:si points to loader block
|
||||||
@@ -175,6 +287,7 @@ no_hd_load:
|
|||||||
pop ds
|
pop ds
|
||||||
push cs
|
push cs
|
||||||
pop es
|
pop es
|
||||||
|
end if
|
||||||
|
|
||||||
; set videomode
|
; set videomode
|
||||||
mov ax, 3
|
mov ax, 3
|
||||||
@@ -378,6 +491,7 @@ wait_loop: ; variant 2
|
|||||||
apm_end:
|
apm_end:
|
||||||
_setcursor d80x25_top_num, 0
|
_setcursor d80x25_top_num, 0
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
;CHECK current of code
|
;CHECK current of code
|
||||||
cmp [cfgmanager.loader_block], -1
|
cmp [cfgmanager.loader_block], -1
|
||||||
jz noloaderblock
|
jz noloaderblock
|
||||||
@@ -387,6 +501,7 @@ apm_end:
|
|||||||
jnz sayerr
|
jnz sayerr
|
||||||
push 0
|
push 0
|
||||||
pop es
|
pop es
|
||||||
|
end if
|
||||||
|
|
||||||
noloaderblock:
|
noloaderblock:
|
||||||
; DISPLAY VESA INFORMATION
|
; DISPLAY VESA INFORMATION
|
||||||
@@ -404,7 +519,9 @@ cfgmanager:
|
|||||||
; d) preboot_device = from what boot?
|
; d) preboot_device = from what boot?
|
||||||
|
|
||||||
; determine default settings
|
; determine default settings
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
mov [.bSettingsChanged], 0
|
mov [.bSettingsChanged], 0
|
||||||
|
end if
|
||||||
|
|
||||||
;.preboot_gr_end:
|
;.preboot_gr_end:
|
||||||
mov di, preboot_device
|
mov di, preboot_device
|
||||||
@@ -412,6 +529,12 @@ cfgmanager:
|
|||||||
; set it to use this preloaded image
|
; set it to use this preloaded image
|
||||||
cmp byte [di], 0
|
cmp byte [di], 0
|
||||||
jnz .preboot_device_inited
|
jnz .preboot_device_inited
|
||||||
|
if defined extended_primary_loader
|
||||||
|
inc byte [di]
|
||||||
|
cmp byte [bootdevice], 'f' ; floppy?
|
||||||
|
jz .preboot_device_inited
|
||||||
|
inc byte [di]
|
||||||
|
else
|
||||||
cmp [.loader_block], -1
|
cmp [.loader_block], -1
|
||||||
jz @f
|
jz @f
|
||||||
les bx, [.loader_block]
|
les bx, [.loader_block]
|
||||||
@@ -422,17 +545,18 @@ cfgmanager:
|
|||||||
@@:
|
@@:
|
||||||
; otherwise, set [preboot_device] to 1 (default value - boot from floppy)
|
; otherwise, set [preboot_device] to 1 (default value - boot from floppy)
|
||||||
mov byte [di], 1
|
mov byte [di], 1
|
||||||
|
end if
|
||||||
.preboot_device_inited:
|
.preboot_device_inited:
|
||||||
; following 4 lines set variables to 1 if its current value is 0
|
; following 4 lines set variables to 1 if its current value is 0
|
||||||
cmp byte [di+preboot_dma-preboot_device], 1
|
cmp byte [di+preboot_dma-preboot_device], 1
|
||||||
adc byte [di+preboot_dma-preboot_device], 0
|
adc byte [di+preboot_dma-preboot_device], 0
|
||||||
cmp byte [di+preboot_biosdisk-preboot_device], 1
|
cmp byte [di+preboot_biosdisk-preboot_device], 1
|
||||||
adc byte [di+preboot_biosdisk-preboot_device], 0
|
adc byte [di+preboot_biosdisk-preboot_device], 0
|
||||||
; default value for VRR is OFF
|
;; default value for VRR is OFF
|
||||||
cmp byte [di+preboot_vrrm-preboot_device], 0
|
; cmp byte [di+preboot_vrrm-preboot_device], 0
|
||||||
jnz @f
|
; jnz @f
|
||||||
mov byte [di+preboot_vrrm-preboot_device], 2
|
; mov byte [di+preboot_vrrm-preboot_device], 2
|
||||||
@@:
|
;@@:
|
||||||
; notify user
|
; notify user
|
||||||
_setcursor 5,2
|
_setcursor 5,2
|
||||||
|
|
||||||
@@ -460,13 +584,17 @@ cfgmanager:
|
|||||||
mov si, usebd_msg
|
mov si, usebd_msg
|
||||||
cmp [preboot_biosdisk], 1
|
cmp [preboot_biosdisk], 1
|
||||||
call .say_on_off
|
call .say_on_off
|
||||||
mov si, vrrm_msg
|
; mov si, vrrm_msg
|
||||||
cmp [preboot_vrrm], 1
|
; cmp [preboot_vrrm], 1
|
||||||
call .say_on_off
|
; call .say_on_off
|
||||||
mov si, preboot_device_msg
|
mov si, preboot_device_msg
|
||||||
call print
|
call print
|
||||||
mov al, [preboot_device]
|
mov al, [preboot_device]
|
||||||
|
if defined extended_primary_loader
|
||||||
|
and eax, 3
|
||||||
|
else
|
||||||
and eax, 7
|
and eax, 7
|
||||||
|
end if
|
||||||
mov si, [preboot_device_msgs+eax*2]
|
mov si, [preboot_device_msgs+eax*2]
|
||||||
call printplain
|
call printplain
|
||||||
.show_remarks:
|
.show_remarks:
|
||||||
@@ -546,19 +674,25 @@ cfgmanager:
|
|||||||
jz .change_a
|
jz .change_a
|
||||||
cmp al, 'b'
|
cmp al, 'b'
|
||||||
jz .change_b
|
jz .change_b
|
||||||
cmp al, 'c'
|
; cmp al, 'c'
|
||||||
jz .change_c
|
; jz .change_c
|
||||||
cmp al, 'd'
|
cmp al, 'c' ; 'd'
|
||||||
jnz .show_remarks
|
jnz .show_remarks
|
||||||
_setcursor 15,0
|
_setcursor 15,0
|
||||||
mov si, bdev
|
mov si, bdev
|
||||||
call print
|
call print
|
||||||
|
if defined extended_primary_loader
|
||||||
|
mov bx, '12'
|
||||||
|
else
|
||||||
mov bx, '14'
|
mov bx, '14'
|
||||||
|
end if
|
||||||
call getkey
|
call getkey
|
||||||
mov [preboot_device], al
|
mov [preboot_device], al
|
||||||
_setcursor 13,0
|
_setcursor 13,0
|
||||||
.d:
|
.d:
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
mov [.bSettingsChanged], 1
|
mov [.bSettingsChanged], 1
|
||||||
|
end if
|
||||||
call clear_vmodes_table ;clear vmodes_table
|
call clear_vmodes_table ;clear vmodes_table
|
||||||
jmp .printcfg
|
jmp .printcfg
|
||||||
.change_a:
|
.change_a:
|
||||||
@@ -578,14 +712,16 @@ cfgmanager:
|
|||||||
sub word [cursor_pos], size_of_step
|
sub word [cursor_pos], size_of_step
|
||||||
jmp .loops
|
jmp .loops
|
||||||
|
|
||||||
.down: cmp ah,0x50;x,0x50E0 ; down
|
.down:
|
||||||
|
cmp ah, 0x50;x,0x50E0 ; down
|
||||||
jne .pgup
|
jne .pgup
|
||||||
cmp word[es:si+10], -1
|
cmp word[es:si+10], -1
|
||||||
je .loops
|
je .loops
|
||||||
add word [cursor_pos], size_of_step
|
add word [cursor_pos], size_of_step
|
||||||
jmp .loops
|
jmp .loops
|
||||||
|
|
||||||
.pgup: cmp ah,0x49 ; page up
|
.pgup:
|
||||||
|
cmp ah, 0x49 ; page up
|
||||||
jne .pgdn
|
jne .pgdn
|
||||||
sub si, size_of_step*long_v_table
|
sub si, size_of_step*long_v_table
|
||||||
cmp si, modes_table
|
cmp si, modes_table
|
||||||
@@ -602,7 +738,8 @@ cfgmanager:
|
|||||||
mov word [home_cursor], si
|
mov word [home_cursor], si
|
||||||
jmp .loops
|
jmp .loops
|
||||||
|
|
||||||
.pgdn: cmp ah,0x51 ; page down
|
.pgdn:
|
||||||
|
cmp ah, 0x51 ; page down
|
||||||
jne .enter
|
jne .enter
|
||||||
mov ax, [end_cursor]
|
mov ax, [end_cursor]
|
||||||
add si, size_of_step*long_v_table
|
add si, size_of_step*long_v_table
|
||||||
@@ -622,7 +759,8 @@ cfgmanager:
|
|||||||
mov word [home_cursor], si
|
mov word [home_cursor], si
|
||||||
jmp .loops
|
jmp .loops
|
||||||
|
|
||||||
.enter: cmp al,0x0D;x,0x1C0D ; enter
|
.enter:
|
||||||
|
cmp al, 0x0D;x,0x1C0D ; enter
|
||||||
jne .loops
|
jne .loops
|
||||||
push word [cursor_pos]
|
push word [cursor_pos]
|
||||||
pop bp
|
pop bp
|
||||||
@@ -650,15 +788,15 @@ cfgmanager:
|
|||||||
mov [preboot_biosdisk], al
|
mov [preboot_biosdisk], al
|
||||||
_setcursor 11,0
|
_setcursor 11,0
|
||||||
jmp .d
|
jmp .d
|
||||||
.change_c:
|
;.change_c:
|
||||||
_setcursor 15,0
|
; _setcursor 15,0
|
||||||
mov si, vrrmprint
|
; mov si, vrrmprint
|
||||||
call print
|
; call print
|
||||||
mov bx, '12'
|
; mov bx, '12'
|
||||||
call getkey
|
; call getkey
|
||||||
mov [preboot_vrrm], al
|
; mov [preboot_vrrm], al
|
||||||
_setcursor 12,0
|
; _setcursor 12,0
|
||||||
jmp .d
|
; jmp .d
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
.say_on_off:
|
.say_on_off:
|
||||||
pushf
|
pushf
|
||||||
@@ -667,15 +805,20 @@ cfgmanager:
|
|||||||
popf
|
popf
|
||||||
jz @f
|
jz @f
|
||||||
mov si, off_msg
|
mov si, off_msg
|
||||||
@@: jmp printplain
|
@@:
|
||||||
|
jmp printplain
|
||||||
; novesa and vervesa strings are not used at the moment of executing this code
|
; novesa and vervesa strings are not used at the moment of executing this code
|
||||||
virtual at novesa
|
virtual at novesa
|
||||||
.oldtimer dd ?
|
.oldtimer dd ?
|
||||||
.starttime dd ?
|
.starttime dd ?
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
.bSettingsChanged db ?
|
.bSettingsChanged db ?
|
||||||
|
end if
|
||||||
.timer dd ?
|
.timer dd ?
|
||||||
end virtual
|
end virtual
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
.loader_block dd -1
|
.loader_block dd -1
|
||||||
|
end if
|
||||||
.gettime:
|
.gettime:
|
||||||
mov ah, 0
|
mov ah, 0
|
||||||
int 1Ah
|
int 1Ah
|
||||||
@@ -692,7 +835,11 @@ end virtual
|
|||||||
pushad
|
pushad
|
||||||
call .gettime
|
call .gettime
|
||||||
sub eax, [.starttime]
|
sub eax, [.starttime]
|
||||||
|
if defined extended_primary_loader
|
||||||
|
sub ax, [preboot_timeout]
|
||||||
|
else
|
||||||
sub ax, 18*5
|
sub ax, 18*5
|
||||||
|
end if
|
||||||
jae .timergo
|
jae .timergo
|
||||||
neg ax
|
neg ax
|
||||||
add ax, 18-1
|
add ax, 18-1
|
||||||
@@ -708,20 +855,30 @@ if lang eq ru
|
|||||||
mov cl, '<27>'
|
mov cl, '<27>'
|
||||||
jz @f
|
jz @f
|
||||||
mov cl, '<27>'
|
mov cl, '<27>'
|
||||||
@@: mov [time_str+9], cl
|
@@:
|
||||||
|
mov [time_str+9], cl
|
||||||
else if lang eq et
|
else if lang eq et
|
||||||
cmp al, 1
|
cmp al, 1
|
||||||
ja @f
|
ja @f
|
||||||
mov [time_str+9], ' '
|
mov [time_str+9], ' '
|
||||||
mov [time_str+10], ' '
|
mov [time_str+10], ' '
|
||||||
@@:
|
@@:
|
||||||
|
else if lang eq sp
|
||||||
|
; esperar 5/4/3/2 segundos, 1 segundo
|
||||||
|
cmp al, 1
|
||||||
|
mov cl, 's'
|
||||||
|
ja @f
|
||||||
|
mov cl, ' '
|
||||||
|
@@:
|
||||||
|
mov [time_str+10], cl
|
||||||
else
|
else
|
||||||
; wait 5/4/3/2 seconds, 1 second
|
; wait 5/4/3/2 seconds, 1 second
|
||||||
cmp al, 1
|
cmp al, 1
|
||||||
mov cl, 's'
|
mov cl, 's'
|
||||||
ja @f
|
ja @f
|
||||||
mov cl, ' '
|
mov cl, ' '
|
||||||
@@: mov [time_str+9], cl
|
@@:
|
||||||
|
mov [time_str+9], cl
|
||||||
end if
|
end if
|
||||||
add al, '0'
|
add al, '0'
|
||||||
mov [time_str+1], al
|
mov [time_str+1], al
|
||||||
@@ -748,6 +905,7 @@ end if
|
|||||||
mov si, loading_msg
|
mov si, loading_msg
|
||||||
call print
|
call print
|
||||||
_setcursor 15,0
|
_setcursor 15,0
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
cmp [.bSettingsChanged], 0
|
cmp [.bSettingsChanged], 0
|
||||||
jz .load
|
jz .load
|
||||||
cmp [.loader_block], -1
|
cmp [.loader_block], -1
|
||||||
@@ -788,6 +946,7 @@ end if
|
|||||||
call printplain
|
call printplain
|
||||||
_setcursor 15,0
|
_setcursor 15,0
|
||||||
.load:
|
.load:
|
||||||
|
end if
|
||||||
; \end{diamond}[02.12.2005]
|
; \end{diamond}[02.12.2005]
|
||||||
|
|
||||||
; ASK GRAPHICS MODE
|
; ASK GRAPHICS MODE
|
||||||
@@ -796,18 +955,17 @@ end if
|
|||||||
|
|
||||||
; GRAPHICS ACCELERATION
|
; GRAPHICS ACCELERATION
|
||||||
; force yes
|
; force yes
|
||||||
mov [es:0x901C], byte 1
|
mov [es:BOOT_MTRR], byte 1
|
||||||
|
|
||||||
; DMA ACCESS TO HD
|
; DMA ACCESS TO HD
|
||||||
|
|
||||||
mov al, [preboot_dma]
|
mov al, [preboot_dma]
|
||||||
mov [es:0x901F], al
|
mov [es:BOOT_DMA], al
|
||||||
|
|
||||||
; VRR_M USE
|
;; VRR_M USE
|
||||||
|
;
|
||||||
mov al,[preboot_vrrm]
|
; mov al,[preboot_vrrm]
|
||||||
mov [es:0x9030], al
|
; mov [es:0x9030], al
|
||||||
mov [es:0x901E], byte 1
|
|
||||||
|
|
||||||
; BOOT DEVICE
|
; BOOT DEVICE
|
||||||
|
|
||||||
@@ -967,6 +1125,7 @@ sayerr_floppy:
|
|||||||
mov dx, 0x3f2
|
mov dx, 0x3f2
|
||||||
mov al, 0
|
mov al, 0
|
||||||
out dx, al
|
out dx, al
|
||||||
|
sayerr_memmove:
|
||||||
mov si, memmovefailed
|
mov si, memmovefailed
|
||||||
jmp sayerr_plain
|
jmp sayerr_plain
|
||||||
@@:
|
@@:
|
||||||
@@ -1145,6 +1304,40 @@ no_sys_on_floppy:
|
|||||||
mov al, 0
|
mov al, 0
|
||||||
out dx, al
|
out dx, al
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
cmp [boot_dev], 1
|
||||||
|
jne no_sys_from_primary
|
||||||
|
; load kolibri.img using callback from primary loader
|
||||||
|
and word [movedesc + 24 + 2], 0
|
||||||
|
mov byte [movedesc + 24 + 4], 10h
|
||||||
|
; read in blocks of 64K until file is fully loaded
|
||||||
|
mov ax, 1
|
||||||
|
.repeat:
|
||||||
|
mov di, image_file_struct
|
||||||
|
call [bootcallback]
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
push cs
|
||||||
|
pop es
|
||||||
|
cmp bx, 1
|
||||||
|
ja sayerr_badsect
|
||||||
|
push bx
|
||||||
|
mov si, movedesc
|
||||||
|
and word [si + 16 + 2], 0
|
||||||
|
mov byte [si + 16 + 4], 4
|
||||||
|
mov ah, 87h
|
||||||
|
mov cx, 8000h
|
||||||
|
int 15h
|
||||||
|
pop bx
|
||||||
|
test ah, ah
|
||||||
|
jnz sayerr_memmove
|
||||||
|
inc byte [si + 24 + 4]
|
||||||
|
test bx, bx
|
||||||
|
jz no_sys_from_primary
|
||||||
|
mov ax, 2
|
||||||
|
jmp .repeat
|
||||||
|
no_sys_from_primary:
|
||||||
|
end if
|
||||||
|
|
||||||
; SET GRAPHICS
|
; SET GRAPHICS
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
;
|
;
|
||||||
;======================================================================
|
;======================================================================
|
||||||
|
|
||||||
$Revision $
|
$Revision: 2455 $
|
||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
d80x25_bottom:
|
||||||
@@ -23,39 +23,27 @@ d80x25_bottom:
|
|||||||
d80x25_bottom_num = 3
|
d80x25_bottom_num = 3
|
||||||
|
|
||||||
msg_apm db " APM x.x ", 0
|
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: "
|
s_vesa db "Version of VESA: "
|
||||||
.ver db "?.?",13,10,0
|
.ver db "?.?",13,10,0
|
||||||
|
|
||||||
gr_mode db "Select a videomode: ",13,10,0
|
gr_mode db "Select a videomode: ",13,10,0
|
||||||
;s_bpp db 13,10,186," ƒ«ã¡¨ 梥â : "
|
|
||||||
; .bpp dw "??"
|
|
||||||
; db 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
|
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
bdev db "Load ramdisk from [1-floppy; 2-kolibri.img]: ",0
|
||||||
|
else
|
||||||
bdev db "Load ramdisk from [1-floppy; 2-C:\kolibri.img (FAT32);"
|
bdev db "Load ramdisk from [1-floppy; 2-C:\kolibri.img (FAT32);"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "3-use preloaded ram-image from kernel restart;"
|
db "3-use preloaded ram-image from kernel restart;"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "4-create blank image]: ",0
|
db "4-create blank image]: ",0
|
||||||
probetext db 13,10,13,10,186," Use standart graphics mode? [1-yes, "
|
end if
|
||||||
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
|
prnotfnd db "Fatal - Videomode not found.",0
|
||||||
;modena db "Fatal - VBE 0x112+ required.",0
|
|
||||||
not386 db "Fatal - CPU 386+ 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
|
fatalsel db "Fatal - Graphics mode not supported by hardware.",0
|
||||||
pres_key db "Press any key to choose a new videomode.",0
|
pres_key db "Press any key to choose a new videomode.",0
|
||||||
badsect db 13,10,186," Fatal - Bad sector. Replace floppy.",0
|
badsect db 13,10,186," Fatal - Bad sector. Replace floppy.",0
|
||||||
@@ -73,29 +61,33 @@ time_str db " 5 seconds"
|
|||||||
current_cfg_msg db "Current settings:",13,10,0
|
current_cfg_msg db "Current settings:",13,10,0
|
||||||
curvideo_msg db " [a] Videomode: ",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
|
mode0 db "320x200, EGA/CGA 256 colors",13,10,0
|
||||||
mode9 db "640x480, VGA 16 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
|
usebd_msg db " [b] Add disks visible by BIOS:",0
|
||||||
on_msg db " on",13,10,0
|
on_msg db " on",13,10,0
|
||||||
off_msg db " off",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 " [c] Floppy image: ",0
|
||||||
preboot_device_msg db " [d] Floppy image: ",0
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
preboot_device_msgs dw 0,pdm1,pdm2,0
|
||||||
|
pdm1 db "real floppy",13,10,0
|
||||||
|
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
||||||
|
else
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
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
|
||||||
pdm4 db "create blank image",13,10,0
|
pdm4 db "create blank image",13,10,0
|
||||||
|
end if
|
||||||
|
|
||||||
loading_msg db "Loading KolibriOS...",0
|
loading_msg db "Loading KolibriOS...",0
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
save_quest db "Remember current settings? [y/n]: ",0
|
save_quest db "Remember current settings? [y/n]: ",0
|
||||||
loader_block_error db "Bootloader data invalid, I cannot continue. Stopped.",0
|
loader_block_error db "Bootloader data invalid, I cannot continue. Stopped.",0
|
||||||
|
end if
|
||||||
|
|
||||||
_st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿',13,10,0
|
_st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿',13,10,0
|
||||||
_r1 db 186,' ³ 320x200 EGA/CGA 256 colors ³ ³',13,10,0
|
_r1 db 186,' ³ 320x200 EGA/CGA 256 colors ³ ³',13,10,0
|
||||||
@@ -104,7 +96,6 @@ _rs db 186,'
|
|||||||
_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ',13,10,0
|
_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ',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 you have CRT-monitor, enable VRR in the item [c].",0
|
remark2 db "If the system does not boot, try to disable the item [b].",0
|
||||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
remarks dw remark1, remark2
|
||||||
remarks dw remark1, remark2, remark3
|
num_remarks = 2
|
||||||
num_remarks = 3
|
|
@@ -15,58 +15,37 @@ $Revision$
|
|||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
d80x25_bottom:
|
||||||
db 186,' KolibriOS based on MenuetOS and comes with ABSOLUTELY '
|
db 186,' KolibriOS pohineb MenuetOS ja kaasas IGASUGUSE GARANTI'
|
||||||
db 'NO WARRANTY ',186
|
db 'ITA ',186
|
||||||
db 186,' See file COPYING for details '
|
db 186,' Naha faili COPYING detailid '
|
||||||
db ' ',186
|
db ' ',186
|
||||||
line_full_bottom
|
line_full_bottom
|
||||||
d80x25_bottom_num = 3
|
d80x25_bottom_num = 3
|
||||||
|
|
||||||
novesa db "Ekraan: EGA/CGA",13,10,0
|
|
||||||
vervesa db "Vesa versioon: Vesa x.x",13,10,0
|
|
||||||
vervesa_off=20
|
|
||||||
msg_apm db " APM x.x ", 0
|
msg_apm db " APM x.x ", 0
|
||||||
gr_mode db 186," Vesa 2.0+ 16 M LFB: [1] 640x480, [2] 800x600, "
|
novesa db "Ekraan: EGA/CGA",13,10,0
|
||||||
db "[3] 1024x768, [4] 1280x1024",13,10
|
s_vesa db "Vesa versioon: "
|
||||||
db 186," Vesa 1.2 16 M Bnk: [5] 640x480, [6] 800x600, "
|
.ver db "?.?",13,10,0
|
||||||
db "[7] 1024x768, [8] 1280x1024",13,10
|
|
||||||
db 186," EGA/CGA 256 v<>rvi: [9] 320x200, "
|
gr_mode db "Vali videomode: ",13,10,0
|
||||||
db "VGA 16 v<>rvi: [0] 640x480",13,10
|
|
||||||
db 186," Vali reziim: ",0
|
ask_bd db "Lisa kettad nahtavaks BIOS reziim V86? [1-jah, 2-no]: ",0
|
||||||
bt24 db "Bitti pikseli kohta: 24",13,10,0
|
|
||||||
bt32 db "Bitti pikseli kohta: 32",13,10,0
|
if defined extended_primary_loader
|
||||||
vrrmprint db "Kinnita VRR? (ekraani sagedus suurem kui 60Hz"
|
bdev db "Paigalda m<>luketas [1-diskett; 2-kolibri.img]: ",0
|
||||||
db " ainult:",13,10
|
else
|
||||||
db 186," 1024*768->800*600 ja 800*600->640*480) [1-jah,2-ei]:",0
|
|
||||||
;askmouse db " Hiir:"
|
|
||||||
; db " [1] PS/2 (USB), [2] Com1, [3] Com2."
|
|
||||||
; db " Vali port [1-3]: ",0
|
|
||||||
;no_com1 db 13,10,186, " No COM1 mouse",0
|
|
||||||
;no_com2 db 13,10,186, " No COM2 mouse",0
|
|
||||||
;ask_dma db "Use DMA for HDD access? [1-yes, 2-only for reading, 3-no]: ",0
|
|
||||||
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
|
||||||
;gr_direct db 186," Use direct LFB writing? "
|
|
||||||
; db "[1-yes/2-no] ? ",0
|
|
||||||
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
|
||||||
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
|
|
||||||
;bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
|
|
||||||
bdev db "Paigalda m<>luketas [1-diskett; 2-C:\kolibri.img (FAT32);"
|
bdev db "Paigalda m<>luketas [1-diskett; 2-C:\kolibri.img (FAT32);"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "3-kasuta eellaaditud m<>luketast kerneli restardist;"
|
db "3-kasuta eellaaditud m<>luketast kerneli restardist;"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "4-loo t<>hi pilt]: ",0
|
db "4-loo t<>hi pilt]: ",0
|
||||||
probetext db 13,10,13,10,186," Kasuta standartset graafika reziimi? [1-jah, "
|
end if
|
||||||
db "2-leia biosist (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 "Fataalne - Videoreziimi ei leitud.",0
|
prnotfnd db "Fataalne - Videoreziimi ei leitud.",0
|
||||||
;modena db "Fataalne - VBE 0x112+ on vajalik.",0
|
|
||||||
not386 db "Fataalne - CPU 386+ on vajalik.",0
|
not386 db "Fataalne - CPU 386+ on vajalik.",0
|
||||||
btns db "Fataalne - Ei suuda v<>rvis<69>gavust m<><6D>ratleda.",0
|
|
||||||
fatalsel db "Fataalne - Graafilist reziimi riistvara ei toeta.",0
|
fatalsel db "Fataalne - Graafilist reziimi riistvara ei toeta.",0
|
||||||
|
pres_key db "Vajutage suvalist klahvi, et valida uus videomode.",0
|
||||||
badsect db 13,10,186," Fataalne - Vigane sektor. Asenda diskett.",0
|
badsect db 13,10,186," Fataalne - Vigane sektor. Asenda diskett.",0
|
||||||
memmovefailed db 13,10,186," Fataalne - Int 0x15 liigutamine eba<62>nnestus.",0
|
memmovefailed db 13,10,186," Fataalne - Int 0x15 liigutamine eba<62>nnestus.",0
|
||||||
okt db " ... OK"
|
okt db " ... OK"
|
||||||
@@ -81,35 +60,42 @@ time_str db " 5 sekundit"
|
|||||||
db " automaatseks j<>tkamiseks",13,10,0
|
db " automaatseks j<>tkamiseks",13,10,0
|
||||||
current_cfg_msg db "Praegused seaded:",13,10,0
|
current_cfg_msg db "Praegused seaded:",13,10,0
|
||||||
curvideo_msg db " [a] Videoreziim: ",0
|
curvideo_msg db " [a] Videoreziim: ",0
|
||||||
mode1 db "640x480",0
|
|
||||||
mode2 db "800x600",0
|
mode0 db "320x200, EGA/CGA 256 v<>rvi",0
|
||||||
mode3 db "1024x768",0
|
mode9 db "640x480, VGA 16 v<>rvi",0
|
||||||
mode4 db "1280x1024",0
|
|
||||||
modes_msg dw mode4,mode1,mode2,mode3
|
usebd_msg db " [b] Lisa kettad nahtavaks BIOS:",0
|
||||||
modevesa20 db " koos LFB",0
|
|
||||||
modevesa12 db ", VESA 1.2 Bnk",0
|
|
||||||
mode9 db "320x200, EGA/CGA 256 v<>rvi",0
|
|
||||||
mode10 db "640x480, VGA 16 v<>rvi",0
|
|
||||||
probeno_msg db " (standard reziim)",0
|
|
||||||
probeok_msg db " (kontrolli ebastandardseid reziime)",0
|
|
||||||
;dma_msg db " [b] Kasuta DMA'd HDD juurdep<65><70>suks:",0
|
|
||||||
usebd_msg db " [b] Add disks visible by BIOS:",0
|
|
||||||
on_msg db " sees",13,10,0
|
on_msg db " sees",13,10,0
|
||||||
off_msg db " v<>ljas",13,10,0
|
off_msg db " v<>ljas",13,10,0
|
||||||
;readonly_msg db " ainult lugemiseks",13,10,0
|
|
||||||
vrrm_msg db " [c] Kasuta VRR:",0
|
preboot_device_msg db " [c] Disketi kujutis: ",0
|
||||||
preboot_device_msg db " [d] Disketi kujutis: ",0
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
preboot_device_msgs dw 0,pdm1,pdm2,0
|
||||||
|
pdm1 db "reaalne diskett",13,10,0
|
||||||
|
pdm2 db "kolibri.img",13,10,0
|
||||||
|
else
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
pdm1 db "reaalne diskett",13,10,0
|
pdm1 db "reaalne diskett",13,10,0
|
||||||
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
||||||
pdm3 db "kasuta juba laaditud kujutist",13,10,0
|
pdm3 db "kasuta juba laaditud kujutist",13,10,0
|
||||||
pdm4 db "loo t<>hi pilt",13,10,0
|
pdm4 db "loo t<>hi pilt",13,10,0
|
||||||
|
end if
|
||||||
|
|
||||||
loading_msg db "Laadin KolibriOS...",0
|
loading_msg db "Laadin KolibriOS...",0
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
save_quest db "J<EFBFBD>ta meelde praegused seaded? [y/n]: ",0
|
save_quest db "J<EFBFBD>ta meelde praegused seaded? [y/n]: ",0
|
||||||
loader_block_error db "Alglaaduri andmed vigased, ei saa j<>tkata. Peatatud.",0
|
loader_block_error db "Alglaaduri andmed vigased, ei saa j<>tkata. Peatatud.",0
|
||||||
|
end if
|
||||||
|
|
||||||
remark1 db "Default values were selected to match most of configurations, but not all.",0
|
_st db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ',13,10,0
|
||||||
remark2 db "If you have CRT-monitor, enable VRR in the item [c].",0
|
_r1 db 186,' <20> 320x200 EGA/CGA 256 colors <20> <20>',13,10,0
|
||||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
_r2 db 186,' <20> 640x480 VGA 16 colors <20> <20>',13,10,0
|
||||||
remarks dw remark1, remark2, remark3
|
_rs db 186,' <20> ????x????@?? SVGA VESA <20> <20>',13,10,0
|
||||||
num_remarks = 3
|
_bt db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',13,10,0
|
||||||
|
|
||||||
|
remark1 db "Vaikimisi maaratud vaartused on valitud mugavuse enamikes, kuid mitte koik.",0
|
||||||
|
remark2 db "Kui susteem ei kaivitu, proovige lulitada kirje [b].",0
|
||||||
|
remarks dw remark1, remark2
|
||||||
|
num_remarks = 2
|
||||||
|
@@ -15,11 +15,6 @@ $Revision$
|
|||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
d80x25_bottom:
|
||||||
; db 186,' KolibriOS based on MenuetOS and comes with ABSOLUTELY '
|
|
||||||
; db 'NO WARRANTY ',186
|
|
||||||
; db 186,' See file COPYING for details '
|
|
||||||
; db ' ',186
|
|
||||||
|
|
||||||
db 186,' KolibriOS basiert auf MenuetOS und wird ohne jegliche '
|
db 186,' KolibriOS basiert auf MenuetOS und wird ohne jegliche '
|
||||||
db ' Garantie vertrieben ',186
|
db ' Garantie vertrieben ',186
|
||||||
db 186,' Details stehen in der Datei COPYING '
|
db 186,' Details stehen in der Datei COPYING '
|
||||||
@@ -27,51 +22,30 @@ d80x25_bottom:
|
|||||||
line_full_bottom
|
line_full_bottom
|
||||||
d80x25_bottom_num = 3
|
d80x25_bottom_num = 3
|
||||||
|
|
||||||
novesa db "Anzeige: EGA/CGA ",13,10,0
|
|
||||||
vervesa db "Vesa-Version: Vesa ",13,10,0
|
|
||||||
vervesa_off=22
|
|
||||||
msg_apm db " APM x.x ", 0
|
msg_apm db " APM x.x ", 0
|
||||||
gr_mode db 186," Vesa 2.0+ 16 M LFB: [1] 640x480, [2] 800x600, "
|
novesa db "Anzeige: EGA/CGA ",13,10,0
|
||||||
db "[3] 1024x768, [4] 1280x1024",13,10
|
s_vesa db "Vesa-Version: "
|
||||||
db 186," Vesa 1.2 16 M Bnk: [5] 640x480, [6] 800x600, "
|
.ver db "?.?",13,10,0
|
||||||
db "[7] 1024x768, [8] 1280x1024",13,10
|
|
||||||
db 186," EGA/CGA 256 Farben: [9] 320x200, "
|
gr_mode db "Wahlen Sie einen videomode: ",13,10,0
|
||||||
db "VGA 16 Farben: [0] 640x480",13,10
|
|
||||||
db 186," Waehle Modus: ",0
|
ask_bd db "Add-Festplatten sichtbar BIOS in V86-Modus emuliert? [1-ja, 2 nein]: ",0
|
||||||
bt24 db "Bits Per Pixel: 24",13,10,0
|
|
||||||
bt32 db "Bits Per Pixel: 32",13,10,0
|
if defined extended_primary_loader
|
||||||
vrrmprint db "VRR verwenden? (Monitorfrequenz groesser als 60Hz"
|
bdev db "Lade die Ramdisk von [1-Diskette; 2-kolibri.img]: ",0
|
||||||
db " only for transfers:",13,10
|
else
|
||||||
db 186," 1024*768->800*600 und 800*600->640*480) [1-ja,2-nein]:",0
|
|
||||||
;askmouse db " Maus angeschlossen an:"
|
|
||||||
; db " [1] PS/2 (USB), [2] Com1, [3] Com2."
|
|
||||||
; db " Waehle Port [1-3]: ",0
|
|
||||||
;no_com1 db 13,10,186, " Keine COM1 Maus",0
|
|
||||||
;no_com2 db 13,10,186, " Keine COM2 Maus",0
|
|
||||||
;ask_dma db "Nutze DMA zum HDD Zugriff? [1-ja, 2-allein fur Lesen, 3-nein]: ",0
|
|
||||||
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
|
||||||
;gr_direct db 186," Benutze direct LFB? "
|
|
||||||
; db "[1-ja/2-nein] ? ",0
|
|
||||||
;mem_model db 13,10,186," Hauptspeicher [1-16 Mb / 2-32 Mb / "
|
|
||||||
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
|
|
||||||
;bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
|
|
||||||
bdev db "Lade die Ramdisk von [1-Diskette; 2-C:\kolibri.img (FAT32);"
|
bdev db "Lade die Ramdisk von [1-Diskette; 2-C:\kolibri.img (FAT32);"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "3-benutze ein bereits geladenes Kernel image;"
|
db "3-benutze ein bereits geladenes Kernel image;"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "4-create blank image]: ",0
|
db "4-create blank image]: ",0
|
||||||
probetext db 13,10,13,10,186," Nutze Standardgrafikmodi? [1-ja, "
|
end if
|
||||||
db "2-BIOS Test (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 - Videomodus nicht gefunden.",0
|
prnotfnd db "Fatal - Videomodus nicht gefunden.",0
|
||||||
;modena db "Fatal - VBE 0x112+ required.",0
|
|
||||||
not386 db "Fatal - CPU 386+ benoetigt.",0
|
not386 db "Fatal - CPU 386+ benoetigt.",0
|
||||||
btns db "Fatal - konnte Farbtiefe nicht erkennen.",0
|
|
||||||
fatalsel db "Fatal - Grafikmodus nicht unterstuetzt.",0
|
fatalsel db "Fatal - Grafikmodus nicht unterstuetzt.",0
|
||||||
|
pres_key db "Drucken Sie eine beliebige Taste, um eine neue videomode wahlen.",0
|
||||||
badsect db 13,10,186," Fatal - Sektorfehler, Andere Diskette neutzen.",0
|
badsect db 13,10,186," Fatal - Sektorfehler, Andere Diskette neutzen.",0
|
||||||
memmovefailed db 13,10,186," Fatal - Int 0x15 Fehler.",0
|
memmovefailed db 13,10,186," Fatal - Int 0x15 Fehler.",0
|
||||||
okt db " ... OK"
|
okt db " ... OK"
|
||||||
@@ -86,35 +60,42 @@ time_str db " 5 Sekunden"
|
|||||||
db " bis zum automatischen Start",13,10,0
|
db " bis zum automatischen Start",13,10,0
|
||||||
current_cfg_msg db "Aktuelle Einstellungen:",13,10,0
|
current_cfg_msg db "Aktuelle Einstellungen:",13,10,0
|
||||||
curvideo_msg db " [a] Videomodus: ",0
|
curvideo_msg db " [a] Videomodus: ",0
|
||||||
mode1 db "640x480",0
|
|
||||||
mode2 db "800x600",0
|
mode0 db "320x200, EGA/CGA 256 colors",13,10,0
|
||||||
mode3 db "1024x768",0
|
mode9 db "640x480, VGA 16 colors",13,10,0
|
||||||
mode4 db "1280x1024",0
|
|
||||||
modes_msg dw mode4,mode1,mode2,mode3
|
usebd_msg db " [b] Add-Festplatten sichtbar durch das BIOS:",0
|
||||||
modevesa20 db " mit LFB",0
|
|
||||||
modevesa12 db ", VESA 1.2 Bnk",0
|
|
||||||
mode9 db "320x200, EGA/CGA 256 colors",0
|
|
||||||
mode10 db "640x480, VGA 16 colors",0
|
|
||||||
probeno_msg db " (Standard Modus)",0
|
|
||||||
probeok_msg db " (teste nicht-standard Modi)",0
|
|
||||||
;dma_msg db " [b] Nutze DMA zum HDD Aufschreiben:",0
|
|
||||||
usebd_msg db " [b] Add disks visible by BIOS:",0
|
|
||||||
on_msg db " an",13,10,0
|
on_msg db " an",13,10,0
|
||||||
off_msg db " aus",13,10,0
|
off_msg db " aus",13,10,0
|
||||||
;readonly_msg db " fur Lesen",13,10,0
|
|
||||||
vrrm_msg db " [c] Nutze VRR:",0
|
preboot_device_msg db " [c] Diskettenimage: ",0
|
||||||
preboot_device_msg db " [d] Diskettenimage: ",0
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
preboot_device_msgs dw 0,pdm1,pdm2,0
|
||||||
|
pdm1 db "Echte Diskette",13,10,0
|
||||||
|
pdm2 db "kolibri.img",13,10,0
|
||||||
|
else
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
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
|
||||||
pdm4 db "create blank image",13,10,0
|
pdm4 db "create blank image",13,10,0
|
||||||
|
end if
|
||||||
|
|
||||||
loading_msg db "Lade KolibriOS...",0
|
loading_msg db "Lade KolibriOS...",0
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
save_quest db "Aktuelle Einstellungen speichern? [y/n]: ",0
|
save_quest db "Aktuelle Einstellungen speichern? [y/n]: ",0
|
||||||
loader_block_error db "Bootloader Daten ungueltig, Kann nicht fortfahren. Angehalten.",0
|
loader_block_error db "Bootloader Daten ungueltig, Kann nicht fortfahren. Angehalten.",0
|
||||||
|
end if
|
||||||
|
|
||||||
remark1 db "Default values were selected to match most of configurations, but not all.",0
|
_st db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ',13,10,0
|
||||||
remark2 db "If you have CRT-monitor, enable VRR in the item [c].",0
|
_r1 db 186,' <20> 320x200 EGA/CGA 256 colors <20> <20>',13,10,0
|
||||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
_r2 db 186,' <20> 640x480 VGA 16 colors <20> <20>',13,10,0
|
||||||
remarks dw remark1, remark2, remark3
|
_rs db 186,' <20> ????x????@?? SVGA VESA <20> <20>',13,10,0
|
||||||
num_remarks = 3
|
_bt db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',13,10,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
|
||||||
|
remarks dw remark1, remark2
|
||||||
|
num_remarks = 2
|
||||||
|
@@ -15,8 +15,8 @@ $Revision$
|
|||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
d80x25_bottom:
|
||||||
db 186,' Kolibri OS <20>᭮<EFBFBD><E1ADAE><EFBFBD><EFBFBD> <20><> Menuet OS <20> <20><> <20>।<EFBFBD><EFBFBD>⠢<EFBFBD><EFBFBD><EFBFBD><EFBFBD> '
|
db 186,' KolibriOS <20>᭮<EFBFBD><E1ADAE><EFBFBD><EFBFBD> <20><> MenuetOS <20> <20><> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>'
|
||||||
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>a<EFBFBD>⨩. ',186
|
db '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ',186
|
||||||
db 186,' <20><><EFBFBD><EFBFBD><E0AEA1><EFBFBD> ᬮ<><E1ACAE><EFBFBD><EFBFBD><EFBFBD> <20> 䠩<><E4A0A9> COPYING.TXT '
|
db 186,' <20><><EFBFBD><EFBFBD><E0AEA1><EFBFBD> ᬮ<><E1ACAE><EFBFBD><EFBFBD><EFBFBD> <20> 䠩<><E4A0A9> COPYING.TXT '
|
||||||
db ' ',186
|
db ' ',186
|
||||||
line_full_bottom
|
line_full_bottom
|
||||||
@@ -28,17 +28,21 @@ s_vesa db "
|
|||||||
.ver db "?.?",13,10,0
|
.ver db "?.?",13,10,0
|
||||||
|
|
||||||
gr_mode db "<EFBFBD>롥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6>: ",13,10,0
|
gr_mode db "<EFBFBD>롥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6>: ",13,10,0
|
||||||
vrrmprint db "<EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> VRR? (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> 60 <20><>"
|
|
||||||
db " ⮫쪮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4>:",13,10
|
|
||||||
db 186," 1024*768>800*600 <20> 800*600>640*480) [1-<2D><>, 2-<2D><><EFBFBD>]: ",0
|
|
||||||
;ask_dma db "<EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD>㯠 <20> HDD? [1-<2D><>, 2-⮫쪮 <20>⥭<EFBFBD><E2A5AD>, 3-<2D><><EFBFBD>]: ",0
|
|
||||||
ask_bd db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪨, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१ BIOS <20> ०<><E0A5A6><EFBFBD> V86? [1-<2D><>, 2-<2D><><EFBFBD>]: ",0
|
ask_bd db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪨, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१ BIOS <20> ०<><E0A5A6><EFBFBD> V86? [1-<2D><>, 2-<2D><><EFBFBD>]: ",0
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
bdev db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㧨<EFBFBD><EFBFBD> <20><>ࠧ <20><> [1-<2D><>᪥<EFBFBD><E1AAA5>; 2-kolibri.img <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD>]: ",0
|
||||||
|
else
|
||||||
bdev db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㧨<EFBFBD><EFBFBD> <20><>ࠧ <20><> [1-<2D><>᪥<EFBFBD><E1AAA5>; 2-C:\kolibri.img (FAT32);"
|
bdev db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㧨<EFBFBD><EFBFBD> <20><>ࠧ <20><> [1-<2D><>᪥<EFBFBD><E1AAA5>; 2-C:\kolibri.img (FAT32);"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "3-<2D>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD> 㦥 <20><><EFBFBD><EFBFBD>㦥<EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>ࠧ;"
|
db "3-<2D>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD> 㦥 <20><><EFBFBD><EFBFBD>㦥<EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>ࠧ;"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "4-ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠧ]: ",0
|
db "4-ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠧ]: ",0
|
||||||
|
end if
|
||||||
|
|
||||||
prnotfnd db "<EFBFBD>訡<EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",0
|
prnotfnd db "<EFBFBD>訡<EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",0
|
||||||
|
|
||||||
not386 db "<EFBFBD>訡<EFBFBD><EFBFBD> - <20>ॡ<EFBFBD><E0A5A1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 386+.",0
|
not386 db "<EFBFBD>訡<EFBFBD><EFBFBD> - <20>ॡ<EFBFBD><E0A5A1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 386+.",0
|
||||||
fatalsel db "<EFBFBD>訡<EFBFBD><EFBFBD> - <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",0
|
fatalsel db "<EFBFBD>訡<EFBFBD><EFBFBD> - <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",0
|
||||||
pres_key db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD> <20> <20>롮<EFBFBD> ०<><E0A5A6><EFBFBD><EFBFBD>.",0
|
pres_key db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD> <20> <20>롮<EFBFBD> ०<><E0A5A6><EFBFBD><EFBFBD>.",0
|
||||||
@@ -57,25 +61,33 @@ time_str db " 5 ᥪ㭤 "
|
|||||||
current_cfg_msg db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <20><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9>:",13,10,0
|
current_cfg_msg db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <20><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9>:",13,10,0
|
||||||
curvideo_msg db " [a] <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6>: ",0
|
curvideo_msg db " [a] <20><><EFBFBD><EFBFBD><EFBFBD>०<EFBFBD><E0A5A6>: ",0
|
||||||
|
|
||||||
|
|
||||||
mode0 db "320x200, EGA/CGA 256 梥⮢",13,10,0
|
mode0 db "320x200, EGA/CGA 256 梥⮢",13,10,0
|
||||||
mode9 db "640x480, VGA 16 梥⮢",13,10,0
|
mode9 db "640x480, VGA 16 梥⮢",13,10,0
|
||||||
|
|
||||||
usebd_msg db " [b] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪨, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१ BIOS:",0
|
usebd_msg db " [b] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪨, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१ BIOS:",0
|
||||||
on_msg db " <20><><EFBFBD>",13,10,0
|
on_msg db " <20><><EFBFBD>",13,10,0
|
||||||
off_msg db " <20>몫",13,10,0
|
off_msg db " <20>몫",13,10,0
|
||||||
readonly_msg db " ⮫쪮 <20>⥭<EFBFBD><E2A5AD>",13,10,0
|
|
||||||
vrrm_msg db " [c] <20>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VRR:",0
|
preboot_device_msg db " [c] <20><>ࠧ <EFBFBD><EFBFBD>᪥<EFBFBD><EFBFBD>: ",0
|
||||||
preboot_device_msg db " [d] <20><>ࠧ <20><>᪥<EFBFBD><E1AAA5>: ",0
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
preboot_device_msgs dw 0,pdm1,pdm2,0
|
||||||
|
pdm1 db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪥<EFBFBD><E1AAA5>",13,10,0
|
||||||
|
pdm2 db "kolibri.img <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD>",13,10,0
|
||||||
|
else
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4
|
||||||
pdm1 db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪥<EFBFBD><E1AAA5>",13,10,0
|
pdm1 db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪥<EFBFBD><E1AAA5>",13,10,0
|
||||||
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
||||||
pdm3 db "<EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㦥 <20><><EFBFBD><EFBFBD>㦥<EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>ࠧ",13,10,0
|
pdm3 db "<EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㦥 <20><><EFBFBD><EFBFBD>㦥<EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>ࠧ",13,10,0
|
||||||
pdm4 db "ᮧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠧ",13,10,0
|
pdm4 db "ᮧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠧ",13,10,0
|
||||||
|
end if
|
||||||
|
|
||||||
loading_msg db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> KolibriOS...",0
|
loading_msg db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> KolibriOS...",0
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader ; saving not supported in this case
|
||||||
save_quest db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⥪<>騥 <20><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9>? [y/n]: ",0
|
save_quest db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⥪<>騥 <20><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9>? [y/n]: ",0
|
||||||
loader_block_error db "<EFBFBD>訡<EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB><ECADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>稪<EFBFBD>, <20>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",0
|
loader_block_error db "<EFBFBD>訡<EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB><ECADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>稪<EFBFBD>, <20>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",0
|
||||||
|
end if
|
||||||
|
|
||||||
_st db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ ',13,10,0
|
_st db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ ',13,10,0
|
||||||
_r1 db 186,' <20> 320x200 EGA/CGA 256 梥⮢ <20> <20> ',13,10,0
|
_r1 db 186,' <20> 320x200 EGA/CGA 256 梥⮢ <20> <20> ',13,10,0
|
||||||
@@ -83,9 +95,7 @@ _r2 db 186,'
|
|||||||
_rs db 186,' <20> ????x????@?? SVGA VESA <20> <20> ',13,10,0
|
_rs db 186,' <20> ????x????@?? SVGA VESA <20> <20> ',13,10,0
|
||||||
_bt db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',13,10,0
|
_bt db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',13,10,0
|
||||||
|
|
||||||
|
|
||||||
remark1 db "<EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> <20><> 㬮<>砭<EFBFBD><E7A0AD> <20><><EFBFBD>࠭<EFBFBD> <20><><EFBFBD> 㤮<><E3A4AE>⢠ <20><><EFBFBD><EFBFBD>設<EFBFBD>⢠, <20><> <20><> <20><><EFBFBD><EFBFBD>.",0
|
remark1 db "<EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> <20><> 㬮<>砭<EFBFBD><E7A0AD> <20><><EFBFBD>࠭<EFBFBD> <20><><EFBFBD> 㤮<><E3A4AE>⢠ <20><><EFBFBD><EFBFBD>設<EFBFBD>⢠, <20><> <20><> <20><><EFBFBD><EFBFBD>.",0
|
||||||
remark2 db "<EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD>-<2D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VRR <EFBFBD> <20>㭪<EFBFBD><EFBFBD> [c].",0
|
remark2 db "<EFBFBD> <20> <20><><EFBFBD> <20><> <20><>㧨<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>⥬<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⪫<EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20>㭪<EFBFBD> [b].",0
|
||||||
remark3 db "<EFBFBD> <20> <20><><EFBFBD> <20><> <20><>㧨<EFBFBD><E3A7A8><EFBFBD> <20><><EFBFBD>⥬<EFBFBD>, <20><><EFBFBD><EFBFBD><E0AEA1><EFBFBD><EFBFBD> <20>⪫<EFBFBD><E2AAAB><EFBFBD><EFBFBD><EFBFBD> <20>㭪<EFBFBD> [b].",0
|
remarks dw remark1, remark2
|
||||||
remarks dw remark1, remark2, remark3
|
num_remarks = 2
|
||||||
num_remarks = 3
|
|
||||||
|
103
kernel/branches/net/boot/bootsp.inc
Normal file
103
kernel/branches/net/boot/bootsp.inc
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; ;;
|
||||||
|
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
|
||||||
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
|
;; ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
;======================================================================
|
||||||
|
;
|
||||||
|
; BOOT DATA
|
||||||
|
;
|
||||||
|
;======================================================================
|
||||||
|
|
||||||
|
; Para modificar <EFBFBD>ste archivo es necesario abrirlo con codificaci<EFBFBD>n CP850
|
||||||
|
|
||||||
|
$Revision: 2455 $
|
||||||
|
|
||||||
|
|
||||||
|
d80x25_bottom:
|
||||||
|
db 186,' KolibriOS est<73> basado en MenuetOS y viene ABSOLUTAMENTE '
|
||||||
|
db 'SIN GARANT<4E>A ',186
|
||||||
|
db 186,' Lee el archivo COPYING por m<>s detalles '
|
||||||
|
db ' ',186
|
||||||
|
line_full_bottom
|
||||||
|
d80x25_bottom_num = 3
|
||||||
|
|
||||||
|
msg_apm db " APM x.x ", 0
|
||||||
|
novesa db "Monitor: EGA/CGA",13,10,0
|
||||||
|
s_vesa db "Versi<EFBFBD>n de VESA: "
|
||||||
|
.ver db "?.?",13,10,0
|
||||||
|
|
||||||
|
gr_mode db "Selecciona un modo de video: ",13,10,0
|
||||||
|
|
||||||
|
ask_bd db "<EFBFBD>Agregar discos visibles por el BIOS emulados en modo V86? [1-si, 2-no]: ",0
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
bdev db "Cargar unidad ram desde [1-disquete; 2-kolibri.img]: ",0
|
||||||
|
else
|
||||||
|
bdev db "Cargar unidad ram desde [1-disquete; 2-C:\kolibri.img (FAT32);"
|
||||||
|
db 13,10,186," "
|
||||||
|
db "3-usar imagen precargada en el reinicio del n<>cleo;"
|
||||||
|
db 13,10,186," "
|
||||||
|
db "4-crear imagen vac<61>a]: ",0
|
||||||
|
end if
|
||||||
|
|
||||||
|
prnotfnd db "Fatal - Modo de video no encontrado.",0
|
||||||
|
|
||||||
|
not386 db "Fatal - CPU 386+ requerido.",0
|
||||||
|
fatalsel db "Fatal - Modo de gr<67>ficos no soportado por hardware.",0
|
||||||
|
pres_key db "Presiona una tecla para seleccionar otro modo de video.",0
|
||||||
|
badsect db 13,10,186," Fatal - Sector mal. Reemplaze el disquete.",0
|
||||||
|
memmovefailed db 13,10,186," Fatal - Int 0x15 move failed.",0
|
||||||
|
okt db " ... BIEN"
|
||||||
|
linef db 13,10,0
|
||||||
|
diskload db "Cargando disquete: 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 "Presiona [abcd] para cambiar la configuraci<63>n, [Enter] para continuar",13,10,0
|
||||||
|
time_msg db " o espera "
|
||||||
|
time_str db " 5 segundos"
|
||||||
|
db " para que inicie autom<6F>ticamente",13,10,0
|
||||||
|
current_cfg_msg db "Configuraci<EFBFBD>n actual:",13,10,0
|
||||||
|
curvideo_msg db " [a] Modo de video: ",0
|
||||||
|
|
||||||
|
mode0 db "320x200, EGA/CGA 256 colores",13,10,0
|
||||||
|
mode9 db "640x480, VGA 16 colores",13,10,0
|
||||||
|
|
||||||
|
usebd_msg db " [b] Agregar discos visibles por el BIOS:",0
|
||||||
|
on_msg db " activado",13,10,0
|
||||||
|
off_msg db " desactivado",13,10,0
|
||||||
|
|
||||||
|
preboot_device_msg db " [c] Imagen de disquete: ",0
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
preboot_device_msgs dw 0,pdm1,pdm2,0
|
||||||
|
pdm1 db "disquete real",13,10,0
|
||||||
|
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
||||||
|
else
|
||||||
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
|
pdm1 db "disquete real",13,10,0
|
||||||
|
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
||||||
|
pdm3 db "usar imagen ya cargada",13,10,0
|
||||||
|
pdm4 db "crear imagen vac<61>a",13,10,0
|
||||||
|
end if
|
||||||
|
|
||||||
|
loading_msg db "Cargando KolibriOS...",0
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
|
save_quest db "<EFBFBD>Recordar configuraci<63>n actual? [s/n]: ",0
|
||||||
|
loader_block_error db "Bootloader inv<6E>lido, no puedo continuar. Detenido.",0
|
||||||
|
end if
|
||||||
|
|
||||||
|
_st db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ',13,10,0
|
||||||
|
_r1 db 186,' <20> 320x200 EGA/CGA 256 colores <20> <20>',13,10,0
|
||||||
|
_r2 db 186,' <20> 640x480 VGA 16 colores <20> <20>',13,10,0
|
||||||
|
_rs db 186,' <20> ????x????@?? SVGA VESA <20> <20>',13,10,0
|
||||||
|
_bt db 186,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',13,10,0
|
||||||
|
|
||||||
|
remark1 db "Los valores por defecto puede que no funcionen en algunas configuraciones.",0
|
||||||
|
remark2 db "Si el sistema no inicia, prueba deshabilitar la opci<63>n [b].",0
|
||||||
|
remarks dw remark1, remark2
|
||||||
|
num_remarks = 2
|
@@ -42,7 +42,8 @@ end while
|
|||||||
store byte ' ' at d80x25_top+cur_line_pos
|
store byte ' ' at d80x25_top+cur_line_pos
|
||||||
store dword ' SVN' at d80x25_top+cur_line_pos-4
|
store dword ' SVN' at d80x25_top+cur_line_pos-4
|
||||||
|
|
||||||
space_msg: line_space
|
space_msg:
|
||||||
|
line_space
|
||||||
verstr:
|
verstr:
|
||||||
; line_space
|
; line_space
|
||||||
; version string
|
; version string
|
||||||
|
@@ -94,7 +94,8 @@ int2str:
|
|||||||
push edx
|
push edx
|
||||||
call int2str
|
call int2str
|
||||||
pop eax
|
pop eax
|
||||||
@@: or al,0x30
|
@@:
|
||||||
|
or al, 0x30
|
||||||
mov [ds:di], al
|
mov [ds:di], al
|
||||||
inc di
|
inc di
|
||||||
ret
|
ret
|
||||||
@@ -107,7 +108,8 @@ int2strnz:
|
|||||||
push edx
|
push edx
|
||||||
call int2strnz
|
call int2strnz
|
||||||
pop eax
|
pop eax
|
||||||
@@: or al,0x30
|
@@:
|
||||||
|
or al, 0x30
|
||||||
mov [es:di], al
|
mov [es:di], al
|
||||||
inc di
|
inc di
|
||||||
ret
|
ret
|
||||||
@@ -245,7 +247,8 @@ calc_vmodes_table:
|
|||||||
jb @f ; We do not use Vesa 1.2 mode is now
|
jb @f ; We do not use Vesa 1.2 mode is now
|
||||||
|
|
||||||
or cx, 0x4000 ; use LFB
|
or cx, 0x4000 ; use LFB
|
||||||
.lp1: mov [es:bx+6],cx ; +6 : mode number
|
.lp1:
|
||||||
|
mov [es:bx+6], cx ; +6 : mode number
|
||||||
movzx ax, byte [es:mi.BitsPerPixel]
|
movzx ax, byte [es:mi.BitsPerPixel]
|
||||||
mov word [es:bx+8], ax ; +8 : bits per pixel
|
mov word [es:bx+8], ax ; +8 : bits per pixel
|
||||||
add bx, size_of_step ; size of record
|
add bx, size_of_step ; size of record
|
||||||
@@ -315,7 +318,11 @@ draw_current_vmode:
|
|||||||
cmp word [es:si+6], 0x13
|
cmp word [es:si+6], 0x13
|
||||||
je .no_vesa_0x13
|
je .no_vesa_0x13
|
||||||
|
|
||||||
|
if defined extended_primary_loader
|
||||||
|
mov di, config_file_variables
|
||||||
|
else
|
||||||
mov di, loader_block_error
|
mov di, loader_block_error
|
||||||
|
end if
|
||||||
movzx eax, word[es:si+0]
|
movzx eax, word[es:si+0]
|
||||||
mov ecx, 10
|
mov ecx, 10
|
||||||
call int2strnz
|
call int2strnz
|
||||||
@@ -328,7 +335,11 @@ draw_current_vmode:
|
|||||||
movzx eax, word[es:si+8]
|
movzx eax, word[es:si+8]
|
||||||
call int2strnz
|
call int2strnz
|
||||||
mov dword[es:di], 0x00000d0a
|
mov dword[es:di], 0x00000d0a
|
||||||
|
if defined extended_primary_loader
|
||||||
|
mov si, config_file_variables
|
||||||
|
else
|
||||||
mov si, loader_block_error
|
mov si, loader_block_error
|
||||||
|
end if
|
||||||
push ds
|
push ds
|
||||||
push es
|
push es
|
||||||
pop ds
|
pop ds
|
||||||
@@ -345,9 +356,35 @@ draw_current_vmode:
|
|||||||
ret
|
ret
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
check_first_parm:
|
check_first_parm:
|
||||||
|
if defined extended_primary_loader
|
||||||
|
mov cx, [number_vm]
|
||||||
|
jcxz .novbemode
|
||||||
|
mov si, modes_table
|
||||||
|
.findvbemode:
|
||||||
|
cmp [es:si+6], cx
|
||||||
|
jnz @f
|
||||||
|
cmp word [es:si+8], 32
|
||||||
|
je .ok_found_mode
|
||||||
|
cmp word [es:si+8], 24
|
||||||
|
je .ok_found_mode
|
||||||
|
@@:
|
||||||
|
add si, size_of_step
|
||||||
|
cmp word [es:si], -1
|
||||||
|
jnz .findvbemode
|
||||||
|
.novbemode:
|
||||||
|
mov ax, [x_save]
|
||||||
|
test ax, ax
|
||||||
|
jz .zerro
|
||||||
|
mov bx, [y_save]
|
||||||
|
mov si, modes_table
|
||||||
|
call .loops
|
||||||
|
test ax, ax
|
||||||
|
jz .ok_found_mode
|
||||||
|
else
|
||||||
mov si, word [preboot_graph]
|
mov si, word [preboot_graph]
|
||||||
test si, si
|
test si, si
|
||||||
jnz .no_zero ;if no zero
|
jnz .no_zero ;if no zero
|
||||||
|
end if
|
||||||
.zerro:
|
.zerro:
|
||||||
; mov ax,modes_table
|
; mov ax,modes_table
|
||||||
; mov word [cursor_pos],ax
|
; mov word [cursor_pos],ax
|
||||||
@@ -375,6 +412,7 @@ check_first_parm:
|
|||||||
jz .ok_found_mode
|
jz .ok_found_mode
|
||||||
|
|
||||||
mov si, modes_table
|
mov si, modes_table
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
jmp .ok_found_mode
|
jmp .ok_found_mode
|
||||||
|
|
||||||
|
|
||||||
@@ -395,6 +433,7 @@ check_first_parm:
|
|||||||
; jb .zerro ;check on correct if bellow
|
; jb .zerro ;check on correct if bellow
|
||||||
; cmp ax,word [end_cursor]
|
; cmp ax,word [end_cursor]
|
||||||
; ja .zerro ;check on correct if anymore
|
; ja .zerro ;check on correct if anymore
|
||||||
|
end if
|
||||||
|
|
||||||
.ok_found_mode:
|
.ok_found_mode:
|
||||||
mov word [home_cursor], si
|
mov word [home_cursor], si
|
||||||
@@ -404,7 +443,8 @@ check_first_parm:
|
|||||||
|
|
||||||
mov ecx, long_v_table
|
mov ecx, long_v_table
|
||||||
|
|
||||||
.loop: add ax,size_of_step
|
.loop:
|
||||||
|
add ax, size_of_step
|
||||||
cmp ax, word [end_cursor]
|
cmp ax, word [end_cursor]
|
||||||
jae .next_step
|
jae .next_step
|
||||||
loop .loop
|
loop .loop
|
||||||
@@ -437,13 +477,16 @@ check_first_parm:
|
|||||||
je .ok
|
je .ok
|
||||||
cmp word [es:si+8], 24
|
cmp word [es:si+8], 24
|
||||||
je .ok
|
je .ok
|
||||||
.next: add si,size_of_step
|
.next:
|
||||||
|
add si, size_of_step
|
||||||
cmp word [es:si], -1
|
cmp word [es:si], -1
|
||||||
je .exit
|
je .exit
|
||||||
jmp .loops
|
jmp .loops
|
||||||
.ok: xor ax,ax
|
.ok:
|
||||||
|
xor ax, ax
|
||||||
ret
|
ret
|
||||||
.exit: or ax,-1
|
.exit:
|
||||||
|
or ax, -1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@@ -486,7 +529,8 @@ draw_vmodes_table:
|
|||||||
jmp .ok
|
jmp .ok
|
||||||
|
|
||||||
|
|
||||||
.low: sub cx,size_of_step
|
.low:
|
||||||
|
sub cx, size_of_step
|
||||||
cmp cx, modes_table
|
cmp cx, modes_table
|
||||||
jb .ok
|
jb .ok
|
||||||
push cx
|
push cx
|
||||||
|
170
kernel/branches/net/boot/parsers.inc
Normal file
170
kernel/branches/net/boot/parsers.inc
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; ;;
|
||||||
|
;; Copyright (C) KolibriOS team 2011. All rights reserved. ;;
|
||||||
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
|
;; ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
$Revision: 2288 $
|
||||||
|
|
||||||
|
; All parsers are called with ds:si -> value of the variable,
|
||||||
|
; possibly with spaces before, and dx = limit of config file.
|
||||||
|
|
||||||
|
; Three subroutines parse_char, parse_number and parse_bool set CF
|
||||||
|
; if something has failed, otherwise return the value in al/ax.
|
||||||
|
|
||||||
|
parse_timeout:
|
||||||
|
; timeout is a number not greater than 9
|
||||||
|
call parse_number
|
||||||
|
jc .nothing
|
||||||
|
cmp ax, 9
|
||||||
|
jbe @f
|
||||||
|
mov ax, 9
|
||||||
|
@@:
|
||||||
|
imul ax, 18
|
||||||
|
mov [es:preboot_timeout], ax
|
||||||
|
.nothing:
|
||||||
|
ret
|
||||||
|
|
||||||
|
parse_resolution:
|
||||||
|
; resolution is <width>*<height>, 'x' can be used instead of '*'
|
||||||
|
; parse width
|
||||||
|
call parse_number
|
||||||
|
jc .nothing
|
||||||
|
; save width
|
||||||
|
xchg ax, bx
|
||||||
|
; test for 'x' or '*'
|
||||||
|
call parse_char
|
||||||
|
cmp al, 'x'
|
||||||
|
jz @f
|
||||||
|
cmp al, '*'
|
||||||
|
jnz .nothing
|
||||||
|
@@:
|
||||||
|
; parse height
|
||||||
|
call parse_number
|
||||||
|
jc .nothing
|
||||||
|
; write width and height
|
||||||
|
mov [es:x_save], bx
|
||||||
|
mov [es:y_save], ax
|
||||||
|
.nothing:
|
||||||
|
ret
|
||||||
|
|
||||||
|
parse_vbemode:
|
||||||
|
; vbemode is a number
|
||||||
|
call parse_number
|
||||||
|
jc .nothing
|
||||||
|
mov [es:number_vm], ax
|
||||||
|
.nothing:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;parse_vrr:
|
||||||
|
;; vrr is a boolean setting
|
||||||
|
; call parse_bool
|
||||||
|
; jc .nothing
|
||||||
|
;; convert 0 to 2, 1 to 1
|
||||||
|
; inc ax
|
||||||
|
; xor al, 3
|
||||||
|
; mov [es:preboot_vrrm], al
|
||||||
|
;.nothing:
|
||||||
|
; ret
|
||||||
|
|
||||||
|
parse_biosdisks:
|
||||||
|
; using biosdisks is a boolean setting
|
||||||
|
call parse_bool
|
||||||
|
jc .nothing
|
||||||
|
; convert 0 to 2, 1 to 1
|
||||||
|
inc ax
|
||||||
|
xor al, 3
|
||||||
|
mov [es:preboot_biosdisk], al
|
||||||
|
.nothing:
|
||||||
|
ret
|
||||||
|
|
||||||
|
parse_imgfrom:
|
||||||
|
; boot device (1-floppy 2-kolibri.img using primary loader)
|
||||||
|
call parse_number
|
||||||
|
jc .nothing
|
||||||
|
cmp al, 1
|
||||||
|
jb .nothing
|
||||||
|
cmp al, 2
|
||||||
|
ja .nothing
|
||||||
|
mov [es:preboot_device], al
|
||||||
|
.nothing:
|
||||||
|
ret
|
||||||
|
|
||||||
|
parse_char:
|
||||||
|
; skip spaces and return the next character or CF if EOF.
|
||||||
|
cmp si, dx
|
||||||
|
jae .eof
|
||||||
|
lodsb
|
||||||
|
cmp al, ' '
|
||||||
|
jbe parse_char
|
||||||
|
ret
|
||||||
|
.eof:
|
||||||
|
stc
|
||||||
|
ret
|
||||||
|
|
||||||
|
parse_number:
|
||||||
|
; initialize high part of ax to zero
|
||||||
|
xor ax, ax
|
||||||
|
; skip spaces
|
||||||
|
call parse_char
|
||||||
|
jc .bad
|
||||||
|
; al should be a digit
|
||||||
|
sub al, '0'
|
||||||
|
cmp al, 9
|
||||||
|
ja .bad
|
||||||
|
; accumulate the value in cx
|
||||||
|
xchg cx, ax
|
||||||
|
@@:
|
||||||
|
cmp si, dx
|
||||||
|
jae .eof
|
||||||
|
lodsb
|
||||||
|
sub al, '0'
|
||||||
|
cmp al, 9
|
||||||
|
ja .end
|
||||||
|
imul cx, 10
|
||||||
|
add cx, ax
|
||||||
|
jmp @b
|
||||||
|
; if the end is caused by non-digit, unwind the last character
|
||||||
|
.end:
|
||||||
|
dec si
|
||||||
|
.eof:
|
||||||
|
xchg cx, ax
|
||||||
|
clc
|
||||||
|
ret
|
||||||
|
.bad:
|
||||||
|
stc
|
||||||
|
ret
|
||||||
|
|
||||||
|
parse_bool:
|
||||||
|
; skip spaces
|
||||||
|
call parse_char
|
||||||
|
jc .bad
|
||||||
|
; Boolean false can be represented as 0=no=off,
|
||||||
|
; boolean true can be represented as 1=yes=on.
|
||||||
|
cmp al, '0'
|
||||||
|
jz .false
|
||||||
|
cmp al, '1'
|
||||||
|
jz .true
|
||||||
|
mov ah, al
|
||||||
|
cmp si, dx
|
||||||
|
jae .bad
|
||||||
|
lodsb
|
||||||
|
cmp ax, 'n'*256 + 'o'
|
||||||
|
jz .false
|
||||||
|
cmp ax, 'o'*256 + 'f'
|
||||||
|
jz .false
|
||||||
|
cmp ax, 'y'*256 + 'e'
|
||||||
|
jz .true
|
||||||
|
cmp ax, 'o'*256 + 'n'
|
||||||
|
jz .true
|
||||||
|
.bad:
|
||||||
|
stc
|
||||||
|
ret
|
||||||
|
.true:
|
||||||
|
xor ax, ax
|
||||||
|
inc ax
|
||||||
|
ret
|
||||||
|
.false:
|
||||||
|
xor ax, ax
|
||||||
|
ret
|
@@ -23,16 +23,20 @@ y_save dw 0 ; y
|
|||||||
number_vm dw 0 ;
|
number_vm dw 0 ;
|
||||||
;pixel_save dw 0 ; per to pixel
|
;pixel_save dw 0 ; per to pixel
|
||||||
preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes)
|
preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes)
|
||||||
preboot_vrrm db 0 ; use VRR_M (1-yes, 2- no)
|
;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)
|
preboot_dma db 0 ; use DMA for access to HDD (1-always, 2-only for read, 3-never)
|
||||||
preboot_device db 0 ; boot device
|
preboot_device db 0 ; boot device
|
||||||
; (1-floppy 2-harddisk 3-kernel restart 4-format ram disk)
|
; (1-floppy 2-harddisk 3-kernel restart 4-format ram disk)
|
||||||
;!!!! 0 - autodetect !!!!
|
;!!!! 0 - autodetect !!!!
|
||||||
preboot_blogesc = 0 ; start immediately after bootlog
|
preboot_blogesc = 0 ; start immediately after bootlog
|
||||||
preboot_biosdisk db 0 ; use V86 to access disks through BIOS (1-yes, 2-no)
|
preboot_biosdisk db 0 ; use V86 to access disks through BIOS (1-yes, 2-no)
|
||||||
|
if defined extended_primary_loader
|
||||||
|
preboot_timeout dw 5*18 ; timeout in 1/18th of second for config settings screen
|
||||||
|
end if
|
||||||
|
|
||||||
if $>0x200
|
if $>0x200
|
||||||
ERROR: prebooting parameters must fit in first sector!!!
|
ERROR:
|
||||||
|
prebooting parameters must fit in first sector!!!
|
||||||
end if
|
end if
|
||||||
hdsysimage db 'KOLIBRI IMG' ; load from
|
hdsysimage db 'KOLIBRI.IMG',0 ; load from
|
||||||
image_save db 'KOLIBRI IMG' ; save to
|
image_save db 'KOLIBRI.IMG',0 ; save to
|
||||||
|
@@ -103,7 +103,7 @@ endg
|
|||||||
read_image:
|
read_image:
|
||||||
mov ebx, read_image_fsinfo
|
mov ebx, read_image_fsinfo
|
||||||
pushad
|
pushad
|
||||||
call file_system_lfn
|
call file_system_lfn_protected
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@@ -98,8 +98,10 @@ nbw32:
|
|||||||
jmp $
|
jmp $
|
||||||
no_apm_off:
|
no_apm_off:
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader ; kernel restarting is not supported
|
||||||
dec ax ; 3 = reboot
|
dec ax ; 3 = reboot
|
||||||
jnz restart_kernel ; 4 = restart kernel
|
jnz restart_kernel ; 4 = restart kernel
|
||||||
|
end if
|
||||||
push 0x40
|
push 0x40
|
||||||
pop ds
|
pop ds
|
||||||
mov word[0x0072], 0x1234
|
mov word[0x0072], 0x1234
|
||||||
@@ -150,6 +152,7 @@ APM_PowerOff:
|
|||||||
;!!!!!!!!!!!!!!!!!!!!!!!!
|
;!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
if ~ defined extended_primary_loader
|
||||||
restart_kernel:
|
restart_kernel:
|
||||||
|
|
||||||
mov ax, 0x0003 ; set text mode for screen
|
mov ax, 0x0003 ; set text mode for screen
|
||||||
@@ -205,5 +208,5 @@ restart_kernel_4000:
|
|||||||
mov si, kernel_restart_bootblock
|
mov si, kernel_restart_bootblock
|
||||||
mov ax, 'KL'
|
mov ax, 'KL'
|
||||||
jmp 0x1000:0000
|
jmp 0x1000:0000
|
||||||
|
end if
|
||||||
|
|
||||||
|
@@ -371,6 +371,33 @@ proc enable_irq stdcall, irq_line:dword
|
|||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
proc disable_irq stdcall, irq_line:dword
|
||||||
|
mov ebx, [irq_line]
|
||||||
|
cmp [irq_mode], IRQ_APIC
|
||||||
|
je .APIC
|
||||||
|
|
||||||
|
mov edx, 0x21
|
||||||
|
cmp ebx, 8
|
||||||
|
jb @F
|
||||||
|
|
||||||
|
mov edx, 0xA1
|
||||||
|
sub ebx, 8
|
||||||
|
@@:
|
||||||
|
in al, dx
|
||||||
|
bts eax, ebx
|
||||||
|
out dx, al
|
||||||
|
ret
|
||||||
|
.APIC:
|
||||||
|
shl ebx, 1
|
||||||
|
add ebx, 0x10
|
||||||
|
mov eax, ebx
|
||||||
|
call IOAPIC_read
|
||||||
|
or eax, 0x10000; bit 16
|
||||||
|
xchg eax, ebx
|
||||||
|
call IOAPIC_write
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
pci_irq_fixup:
|
pci_irq_fixup:
|
||||||
|
|
||||||
|
11
kernel/branches/net/core/conf_lib-sp.inc
Normal file
11
kernel/branches/net/core/conf_lib-sp.inc
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
; <EFBFBD>ste archivo debe ser editado con codificaci<EFBFBD>n CP866
|
||||||
|
|
||||||
|
ugui_mouse_speed db 'velocidad del rat<61>n',0
|
||||||
|
ugui_mouse_delay db 'demora del rat<61>n',0
|
||||||
|
|
||||||
|
udev db 'disp',0
|
||||||
|
unet db 'red',0
|
||||||
|
unet_active db 'activa',0
|
||||||
|
unet_addr db 'direc',0
|
||||||
|
unet_mask db 'm<>sc',0
|
||||||
|
unet_gate db 'puer',0
|
@@ -67,16 +67,27 @@ proc set_kernel_conf
|
|||||||
endp
|
endp
|
||||||
iglobal
|
iglobal
|
||||||
ugui db 'gui',0
|
ugui db 'gui',0
|
||||||
ugui_mouse_speed db 'mouse_speed',0
|
|
||||||
ugui_mouse_speed_def db '2',0
|
ugui_mouse_speed_def db '2',0
|
||||||
ugui_mouse_delay db 'mouse_delay',0
|
|
||||||
ugui_mouse_delay_def db '0x00A',0
|
ugui_mouse_delay_def db '0x00A',0
|
||||||
|
|
||||||
udev db 'dev',0
|
|
||||||
udev_midibase db 'midibase',0
|
udev_midibase db 'midibase',0
|
||||||
udev_midibase_def db '0x320',0
|
udev_midibase_def db '0x320',0
|
||||||
endg
|
endg
|
||||||
|
|
||||||
|
iglobal
|
||||||
|
if lang eq sp
|
||||||
|
include 'core/conf_lib-sp.inc'
|
||||||
|
else
|
||||||
|
ugui_mouse_speed db 'mouse_speed',0
|
||||||
|
ugui_mouse_delay db 'mouse_delay',0
|
||||||
|
udev db 'dev',0
|
||||||
|
unet db 'net',0
|
||||||
|
unet_active db 'active',0
|
||||||
|
unet_addr db 'addr',0
|
||||||
|
unet_mask db 'mask',0
|
||||||
|
unet_gate db 'gate',0
|
||||||
|
end if
|
||||||
|
unet_def db 0
|
||||||
|
endg
|
||||||
; convert string to DWord
|
; convert string to DWord
|
||||||
proc strtoint stdcall,strs
|
proc strtoint stdcall,strs
|
||||||
pushad
|
pushad
|
||||||
|
@@ -369,7 +369,7 @@ proc read_file stdcall,file_name:dword, buffer:dword, off:dword,\
|
|||||||
|
|
||||||
pushad
|
pushad
|
||||||
lea ebx, [cmd]
|
lea ebx, [cmd]
|
||||||
call file_system_lfn
|
call file_system_lfn_protected
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
@@ -440,6 +440,7 @@ proc free_kernel_space stdcall uses ebx ecx edx esi edi, base:dword
|
|||||||
cmp edx, [edx]
|
cmp edx, [edx]
|
||||||
jne .add_block
|
jne .add_block
|
||||||
btr [mem_block_mask], ecx
|
btr [mem_block_mask], ecx
|
||||||
|
|
||||||
.add_block:
|
.add_block:
|
||||||
bts [mem_block_mask], eax
|
bts [mem_block_mask], eax
|
||||||
lea edx, [mem_block_list+eax*8]
|
lea edx, [mem_block_list+eax*8]
|
||||||
@@ -758,11 +759,13 @@ proc user_alloc_at stdcall, address:dword, alloc_size:dword
|
|||||||
inc ebx
|
inc ebx
|
||||||
dec eax
|
dec eax
|
||||||
jnz .fill
|
jnz .fill
|
||||||
|
|
||||||
.second_nofill:
|
.second_nofill:
|
||||||
sub ecx, edx
|
sub ecx, edx
|
||||||
jz .nothird
|
jz .nothird
|
||||||
or cl, FREE_BLOCK
|
or cl, FREE_BLOCK
|
||||||
mov [page_tabs+ebx*4], ecx
|
mov [page_tabs+ebx*4], ecx
|
||||||
|
|
||||||
.nothird:
|
.nothird:
|
||||||
|
|
||||||
mov edx, [current_slot]
|
mov edx, [current_slot]
|
||||||
@@ -822,6 +825,7 @@ proc user_free stdcall, base:dword
|
|||||||
inc esi
|
inc esi
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .release
|
jnz .release
|
||||||
|
|
||||||
.released:
|
.released:
|
||||||
push edi
|
push edi
|
||||||
|
|
||||||
|
4
kernel/branches/net/core/sys32-sp.inc
Normal file
4
kernel/branches/net/core/sys32-sp.inc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
; <EFBFBD>ste archivo debe ser editado con codificaci<EFBFBD>n CP866
|
||||||
|
|
||||||
|
msg_sel_ker db "n<EFBFBD>cleo", 0
|
||||||
|
msg_sel_app db "aplicaci<EFBFBD>n", 0
|
@@ -75,8 +75,12 @@ iglobal
|
|||||||
msg_exc_d db "General protection fault", 0
|
msg_exc_d db "General protection fault", 0
|
||||||
msg_exc_e db "Page fault", 0
|
msg_exc_e db "Page fault", 0
|
||||||
|
|
||||||
|
if lang eq sp
|
||||||
|
include 'core/sys32-sp.inc'
|
||||||
|
else
|
||||||
msg_sel_ker db "kernel", 0
|
msg_sel_ker db "kernel", 0
|
||||||
msg_sel_app db "application", 0
|
msg_sel_app db "application", 0
|
||||||
|
end if
|
||||||
|
|
||||||
endg
|
endg
|
||||||
|
|
||||||
@@ -219,7 +223,11 @@ show_error_parameters:
|
|||||||
pop ebx
|
pop ebx
|
||||||
.no_ud:
|
.no_ud:
|
||||||
mov edx, [TASK_BASE];not scratched below
|
mov edx, [TASK_BASE];not scratched below
|
||||||
DEBUGF 1, "K : Process - forced terminate PID: %x\n", [edx+TASKDATA.pid]
|
if lang eq sp
|
||||||
|
DEBUGF 1, "K : Proceso - terminado forzado PID: %x [%s]\n", [edx+TASKDATA.pid], [current_slot]
|
||||||
|
else
|
||||||
|
DEBUGF 1, "K : Process - forced terminate PID: %x [%s]\n", [edx+TASKDATA.pid], [current_slot]
|
||||||
|
end if
|
||||||
cmp bl, 0x08
|
cmp bl, 0x08
|
||||||
jb .l0
|
jb .l0
|
||||||
cmp bl, 0x0e
|
cmp bl, 0x0e
|
||||||
@@ -713,3 +721,78 @@ restore .slot
|
|||||||
; mov esi,boot_sched_2
|
; mov esi,boot_sched_2
|
||||||
; call boot_log
|
; call boot_log
|
||||||
; ret
|
; ret
|
||||||
|
|
||||||
|
; Three following procedures are used to guarantee that
|
||||||
|
; some part of kernel code will not be terminated from outside
|
||||||
|
; while it is running.
|
||||||
|
; Note: they do not protect a thread from terminating due to errors inside
|
||||||
|
; the thread; accessing a nonexisting memory would still terminate it.
|
||||||
|
|
||||||
|
; First two procedures must be used in pair by thread-to-be-protected
|
||||||
|
; to signal the beginning and the end of an important part.
|
||||||
|
; It is OK to have nested areas.
|
||||||
|
|
||||||
|
; The last procedure must be used by outside wanna-be-terminators;
|
||||||
|
; if it is safe to terminate the given thread immediately, it returns eax=1;
|
||||||
|
; otherwise, it returns eax=0 and notifies the target thread that it should
|
||||||
|
; terminate itself when leaving a critical area (the last critical area if
|
||||||
|
; they are nested).
|
||||||
|
|
||||||
|
; Implementation. Those procedures use one dword in APPDATA for the thread,
|
||||||
|
; APPDATA.terminate_protection.
|
||||||
|
; * The upper bit is 1 during normal operations and 0 when terminate is requested.
|
||||||
|
; * Other bits form a number = depth of critical regions,
|
||||||
|
; plus 1 if the upper bit is 1.
|
||||||
|
; * When this dword goes to zero, the thread should be destructed,
|
||||||
|
; and the procedure in which it happened becomes responsible for destruction.
|
||||||
|
|
||||||
|
; Enter critical area. Called by thread which wants to be protected.
|
||||||
|
proc protect_from_terminate
|
||||||
|
mov edx, [current_slot]
|
||||||
|
; Atomically increment depth of critical areas and get the old value.
|
||||||
|
mov eax, 1
|
||||||
|
lock xadd [edx+APPDATA.terminate_protection], eax
|
||||||
|
; If the old value was zero, somebody has started to terminate us,
|
||||||
|
; so we are destructing and cannot do anything protected.
|
||||||
|
; Otherwise, return to the caller.
|
||||||
|
test eax, eax
|
||||||
|
jz @f
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
; Wait for somebody to finish us.
|
||||||
|
call change_task
|
||||||
|
jmp @b
|
||||||
|
endp
|
||||||
|
|
||||||
|
; Leave critical area. Called by thread which wants to be protected.
|
||||||
|
proc unprotect_from_terminate
|
||||||
|
mov edx, [current_slot]
|
||||||
|
; Atomically decrement depth of critical areas.
|
||||||
|
lock dec [edx+APPDATA.terminate_protection]
|
||||||
|
; If the result of decrement is zero, somebody has requested termination,
|
||||||
|
; but at that moment we were inside a critical area; terminate now.
|
||||||
|
jz sys_end
|
||||||
|
; Otherwise, return to the caller.
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
; Request termination of thread identified by edx = SLOT_BASE + slot*256.
|
||||||
|
; Called by anyone.
|
||||||
|
proc request_terminate
|
||||||
|
xor eax, eax ; set return value
|
||||||
|
; Atomically clear the upper bit. If it was already zero, then
|
||||||
|
; somebody has requested termination before us, so just exit.
|
||||||
|
lock btr [edx+APPDATA.terminate_protection], 31
|
||||||
|
jnc .unsafe
|
||||||
|
; Atomically decrement depth of critical areas.
|
||||||
|
lock dec [edx+APPDATA.terminate_protection]
|
||||||
|
; If the result of decrement is nonzero, the target thread is inside a
|
||||||
|
; critical area; leave termination to leaving that area.
|
||||||
|
jnz .unsafe
|
||||||
|
; Otherwise, it is safe to kill the target now and the caller is responsible
|
||||||
|
; for this. Return eax=1.
|
||||||
|
inc eax
|
||||||
|
.unsafe:
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
@@ -38,9 +38,13 @@ sysenter_entry:
|
|||||||
pushad
|
pushad
|
||||||
cld
|
cld
|
||||||
|
|
||||||
movzx eax, al
|
call protect_from_terminate
|
||||||
|
|
||||||
|
movzx eax, byte [esp+28]
|
||||||
|
mov edx, dword [esp+20]
|
||||||
call dword [servetable2 + eax * 4]
|
call dword [servetable2 + eax * 4]
|
||||||
|
|
||||||
|
call unprotect_from_terminate
|
||||||
popad
|
popad
|
||||||
;------------------
|
;------------------
|
||||||
xchg ecx, [ss:esp] ; <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - app ecx, ecx - app esp + 4
|
xchg ecx, [ss:esp] ; <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - app ecx, ecx - app esp + 4
|
||||||
@@ -62,8 +66,11 @@ align 16
|
|||||||
i40:
|
i40:
|
||||||
pushad
|
pushad
|
||||||
cld
|
cld
|
||||||
movzx eax, al
|
call protect_from_terminate
|
||||||
|
movzx eax, byte [esp+28]
|
||||||
|
mov edx, dword [esp+20]
|
||||||
call dword [servetable2 + eax * 4]
|
call dword [servetable2 + eax * 4]
|
||||||
|
call unprotect_from_terminate
|
||||||
popad
|
popad
|
||||||
iretd
|
iretd
|
||||||
|
|
||||||
@@ -85,10 +92,13 @@ syscall_entry:
|
|||||||
;------------------
|
;------------------
|
||||||
pushad
|
pushad
|
||||||
cld
|
cld
|
||||||
|
call protect_from_terminate
|
||||||
|
|
||||||
movzx eax, al
|
movzx eax, byte [esp+28]
|
||||||
|
mov edx, dword [esp+20]
|
||||||
call dword [servetable2 + eax * 4]
|
call dword [servetable2 + eax * 4]
|
||||||
|
|
||||||
|
call unprotect_from_terminate
|
||||||
popad
|
popad
|
||||||
;------------------
|
;------------------
|
||||||
mov ecx, [ss:esp+4]
|
mov ecx, [ss:esp+4]
|
||||||
@@ -125,7 +135,7 @@ iglobal
|
|||||||
dd sys_getkey ; 2-GetKey
|
dd sys_getkey ; 2-GetKey
|
||||||
dd sys_clock ; 3-GetTime
|
dd sys_clock ; 3-GetTime
|
||||||
dd syscall_writetext ; 4-WriteText
|
dd syscall_writetext ; 4-WriteText
|
||||||
dd delay_hs ; 5-DelayHs
|
dd delay_hs_unprotected ; 5-DelayHs
|
||||||
dd syscall_openramdiskfile ; 6-OpenRamdiskFile
|
dd syscall_openramdiskfile ; 6-OpenRamdiskFile
|
||||||
dd syscall_putimage ; 7-PutImage
|
dd syscall_putimage ; 7-PutImage
|
||||||
dd syscall_button ; 8-DefineButton
|
dd syscall_button ; 8-DefineButton
|
||||||
|
@@ -307,7 +307,6 @@ end if
|
|||||||
.failed:
|
.failed:
|
||||||
mov eax, [save_cr3]
|
mov eax, [save_cr3]
|
||||||
call set_cr3
|
call set_cr3
|
||||||
|
|
||||||
.err:
|
.err:
|
||||||
.err_hdr:
|
.err_hdr:
|
||||||
stdcall kernel_free, [file_base]
|
stdcall kernel_free, [file_base]
|
||||||
@@ -1076,6 +1075,7 @@ proc set_app_params stdcall,slot:dword, params:dword,\
|
|||||||
mov [eax+SLOT_BASE+APPDATA.fpu_state], edi
|
mov [eax+SLOT_BASE+APPDATA.fpu_state], edi
|
||||||
mov [eax+SLOT_BASE+APPDATA.exc_handler], 0
|
mov [eax+SLOT_BASE+APPDATA.exc_handler], 0
|
||||||
mov [eax+SLOT_BASE+APPDATA.except_mask], 0
|
mov [eax+SLOT_BASE+APPDATA.except_mask], 0
|
||||||
|
mov [eax+SLOT_BASE+APPDATA.terminate_protection], 80000001h
|
||||||
|
|
||||||
;set default io permission map
|
;set default io permission map
|
||||||
mov ecx, [SLOT_BASE+256+APPDATA.io_map]
|
mov ecx, [SLOT_BASE+256+APPDATA.io_map]
|
||||||
@@ -1200,6 +1200,14 @@ proc set_app_params stdcall,slot:dword, params:dword,\
|
|||||||
mov eax, [esi+0x08] ;app_eip
|
mov eax, [esi+0x08] ;app_eip
|
||||||
mov [ebx+REG_EIP], eax;app_entry
|
mov [ebx+REG_EIP], eax;app_entry
|
||||||
mov [ebx+REG_CS], dword app_code
|
mov [ebx+REG_CS], dword app_code
|
||||||
|
mov eax, [CURRENT_TASK]
|
||||||
|
shl eax, 8 ; created by kernel?
|
||||||
|
cmp [SLOT_BASE+eax+APPDATA.dir_table], sys_pgdir - OS_BASE
|
||||||
|
jnz @f
|
||||||
|
cmp [app_path], 0 ; it is a thread?
|
||||||
|
jnz @f
|
||||||
|
mov [ebx+REG_CS], dword os_code ; kernel thread
|
||||||
|
@@:
|
||||||
mov [ebx+REG_EFLAGS], dword EFL_IOPL1+EFL_IF
|
mov [ebx+REG_EFLAGS], dword EFL_IOPL1+EFL_IF
|
||||||
|
|
||||||
mov eax, [esi+0x0C] ;app_esp
|
mov eax, [esi+0x0C] ;app_esp
|
||||||
|
@@ -87,6 +87,8 @@ if lang eq ru
|
|||||||
if preboot_blogesc
|
if preboot_blogesc
|
||||||
boot_tasking db '<27><><EFBFBD> <20><>⮢<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>᪠, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
boot_tasking db '<27><><EFBFBD> <20><>⮢<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>᪠, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||||
end if
|
end if
|
||||||
|
else if lang eq sp
|
||||||
|
include 'data32sp.inc'
|
||||||
else
|
else
|
||||||
boot_initirq db 'Initialize IRQ',0
|
boot_initirq db 'Initialize IRQ',0
|
||||||
boot_picinit db 'Initialize PIC',0
|
boot_picinit db 'Initialize PIC',0
|
||||||
@@ -131,8 +133,10 @@ start_not_enough_memory db 'K : New Process - not enough memory',13,10,0
|
|||||||
|
|
||||||
msg_unresolved db 'unresolved ',0
|
msg_unresolved db 'unresolved ',0
|
||||||
msg_module db 'in module ',0
|
msg_module db 'in module ',0
|
||||||
|
if ~ lang eq sp
|
||||||
msg_version db 'incompatible driver version',13,10,0
|
msg_version db 'incompatible driver version',13,10,0
|
||||||
msg_www db 'please visit www.kolibrios.org',13,10,0
|
msg_www db 'please visit www.kolibrios.org',13,10,0
|
||||||
|
end if
|
||||||
msg_CR db 13,10,0
|
msg_CR db 13,10,0
|
||||||
|
|
||||||
intel_str db "GenuineIntel",0
|
intel_str db "GenuineIntel",0
|
||||||
@@ -155,7 +159,7 @@ firstapp db 'LAUNCHER',0
|
|||||||
notifyapp db '@notify',0
|
notifyapp db '@notify',0
|
||||||
if lang eq ru
|
if lang eq ru
|
||||||
ud_user_message db '<27>訡<EFBFBD><E8A8A1>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
ud_user_message db '<27>訡<EFBFBD><E8A8A1>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||||
else
|
else if ~ lang eq sp
|
||||||
ud_user_message db 'Error: unsupported processor instruction',0
|
ud_user_message db 'Error: unsupported processor instruction',0
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
40
kernel/branches/net/data32sp.inc
Normal file
40
kernel/branches/net/data32sp.inc
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
boot_initirq db 'Inicializar IRQ',0
|
||||||
|
boot_picinit db 'Inicializar PIC',0
|
||||||
|
boot_v86machine db 'Inicializar sistema V86',0
|
||||||
|
boot_inittimer db 'Inicializar reloj del sistema (IRQ0)',0
|
||||||
|
boot_initapic db 'Prueba inicializar APIC',0
|
||||||
|
boot_enableirq db 'Habilitar interrupciones 2, 6, 13, 14, 15',0
|
||||||
|
boot_enablint_ide db 'Habiliar interrupciones en controladores IDE',0
|
||||||
|
boot_detectfloppy db 'Buscar unidades de disquete',0
|
||||||
|
boot_detecthdcd db 'Buscar discos duros y unidades ATAPI',0
|
||||||
|
boot_getcache db 'Tomar memoria para cach<63>',0
|
||||||
|
boot_detectpart db 'Buscar particiones en discos',0
|
||||||
|
boot_init_sys db 'Inicializar directorio del sistema /sys',0
|
||||||
|
boot_loadlibs db 'Cargando librer<65>as (.obj)',0
|
||||||
|
boot_memdetect db 'Determinando cantidad de memoria',0
|
||||||
|
boot_tss db 'Configurando TSSs',0
|
||||||
|
boot_cpuid db 'Leyendo CPUIDs',0
|
||||||
|
; boot_devices db 'Detectando dispositivos',0
|
||||||
|
boot_setmouse db 'Configurando el rat<61>n',0
|
||||||
|
boot_windefs db 'Setting window defaults',0
|
||||||
|
boot_bgr db 'Calculating background',0
|
||||||
|
boot_resirqports db 'Reservando IRQs y puertos',0
|
||||||
|
boot_setostask db 'Configurando tarea OS',0
|
||||||
|
boot_allirqs db 'Desenmascarando IRQs',0
|
||||||
|
boot_tsc db 'Leyendo TSC',0
|
||||||
|
boot_cpufreq db 'La frequencia del CPU es ',' ',' MHz',0
|
||||||
|
boot_pal_ega db 'Configurando paleta EGA/CGA 320x200',0
|
||||||
|
boot_pal_vga db 'Configurando paleta VGA 640x480',0
|
||||||
|
boot_failed db 'Fallo al iniciar la primer aplicaci<63>n',0
|
||||||
|
boot_mtrr db 'Configurando MTRR',0
|
||||||
|
|
||||||
|
boot_APIC_found db 'APIC habilitado', 0
|
||||||
|
boot_APIC_nfound db 'APIC no encontrado', 0
|
||||||
|
if preboot_blogesc
|
||||||
|
boot_tasking db 'Todo configurado - presiona ESC para iniciar',0
|
||||||
|
end if
|
||||||
|
|
||||||
|
msg_version db 'versi<73>n incompatible del controlador',13,10,0
|
||||||
|
msg_www db 'por favor, visita www.kolibrios.org',13,10,0
|
||||||
|
|
||||||
|
ud_user_message db 'Error: instrucci<63>n no soportada por el procesador',0
|
@@ -450,7 +450,7 @@ ext2_get_inode_block:
|
|||||||
mov ebx, [ext2_data.ext2_temp_block]
|
mov ebx, [ext2_data.ext2_temp_block]
|
||||||
call ext2_get_block
|
call ext2_get_block
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz @F ;если не было ошибки
|
jnz @F ;если не было ошибки
|
||||||
|
|
||||||
mov ecx, [ebx + ecx*4] ;заносим результат
|
mov ecx, [ebx + ecx*4] ;заносим результат
|
||||||
@@:
|
@@:
|
||||||
@@ -895,15 +895,13 @@ ext2_HdRead:
|
|||||||
jae .size_great_great
|
jae .size_great_great
|
||||||
|
|
||||||
.size_great_less:
|
.size_great_less:
|
||||||
push 1
|
push 1 ;читаем по границе размера
|
||||||
; or [EXT2_files_in_folder], 1 ;читаем по границе размера
|
|
||||||
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
|
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
|
||||||
sub ecx, [esi] ;(размер - старт) = сколько читать
|
sub ecx, [esi] ;(размер - старт) = сколько читать
|
||||||
jmp @F
|
jmp @F
|
||||||
|
|
||||||
.size_great_great:
|
.size_great_great:
|
||||||
push 0
|
push 0 ;читаем столько сколько запросили
|
||||||
; and [EXT2_files_in_folder], 0 ;читаем столько сколько запросили
|
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
;здесь мы точно знаем сколько байт читать - ecx
|
;здесь мы точно знаем сколько байт читать - ecx
|
||||||
@@ -919,7 +917,7 @@ ext2_HdRead:
|
|||||||
mov eax, [esi]
|
mov eax, [esi]
|
||||||
div [ext2_data.block_size]
|
div [ext2_data.block_size]
|
||||||
|
|
||||||
push eax ;номер блока запоминаем
|
push eax ;счетчик блоков ложим в стек
|
||||||
|
|
||||||
push ecx
|
push ecx
|
||||||
mov ecx, eax
|
mov ecx, eax
|
||||||
@@ -949,7 +947,7 @@ ext2_HdRead:
|
|||||||
|
|
||||||
.zero_start:
|
.zero_start:
|
||||||
mov eax, ecx
|
mov eax, ecx
|
||||||
push 0 ;счетчик блоков
|
push 0 ;счетчик блоков ложим в стек
|
||||||
;теперь в eax кол-во оставшихся байт для чтения
|
;теперь в eax кол-во оставшихся байт для чтения
|
||||||
.calc_blocks_count:
|
.calc_blocks_count:
|
||||||
mov ebx, edi ;чтение блока прям в ->ebx
|
mov ebx, edi ;чтение блока прям в ->ebx
|
||||||
@@ -982,7 +980,7 @@ ext2_HdRead:
|
|||||||
inc ecx
|
inc ecx
|
||||||
call ext2_get_inode_block
|
call ext2_get_inode_block
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .error_at_finish_block
|
jnz .error_at_finish_block
|
||||||
|
|
||||||
mov edi, ebx
|
mov edi, ebx
|
||||||
mov eax, ecx
|
mov eax, ecx
|
||||||
@@ -994,9 +992,13 @@ ext2_HdRead:
|
|||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
rep movsb ;кусок last блока
|
rep movsb ;кусок last блока
|
||||||
|
jmp @F
|
||||||
|
|
||||||
.end_read:
|
.end_read:
|
||||||
pop ebx
|
pop ecx ;счетчик блоков, который хранился в стеке
|
||||||
pop eax
|
@@:
|
||||||
|
pop ebx ;количество считанных байт
|
||||||
|
pop eax ; 1 или 0 - достигли ли конца файла
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz @F
|
jz @F
|
||||||
|
|
||||||
@@ -1009,7 +1011,6 @@ ext2_HdRead:
|
|||||||
.only_one_block:
|
.only_one_block:
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
rep movsb ;кусок last блока
|
rep movsb ;кусок last блока
|
||||||
pop eax
|
|
||||||
jmp .end_read
|
jmp .end_read
|
||||||
|
|
||||||
.error_at_first_block:
|
.error_at_first_block:
|
||||||
@@ -1132,11 +1133,11 @@ ext2_find_lfn:
|
|||||||
sub eax, [ext2_data.count_block_in_block]
|
sub eax, [ext2_data.count_block_in_block]
|
||||||
jle .not_found
|
jle .not_found
|
||||||
|
|
||||||
|
push eax
|
||||||
inc ecx
|
inc ecx
|
||||||
jmp .folder_block_cycle
|
jmp .folder_block_cycle
|
||||||
|
|
||||||
.not_found:
|
.not_found:
|
||||||
pop ebx
|
|
||||||
mov eax, ERROR_FILE_NOT_FOUND
|
mov eax, ERROR_FILE_NOT_FOUND
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
13
kernel/branches/net/fs/fs-sp.inc
Normal file
13
kernel/branches/net/fs/fs-sp.inc
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
dir0:
|
||||||
|
db 'DISCO DURO '
|
||||||
|
db 'UNIDAD RAM '
|
||||||
|
db 'DISQUETE '
|
||||||
|
db 0
|
||||||
|
|
||||||
|
dir1:
|
||||||
|
db 'PRIMERO '
|
||||||
|
db 'SEGUNDO '
|
||||||
|
db 'TERCERO '
|
||||||
|
db 'CUARTO '
|
||||||
|
db 0
|
||||||
|
|
@@ -21,6 +21,10 @@ $Revision $
|
|||||||
|
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
|
|
||||||
|
if lang eq sp
|
||||||
|
include 'fs/fs-sp.inc'
|
||||||
|
else
|
||||||
dir0:
|
dir0:
|
||||||
db 'HARDDISK '
|
db 'HARDDISK '
|
||||||
db 'RAMDISK '
|
db 'RAMDISK '
|
||||||
@@ -33,6 +37,7 @@ dir1:
|
|||||||
db 'THIRD '
|
db 'THIRD '
|
||||||
db 'FOURTH '
|
db 'FOURTH '
|
||||||
db 0
|
db 0
|
||||||
|
end if
|
||||||
|
|
||||||
not_select_IDE db 0
|
not_select_IDE db 0
|
||||||
|
|
||||||
|
@@ -134,6 +134,15 @@ fs_additional_handlers:
|
|||||||
|
|
||||||
endg
|
endg
|
||||||
|
|
||||||
|
file_system_lfn_protected:
|
||||||
|
pushad
|
||||||
|
call protect_from_terminate
|
||||||
|
call file_system_lfn
|
||||||
|
call unprotect_from_terminate
|
||||||
|
popad
|
||||||
|
mov [image_of_eax], eax
|
||||||
|
mov [image_of_ebx], ebx
|
||||||
|
ret
|
||||||
|
|
||||||
file_system_lfn:
|
file_system_lfn:
|
||||||
; in: ebx->fileinfo block
|
; in: ebx->fileinfo block
|
||||||
|
@@ -467,9 +467,11 @@ sys_waitforevent: ;; f10
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
sys_wait_event_timeout: ;; f23
|
sys_wait_event_timeout: ;; f23
|
||||||
|
call unprotect_from_terminate
|
||||||
mov edx, get_event_for_app; wait_test
|
mov edx, get_event_for_app; wait_test
|
||||||
call Wait_events_ex ; ebx - timeout
|
call Wait_events_ex ; ebx - timeout
|
||||||
mov [esp+32], eax
|
mov [esp+32], eax
|
||||||
|
call protect_from_terminate
|
||||||
ret
|
ret
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
@@ -17,6 +17,8 @@ VKEY_RALT = 0000000000100000b
|
|||||||
VKEY_CAPSLOCK = 0000000001000000b
|
VKEY_CAPSLOCK = 0000000001000000b
|
||||||
VKEY_NUMLOCK = 0000000010000000b
|
VKEY_NUMLOCK = 0000000010000000b
|
||||||
VKEY_SCRLOCK = 0000000100000000b
|
VKEY_SCRLOCK = 0000000100000000b
|
||||||
|
VKEY_LWIN = 0000001000000000b
|
||||||
|
VKEY_RWIN = 0000010000000000b
|
||||||
|
|
||||||
VKEY_SHIFT = 0000000000000011b
|
VKEY_SHIFT = 0000000000000011b
|
||||||
VKEY_CONTROL = 0000000000001100b
|
VKEY_CONTROL = 0000000000001100b
|
||||||
@@ -224,6 +226,29 @@ send_scancode:
|
|||||||
xchg cl, [ext_code]
|
xchg cl, [ext_code]
|
||||||
and al, 0x7F
|
and al, 0x7F
|
||||||
mov bh, 1
|
mov bh, 1
|
||||||
|
;--------------------------------------
|
||||||
|
@@:
|
||||||
|
cmp al, 0x5B
|
||||||
|
jne @f
|
||||||
|
|
||||||
|
cmp cl, 0xE0
|
||||||
|
jne @f
|
||||||
|
|
||||||
|
mov eax, VKEY_LWIN
|
||||||
|
mov bh, 0
|
||||||
|
jmp .modifier
|
||||||
|
;--------------------------------------
|
||||||
|
@@:
|
||||||
|
cmp al, 0x5C
|
||||||
|
jne @f
|
||||||
|
|
||||||
|
cmp cl, 0xE0
|
||||||
|
jne @f
|
||||||
|
|
||||||
|
mov eax, VKEY_RWIN
|
||||||
|
mov bh, 0
|
||||||
|
jmp .modifier
|
||||||
|
;--------------------------------------
|
||||||
@@:
|
@@:
|
||||||
cmp al, 0x2A
|
cmp al, 0x2A
|
||||||
jne @f
|
jne @f
|
||||||
@@ -359,9 +384,6 @@ send_scancode:
|
|||||||
|
|
||||||
xor [kb_state], eax
|
xor [kb_state], eax
|
||||||
xor [kb_lights], bl
|
xor [kb_lights], bl
|
||||||
push ecx
|
|
||||||
call set_lights
|
|
||||||
pop ecx
|
|
||||||
.writekey:
|
.writekey:
|
||||||
pushad
|
pushad
|
||||||
; test for system hotkeys
|
; test for system hotkeys
|
||||||
@@ -495,10 +517,12 @@ set_lights:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
ps2_set_lights:
|
ps2_set_lights:
|
||||||
|
stdcall disable_irq, 1
|
||||||
mov al, 0xED
|
mov al, 0xED
|
||||||
call kb_write
|
call kb_write
|
||||||
mov al, [esp+8]
|
mov al, [esp+8]
|
||||||
call kb_write
|
call kb_write
|
||||||
|
stdcall enable_irq, 1
|
||||||
ret 8
|
ret 8
|
||||||
|
|
||||||
;// mike.dld ]
|
;// mike.dld ]
|
||||||
|
@@ -77,7 +77,7 @@ $Revision $
|
|||||||
USE_COM_IRQ equ 1 ; make irq 3 and irq 4 available for PCI devices
|
USE_COM_IRQ equ 1 ; make irq 3 and irq 4 available for PCI devices
|
||||||
|
|
||||||
; Enabling the next line will enable serial output console
|
; Enabling the next line will enable serial output console
|
||||||
;debug_com_base equ 0x2f8 ; 0x3f8 is com1, 0x2f8 is com2, 0x3e8 is com3, 0x2e8 is com4, no irq's are used
|
;debug_com_base equ 0x3f8 ; 0x3f8 is com1, 0x2f8 is com2, 0x3e8 is com3, 0x2e8 is com4, no irq's are used
|
||||||
|
|
||||||
include "proc32.inc"
|
include "proc32.inc"
|
||||||
include "kglobals.inc"
|
include "kglobals.inc"
|
||||||
@@ -133,13 +133,19 @@ use16
|
|||||||
org 0x0
|
org 0x0
|
||||||
jmp start_of_code
|
jmp start_of_code
|
||||||
|
|
||||||
version db 'Kolibri OS network branch ',13,10,13,10,0
|
if lang eq sp
|
||||||
|
include "kernelsp.inc" ; spanish kernel messages
|
||||||
|
else
|
||||||
|
version db 'Kolibri OS version 0.7.7.0+ ',13,10,13,10,0
|
||||||
|
end if
|
||||||
|
|
||||||
include "boot/bootstr.inc" ; language-independent boot messages
|
include "boot/bootstr.inc" ; language-independent boot messages
|
||||||
include "boot/preboot.inc"
|
include "boot/preboot.inc"
|
||||||
|
|
||||||
if lang eq en
|
if lang eq ge
|
||||||
include "boot/booteng.inc" ; english system boot messages
|
include "boot/bootge.inc" ; german system boot messages
|
||||||
|
else if lang eq sp
|
||||||
|
include "boot/bootsp.inc" ; spanish system boot messages
|
||||||
else if lang eq ru
|
else if lang eq ru
|
||||||
include "boot/bootru.inc" ; russian system boot messages
|
include "boot/bootru.inc" ; russian system boot messages
|
||||||
include "boot/ru.inc" ; Russian font
|
include "boot/ru.inc" ; Russian font
|
||||||
@@ -147,7 +153,7 @@ else if lang eq et
|
|||||||
include "boot/bootet.inc" ; estonian system boot messages
|
include "boot/bootet.inc" ; estonian system boot messages
|
||||||
include "boot/et.inc" ; Estonian font
|
include "boot/et.inc" ; Estonian font
|
||||||
else
|
else
|
||||||
include "boot/bootge.inc" ; german system boot messages
|
include "boot/booten.inc" ; english system boot messages
|
||||||
end if
|
end if
|
||||||
|
|
||||||
include "boot/bootcode.inc" ; 16 bit system boot code
|
include "boot/bootcode.inc" ; 16 bit system boot code
|
||||||
@@ -608,6 +614,52 @@ no_mode_0x12:
|
|||||||
mov [mem_BACKGROUND], 4
|
mov [mem_BACKGROUND], 4
|
||||||
mov [img_background], static_background_data
|
mov [img_background], static_background_data
|
||||||
|
|
||||||
|
; SET UP OS TASK
|
||||||
|
|
||||||
|
mov esi, boot_setostask
|
||||||
|
call boot_log
|
||||||
|
|
||||||
|
xor eax, eax
|
||||||
|
mov dword [SLOT_BASE+APPDATA.fpu_state], fpu_data
|
||||||
|
mov dword [SLOT_BASE+APPDATA.exc_handler], eax
|
||||||
|
mov dword [SLOT_BASE+APPDATA.except_mask], eax
|
||||||
|
|
||||||
|
; name for OS/IDLE process
|
||||||
|
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I'
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
|
||||||
|
mov edi, [os_stack_seg]
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
|
||||||
|
add edi, 0x2000-512
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.saved_esp0], edi; just for case
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.terminate_protection], 80000001h
|
||||||
|
|
||||||
|
mov esi, fpu_data
|
||||||
|
mov ecx, 512/4
|
||||||
|
cld
|
||||||
|
rep movsd
|
||||||
|
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.exc_handler], eax
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.except_mask], eax
|
||||||
|
|
||||||
|
mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
|
||||||
|
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.cur_dir], sysdir_path
|
||||||
|
mov dword [SLOT_BASE+256+APPDATA.tls_base], eax
|
||||||
|
|
||||||
|
; task list
|
||||||
|
mov dword [TASK_DATA+TASKDATA.mem_start], eax; process base address
|
||||||
|
inc eax
|
||||||
|
mov dword [CURRENT_TASK], eax
|
||||||
|
mov dword [TASK_COUNT], eax
|
||||||
|
mov [current_slot], SLOT_BASE+256
|
||||||
|
mov [TASK_BASE], dword TASK_DATA
|
||||||
|
mov byte[TASK_DATA+TASKDATA.wnd_number], al ; on screen number
|
||||||
|
mov dword [TASK_DATA+TASKDATA.pid], eax ; process id number
|
||||||
|
|
||||||
mov [SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
|
mov [SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
|
||||||
|
|
||||||
; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f
|
; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f
|
||||||
@@ -718,6 +770,8 @@ end if
|
|||||||
movzx ecx, word [boot_y]
|
movzx ecx, word [boot_y]
|
||||||
if lang eq ru
|
if lang eq ru
|
||||||
or ecx, (10+30*6) shl 16
|
or ecx, (10+30*6) shl 16
|
||||||
|
else if lang eq sp
|
||||||
|
or ecx, (10+33*6) shl 16
|
||||||
else
|
else
|
||||||
or ecx, (10+29*6) shl 16
|
or ecx, (10+29*6) shl 16
|
||||||
end if
|
end if
|
||||||
@@ -739,7 +793,6 @@ end if
|
|||||||
|
|
||||||
mov [pci_access_enabled], 1
|
mov [pci_access_enabled], 1
|
||||||
|
|
||||||
|
|
||||||
; SET PRELIMINARY WINDOW STACK AND POSITIONS
|
; SET PRELIMINARY WINDOW STACK AND POSITIONS
|
||||||
|
|
||||||
mov esi, boot_windefs
|
mov esi, boot_windefs
|
||||||
@@ -759,52 +812,6 @@ end if
|
|||||||
call boot_log
|
call boot_log
|
||||||
call reserve_irqs_ports
|
call reserve_irqs_ports
|
||||||
|
|
||||||
; SET UP OS TASK
|
|
||||||
|
|
||||||
mov esi, boot_setostask
|
|
||||||
call boot_log
|
|
||||||
|
|
||||||
xor eax, eax
|
|
||||||
mov dword [SLOT_BASE+APPDATA.fpu_state], fpu_data
|
|
||||||
mov dword [SLOT_BASE+APPDATA.exc_handler], eax
|
|
||||||
mov dword [SLOT_BASE+APPDATA.except_mask], eax
|
|
||||||
|
|
||||||
; name for OS/IDLE process
|
|
||||||
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I'
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
|
|
||||||
mov edi, [os_stack_seg]
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
|
|
||||||
add edi, 0x2000-512
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.saved_esp0], edi; just for case
|
|
||||||
; [SLOT_BASE+256+APPDATA.io_map] was set earlier
|
|
||||||
|
|
||||||
mov esi, fpu_data
|
|
||||||
mov ecx, 512/4
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.exc_handler], eax
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.except_mask], eax
|
|
||||||
|
|
||||||
mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
|
|
||||||
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.cur_dir], sysdir_path
|
|
||||||
mov dword [SLOT_BASE+256+APPDATA.tls_base], eax
|
|
||||||
|
|
||||||
; task list
|
|
||||||
mov dword [TASK_DATA+TASKDATA.mem_start], eax; process base address
|
|
||||||
inc eax
|
|
||||||
mov dword [CURRENT_TASK], eax
|
|
||||||
mov dword [TASK_COUNT], eax
|
|
||||||
mov [current_slot], SLOT_BASE+256
|
|
||||||
mov [TASK_BASE], dword TASK_DATA
|
|
||||||
mov byte[TASK_DATA+TASKDATA.wnd_number], al ; on screen number
|
|
||||||
mov dword [TASK_DATA+TASKDATA.pid], eax ; process id number
|
|
||||||
|
|
||||||
call init_display
|
call init_display
|
||||||
mov eax, [def_cursor]
|
mov eax, [def_cursor]
|
||||||
mov [SLOT_BASE+APPDATA.cursor], eax
|
mov [SLOT_BASE+APPDATA.cursor], eax
|
||||||
@@ -841,6 +848,8 @@ end if
|
|||||||
movzx ecx, word [boot_y]
|
movzx ecx, word [boot_y]
|
||||||
if lang eq ru
|
if lang eq ru
|
||||||
add ecx, (10+19*6) shl 16 - 10 ; 'Determining amount of memory'
|
add ecx, (10+19*6) shl 16 - 10 ; 'Determining amount of memory'
|
||||||
|
else if lang eq sp
|
||||||
|
add ecx, (10+25*6) shl 16 - 10 ; 'Determining amount of memory'
|
||||||
else
|
else
|
||||||
add ecx, (10+17*6) shl 16 - 10 ; 'Determining amount of memory'
|
add ecx, (10+17*6) shl 16 - 10 ; 'Determining amount of memory'
|
||||||
end if
|
end if
|
||||||
@@ -912,8 +921,8 @@ end if
|
|||||||
call fs_execute_from_sysdir
|
call fs_execute_from_sysdir
|
||||||
|
|
||||||
; cmp eax,2 ; continue if a process has been loaded
|
; cmp eax,2 ; continue if a process has been loaded
|
||||||
sub eax, 2
|
test eax, eax
|
||||||
jz first_app_found
|
jns first_app_found
|
||||||
|
|
||||||
mov esi, boot_failed
|
mov esi, boot_failed
|
||||||
call boot_log
|
call boot_log
|
||||||
@@ -2089,17 +2098,21 @@ sysfn_terminate: ; 18.2 = TERMINATE
|
|||||||
push ecx
|
push ecx
|
||||||
cmp ecx, 2
|
cmp ecx, 2
|
||||||
jb noprocessterminate
|
jb noprocessterminate
|
||||||
|
mov edx, [TASK_COUNT]
|
||||||
cmp ecx, [TASK_COUNT]
|
cmp ecx, edx
|
||||||
ja noprocessterminate
|
ja noprocessterminate
|
||||||
|
|
||||||
shl ecx, 5
|
|
||||||
mov eax, [TASK_COUNT]
|
mov eax, [TASK_COUNT]
|
||||||
|
shl ecx, 5
|
||||||
mov edx, [ecx+CURRENT_TASK+TASKDATA.pid]
|
mov edx, [ecx+CURRENT_TASK+TASKDATA.pid]
|
||||||
|
|
||||||
add ecx, CURRENT_TASK+TASKDATA.state
|
add ecx, CURRENT_TASK+TASKDATA.state
|
||||||
cmp byte [ecx], 9
|
cmp byte [ecx], 9
|
||||||
jz noprocessterminate
|
jz noprocessterminate
|
||||||
|
push ecx edx
|
||||||
|
lea edx, [(ecx-(CURRENT_TASK and 1FFFFFFFh)-TASKDATA.state)*8+SLOT_BASE]
|
||||||
|
call request_terminate
|
||||||
|
pop edx ecx
|
||||||
|
test eax, eax
|
||||||
|
jz noprocessterminate
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; terminate all network sockets it used
|
; terminate all network sockets it used
|
||||||
pusha
|
pusha
|
||||||
@@ -3476,15 +3489,31 @@ nobackgr:
|
|||||||
mov edx, [shutdown_processes]
|
mov edx, [shutdown_processes]
|
||||||
|
|
||||||
cmp [SYS_SHUTDOWN], dl
|
cmp [SYS_SHUTDOWN], dl
|
||||||
jne no_mark_system_shutdown
|
jne noshutdown
|
||||||
|
|
||||||
lea ecx, [edx-1]
|
lea ecx, [edx-1]
|
||||||
mov edx, OS_BASE+0x3040
|
mov edx, OS_BASE+0x3040
|
||||||
jecxz @f
|
jecxz no_mark_system_shutdown
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
markz:
|
markz:
|
||||||
|
push ecx edx
|
||||||
|
cmp [edx+TASKDATA.state], 9
|
||||||
|
jz .nokill
|
||||||
|
lea edx, [(edx-(CURRENT_TASK and 1FFFFFFFh))*8+SLOT_BASE]
|
||||||
|
cmp [edx+APPDATA.dir_table], sys_pgdir - OS_BASE
|
||||||
|
jz .nokill
|
||||||
|
call request_terminate
|
||||||
|
jmp .common
|
||||||
|
.nokill:
|
||||||
|
dec byte [SYS_SHUTDOWN]
|
||||||
|
xor eax, eax
|
||||||
|
.common:
|
||||||
|
pop edx ecx
|
||||||
|
test eax, eax
|
||||||
|
jz @f
|
||||||
mov [edx+TASKDATA.state], byte 3
|
mov [edx+TASKDATA.state], byte 3
|
||||||
|
@@:
|
||||||
add edx, 0x20
|
add edx, 0x20
|
||||||
loop markz
|
loop markz
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
@@ -3504,11 +3533,20 @@ align 4
|
|||||||
newct:
|
newct:
|
||||||
mov cl, [ebx]
|
mov cl, [ebx]
|
||||||
cmp cl, byte 3
|
cmp cl, byte 3
|
||||||
jz terminate
|
jz .terminate
|
||||||
|
|
||||||
cmp cl, byte 4
|
cmp cl, byte 4
|
||||||
jz terminate
|
jnz .noterminate
|
||||||
|
.terminate:
|
||||||
|
pushad
|
||||||
|
call terminate
|
||||||
|
popad
|
||||||
|
cmp byte [SYS_SHUTDOWN], 0
|
||||||
|
jz .noterminate
|
||||||
|
dec byte [SYS_SHUTDOWN]
|
||||||
|
je system_shutdown
|
||||||
|
|
||||||
|
.noterminate:
|
||||||
add ebx, 0x20
|
add ebx, 0x20
|
||||||
inc esi
|
inc esi
|
||||||
dec eax
|
dec eax
|
||||||
@@ -3718,6 +3756,15 @@ set_app_param:
|
|||||||
mov [esp+32], eax ; return old mask value
|
mov [esp+32], eax ; return old mask value
|
||||||
ret
|
ret
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
; this is for syscall
|
||||||
|
proc delay_hs_unprotected
|
||||||
|
call unprotect_from_terminate
|
||||||
|
call delay_hs
|
||||||
|
call protect_from_terminate
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
delay_hs: ; delay in 1/100 secs
|
delay_hs: ; delay in 1/100 secs
|
||||||
; ebx = delay time
|
; ebx = delay time
|
||||||
@@ -5606,4 +5653,6 @@ include "data32.inc"
|
|||||||
__REV__ = __REV
|
__REV__ = __REV
|
||||||
|
|
||||||
uglobals_size = $ - endofcode
|
uglobals_size = $ - endofcode
|
||||||
|
if ~ lang eq sp
|
||||||
diff16 "end of kernel code",0,$
|
diff16 "end of kernel code",0,$
|
||||||
|
end if
|
||||||
|
@@ -137,7 +137,7 @@ struct APPDATA
|
|||||||
ipc_size dd ?
|
ipc_size dd ?
|
||||||
event_mask dd ?
|
event_mask dd ?
|
||||||
debugger_slot dd ?
|
debugger_slot dd ?
|
||||||
dd ?
|
terminate_protection dd ?
|
||||||
keyboard_mode db ?
|
keyboard_mode db ?
|
||||||
rb 3
|
rb 3
|
||||||
dir_table dd ?
|
dir_table dd ?
|
||||||
|
4
kernel/branches/net/kernelsp.inc
Normal file
4
kernel/branches/net/kernelsp.inc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
; <EFBFBD>ste archivo debe ser editado con codificaci<EFBFBD>n CP866
|
||||||
|
|
||||||
|
version db 'Kolibri OS versi<73>n 0.7.7.0+ ',13,10,13,10,0
|
||||||
|
diff16 "fin del c<>digo del kernel",0,$
|
@@ -291,11 +291,15 @@ stack_handler:
|
|||||||
align 4
|
align 4
|
||||||
NET_link_changed:
|
NET_link_changed:
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
DEBUGF 1,"NET_link_changed: %x\n", ebx
|
DEBUGF 1,"NET_link_changed: %x\n", ebx
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
NET_send_event:
|
NET_send_event:
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
DEBUGF 1,"NET_send_event\n"
|
DEBUGF 1,"NET_send_event\n"
|
||||||
|
|
||||||
; Send event to all applications
|
; Send event to all applications
|
||||||
@@ -330,8 +334,7 @@ NET_add_device:
|
|||||||
|
|
||||||
DEBUGF 1,"NET_Add_Device: %x\n", ebx ;;; TODO: use mutex to lock net device list
|
DEBUGF 1,"NET_Add_Device: %x\n", ebx ;;; TODO: use mutex to lock net device list
|
||||||
|
|
||||||
mov eax, [NET_RUNNING]
|
cmp [NET_RUNNING], MAX_NET_DEVICES
|
||||||
cmp eax, MAX_NET_DEVICES
|
|
||||||
jae .error
|
jae .error
|
||||||
|
|
||||||
;----------------------------------
|
;----------------------------------
|
||||||
|
@@ -1,58 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
$Revision$
|
|
||||||
|
|
||||||
|
|
||||||
;
|
|
||||||
; Call of videomode driver's functions
|
|
||||||
;
|
|
||||||
; (Add in System function 21 (and/or 26) as a subfunction 13)
|
|
||||||
;
|
|
||||||
; Author: Trans
|
|
||||||
; Date: 19.07.2003
|
|
||||||
;
|
|
||||||
; Include in MeOS kernel and compile with FASM
|
|
||||||
;
|
|
||||||
|
|
||||||
uglobal
|
|
||||||
old_screen_width dd ?
|
|
||||||
old_screen_height dd ?
|
|
||||||
endg
|
|
||||||
|
|
||||||
; cmp eax,13 ; CALL VIDEOMODE DRIVER FUNCTIONS
|
|
||||||
dec ebx
|
|
||||||
jnz .no_vmode_drv_access
|
|
||||||
pushd [Screen_Max_X] [Screen_Max_Y]
|
|
||||||
popd [old_screen_height] [old_screen_width]
|
|
||||||
or eax,-1 ; If driver is absent then eax does not change
|
|
||||||
call (VMODE_BASE+0x100) ; Entry point of video driver
|
|
||||||
mov [esp+36-4],eax
|
|
||||||
mov [esp+24-4],ebx
|
|
||||||
mov [esp+32-4],ecx
|
|
||||||
; mov [esp+28],edx
|
|
||||||
mov eax,[old_screen_width]
|
|
||||||
mov ebx,[old_screen_height]
|
|
||||||
sub eax,[Screen_Max_X]
|
|
||||||
jnz @f
|
|
||||||
sub ebx,[Screen_Max_Y]
|
|
||||||
jz .resolution_wasnt_changed
|
|
||||||
jmp .lp1
|
|
||||||
@@: sub ebx,[Screen_Max_Y]
|
|
||||||
.lp1: sub [screen_workarea.right],eax
|
|
||||||
sub [screen_workarea.bottom],ebx
|
|
||||||
|
|
||||||
call repos_windows
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
mov ecx, [Screen_Max_X]
|
|
||||||
mov edx, [Screen_Max_Y]
|
|
||||||
call calculatescreen
|
|
||||||
|
|
||||||
.resolution_wasnt_changed:
|
|
||||||
ret
|
|
||||||
.no_vmode_drv_access:
|
|
@@ -1,35 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
$Revision$
|
|
||||||
|
|
||||||
|
|
||||||
;
|
|
||||||
; Load of videomode driver in memory
|
|
||||||
;
|
|
||||||
; (driver is located at VMODE_BASE - 32kb) // if this area not occuped anything
|
|
||||||
;
|
|
||||||
; Author: Trans
|
|
||||||
; Date: 19.07.2003
|
|
||||||
;
|
|
||||||
; Include in MeOS kernel and compile with FASM
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
; LOAD VIDEOMODE DRIVER
|
|
||||||
; If vmode.mdr file not found
|
|
||||||
or eax,-1 ; Driver ID = -1 (not present in system)
|
|
||||||
mov [VMODE_BASE],eax ;
|
|
||||||
mov [VMODE_BASE+0x100],byte 0xC3 ; Instruction RETN - driver loop
|
|
||||||
|
|
||||||
stdcall read_file, vmode, VMODE_BASE, 0, 0x8000 ;{SPraid.simba}
|
|
||||||
; mov esi, vmode
|
|
||||||
; xor ebx, ebx
|
|
||||||
; mov ecx, 0x8000 ; size of memory area for driver
|
|
||||||
; mov edx, VMODE_BASE ; Memory position of driver
|
|
||||||
; xor ebp, ebp
|
|
||||||
; call fs_RamdiskRead
|
|
Reference in New Issue
Block a user