Mario79 fixes:

Application can determine own path now.
Some boot messages changed (it is version Kolibri 5.1.0 now).
Some rd functions updated (thanks to michael).
Switch to another bank-switching procedure.

git-svn-id: svn://kolibrios.org@5 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Andrey Halyavin (halyavin) 2005-10-13 05:34:10 +00:00
parent b420f2df50
commit bc47ee30d7
9 changed files with 143 additions and 117 deletions

View File

@ -5,6 +5,82 @@
;; Addings by M.Lisovin ;; ;; Addings by M.Lisovin ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; calculate fat chain
calculatefatchain:
pushad
mov esi,0x100000+512
mov edi,0x280000
fcnew:
mov eax,dword [esi]
mov ebx,dword [esi+4]
mov ecx,dword [esi+8]
mov edx,ecx
shr edx,4 ;8 ok
shr dx,4 ;7 ok
xor ch,ch
shld ecx,ebx,20 ;6 ok
shr cx,4 ;5 ok
shld ebx,eax,12
and ebx,0x0fffffff ;4 ok
shr bx,4 ;3 ok
shl eax,4
and eax,0x0fffffff ;2 ok
shr ax,4 ;1 ok
mov dword [edi],eax
add edi,4
mov dword [edi],ebx
add edi,4
mov dword [edi],ecx
add edi,4
mov dword [edi],edx
add edi,4
add esi,12
cmp edi,0x280000+2856*2 ;2849 clusters
jnz fcnew
popad
ret
restorefatchain: ; restore fat chain
pushad
mov esi,0x280000
mov edi,0x100000+512
fcnew2:
mov eax,dword [esi]
mov ebx,dword [esi+4]
shl ax,4
shl eax,4
shl bx,4
shr ebx,4
shrd eax,ebx,8
shr ebx,8
mov dword [edi],eax
add edi,4
mov word [edi],bx
add edi,2
add esi,8
cmp edi,0x100000+512+4278 ;4274 bytes - all used FAT
jb fcnew2
mov esi,0x100000+512 ; duplicate fat chain
mov edi,0x100000+512+0x1200
mov ecx,1069 ;4274/4
cld
rep movsd
popad
ret
ramdisk_free_space: ramdisk_free_space:
;--------------------------------------------- ;---------------------------------------------
@ -18,7 +94,7 @@ ramdisk_free_space:
mov edi,0x280000 ;start of FAT mov edi,0x280000 ;start of FAT
xor ax,ax ;Free cluster=0x0000 in FAT xor ax,ax ;Free cluster=0x0000 in FAT
xor ebx,ebx ;counter xor ebx,ebx ;counter
mov ecx,2847 ;2849 ;2849 clusters mov ecx,2849 ;2849 clusters
cld cld
rdfs1: rdfs1:
repne scasw repne scasw
@ -122,7 +198,7 @@ fileread:
push edx push edx
mov edx,ecx mov edx,ecx
add edx,ebx add edx,ebx
cmp edx,14 ;ebx+ecx=14 cmp edx,15 ;ebx+ecx=14+1
pushf pushf
jbe fr_do1 jbe fr_do1
sub edx,14 sub edx,14
@ -136,7 +212,7 @@ fileread:
rep movsd rep movsd
popf popf
pop edx pop edx
; jae fr_do2 jae fr_do2
xor eax,eax ; ok read xor eax,eax ; ok read
xor ebx,ebx xor ebx,ebx
ret ret

View File

@ -46,9 +46,11 @@ d80x25: line_full_top
line_space line_space
line_space line_space
line_space line_space
line_space ; line_space
db 186,' Kolibri OS comes with ABSOLUTELY NO WARR' db 186,' KolibriOS based on MenuetOS and comes with ABSOLUTELY '
db 'ANTY; See file COPYING for details ',186 db 'NO WARRANTY ',186
db 186,' See file COPYING for details '
db ' ',186
line_full_bottom line_full_bottom
novesa db "Display: EGA/CGA",13,10,0 novesa db "Display: EGA/CGA",13,10,0
@ -78,7 +80,7 @@ gr_direct db 186," Use direct LFB writing? "
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / " ;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0 ; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0 bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
bdev db 13,10,186 bdev db 186
db " Load ramdisk from [1-floppy; 2-C:\menuet.img (FAT32);" db " Load ramdisk from [1-floppy; 2-C:\menuet.img (FAT32);"
db 13,10,186," " db 13,10,186," "
db "3-use preloaded ram-image from kernel restart]: ",0 db "3-use preloaded ram-image from kernel restart]: ",0

View File

