Unz 0.2 by GerdtR

git-svn-id: svn://kolibrios.org@7538 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
2018-11-07 17:45:36 +00:00
parent f81857f08c
commit 5b9108e430
11 changed files with 2376 additions and 220 deletions

211
programs/fs/unz/dialogs.inc Normal file
View File

@@ -0,0 +1,211 @@
;SayErr int num_strings, const char* strings[],
; int num_buttons, const char* buttons[]);
proc SayErr num_strings:dword, strings:dword,num_buttons:dword, buttons:dword
pushad
cmp [num_strings],1
je @f
m2m [errmess0], strErrorExc
jmp .l1
@@:
mov ebx,[strings]
m2m [errmess0], dword [ebx]
.l1:
mcall 51,1,threadSayErr,stackDlg
popad
mov eax,1
ret
endp
proc SimpleSayErr str:dword
pushad
m2m [errmess0],[str]
mcall 51,1,threadSayErr,stackDlg
popad
ret
endp
proc threadSayErr
mcall 40, 000111b+0C000000h
.wm_redraw:
mcall 12, 1
mcall 48, 3, sc, sizeof.system_colors
mov edx, [sc.work]
or edx, 0x33000000
mcall 0, <220,420>, <220,110>, , , title
mov ecx,[sc.work_text]
or ecx,90000000h
mov edx,[errmess0]
mcall 4, <15,11>
mcall 8, <105,100>,<45,25>,1,[sc.work_button]
mov ecx,[sc.work_button_text]
or ecx,90000000h
mcall 4, <147,51>, , strOk
mcall 12, 2
.still:
mcall 10
cmp eax, 1
je .wm_redraw
cmp eax, 2
je .wm_key
cmp eax, 3
je .wm_button
jmp .still
.wm_button:
mcall 17
cmp ah, 1
je .exit
jmp .still
.wm_key:
mcall 2
jmp .still
.exit:
mcall -1
endp
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; "enter password" dialog for KFar
;password_dlg:
; dd 1 ; use standard dialog colors
; dd -1 ; center window by x
; dd -1 ; center window by y
;.width dd ? ; width (will be filled according to current console width)
; dd 2 ; height
; dd 4, 2 ; border size
; dd aEnterPasswordTitle ; title
; dd ? ; colors (will be set by KFar)
; dd 0 ; used internally by dialog manager, ignored
; dd 0, 0 ; reserved for DlgProc
; dd 2 ; 2 controls
;; the string "enter password"
; dd 1 ; type: static
; dd 1,0 ; upper-left position
;.width1 dd ?,0 ; bottom-right position
; dd aEnterPassword ; data
; dd 0 ; flags
;; editbox for password
; dd 3 ; type: edit
; dd 1,1 ; upper-left position
;.width2 dd ?,0 ; bottom-right position
; dd password_data ; data
; dd 2Ch ; flags
proc DialogBox dlgInfo:dword
pushad
mov ebx,[dlgInfo]
mov eax,[ebx+19*4]
mov [forpassword],eax
mov byte[eax], 0
mov [stateDlg], 0
mcall 51,1,threadDialogBox,stackDlg
;wait thread...
@@: cmp [stateDlg],0
jne @f
mcall 5,1
jmp @b
@@:
popad
cmp [stateDlg], 1
jne @f
xor eax, eax
ret
@@:
or eax, -1
ret
endp
proc threadDialogBox
mcall 40, 100111b+0C000000h
mov eax,[forpassword]
mov [edtPassword+4*9],eax
xor eax,eax
mov dword[edtPassword.size], eax
mov dword[edtPassword.pos], eax
.wm_redraw:
mcall 12, 1
mcall 48, 3, sc, sizeof.system_colors
mov edx, [sc.work]
or edx, 0x33000000
mcall 0, <200,320>, <200,140>, , , title
edit_boxes_set_sys_color edtPack,endEdits,sc
stdcall [edit_box_draw],edtPassword
mov ecx,[sc.work_text]
or ecx,90000000h
mcall 4, <56,12>, , strGetPass
mcall 8, <70,80>,<74,22>,2,[sc.work_button]
mov ecx,[sc.work_button_text]
or ecx,90000000h
mcall 4, <103,79>, , strOk
mcall 8, <165,80>,<74,22>,1,[sc.work_button]
mov ecx,[sc.work_button_text]
or ecx,90000000h
mcall 4, <182,79>, , strCancel
mcall 12, 2
.still:
mcall 10
cmp eax, 1
je .wm_redraw
cmp eax, 2
je .wm_key
cmp eax, 3
je .wm_button
cmp eax, 6
je .wm_mouse
jmp .still
.wm_key:
mcall 2
stdcall [edit_box_key],edtPassword
jmp .still
.wm_button:
mcall 17
cmp ah, 2 ;OK
jne @f
mov [stateDlg],1
jmp .exit
@@:
cmp ah, 1 ;Close window or Cancel
jne .still
mov [stateDlg],2
jmp .exit
.wm_mouse:
stdcall [edit_box_mouse],edtPassword
jmp .still
.exit:
mcall -1
endp

File diff suppressed because it is too large Load Diff

BIN
programs/fs/unz/free.raw Normal file

Binary file not shown.

View File

@@ -653,10 +653,10 @@ endp
proc myAddDir name:dword, bdfe_info:dword proc myAddDir name:dword, bdfe_info:dword
dps 'log adddir' ; dps 'log adddir'
mov eax,[name] mov eax,[name]
dpsP eax ; dpsP eax
dnl ; dnl
pusha pusha
mov eax,[name] mov eax,[name]

1
programs/fs/unz/lang.inc Normal file
View File

@@ -0,0 +1 @@
lang fix ru

View File

@@ -0,0 +1,330 @@
;MM_ = MemoryManager
;<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><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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;<EFBFBD> MM_BlockInfo <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><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> dword 0. <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> dword'<27><>: <20><><EFBFBD>
;<3B><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>+1). <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1A5A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
;<3B><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD><EFBFBD>
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>.<2E>. <20><><E1A0AC> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;<3B><><><E1A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⮪. <20><><EFBFBD> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD>
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A8A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD>
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><E2A0A2><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20>㦭묨 <20><><EFBFBD><EFBFBD>묨.
;<3B><><EFBFBD><><E3A4A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><EFBFBD> ⮫쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><EFBFBD><E3A6AD> <20><><EFBFBD><EFBFBD><EFBFBD>
;<3B> <20><><EFBFBD><EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E2A0AB><EFBFBD><EFBFBD> <20><><EFBFBD>.
;begData1.....endData1,begData2...endData2,.......0,beg2,end2,beg1,end1
;<3B><EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;return eax = 㪠<><E3AAA0><EFBFBD> <20><> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
;proc MM_AllocMem stdcall,Size:DWORD
;<3B><><EFBFBD> <20> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3AFAD> <20><><EFBFBD>: <20><EFBFBD><E1A5A3> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD>
align 4
MM_AllocMem:
Size equ ebp+8
begFree equ ebp-8 ;<3B><><EFBFBD>
endFree equ ebp-4 ;<3B> <20><><EFBFBD><EFBFBD><EFBFBD><><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
endArea equ ebp-12
push ebp
mov ebp,esp
add esp,-4*3
push ebx edi esi
;dps 'MEM: '
;dph [Size]
;dps ' '
;<3B><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
mov edx,[MM_NBlocks]
cmp edx,0
jne .BegTestBlocks ;<3B><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
mov ecx,[Size]
call AddBlock
jmp .return
align 4
.BegTestBlocks:
xor ebx,ebx
mov ecx,edx
align 4
.TestBlock: ;<3B><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>
;<3B><EFBFBD>ઠ: <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
mov edi,[MM_BlocksInfo+ebx]
add edi,[MM_BlocksInfo+ebx+4]
mov [endArea], edi
sub edi,4
cmp dword[edi],0 ;<3B><20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jne .NoEmptyBlock
mov eax,[MM_BlocksInfo+ebx]
mov dword[edi-4],eax
mov dword[edi],eax
mov edx,[Size]
add dword[edi],edx
mov dword[edi-8],0
jmp .return
align 4
.NoEmptyBlock:
xor eax,eax
push ecx
or ecx,-1
std
repne scasd
cld
pop ecx
mov eax,[edi+12] ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
add eax,4
cmp eax,edi
jb @f
add ebx,8
dec ecx
jnz .TestBlock
mov ecx,[Size]
call AddBlock
jmp .return
@@:
mov [begFree],eax ;eax = <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>⪠ + 4
mov [endFree],edi ;edi = 㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⪠ - 12
sub dword[begFree],4
add dword[endFree],12
;<3B><EFBFBD><20><><20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AAA0>
mov edi,[MM_BlocksInfo+ebx]
mov eax,[endArea]
mov eax,[eax-8]
sub eax,[MM_BlocksInfo+ebx]
cmp eax,[Size]
ja .AddInBegBlock
;<3B><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AAA0>
mov eax,[endArea]
cmp dword[eax-12],0
je .EndTest ;<3B><20> <20><><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 1 <20><><EFBFBD><EFBFBD>
sub eax,4
@@:
mov edi,[eax-12]
sub edi,[eax]
cmp edi,[Size]
jae .AddInMiddle
sub eax,8
cmp dword[eax-8],0
jne @b
.EndTest:
;<3B><EFBFBD><20><><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov eax,[begFree]
mov edi,[endFree]
lea esi,[edi-8] ;8 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sub esi,eax
cmp esi,[Size]
ja .AddInEnd
add ebx,8
dec ecx
jnz .TestBlock
mov ecx,[Size]
call AddBlock
jmp .return
align 4
.AddInBegBlock: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>. <20> edi <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
;pop eax
mov eax,edi
add eax,[MM_BlocksInfo+ebx+4]
sub eax,4
push eax
call MoveRecordsLeft
pop eax
mov [eax-4],edi
push edi
add edi,[Size]
mov [eax],edi
pop eax
jmp .return
align 4
.AddInMiddle: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2AAA0>, <20><><EFBFBD>=<3D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><>। ᢮<><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
;pop ecx ;add esp,4
push eax
sub eax,8
call MoveRecordsLeft
pop eax
mov edx,[eax]
mov [eax-12],edx
add edx,[Size]
mov [eax-8],edx
mov eax,[eax]
jmp .return
align 4
.AddInEnd: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD>. <20>di=㪠<><E3AAA0><EFBFBD> <20><> 2<><32> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
;add esp,4
mov eax,[edi]
mov [edi-12],eax
push eax
add eax,[Size]
mov [edi-8],eax
pop eax
.return:
pop esi edi ebx
leave
ret 4
restore Xren
restore Size
restore begFree
restore endFree
;eax - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dword
;ᤢ<><E1A4A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> dword'<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 8B <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dword 0
align 4
proc MoveRecordsLeft
local var1:DWORD,\
var2:DWORD
p2p [var1],[eax]
p2p [var2],[eax-4]
@@:
sub eax,8
cmp dword[var1],0
je @f
push dword[eax]
p2p [eax],[var1]
pop dword[var1]
push dword[eax-4]
p2p [eax-4],[var2]
pop dword[var2]
jmp @b
@@:
mov dword[eax],0
ret
endp
;ecx = <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> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ecx
align 4
proc AddBlock
mov edx,[MM_NBlocks]
inc edx
cmp edx,MM_MAX_BLOCKS
ja .ErrAlloc
push ecx
add ecx,12
test ecx,0FFFh ;<EFBFBD><EFBFBD><EFBFBD>㣫塞 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jz @f
add ecx,1000h
and ecx,0FFFFF000h
@@:
mcall 68,12,ecx
mov [MM_NBlocks],edx ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov [edx*4*2-4*2+MM_BlocksInfo],eax ;begin
mov [edx*4*2-4+MM_BlocksInfo],ecx ;size
;dps 'Block '
;dph eax
;dps ' '
;dph ecx
;dnl
mov edx,eax
add edx,ecx
mov [edx-8],eax
pop dword[edx-4]
add [edx-4],eax
mov dword[edx-12],0
ret
.ErrAlloc:
pop ecx
xor eax,eax
ret
endp
;-------------------------------------------------------------------------------
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;proc MM_DelMem Pointer:DWORD
align 4
MM_DelMem:
Pointer equ ebp+8
push ebp
mov ebp,esp
; int3
push ebx
mov ecx,[MM_NBlocks]
test ecx,ecx
jnz @f
xor eax,eax
pop ebx
leave
ret 4
@@:
mov eax,[Pointer]
xor ebx,ebx ;ebx - (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)*8
.TestBlocks:
mov edx,[MM_BlocksInfo+ebx]
add edx,[MM_BlocksInfo+ebx+4]
sub edx,8 ;edx - <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.TestMems:
cmp [edx],eax
je .FoundMem
sub edx,8
cmp dword[edx+4],0
jne .TestMems
add ebx,4
loop .TestBlocks
xor eax,eax
pop ebx
leave
ret 4
.FoundMem:
cmp dword[edx-4],0
jz .EndDelMem
.NextMoveMem:
p2p [edx+4],[edx-4]
p2p [edx],[edx-8]
sub edx,8
cmp dword[edx-4],0
jnz .NextMoveMem
.EndDelMem:
mov dword[edx+4],0
mov dword[edx],0
mov eax,1
pop ebx
leave
ret 4
restore Pointer

BIN
programs/fs/unz/minus.raw Normal file

Binary file not shown.

BIN
programs/fs/unz/ok.raw Normal file

Binary file not shown.

View File

@@ -4,7 +4,7 @@
; 2 - error parsing ; 2 - error parsing
proc getLastParam ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> fInp proc getLastParam ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> fInp
xor al, al ;to end sring xor al, al ;to end string
mov edi, params mov edi, params
mov ecx, 4096 mov ecx, 4096
repne scasb repne scasb
@@ -100,26 +100,30 @@ xor al, al ;to end sring
xor eax, eax xor eax, eax
endp endp
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pathOut
proc getParam2 proc getParamOutPath
locals locals
retrn rd 0 retrn rd 0
endl endl
mov [retrn], 0 mov [retrn], 0
mov ebx, params mov ebx, params
.find_o: .find_o:
cmp [ebx], word '-o' cmp [ebx], word '-o'
jne .find_o2 jne .find_o2
mov edx, ebx mov edx, ebx
lea esi, [ebx+3] lea esi, [ebx+3]
@@: ;skiping spaces @@: ;skiping spaces
cmp esi, pathOut+1024 cmp esi, params+4096
jae .errorParsing jae .errorParsing
cmp byte[esi], ' ' cmp byte[esi], ' '
jne @f jne @f
inc esi inc esi
jmp @b jmp @b
@@: ;copying ; -o "file" @@:
;copying ; -o "file"
mov ecx, 3 mov ecx, 3
cmp byte[esi], '"' cmp byte[esi], '"'
jne ._notspace jne ._notspace
@@ -132,7 +136,7 @@ endl
je .clear je .clear
stosb stosb
inc ecx inc ecx
cmp esi, pathOut+1024 cmp esi, params+1024
jae errorParsing jae errorParsing
jmp @b jmp @b
@@ -143,7 +147,7 @@ endl
inc ecx inc ecx
cmp al, ' ' cmp al, ' '
je .clear je .clear
cmp esi, pathOut+1024 cmp esi, params+1024
jae errorParsing jae errorParsing
jmp @b jmp @b
@@ -159,7 +163,7 @@ endl
.find_o2: .find_o2:
inc ebx inc ebx
cmp ebx, pathOut+1024 cmp ebx, params+1024
jae @f jae @f
cmp byte[ebx], 0 cmp byte[ebx], 0
je @f je @f
@@ -200,7 +204,7 @@ endl
jmp @b jmp @b
@@: @@:
;copying ; -f "file" ;variant1: copying ; -f "file"
mov ecx, 3 mov ecx, 3
cmp byte[esi], '"' cmp byte[esi], '"'
jne ._notspace jne ._notspace
@@ -217,7 +221,7 @@ endl
jae errorParsing jae errorParsing
jmp @b jmp @b
._notspace: ;copying ; -f file ._notspace: ;variant2: copying ; -f file
mov edi, [endPointer] mov edi, [endPointer]
@@: lodsb @@: lodsb
stosb stosb

BIN
programs/fs/unz/plus.raw Normal file

Binary file not shown.

View File

@@ -43,14 +43,22 @@ include '../../macros.inc'
include '../../proc32.inc' include '../../proc32.inc'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../dll.inc' include '../../dll.inc'
;include '../../debug.inc'
;include 'include/macros.inc'
;include 'include/proc32.inc'
;include 'include/box_lib.mac'
;include 'include/dll.inc'
include 'debug.inc' include 'debug.inc'
version equ '0.65' version equ '0.70'
version_dword equ 0*10000h + 65 version_dword equ 0*10000h + 70
WIN_W = 400 WIN_W = 400
SIZE_COPY_BUF = 1024*1024*2 SIZE_COPY_BUF = 1024*1024*2
MM_MAX_BLOCKS equ 1024
virtual at 0 virtual at 0
kfar_info_struc: kfar_info_struc:
@@ -82,15 +90,19 @@ end virtual
;-- CODE -------------------------------------------------------------------
include 'parse.inc' include 'parse.inc'
include 'fs.inc' include 'fs.inc'
include 'file_tree.inc'
;-- CODE ------------------------------------------------------------------- include 'memory_manager.inc'
include 'dialogs.inc'
start: start:
;dnl
;dpsP params
;dnl
mcall 68, 11 mcall 68, 11
mcall 40, 100111b + 0C0000000h mcall 40, 100111b + 0C0000000h
stdcall dll.Load, IMPORTS stdcall dll.Load, IMPORTS
@@ -98,8 +110,6 @@ start:
jnz exit jnz exit
mov [pathOut],0 mov [pathOut],0
;stdcall SayErr,strErrorExc
;mcall -1
;---------------------------- ;----------------------------
;1. find input file, clear ;1. find input file, clear
;2. find -o, copy data, clear ;2. find -o, copy data, clear
@@ -115,7 +125,7 @@ start:
.arbeit: .arbeit:
;2. ;2.
call getParam2 call getParamOutPath
cmp eax, 2 cmp eax, 2
je errorParsing je errorParsing
@@ -145,9 +155,10 @@ start:
je @f je @f
jmp @b jmp @b
.check: .check:
call startUnpack call startUnpack
mcall -1 mcall -1
@@: @@:
stdcall [OpenDialog_Init],OpenDialog_data stdcall [OpenDialog_Init],OpenDialog_data
;init edit fields -------------- ;init edit fields --------------
@@ -171,6 +182,9 @@ start:
mov dword[edtUnpPath.size], eax mov dword[edtUnpPath.size], eax
mov dword[edtUnpPath.pos], eax mov dword[edtUnpPath.pos], eax
;--------
; call file_tree_Init
;main loop -------------------- ;main loop --------------------
wm_redraw: wm_redraw:
@@ -218,9 +232,9 @@ wm_button:
cmp ah, 2 cmp ah, 2
jne @f jne @f
;mcall 51,1,startUnpack,stackUnpack mcall 51,1,startUnpack,stackUnpack
;mov [bWinChild],1 mov [bWinChild],1
call startUnpack ;call startUnpack
jmp wm_redraw jmp wm_redraw
@@: @@:
@@ -233,14 +247,16 @@ wm_mouse:
jne still jne still
stdcall [edit_box_mouse],edtPack stdcall [edit_box_mouse],edtPack
stdcall [edit_box_mouse],edtUnpPath stdcall [edit_box_mouse],edtUnpPath
; stdcall file_tree_Mouse
jmp still jmp still
exit: exit:
mcall -1 mcall -1
errorParsing: errorParsing:
dps 'errorParsing' dph edx
dps ' errorParsing'
mcall -1 mcall -1
;--- functions ------------------------------------------------------------------ ;--- functions ------------------------------------------------------------------
@@ -259,7 +275,7 @@ proc winRedraw
stdcall [edit_box_draw],edtPack stdcall [edit_box_draw],edtPack
stdcall [edit_box_draw],edtUnpPath stdcall [edit_box_draw],edtUnpPath
; plain window labels
cmp [redInput],0 cmp [redInput],0
jne @f jne @f
mov ecx,[sc.work_text] mov ecx,[sc.work_text]
@@ -272,8 +288,6 @@ proc winRedraw
mov ecx,[sc.work_text] mov ecx,[sc.work_text]
or ecx,90000000h or ecx,90000000h
mcall 4, <15,37>, , strPath mcall 4, <15,37>, , strPath
; text on buttons
mov ecx,[sc.work_button_text] mov ecx,[sc.work_button_text]
or ecx,90000000h or ecx,90000000h
if lang eq ru if lang eq ru
@@ -284,6 +298,8 @@ end if
mcall 4, <(WIN_W-47),12>, , strDots mcall 4, <(WIN_W-47),12>, , strDots
mcall 4, <(WIN_W-47),37>, , strDots mcall 4, <(WIN_W-47),37>, , strDots
; call file_tree_Draw
mcall 12, 2 mcall 12, 2
ret ret
endp endp
@@ -388,39 +404,26 @@ endl
jnz @f jnz @f
cmp ebx,0 ;;/ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!! cmp ebx,0 ;;/ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!!
je .errNotFound ;;<3B><><EFBFBD><EFBFBD><E7A5AD> ebx <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. je .errNotFound ;;<3B><><EFBFBD><EFBFBD><E7A5AD> ebx <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
cmp ebx,400h ;;<3B><><EFBFBD> <20><><EFBFBD> <20><EFBFBD><><E0A0A1><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E3A3A8> <20><><EFBFBD><EFBFBD><EFBFBD> cmp ebx,400h
je .errNotSupp ;;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20>᭮! je .errNotSupp
@@: @@:
mov [hPlugin],eax mov [hPlugin],eax
;get num of all files ;get num of all files
; stdcall calcSizeArch,[hPlugin] ; stdcall calcSizeArch,[hPlugin]
; push ebp push ebp
; stdcall [aReadFolder], [hPlugin] stdcall [aSetFolder],[hPlugin], .strRoot,0
; pop ebp pop ebp
; push ebp
; stdcall [aOpen], [hPlugin], .str1, O_READ
; pop ebp
;
; push ebp
; stdcall [aSetpos],[hPlugin],0,POSEND
; pop ebp
; add [numbytes],eax
;unpack ;unpack
; void __stdcall GetFiles(HANDLE hPlugin, int NumItems, void* items[], void* addfile, void* adddir); ; void __stdcall GetFiles(HANDLE hPlugin, int NumItems, void* items[], void* addfile, void* adddir);
push ebp push ebp
stdcall [aGetFiles], [hPlugin], -1, 0, myAddFile, myAddDir stdcall [aGetFiles], [hPlugin], -1, 0, myAddFile, myAddDir
pop ebp pop ebp
;jmp @f jmp @f
; .str1 db '/LICENSE.txt',0 .str1 db '/LICENSE.txt',0
;@@: .strRoot db '.svn',0
@@:
;HANDLE __stdcall open(HANDLE hPlugin, const char* filename, int mode); ;HANDLE __stdcall open(HANDLE hPlugin, const char* filename, int mode);
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> filename. <20><><EFBFBD><E0A0AC><EFBFBD> mode <20><><EFBFBD>ࢨ஢<E0A2A8><E0AEA2> <20> <20><><20><><EFBFBD>ᨨ kfar <20><EFBFBD><E1A5A3><><E0A0A2> 1. ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> filename. <20><><EFBFBD><E0A0AC><EFBFBD> mode <20><><EFBFBD>ࢨ஢<E0A2A8><E0AEA2> <20> <20><><20><><EFBFBD>ᨨ kfar <20><EFBFBD><E1A5A3><><E0A0A2> 1.
@@ -491,13 +494,83 @@ proc debugInt3
endp endp
allnumbytes dd 0
strBackFold db '../',0
proc calcSizeArch hPlugin:dword proc calcSizeArch hPlugin:dword
locals
bdwk rb 560
num rd 1
endl
;int __stdcall ReadFolder(HANDLE hPlugin, unsigned dirinfo_start,
; unsigned dirinfo_size, void* dirdata);
mov [num],0
; int3
.mainloop:
push ebp
lea eax, [bdwk]
stdcall [aReadFolder], [hPlugin],[num],1,eax
pop ebp
cmp eax,6
je .lastFile
;??????????????????????????????????????????????????????????????????????????????????????????????????
lea ebx,[bdwk+0x20] ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> ᬥ饭<E1ACA5><E9A5AD> +0x20 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
test [ebx],dword 10h
jz @f
;bool __stdcall SetFolder(HANDLE hPlugin, const char* relative_path,
; const char* absolute_path);
push ebp
lea eax,[ebx+40]
dps 'Folder: '
dpsP eax
dnl
stdcall [aSetFolder],[hPlugin], eax,0
pop ebp
stdcall calcSizeArch, [hPlugin]
inc [num]
jmp .mainloop
@@:
lea ebx,[bdwk+0x20]
lea eax,[ebx+40]
dps 'File: '
dpsP eax
dnl
mov eax,[ebx+32]
add [allnumbytes],eax
inc [num]
jmp .mainloop
.lastFile:
; lea ebx,[bdwk+0x20]
; test [ebx],dword 10h
; jz @f
;
; push ebp
; lea eax,[ebx+40]
; stdcall [aSetFolder],[hPlugin], eax,0
; pop ebp
; stdcall calcSizeArch, [hPlugin]
; @@:
push ebp
stdcall [aSetFolder],[hPlugin], strBackFold,0
pop ebp
ret
endp
proc rec_calcSize hPlugin:dword
locals locals
bdwk rb 560 bdwk rb 560
endl endl
;int __stdcall ReadFolder(HANDLE hPlugin, unsigned dirinfo_start, ;int __stdcall ReadFolder(HANDLE hPlugin, unsigned dirinfo_start,
; unsigned dirinfo_size, void* dirdata); ; unsigned dirinfo_size, void* dirdata);
int3 ;bool __stdcall SetFolder(HANDLE hPlugin, const char* relative_path, const char* absolute_path);
push ebp push ebp
lea eax,[bdwk] lea eax,[bdwk]
stdcall [aReadFolder], [hPlugin],1,560,eax stdcall [aReadFolder], [hPlugin],1,560,eax
@@ -509,165 +582,37 @@ endp
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
;SayErr int num_strings, const char* strings[], hTrPlugin dd 0
; int num_buttons, const char* buttons[]);
proc SayErr num_strings:dword, strings:dword,num_buttons:dword, buttons:dword ;eax - file struct for sys70
pushad
cmp [num_strings],1
je @f
m2m [errmess0], strErrorExc
jmp .l1
@@:
mov ebx,[strings]
m2m [errmess0], dword [ebx]
.l1:
m2m [fsRunNotifyOK.param],[errmess0] proc rdFoldforTree
mcall 70,fsRunNotifyOK locals
fi rd 0
endl
cmp [hTrPlugin],0
je .exit
push ebx edi esi
popad mov [fi],eax
mov eax,1 push ebp
ret stdcall [aSetFolder],[hTrPlugin], [eax+20],0
endp mov ebp,[esp]
;hPlug,startBlock,numBlocks,buffer
stdcall [aReadFolder], [hTrPlugin],dword[eax+4],\
dword[eax+12],dword[eax+16]
pop ebp
;------------------------------------------------------------------------------- ;cmp eax,6
;------------------------------------------------------------------------------- ;je .lastFile
;-------------------------------------------------------------------------------
; "enter password" dialog for KFar
;password_dlg:
; dd 1 ; use standard dialog colors
; dd -1 ; center window by x
; dd -1 ; center window by y
;.width dd ? ; width (will be filled according to current console width)
; dd 2 ; height
; dd 4, 2 ; border size
; dd aEnterPasswordTitle ; title
; dd ? ; colors (will be set by KFar)
; dd 0 ; used internally by dialog manager, ignored
; dd 0, 0 ; reserved for DlgProc
; dd 2 ; 2 controls
;; the string "enter password"
; dd 1 ; type: static
; dd 1,0 ; upper-left position
;.width1 dd ?,0 ; bottom-right position
; dd aEnterPassword ; data
; dd 0 ; flags
;; editbox for password
; dd 3 ; type: edit
; dd 1,1 ; upper-left position
;.width2 dd ?,0 ; bottom-right position
; dd password_data ; data
; dd 2Ch ; flags
;lea ebx,[bdwk+0x20] ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> ᬥ饭<E1ACA5><E9A5AD> +0x20 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pop esi edi ebx
proc DialogBox dlgInfo:dword
pushad
mov ebx,[dlgInfo]
mov eax,[ebx+19*4]
mov [forpassword],eax
mov byte[eax], 0
mov [stateDlg], 0
mcall 51,1,threadDialogBox,stackDlg
;wait thread...
@@: cmp [stateDlg],0
jne @f
mcall 5,1
jmp @b
@@:
popad
cmp [stateDlg], 1
jne @f
xor eax, eax
ret
@@:
or eax, -1
ret
endp
proc threadDialogBox
mcall 40, 100111b+0C000000h
mov eax,[forpassword]
mov [edtPassword+4*9],eax
xor eax,eax
mov dword[edtPassword.size], eax
mov dword[edtPassword.pos], eax
.wm_redraw:
mcall 12, 1
mcall 48, 3, sc, sizeof.system_colors
mov edx, [sc.work]
or edx, 0x33000000
mcall 0, <200,320>, <200,140>, , , title
edit_boxes_set_sys_color edtPack,endEdits,sc
stdcall [edit_box_draw],edtPassword
mov ecx,[sc.work_text]
or ecx,90000000h
mcall 4, <56,12>, , strGetPass
mcall 8, <70,80>,<74,22>,2,[sc.work_button]
mov ecx,[sc.work_button_text]
or ecx,90000000h
mcall 4, <103,79>, , strOk
mcall 8, <165,80>,<74,22>,1,[sc.work_button]
mov ecx,[sc.work_button_text]
or ecx,90000000h
mcall 4, <182,79>, , strCancel
mcall 12, 2
.still:
mcall 10
cmp eax, 1
je .wm_redraw
cmp eax, 2
je .wm_key
cmp eax, 3
je .wm_button
cmp eax, 6
je .wm_mouse
jmp .still
.wm_key:
mcall 2
stdcall [edit_box_key],edtPassword
jmp .still
.wm_button:
mcall 17
cmp ah, 2 ;OK
jne @f
mov [stateDlg],1
jmp .exit
@@:
cmp ah, 1 ;Close window or Cancel
jne .still
mov [stateDlg],2
jmp .exit
.wm_mouse:
stdcall [edit_box_mouse],edtPassword
jmp .still
.exit: .exit:
mcall -1 ret
endp endp
;-- DATA ------------------------------------------------------------------- ;-- DATA -------------------------------------------------------------------
@@ -679,7 +624,7 @@ bWinChild db 0 ;1 -
redInput db 0 ;1 - <20><><EFBFBD><EFBFBD><E1A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> redInput db 0 ;1 - <20><><EFBFBD><EFBFBD><E1A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if lang eq ru if lang eq ru
title db 'uNZ v0.12 - <20><><EFBFBD><E1AFA0><EFBFBD>騪 Zip <20> 7z',0 title db 'uNZ v0.2 - <20><><EFBFBD><E1AFA0><EFBFBD>騪 Zip <20> 7z',0
strGo db '<27><><EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0 strGo db '<27><><EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
strInp db ' <20><>娢',0 strInp db ' <20><>娢',0
strPath db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>',0 strPath db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>',0
@@ -693,7 +638,7 @@ if lang eq ru
strNotSupport db "'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>' -E",0 strNotSupport db "'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>' -E",0
strNotFound db "'<27><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' -E",0 strNotFound db "'<27><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' -E",0
else if lang eq es else if lang eq es
title db 'uNZ v0.12 - Desarchivador para Zip y 7z',0 title db 'uNZ v0.2 - Desarchivador para Zip y 7z',0
strGo db 'Desarchivar',0 strGo db 'Desarchivar',0
strInp db 'Archivar',0 strInp db 'Archivar',0
strPath db 'Extraer en',0 strPath db 'Extraer en',0
@@ -707,7 +652,7 @@ else if lang eq es
strNotSupport db "'El formato del archivo no es soportado' -E",0 strNotSupport db "'El formato del archivo no es soportado' -E",0
strNotFound db "'Archivo no encontrado' -E",0 strNotFound db "'Archivo no encontrado' -E",0
else else
title db 'uNZ v0.12 - Unarchiver of Zip and 7z',0 title db 'uNZ v0.2 - Unarchiver of Zip and 7z',0
strGo db 'Unpack',0 strGo db 'Unpack',0
strInp db 'Archive',0 strInp db 'Archive',0
strPath db 'Extract to',0 strPath db 'Extract to',0
@@ -722,8 +667,9 @@ else
strNotFound db "'File not found' -E",0 strNotFound db "'File not found' -E",0
end if end if
strNull db 0
strDots db '...',0
strDots db '...', 0
;-------- ;--------
; int __stdcall SayErr(int num_strings, const char* strings[], ; int __stdcall SayErr(int num_strings, const char* strings[],
@@ -764,7 +710,7 @@ kfar_info:
;-------- ;--------
iFiles dd 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9><EFBFBD> iFiles dd 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E4A0A9><EFBFBD>
endPointer dd buffer endPointer dd buffer
@@ -828,13 +774,15 @@ fsRunNotifyOK:
edtPack edit_box (WIN_W-100-60),100,10,0FFFFFFh,0xff,0x80ff,0h,0x90000000,\ edtPack edit_box (WIN_W-100-60),100,10,0FFFFFFh,0xff,0x80ff,0h,0x90000000,\
255, fInp, mouse_dd,0,0,0 255, fInp, 0,0,0,0
edtUnpPath edit_box (WIN_W-100-60),100,35,0FFFFFFh,0xff,0x80ff,0h,0x90000000,\ edtUnpPath edit_box (WIN_W-100-60),100,35,0FFFFFFh,0xff,0x80ff,0h,0x90000000,\
255, pathOut, mouse_dd,0,0,0 255, pathOut, 0,0,0,0
edtPassword edit_box 200,56,70,0FFFFFFh,0xff,0x80ff,0h,0x90000000,255,\ edtPassword edit_box 200,56,70,0FFFFFFh,0xff,0x80ff,0h,0x90000000,255,\
password, mouse_dd,0,0,0 password, 0,0,0,0
endEdits: endEdits:
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
OpenDialog_data: OpenDialog_data:
.type dd 0 ;0-open, 1-save, 2-select folder .type dd 0 ;0-open, 1-save, 2-select folder
@@ -914,25 +862,24 @@ import box_lib,\
IncludeIGlobals IncludeIGlobals
params1 db '-o "/hd0/1/unz/pig" -h "/hd0/1/unz/abc1"',0
;-- UDATA ----------------------------------------------------------------------------- ;-- UDATA -----------------------------------------------------------------------------
init_end: init_end:
align 16 align 16
IncludeUGlobals IncludeUGlobals
path rb 512
;params db 'unz -o "fil epar1" -f "arch1.txt" -f "ar ch2.txt" file1',0 ;params db 'unz -o "fil epar1" -f "arch1.txt" -f "ar ch2.txt" file1',0
;params db 'unz -o "fil epar1" -f arch1.txt -f "ar ch2.txt" file1',0 ;params db 'unz -o "fil epar1" -f arch1.txt -f "ar ch2.txt" file1',0
;params db '/hd0/1/unz/xboot-1-0-build-14-en-win.zip',0
;rb 4096
fInp rb 1024 fInp rb 1024
pathOut rb 1024 pathOut rb 1024 ;<3B><><EFBFBD><EFBFBD>, <20><20><><EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
files rd 256 files rd 256
password rb 256 password rb 256
fZipInfo rb 40 fZipInfo rb 40
mouse_dd rd 1
RBProcInfo rb 1024 RBProcInfo rb 1024
temp_dir_pach rb 1024 temp_dir_pach rb 1024
ODAreaPath rb 1024 ODAreaPath rb 1024
@@ -954,9 +901,17 @@ CopyDestEditBuf rb 12+512+1
bdvkPack rb 560 bdvkPack rb 560
;------------ memory_manager.inc
align 4
MM_NBlocks rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MM_BlocksInfo rd 2*MM_MAX_BLOCKS ;begin,size
;-------- ;--------
buffer rb 4096 ;for string of file name or extract buffer rb 4096 ;for string of file name for extract
params rb 4096 params rb 4096
rb 1024 rb 1024