Synced net branch with trunk (#3358)

git-svn-id: svn://kolibrios.org@3359 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr
2013-03-10 12:28:37 +00:00
parent 7e246790ed
commit cc4161de83
65 changed files with 6785 additions and 6056 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 ]

View File

@@ -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

View File

@@ -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 ?

View 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,$

View File

@@ -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
;---------------------------------- ;----------------------------------

View File

@@ -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:

View File

@@ -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