Subversion Repositories Kolibri OS

Rev

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

  1.   use32
  2.   org    0
  3.  
  4.   db     'MENUET01'
  5.   dd     1
  6.   dd     START
  7.   dd     I_END
  8.   dd     MEM
  9.   dd     STACKTOP
  10.   dd     PARAM
  11.   dd     0
  12.  
  13. include '..\..\macros.inc'
  14. START:
  15.        mcall 40, 0x05
  16.        mov  eax, [PARAM]
  17.        test eax, eax
  18.        jnz  save_data
  19. still:
  20.        call draw
  21.        mcall 23, 200   ;2 seconds
  22.  
  23.        cmp  eax,1
  24.        je   still
  25.        cmp  eax,3
  26.        jnz   still
  27.  
  28.        mcall 17
  29.        cmp eax,1
  30.        jz  still
  31.        dec ah
  32.        jz  exit
  33.        dec ah
  34.        jnz still
  35.        ;2 - button save in file
  36. exit:
  37.        mcall -1
  38. draw:
  39.        mcall 68, 31, 1
  40.        mov [final_pointer], ecx
  41.        mov [start_pointer], ebx
  42.        mcall 48,3,sc,sc,sizeof.system_colors  ;get system colors
  43.        xor eax,eax
  44.        mov ebx, 0x00ff017f
  45.        mov ecx, 0x001501cc
  46.        mov edx, 0x14000000
  47.        add edx, [sc.work]
  48.        mov edi,title
  49.        mcall
  50.  
  51.        ;mov eax, 13
  52.        ;mov ebx, 0x00080170
  53.        ;mov ecx, 0x0037018c
  54.        ;mov edx, [sc.work_text]
  55.        ;mcall
  56.         mcall 13, 0x00080170, 0x00370003, [sc.work_text]
  57.         mcall , , 0x01c00003, ;[sc.work_text]
  58.         mcall , 0x00080003, 0x0037018c, ;[sc.work_text]
  59.         mcall , 0x01780003, , ;[sc.work_text]
  60.  
  61.        ;mov eax, 13
  62.        ;mov ebx, 0x000c016a
  63.        ;mov ecx, 0x003a0185
  64.        ;mov edx, [sc.work]
  65.        ;mcall
  66.  
  67.        mov eax, 4
  68.        mov ebx, 0x000f001f
  69.        mov ecx, 0x90000000
  70.        add ecx, [sc.work_text]
  71.        mov edx, table_title
  72.        mcall
  73.  
  74.        push dword[start_pointer]
  75. @@:
  76.        ;call get_next_service
  77.        mov eax, 68
  78.        mov ebx, 31
  79.        mov ecx, 2
  80.        mov edx, [esp]
  81.        mov edi, data_list
  82.        mcall
  83.  
  84.        mov eax, 4
  85.        mov ebx, print_1
  86.        add ebx, [index_service]
  87.        mov ecx, 0xd0000000  ;draw bkgr
  88.        add ecx, [sc.work_text]
  89.        mov edx, data_list
  90.        mov edi, [sc.work]
  91.        mcall
  92.  
  93.        mov eax, 47
  94.        mov ebx, default_settings_47
  95.        mov ecx, [esp]
  96.        mov edx, print_2
  97.        add edx, [index_service]
  98.        mov esi, 0x50000000
  99.        add esi, [sc.work_text]
  100.        mov edi, [sc.work]
  101.        mcall
  102.  
  103.        mov eax, 47
  104.        mov ebx, default_settings_47
  105.        mov ecx, [data_list.srv_proc]
  106.        mov edx, print_3
  107.        add edx, [index_service]
  108.        mov esi, 0x50000000
  109.        add esi, [sc.work_text]
  110.        mov edi, [sc.work]
  111.        mcall
  112.  
  113.        add dword[index_service],15
  114.        pop eax
  115.        cmp eax,[final_pointer]  ;eax - this_pointer
  116.        push dword[data_list.fd]
  117.        jnz @b
  118.        pop eax
  119.        and dword[index_service], 0 ; clear
  120.        ret
  121. ;-------------------------------------------------------------------------------
  122. ;This function get 'this_pointer' in stack, stack don`t used
  123. ;get_next_service
  124. ;        mov eax, 68
  125. ;        mov ebx, 31
  126. ;        mov ecx, 2
  127. ;        mov edx, [esp+4]
  128. ;        mov edi, data_list
  129. ;        mcall
  130. ;        ret
  131. ;-------------------------------------------------------------------------------
  132. save_data:
  133.         mcall 70,file_str
  134.         mov  dword[file_str], 3
  135.         mov  dword[file_str.size], 36 ;40
  136.         mov  dword[file_str.addr], data_list
  137.         mcall 68, 31, 1
  138.         mov [final_pointer], ecx
  139.         mov [start_pointer], ebx
  140.         push dword[start_pointer]
  141. @@:
  142.         mov  eax, 68
  143.         mov  ebx, 31
  144.         mov  ecx, 2
  145.         mov  edx, [esp]
  146.         mov  edi, data_list
  147.         mcall
  148.         mcall 70, file_str
  149.         add  dword[file_str.pos], 36 ;40
  150.         pop  eax
  151.         cmp  eax,[final_pointer]  ;eax - this_pointer
  152.         push dword[data_list.fd]
  153.         jnz  @b
  154.         pop  eax
  155.         jmp  still
  156.         ret
  157. title:  db 'list_services',0
  158. table_title: db '  Service_name   |  Handler  |  Service_proc',0
  159. index_service:  dd 0
  160. start_pointer:  dd 0
  161. final_pointer:  dd 0
  162.  
  163. data_list:
  164. .name:         rb 16
  165. .fd:           rd 1
  166. .bk:           rd 1
  167. .base:         rd 1
  168. .entry:        rd 1
  169. .srv_proc:     rd 1
  170.  
  171. file_str:
  172.         dd      2 ;rewrite this value = 3
  173. .pos:   dd      0
  174.         dd      0
  175. .size:  dd      0
  176. .addr:  dd      0
  177.         ;db      '/tmp0/1/log_services.log',0
  178.         db      0
  179.         dd      PARAM
  180. sc system_colors
  181.  
  182. default_settings_47 = 0x00080100
  183. print_1 = 0x0015003f
  184. print_2 = 0x00ac003f
  185. print_3 = 0x0113003f
  186. PARAM:  rb 256
  187. I_END:
  188.         rb 256
  189. align 16
  190. STACKTOP:
  191. MEM: