Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; ARPmanager for KolibriOS
  3. ;
  4. ; hidnplayr@gmail.com
  5. ;
  6.  
  7. format binary as ""
  8.  
  9. use32
  10.  
  11.     org     0x0
  12.  
  13.     db     'MENUET01'           ; 8 byte id
  14.     dd     0x01                 ; header version
  15.     dd     START                ; start of code
  16.     dd     IM_END               ; size of image
  17.     dd     (I_END+0x100)        ; memory for app
  18.     dd     (I_END+0x100)        ; esp
  19.     dd     0x0 , 0x0            ; I_Param , I_Icon
  20.  
  21. include '../macros.inc'
  22. purge   mov, add, sub
  23. include '../struct.inc'
  24. include '../network.inc'
  25.  
  26. START:
  27.  
  28. redraw:
  29.  
  30.         mcall   12, 1
  31.         mcall   0, 100 shl 16 + 520, 100 shl 16 + 240, 0x34bcbcbc, , str_name
  32.         mcall   4, 25 shl 16 + 31, 0x80000000, str_legend
  33.         mcall   12, 2
  34.  
  35. draw_stats:
  36.  
  37.         mov     edx, 50 shl 16 + 50
  38.         mov     [last], 0
  39.  
  40.   .loop:
  41.         mcall   76, API_ARP + 3, [last],,, arp_buf
  42.         cmp     eax, -1
  43.         je      mainloop
  44.  
  45.         mcall   4, edx, 0x80000000, str_entry
  46.         mov     edx, ebx
  47.  
  48.         mov     eax, 47
  49.         mov     ebx, 0x00030000
  50.         mov     esi, 0x40000000
  51.         mov     edi, 0x00bcbcbc
  52.         xor     ecx, ecx
  53.  
  54.         mov     cl, byte[arp_buf.IP+0]
  55.         mcall
  56.  
  57.         mov     cl, byte[arp_buf.IP+1]
  58.         add     edx, 24 shl 16
  59.         mcall
  60.  
  61.         mov     cl, byte[arp_buf.IP+2]
  62.         add     edx, 24 shl 16
  63.         mcall
  64.  
  65.         mov     cl, byte[arp_buf.IP+3]
  66.         add     edx, 24 shl 16
  67.         mcall
  68.  
  69.  
  70.         mov     ebx, 0x00020100
  71.         mov     cl, byte[arp_buf.MAC+0]
  72.         add     edx, 36 shl 16
  73.         mcall
  74.  
  75.         mov     cl, byte[arp_buf.MAC+1]
  76.         add     edx, 18 shl 16
  77.         mcall
  78.  
  79.         mov     cl, byte[arp_buf.MAC+2]
  80.         add     edx, 18 shl 16
  81.         mcall
  82.  
  83.         mov     cl, byte[arp_buf.MAC+3]
  84.         add     edx, 18 shl 16
  85.         mcall
  86.  
  87.         mov     cl, byte[arp_buf.MAC+4]
  88.         add     edx, 18 shl 16
  89.         mcall
  90.  
  91.         mov     cl, byte[arp_buf.MAC+5]
  92.         add     edx, 18 shl 16
  93.         mcall
  94.  
  95.         mov     ebx, 0x00040000
  96.         mov     cx, [arp_buf.status]
  97.         add     edx, 30 shl 16
  98.         mcall
  99.  
  100.         mov     cx, [arp_buf.TTL]
  101.         add     edx, 60 shl 16
  102.         mcall
  103.  
  104.         add     dx, 20
  105.         rol     edx, 16
  106.         mov     dx, 50
  107.         rol     edx, 16
  108.         inc     [last]
  109.  
  110.         jmp     .loop
  111.  
  112.  
  113. mainloop:
  114.  
  115.         mcall   23,50                  ; wait for event with timeout    (0,5 s)
  116.  
  117.         cmp     eax, 1
  118.         je      redraw
  119.         cmp     eax, 2
  120.         je      key
  121.         cmp     eax, 3
  122.         je      button
  123.  
  124.         jmp     draw_stats
  125.  
  126.  
  127. key:
  128.         mcall   2
  129.         jmp     mainloop
  130.  
  131.  
  132. button:                                 ; button
  133.         mcall   17                      ; get id
  134.         cmp     ah, 1
  135.         je      exit
  136.         jmp     redraw
  137.  
  138. exit:
  139.         mcall   -1
  140.  
  141.  
  142.  
  143. ; DATA AREA
  144.  
  145. str_name        db 'ARP manager', 0
  146. str_legend      db '#   IP-address        MAC-address         Status    TTL', 0
  147. str_entry       db '   .   .   .        -  -  -  -  -                     s', 0
  148.  
  149. IM_END:
  150.  
  151. last            dd ?
  152. arp_buf         ARP_entry
  153.  
  154. I_END:
  155.  
  156.  
  157.