@ -46,9 +46,11 @@ d80x25: line_full_top
line_space line_space
line_space line_space
line_space line_space
line_space ; line_space
db 186,' Kolibri OS ­¥ ¯à¥¤®áâ ¢«ï¥â ­¨ª ª¨å £ àa' db 186,' Kolibri OS ®á­®¢ ­  ­  Menuet OS ¨ ­¥ ¯à¥¤®áâ ¢«ï¥â '
db '­â¨©; <20>®¤à®¡­¥¥ - á¬. GNU.TXT ',186 db '­¨ª ª¨å £ àa­â¨©. ',186
db 186,' <20>®¤à®¡­¥¥ ᬮâà¨â¥ ä ©« GNU.TXT '
db ' ',186
line_full_bottom line_full_bottom
novesa db "‚¨¤¥®ª àâ : EGA/CGA",13,10,0 novesa db "‚¨¤¥®ª àâ : EGA/CGA",13,10,0

View File

@ -17,7 +17,7 @@ preboot_device db 0 ; boot device
;;preboot_memory db 0 ; amount of memory ;;preboot_memory db 0 ; amount of memory
; (1-16Mb;2-32Mb;3-64Mb;4-128Mb;5-256Mb) ; (1-16Mb;2-32Mb;3-64Mb;4-128Mb;5-256Mb)
; !!!! 0 - autodetect !!!! ; !!!! 0 - autodetect !!!!
preboot_blogesc db 0 ; start immediately after bootlog preboot_blogesc db 1 ; start immediately after bootlog
hdsysimage db 'MENUET IMG' ; load from hdsysimage db 'MENUET IMG' ; load from
image_save db 'MENUET IMG' ; save to image_save db 'MENUET IMG' ; save to

View File

@ -63,6 +63,7 @@ new_start_application_floppy:
;result: ;result:
; eax - pid of new process ; eax - pid of new process
; or 0 if call fails. ; or 0 if call fails.
mov [appl_path],edi
pushad pushad
mov esi,new_process_loading mov esi,new_process_loading
call sys_msg_board_str ;write to debug board call sys_msg_board_str ;write to debug board
@ -95,13 +96,17 @@ new_start_application_floppy:
rep stosd ;clean extended information about process rep stosd ;clean extended information about process
;set new process name ;set new process name
mov eax,[esp+8] xor eax,eax
mov [appl_path_size],eax
mov eax,[esp] ;+8]
.find_last_byte: .find_last_byte:
cmp byte [eax],0 cmp byte [eax],0
jz .find_last_byte_end jz .find_last_byte_end
inc eax inc eax
inc [appl_path_size]
jmp .find_last_byte jmp .find_last_byte
.find_last_byte_end: .find_last_byte_end:
add [appl_path_size],24
sub eax,11 ;last 11 bytes = application name sub eax,11 ;last 11 bytes = application name
; mov eax,[esp] ;eax - pointer to file name ; mov eax,[esp] ;eax - pointer to file name
mov ebx,[new_process_place] mov ebx,[new_process_place]
@ -217,6 +222,8 @@ new_start_application_fl:
;result: ;result:
; eax - pid of new process ; eax - pid of new process
; or 0 if call fails. ; or 0 if call fails.
mov [appl_path],edi
mov [appl_path_size],36
pushad pushad
mov esi,new_process_loading mov esi,new_process_loading
call sys_msg_board_str ;write to debug board call sys_msg_board_str ;write to debug board
@ -406,6 +413,16 @@ new_start_application_fl:
call write_process_memory ;copy parameters to new process address space call write_process_memory ;copy parameters to new process address space
.no_command_line: .no_command_line:
;******************************************************************
mov edx,[app_i_icon]
test edx,edx
jz .no_command_line_1 ;application don't need path of file
mov ebx,[appl_path]
mov ecx,[appl_path_size]
mov eax,[new_process_place]
call write_process_memory ;copy path of file to new process address space
.no_command_line_1:
;******************************************************************
mov ebx,[new_process_place] mov ebx,[new_process_place]
mov eax,ebx mov eax,ebx
shl ebx,5 shl ebx,5
@ -1130,6 +1147,7 @@ new_start_application_hd:
;ebx - file name length ;ebx - file name length
;ecx - work area (kernel address) ;ecx - work area (kernel address)
;ebp - parameters ;ebp - parameters
mov [appl_path],edi
pushad pushad
mov esi,new_process_loading mov esi,new_process_loading
@ -1156,13 +1174,17 @@ new_start_application_hd:
jz .failed jz .failed
;write application name ;write application name
xor eax,eax
mov [appl_path_size],eax
mov eax,[esp+4] mov eax,[esp+4]
.find_last_byte: .find_last_byte:
cmp byte [eax],0 cmp byte [eax],0
jz .find_last_byte_end jz .find_last_byte_end
inc eax inc eax
inc [appl_path_size]
jmp .find_last_byte jmp .find_last_byte
.find_last_byte_end: .find_last_byte_end:
add [appl_path_size],24
lea esi,[eax-11] ;last 11 bytes = application name lea esi,[eax-11] ;last 11 bytes = application name
mov edi,[new_process_place] mov edi,[new_process_place]
shl edi,8 shl edi,8

