t_edit can open kpack-ed files

git-svn-id: svn://kolibrios.org@9485 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2021-12-27 14:55:00 +00:00
parent 493083429e
commit 8be74c2de6
5 changed files with 230 additions and 34 deletions

View File

@@ -22,6 +22,8 @@ include '../../../../KOSfuncs.inc'
include 'box_lib.mac' ;macro which should make life easier :)
;include '../../../../debug.inc'
include 'keys.inc'
include '../../../../system/skincfg/trunk/kglobals.inc'
include '../../../../system/skincfg/trunk/unpacker.inc'
;-----------------------------------------------------------------------------
mem.alloc dd ? ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -170,6 +172,10 @@ proc draw_edge uses eax ebx ecx edx edi esi, box_l:dword, box_t:dword, box_w:dwo
endp
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> KPCK
IncludeIGlobals
IncludeUGlobals
align 16
EXPORTS:

View File

@@ -1263,20 +1263,12 @@ proc ted_memory_increase
cmp ted_increase_size,0
je @f
push eax ebx ecx
mov ecx,ted_increase_size
add ecx,ted_max_chars
mov ted_max_chars,ecx
imul ecx,sizeof.symbol
invoke mem.realloc, ted_tex,ecx
mov ebx,ted_tex
mov ted_tex,eax
mov ted_tex_1,eax
add ted_tex_1,sizeof.symbol
sub edx,ebx
add edx,eax
mov ted_ptr_free_symb,edx
add eax,ecx
mov ted_tex_end,eax
mov ecx,ted_max_chars
call ted_mem_resize.no_2
sub edx,ebx
add edx,ted_tex
mov ted_ptr_free_symb,edx
pop ecx ebx eax
@@:
ret
@@ -2546,11 +2538,39 @@ proc ted_find_help_id uses ebx ecx, end_pos:dword
ret
endp
;description:
; <20><><EFBFBD><EFBFBD><EFBFBD>塞 ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E2A5AA><EFBFBD> (<28><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> ted_ptr_free_symb <20><> 1 ᨬ<><E1A8AC><EFBFBD>)
;input:
; ecx - <20><>᫮ ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD> <20><><E4A0A9>
; edi - pointer to tedit struct
;output:
; eax, ecx - ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
align 16
ted_mem_resize:
add ecx,2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E2A5AA><EFBFBD> + <20><><EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><><EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
.no_2:
add ecx,ted_increase_size ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A5A4><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><><E4A0A9>
mov ted_max_chars,ecx
imul ecx,sizeof.symbol
invoke mem.realloc, ted_tex,ecx
mov ted_tex,eax
mov ted_tex_1,eax
add ted_tex_1,sizeof.symbol
add eax,ecx
mov ted_tex_end,eax
mov ecx,ted_tex_1
add ecx,sizeof.symbol
mov ted_ptr_free_symb,ecx
ret
;output:
; eax = <20><><EFBFBD> <20><EFBFBD><E8A8A1>
; ebx = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD> <20><><EFBFBD><EFBFBD>
align 16
proc ted_open_file uses ecx edx edi, edit:dword, file:dword, f_name:dword ;<3B><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9>
proc ted_open_file uses ecx edx edi esi, edit:dword, file:dword, f_name:dword ;<3B><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9>
locals
unpac_mem dd ?
endl
mov edi,[edit]
; *** <20><EFBFBD><E0AEA2>塞 ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><20><> 墠⠥<E5A2A0> <20><><><E3A2A5><EFBFBD><E7A8A2><EFBFBD> ***
@@ -2580,21 +2600,8 @@ align 4
mov edx,[edx+32] ;+32 = +0x20: qword: ࠧ<><E0A0A7><EFBFBD><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cmp edx,ecx
jl @f
;㢥<><E3A2A5><EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><> 墠⨫<E5A2A0>
mov ecx,edx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9>
add ecx,2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB><ECADAE> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E7ADAE><><E1A8AC><EFBFBD><EFBFBD><EFBFBD>
add ecx,ted_increase_size ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A5A4><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><><E4A0A9>
mov ted_max_chars,ecx
imul ecx,sizeof.symbol
invoke mem.realloc, ted_tex,ecx
mov ted_tex,eax
mov ted_tex_1,eax
add ted_tex_1,sizeof.symbol
add eax,ecx
mov ted_tex_end,eax
mov ecx,ted_tex_1
add ecx,sizeof.symbol
mov ted_ptr_free_symb,ecx
mov ecx,edx
call ted_mem_resize
@@:
; *** <20>஡㥬 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> ***
@@ -2617,6 +2624,32 @@ align 4
cmp ebx,-1
je .ret_f
;if open file
push eax
mov eax,ted_tex
cmp dword[eax],'KPCK'
jne .end_unpack
;<3B><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><><E4A0A9>
invoke mem.alloc,[eax+4]
mov [unpac_mem],eax
stdcall unpack,ted_tex,[unpac_mem]
mov ecx,ted_max_chars
sub ecx,2 ;ecx = <20><><EFBFBD><EFBFBD><E1A8AC><EFBFBD> <20><><20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov eax,ted_tex
mov ebx,[eax+4]
cmp ebx,ecx
jl @f ;<3B><20><><EFBFBD> <20><><EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9> <20><> 墠⠥<E5A2A0> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ecx,ebx
call ted_mem_resize
@@:
mov edi,ted_tex
mov esi,[unpac_mem]
mov ecx,ebx
cld
rep movsb
mov edi,[edit]
invoke mem.free,[unpac_mem]
.end_unpack:
pop eax
call ted_on_open_file
.ret_f:
ret