forked from KolibriOS/kolibrios
upload downloader
git-svn-id: svn://kolibrios.org@1645 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
baca7793c6
commit
87333d238d
137
programs/network/downloader/trunk/debug.inc
Normal file
137
programs/network/downloader/trunk/debug.inc
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
macro debug_print str
|
||||||
|
{
|
||||||
|
local ..string, ..label
|
||||||
|
|
||||||
|
jmp ..label
|
||||||
|
..string db str,0
|
||||||
|
..label:
|
||||||
|
|
||||||
|
pushf
|
||||||
|
pushad
|
||||||
|
mov edx,..string
|
||||||
|
call debug_outstr
|
||||||
|
popad
|
||||||
|
popf
|
||||||
|
}
|
||||||
|
|
||||||
|
dps fix debug_print
|
||||||
|
|
||||||
|
macro debug_print_dec arg
|
||||||
|
{
|
||||||
|
pushf
|
||||||
|
pushad
|
||||||
|
if ~arg eq eax
|
||||||
|
mov eax,arg
|
||||||
|
end if
|
||||||
|
call debug_outdec
|
||||||
|
popad
|
||||||
|
popf
|
||||||
|
}
|
||||||
|
|
||||||
|
dpd fix debug_print_dec
|
||||||
|
|
||||||
|
;---------------------------------
|
||||||
|
debug_outdec: ;(eax - num, edi-str)
|
||||||
|
push 10 ;2
|
||||||
|
pop ecx ;1
|
||||||
|
push -'0' ;2
|
||||||
|
.l0:
|
||||||
|
xor edx,edx ;2
|
||||||
|
div ecx ;2
|
||||||
|
push edx ;1
|
||||||
|
test eax,eax ;2
|
||||||
|
jnz .l0 ;2
|
||||||
|
.l1:
|
||||||
|
pop eax ;1
|
||||||
|
add al,'0' ;2
|
||||||
|
call debug_outchar ; stosb
|
||||||
|
jnz .l1 ;2
|
||||||
|
ret ;1
|
||||||
|
;---------------------------------
|
||||||
|
|
||||||
|
debug_outchar: ; al - char
|
||||||
|
pushf
|
||||||
|
pushad
|
||||||
|
mov cl,al
|
||||||
|
mov eax,63
|
||||||
|
mov ebx,1
|
||||||
|
int 0x40
|
||||||
|
popad
|
||||||
|
popf
|
||||||
|
ret
|
||||||
|
|
||||||
|
debug_outstr:
|
||||||
|
mov eax,63
|
||||||
|
mov ebx,1
|
||||||
|
@@:
|
||||||
|
mov cl,[edx]
|
||||||
|
test cl,cl
|
||||||
|
jz @f
|
||||||
|
int 40h
|
||||||
|
inc edx
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
|
||||||
|
_debug_crlf db 13, 10, 0
|
||||||
|
|
||||||
|
macro newline
|
||||||
|
{
|
||||||
|
pushf
|
||||||
|
pushad
|
||||||
|
mov edx, _debug_crlf
|
||||||
|
call debug_outstr
|
||||||
|
popad
|
||||||
|
popf
|
||||||
|
}
|
||||||
|
|
||||||
|
macro print message
|
||||||
|
{
|
||||||
|
dps message
|
||||||
|
newline
|
||||||
|
}
|
||||||
|
|
||||||
|
macro pregs
|
||||||
|
{
|
||||||
|
dps "EAX: "
|
||||||
|
dpd eax
|
||||||
|
dps " EBX: "
|
||||||
|
dpd ebx
|
||||||
|
newline
|
||||||
|
dps "ECX: "
|
||||||
|
dpd ecx
|
||||||
|
dps " EDX: "
|
||||||
|
dpd edx
|
||||||
|
newline
|
||||||
|
}
|
||||||
|
|
||||||
|
macro debug_print_hex arg
|
||||||
|
{
|
||||||
|
pushf
|
||||||
|
pushad
|
||||||
|
if ~arg eq eax
|
||||||
|
mov eax, arg
|
||||||
|
end if
|
||||||
|
call debug_outhex
|
||||||
|
popad
|
||||||
|
popf
|
||||||
|
}
|
||||||
|
dph fix debug_print_hex
|
||||||
|
|
||||||
|
debug_outhex:
|
||||||
|
; eax - number
|
||||||
|
mov edx, 8
|
||||||
|
.new_char:
|
||||||
|
rol eax, 4
|
||||||
|
movzx ecx, al
|
||||||
|
and cl, 0x0f
|
||||||
|
mov cl, [__hexdigits + ecx]
|
||||||
|
pushad
|
||||||
|
mcall 63, 1
|
||||||
|
popad
|
||||||
|
dec edx
|
||||||
|
jnz .new_char
|
||||||
|
ret
|
||||||
|
|
||||||
|
__hexdigits:
|
||||||
|
db '0123456789ABCDEF'
|
124
programs/network/downloader/trunk/dll.inc
Normal file
124
programs/network/downloader/trunk/dll.inc
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
|
||||||
|
proc dll.Load, import_table:dword
|
||||||
|
mov esi,[import_table]
|
||||||
|
.next_lib: mov edx,[esi]
|
||||||
|
or edx,edx
|
||||||
|
jz .exit
|
||||||
|
push esi
|
||||||
|
mov esi,[esi+4]
|
||||||
|
mov edi,s_libdir.fname
|
||||||
|
@@: lodsb
|
||||||
|
stosb
|
||||||
|
or al,al
|
||||||
|
jnz @b
|
||||||
|
mcall 68,19,s_libdir
|
||||||
|
or eax,eax
|
||||||
|
jz .fail
|
||||||
|
stdcall dll.Link,eax,edx
|
||||||
|
push eax
|
||||||
|
mov eax, [eax]
|
||||||
|
cmp dword [eax], 'lib_'
|
||||||
|
pop eax
|
||||||
|
jnz @f
|
||||||
|
stdcall dll.Init,[eax+4]
|
||||||
|
@@:
|
||||||
|
pop esi
|
||||||
|
add esi,8
|
||||||
|
jmp .next_lib
|
||||||
|
.exit: xor eax,eax
|
||||||
|
ret
|
||||||
|
.fail: add esp,4
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc dll.Link, exp:dword,imp:dword
|
||||||
|
push eax
|
||||||
|
mov esi,[imp]
|
||||||
|
test esi,esi
|
||||||
|
jz .done
|
||||||
|
.next: lodsd
|
||||||
|
test eax,eax
|
||||||
|
jz .done
|
||||||
|
stdcall dll.GetProcAddress,[exp],eax
|
||||||
|
or eax,eax
|
||||||
|
jz @f
|
||||||
|
mov [esi-4],eax
|
||||||
|
jmp .next
|
||||||
|
@@: mov dword[esp],0
|
||||||
|
.done: pop eax
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc dll.Init, dllentry:dword
|
||||||
|
pushad
|
||||||
|
mov eax,mem.Alloc
|
||||||
|
mov ebx,mem.Free
|
||||||
|
mov ecx,mem.ReAlloc
|
||||||
|
mov edx,dll.Load
|
||||||
|
stdcall [dllentry]
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc dll.GetProcAddress, exp:dword,sz_name:dword
|
||||||
|
mov edx,[exp]
|
||||||
|
xor eax,eax
|
||||||
|
.next: or edx,edx
|
||||||
|
jz .end
|
||||||
|
cmp dword[edx],0
|
||||||
|
jz .end
|
||||||
|
stdcall strcmp,[edx],[sz_name]
|
||||||
|
test eax,eax
|
||||||
|
jz .ok
|
||||||
|
add edx,8
|
||||||
|
jmp .next
|
||||||
|
.ok: mov eax,[edx+4]
|
||||||
|
.end: ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc strcmp, str1:dword,str2:dword
|
||||||
|
push esi edi
|
||||||
|
mov esi,[str1]
|
||||||
|
mov edi,[str2]
|
||||||
|
xor eax,eax
|
||||||
|
@@: lodsb
|
||||||
|
scasb
|
||||||
|
jne .fail
|
||||||
|
or al,al
|
||||||
|
jnz @b
|
||||||
|
jmp .ok
|
||||||
|
.fail: or eax,-1
|
||||||
|
.ok: pop edi esi
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
; void* __stdcall mem.Alloc(unsigned size);
|
||||||
|
mem.Alloc:
|
||||||
|
push ebx ecx
|
||||||
|
mov ecx, [esp+12]
|
||||||
|
mcall 68, 12
|
||||||
|
pop ecx ebx
|
||||||
|
ret 4
|
||||||
|
|
||||||
|
; void* __stdcall mem.ReAlloc(void* mptr, unsigned size);
|
||||||
|
mem.ReAlloc:
|
||||||
|
push ebx ecx edx
|
||||||
|
mov edx, [esp+16]
|
||||||
|
mov ecx, [esp+20]
|
||||||
|
mcall 68, 20
|
||||||
|
pop edx ecx ebx
|
||||||
|
ret 8
|
||||||
|
|
||||||
|
; void __stdcall mem.Free(void* mptr);
|
||||||
|
mem.Free:
|
||||||
|
push ebx ecx
|
||||||
|
mov ecx, [esp+12]
|
||||||
|
mcall 68, 13
|
||||||
|
pop ecx ebx
|
||||||
|
ret 4
|
||||||
|
|
||||||
|
s_libdir:
|
||||||
|
db '/sys/lib/'
|
||||||
|
.fname rb 32
|
1910
programs/network/downloader/trunk/downloader.asm
Normal file
1910
programs/network/downloader/trunk/downloader.asm
Normal file
File diff suppressed because it is too large
Load Diff
1
programs/network/downloader/trunk/lang.inc
Normal file
1
programs/network/downloader/trunk/lang.inc
Normal file
@ -0,0 +1 @@
|
|||||||
|
lang fix ru
|
Loading…
Reference in New Issue
Block a user