Sorry but i'm not used to using fosil and my time is quite expensive right now, but i think this might just work...
Code: Select all
; _______________________________________________________________________________________
;| |
;| ..::FreshLib::.. Free, open source. Licensed under "Fresh artistic license." |
;|_______________________________________________________________________________________|
;
; Description: OS dependent part of the network library.
;
; Target OS: KolibriOS
;
; Dependencies:
;
; Notes:
;
;_________________________________________________________________________________________
proc SocketCreate, .protocol_family, .socket_type, .protocol
begin
push ebx ecx edx esi
mov eax, sys_socket
mov ebx, 0
mov ecx, [.protocol_family]
mov edx, [.socket_type]
mov esi, [.protocol]
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop esi edx ecx ebx
return
endp
proc SocketClose, .hSocket
begin
push ebx ecx
mov eax, sys_socket
mov ebx, 1
mov ecx, [.hSocket]
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop ecx ebx
return
endp
proc SocketConnect, .hSocket, .pAddress
begin
push ebx ecx edx esi
mov eax, sys_socket
mov ebx, 4
mov ecx, [.hSocket]
mov edx, [.pAddress]
mov esi, sizeof.TSocketAddress
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop esi edx ecx ebx
return
endp
proc SocketBind, .hSocket, .pAddressIn
begin
push ebx ecx edx esi
mov eax, sys_socket
mov ebx, 2
mov ecx, [.hSocket]
mov edx, [.pAddressIn]
mov esi, sizeof.TSocketAddressIn
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop esi edx ecx ebx
return
endp
proc SocketListen, .hSocket, .maxPending
begin
push ebx ecx edx
mov eax, sys_socket
mov ebx, 3
mov ecx, [.hSocket]
mov edx, [.maxPending]
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop edx ecx ebx
return
endp
proc SocketAccept, .hSocket, .pAddress
begin
push ebx ecx edx esi
mov eax, sys_socket
mov ebx, 5
mov ecx, [.hSocket]
mov edx, [.pAddress]
mov esi, sizeof.TSocketAddress
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop esi edx ecx ebx
return
endp
proc SocketSend, .hSocket, .pBuffer, .DataLen, .flags
begin
push ebx ecx edx esi edi
mov eax, sys_socket
mov ebx, 6
mov ecx, [.hSocket]
mov edx, [.pBuffer]
mov esi, [.DataLen]
mov edi, [.flags]
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop edi esi edx ecx ebx
return
endp
proc SocketReceive, .hSocket, .pBuffer, .BufferSize, .flags
begin
push ebx ecx edx esi edi
mov eax, sys_socket
mov ebx, 7
mov ecx, [.hSocket]
mov edx, [.pBuffer]
mov esi, [.BufferSize]
mov edi, [.flags]
int $40
cmp eax, -1 ; if eax is -1, set carry flag
cmc
pop edi esi edx ecx ebx
return
endp
proc SocketSendTo, .hSocket, .pBuffer, .DataLen, .flags, .pAddressTo
begin
stc
return
endp
proc SocketReceiveFrom, .hSocket, .pBuffer, .BufferSize, .flags, .pAddressFrom
begin
stc
return
endp