0,0 → 1,504 |
; |
; Netstat for KolibriOS v0.1 |
; |
; hidnplayr@gmail.com |
; |
|
use32 |
|
org 0x0 |
|
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd IM_END ; memory for app |
dd IM_END ; esp |
dd I_PARAM , 0x0 ; I_Param , I_Icon |
|
__DEBUG__ equ 1 |
__DEBUG_LEVEL__ equ 1 |
|
include '..\macros.inc' |
include '..\debug-fdo.inc' |
|
START: ; start of execution |
; TODO: check Parameters |
|
DEBUGF 1, 'Hello!\n' |
|
|
redraw: |
|
mcall 12, 1 |
|
mcall 0, 100 shl 16 + 520, 100 shl 16 + 240, 0x34bcbcbc, ,name |
|
mov edx, 101 |
mov esi, 0x00aaaaff |
mov edi, 0x00aaffff |
|
cmp dl, [mode] |
cmove esi, edi |
mcall 8, 25 shl 16 + 65, 25 shl 16 + 20 |
|
@@: |
inc edx |
add ebx, 75 shl 16 |
mov esi, 0x00aaaaff |
|
cmp dl, [mode] |
cmove esi, edi |
mcall |
|
cmp edx, 105 |
jle @r |
|
mcall 4, 28 shl 16 + 31, 0x80000000, modes |
|
cmp [mode], 101 |
jne @f |
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx |
add ebx, 18 |
mov edx, str_packets_rx |
mcall |
add ebx, 18 |
mov edx, str_bytes_tx |
mcall |
add ebx, 18 |
mov edx, str_bytes_rx |
mcall |
add ebx, 18 |
mov edx, str_MAC |
mcall |
add ebx, 18 |
mov edx, str_queue_in |
mcall |
add ebx, 18 |
mov edx, str_queue_out |
mcall |
|
push end_of_draw |
|
mov ebx,1337 shl 16 + 4 |
mov bh, [device] |
mcall 75 |
push eax |
push bx |
|
mov edx, 135 shl 16 + 75 + 4*18 |
jmp draw_mac |
|
@@: |
|
cmp [mode], 102 |
jne @f |
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx |
add ebx, 18 |
mov edx, str_packets_rx |
mcall |
add ebx, 18 |
mov edx, str_ip |
mcall |
add ebx, 18 |
mov edx, str_dns |
mcall |
add ebx, 18 |
mov edx, str_subnet |
mcall |
add ebx, 18 |
mov edx, str_gateway |
mcall |
|
|
mov ebx, 0 shl 16 + 8 |
mov bh, [device] |
mcall 75 |
push eax |
|
dec bl |
dec bl |
mcall 75 |
push eax |
|
dec bl |
dec bl |
mcall 75 |
push eax |
|
dec bl |
dec bl |
mcall 75 |
push eax |
|
mov edx, 135 shl 16 + 75 + 2*18 |
call draw_ip |
|
add edx, 18 |
call draw_ip |
|
add edx, 18 |
call draw_ip |
|
add edx, 18 |
call draw_ip |
|
jmp end_of_draw |
|
@@: |
|
cmp [mode], 103 |
jne @f |
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx |
add ebx, 18 |
mov edx, str_packets_rx |
mcall |
add ebx, 18 |
mov edx, str_arp |
mcall |
|
jmp end_of_draw |
|
@@: |
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx |
add ebx, 18 |
mov edx, str_packets_rx |
mcall |
|
end_of_draw: |
|
mcall 12, 2 |
|
jmp draw_stats |
|
mainloop: |
|
mcall 23,50 ; wait for event with timeout (0,5 s) |
|
cmp eax, 1 |
je redraw |
cmp eax, 2 |
je key |
cmp eax, 3 |
je button |
|
|
|
|
;------------------------------- |
; |
;------------------------------ |
|
draw_stats: |
|
cmp [mode], 101 |
jne not_101 |
|
mov ebx, 1337 shl 16 + 0 |
mov bh, [device] |
@@: |
mcall 75 |
push eax |
inc bl |
cmp bl, 3 |
jle @r |
|
|
inc bl |
inc bl |
|
@@: |
mcall 75 |
push eax |
inc bl |
cmp bl, 7 |
jle @r |
|
mov eax, 47 |
mov ebx, 0x000a0000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
mov edx, 135 shl 16 + 75 + 6*18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
sub edx, 2*18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
|
jmp mainloop |
|
|
not_101: |
|
cmp [mode], 102 |
jne not_102 |
|
mov ebx, 0 shl 16 |
mov bh, [device] |
mcall 75 |
push eax |
inc bl |
mcall 75 |
push eax |
inc bl |
|
mov eax, 47 |
mov ebx, 0x000a0000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
mov edx, 135 shl 16 + 75 + 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
|
jmp mainloop |
|
|
not_102: |
|
cmp [mode], 103 |
jne not_103 |
|
mov ebx, 0x0608 shl 16 + 0 |
mov bh, [device] |
mcall 75 |
push eax |
inc bl |
mcall 75 |
push eax |
inc bl |
mcall 75 |
push eax |
inc bl |
|
mov eax, 47 |
mov ebx, 0x000a0000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
mov edx, 135 shl 16 + 75 + 2*18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
|
jmp mainloop |
|
not_103: |
|
cmp [mode], 104 |
jne not_104 |
|
mov ebx, 1 shl 16 + 0 |
mov bh, [device] |
mcall 75 |
push eax |
inc bl |
mcall 75 |
push eax |
inc bl |
|
mov eax, 47 |
mov ebx, 0x000a0000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
mov edx, 135 shl 16 + 75 + 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
|
jmp mainloop |
|
not_104: |
|
cmp [mode], 105 |
jne not_105 |
|
mov ebx, 17 shl 16 + 0 |
mov bh, [device] |
mcall 75 |
push eax |
inc bl |
mcall 75 |
push eax |
inc bl |
|
mov eax, 47 |
mov ebx, 0x000a0000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
mov edx, 135 shl 16 + 75 + 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
|
jmp mainloop |
|
not_105: |
|
cmp [mode], 106 |
jne not_106 |
|
mov ebx, 6 shl 16 + 0 |
mov bh, [device] |
mcall 75 |
push eax |
inc bl |
mcall 75 |
push eax |
inc bl |
|
mov eax, 47 |
mov ebx, 0x000a0000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
mov edx, 135 shl 16 + 75 + 18 |
pop ecx |
mcall |
sub edx, 18 |
pop ecx |
mcall |
|
jmp mainloop |
|
not_106: |
|
jmp mainloop |
|
key: |
mcall 2 |
jmp mainloop |
|
|
button: ; button |
mcall 17 ; get id |
cmp ah, 1 |
je close |
mov [mode], ah |
jmp redraw |
|
close: |
mcall -1 |
|
|
|
draw_mac: |
|
mov eax, 47 |
mov ebx, 0x00020100 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
|
mov cl, [esp] |
mcall |
|
mov cl, [esp+1] |
add edx, 15 shl 16 |
mcall |
|
mov cl, [esp+2] |
add edx, 15 shl 16 |
mcall |
|
mov cl, [esp+3] |
add edx, 15 shl 16 |
mcall |
|
mov cl, [esp+4] |
add edx, 15 shl 16 |
mcall |
|
mov cl, [esp+5] |
add edx, 15 shl 16 |
mcall |
|
add esp, 6 |
sub edx, 5*15 shl 16 |
|
ret |
|
|
draw_ip: |
|
mov eax, 47 |
mov ebx, 0x00030000 |
mov esi, 0x40000000 |
mov edi, 0x00bcbcbc |
|
xor ecx, ecx |
|
mov cl, [esp+4] |
mcall |
|
mov cl, [esp+4+1] |
add edx, 30 shl 16 |
mcall |
|
mov cl, [esp+4+2] |
add edx, 30 shl 16 |
mcall |
|
mov cl, [esp+4+3] |
add edx, 30 shl 16 |
mcall |
|
sub edx, 3*30 shl 16 |
mov eax, [esp] |
add esp, 8 |
jmp eax |
|
|
; DATA AREA |
|
I_END: |
|
name db 'Netstat',0 |
mode db 101 |
device db 0 |
modes db 'Ethernet IPv4 ARP ICMP UDP TCP',0 |
|
str_packets_tx db 'Packets sent:',0 |
str_packets_rx db 'Packets received:',0 |
str_bytes_tx db 'Bytes sent:',0 |
str_bytes_rx db 'Bytes received:',0 |
str_MAC db 'MAC address:',0 |
str_queue_in db 'IN-queue size:',0 |
str_queue_out db 'OUT-queue size:',0 |
str_ip db 'IP address:',0 |
str_dns db 'DNS address:',0 |
str_subnet db 'Subnet mask:',0 |
str_gateway db 'Standard gateway:',0 |
str_arp db 'ARP entrys:',0 |
|
include_debug_strings ; ALWAYS present in data section |
|
I_PARAM rb 1024 |
|
IM_END: |
|
|