View File

@ -1134,6 +1134,8 @@ uglobal
app_mem_pos dd 0x0 app_mem_pos dd 0x0
;thread_create dd 0x0 ;thread_create dd 0x0
;gdt_place dd 0x0 ;gdt_place dd 0x0
appl_path dd 0x0
appl_path_size dd 0x0
endg endg
iglobal iglobal
@ -1154,8 +1156,6 @@ sys_threads:
; on return : eax = pid ; on return : eax = pid
jmp new_sys_threads jmp new_sys_threads
iglobal iglobal
process_terminating db 'K : Process - terminating',13,10,0 process_terminating db 'K : Process - terminating',13,10,0
process_terminated db 'K : Process - done',13,10,0 process_terminated db 'K : Process - done',13,10,0

View File

@ -83,11 +83,13 @@ partition_data_transfer:
transfer_adress dd 0 transfer_adress dd 0
partition_data_transfer_1: partition_data_transfer_1:
cli cli
push edi
mov edi,PARTITION_START mov edi,PARTITION_START
mov esi,[transfer_adress] mov esi,[transfer_adress]
xor ecx,ecx xor ecx,ecx
mov cx,69 ;100 mov cx,69 ;100
rep movsb rep movsb
pop edi
sti sti
ret ret

View File

@ -86,7 +86,7 @@ drawbar dd __sys_drawbar
putpixel dd __sys_putpixel putpixel dd __sys_putpixel
; } mike.dld ; } mike.dld
version db 'Kolibri OS version 0.5.0.0 ',13,10,13,10,0 version db 'Kolibri OS version 0.5.1.0 ',13,10,13,10,0
;dd endofcode-0x10000 ;dd endofcode-0x10000
;db 'Boot02' ;db 'Boot02'
@ -2269,7 +2269,7 @@ keyboard_mode_sys db 0
iglobal iglobal
version_inf: version_inf:
db 0,5,0,0 ; version 0.5.0.0 db 0,5,1,0 ; version 0.5.1.0
db UID_KOLIBRI db UID_KOLIBRI
db 'Kolibri',0 db 'Kolibri',0
version_end: version_end:
@ -4131,101 +4131,6 @@ memmove: ; memory move in bytes
ret ret
; calculate fat chain
calculatefatchain:
pushad
mov esi,0x100000+512
mov edi,0x280000
fcnew:
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
mov al,[esi+0] ; 1
mov bl,[esi+1]
and ebx,15
shl ebx,8
add eax,ebx
mov [edi],ax
add edi,2
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
mov bl,[esi+1] ; 2
mov cl,[esi+2]
shr ebx,4
shl ecx,4
add ecx,ebx
mov [edi],cx
add edi,2
add esi,3
cmp edi,0x280000+4100*4
jnz fcnew
popad
ret
restorefatchain: ; restore fat chain
pushad
mov esi,0x280000
mov edi,0x100000+512
fcnew2:
cld
xor eax,eax
xor ebx,ebx
xor ecx,ecx ; esi XXXXxxxxxxxx yyyyyyyyYYYY
xor edx,edx
mov ax,[esi] ; edi xxxxxxxx YYYYXXXX yyyyyyyy
mov bx,ax
shr bx,8
and ebx,15
mov [edi+0],al ; 1 -> 1 & 2
mov [edi+1],bl
add esi,2
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
mov bx,[esi]
mov cx,bx
shr ecx,4
mov [edi+2],cl
and ebx,15
shl ebx,4
mov edx,[edi+1]
add edx,ebx
mov [edi+1],dl ; 2 -> 2 & 3
add esi,2
add edi,3
cmp edi,0x100000+512+0x1200
jb fcnew2
mov esi,0x100000+512 ; duplicate fat chain
mov edi,0x100000+512+0x1200
mov ecx,0x1200/4
cld
rep movsd
popad
ret
align 4 align 4
read_floppy_file: read_floppy_file:

View File

@ -27,9 +27,26 @@
; Modifying the set_bank -function is mostly enough ; Modifying the set_bank -function is mostly enough
; for different Vesa 1.2 setups. ; for different Vesa 1.2 setups.
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!{ ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; set_bank for Trident videocards, work on Trident 9440
; modified by Mario79
;set_bank:
;cli
;cmp al,[0xfff2]
;je retsb
;mov [0xfff2],al
;push dx
;mov dx,3D8h
;out dx,al
;pop dx
;retsb:
;sti
;ret
; set_bank modified by kmeaw
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; set_bank for S3 videocards, work on S3 ViRGE PCI (325)
; modified by kmeaw
set_bank: set_bank:
cli cli
cmp al,[0xfff2] cmp al,[0xfff2]