; ; ARPmanager for KolibriOS ; ; hidnplayr@gmail.com ; use32 org 0x0 db 'MENUET01' ; 8 byte id dd 0x01 ; header version dd START ; start of code dd IM_END ; size of image dd (I_END+0x100) ; memory for app dd (I_END+0x100) ; 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 mcall 4, 25 shl 16 + 31, 0x80000000, title ;; call draw_stats 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: mov edx, 50 shl 16 + 50 .loop: mcall 75, 0x06080003, [last],,,ARP_ENTRY cmp eax, -1 je mainloop mcall 4, edx, 0x80000000, str_entry mov edx, ebx mov eax, 47 mov ebx, 0x00030000 mov esi, 0x40000000 mov edi, 0x00bcbcbc xor ecx, ecx mov cl, byte[ARP_ENTRY.IP+0] mcall mov cl, byte[ARP_ENTRY.IP+1] add edx, 24 shl 16 mcall mov cl, byte[ARP_ENTRY.IP+2] add edx, 24 shl 16 mcall mov cl, byte[ARP_ENTRY.IP+3] add edx, 24 shl 16 mcall mov ebx, 0x00020100 mov cl, byte[ARP_ENTRY.MAC+0] add edx, 36 shl 16 mcall mov cl, byte[ARP_ENTRY.MAC+1] add edx, 18 shl 16 mcall mov cl, byte[ARP_ENTRY.MAC+2] add edx, 18 shl 16 mcall mov cl, byte[ARP_ENTRY.MAC+3] add edx, 18 shl 16 mcall mov cl, byte[ARP_ENTRY.MAC+4] add edx, 18 shl 16 mcall mov cl, byte[ARP_ENTRY.MAC+5] add edx, 18 shl 16 mcall mov ebx, 0x00040000 mov cx, [ARP_ENTRY.Status] add edx, 30 shl 16 mcall mov cx, [ARP_ENTRY.TTL] add edx, 60 shl 16 mcall add dx, 20 rol edx, 16 mov dx, 50 rol edx, 16 inc [last] jmp .loop key: mcall 2 jmp mainloop button: ; button mcall 17 ; get id cmp ah, 1 je close jmp redraw close: mcall -1 ; DATA AREA IM_END: name db 'ARP manager',0 title db '# IP-address MAC-address Status TTL',0 str_entry db ' . . . - - - - - s',0 last dd 0 ARP_ENTRY: .IP dd 192 shl 0 + 168 shl 8 + 1 shl 16 + 1 shl 24 .MAC dp 0xdeadbeef1337 .Status dw 0x0300 .TTL dw 37 .size: include_debug_strings ; ALWAYS present in data section I_PARAM rb 1024 I_END: