0,0 → 1,191 |
use32 |
org 0 |
|
db 'MENUET01' |
dd 1 |
dd START |
dd I_END |
dd MEM |
dd STACKTOP |
dd PARAM |
dd 0 |
|
include '..\..\macros.inc' |
START: |
mcall 40, 0x05 |
mov eax, [PARAM] |
test eax, eax |
jnz save_data |
still: |
call draw |
mcall 23, 200 ;2 seconds |
|
cmp eax,1 |
je still |
cmp eax,3 |
jnz still |
|
mcall 17 |
cmp eax,1 |
jz still |
dec ah |
jz exit |
dec ah |
jnz still |
;2 - button save in file |
exit: |
mcall -1 |
draw: |
mcall 68, 31, 1 |
mov [final_pointer], ecx |
mov [start_pointer], ebx |
mcall 48,3,sc,sc,sizeof.system_colors ;get system colors |
xor eax,eax |
mov ebx, 0x00ff017f |
mov ecx, 0x001501cc |
mov edx, 0x14000000 |
add edx, [sc.work] |
mov edi,title |
mcall |
|
;mov eax, 13 |
;mov ebx, 0x00080170 |
;mov ecx, 0x0037018c |
;mov edx, [sc.work_text] |
;mcall |
mcall 13, 0x00080170, 0x00370003, [sc.work_text] |
mcall , , 0x01c00003, ;[sc.work_text] |
mcall , 0x00080003, 0x0037018c, ;[sc.work_text] |
mcall , 0x01780003, , ;[sc.work_text] |
|
;mov eax, 13 |
;mov ebx, 0x000c016a |
;mov ecx, 0x003a0185 |
;mov edx, [sc.work] |
;mcall |
|
mov eax, 4 |
mov ebx, 0x000f001f |
mov ecx, 0x90000000 |
add ecx, [sc.work_text] |
mov edx, table_title |
mcall |
|
push dword[start_pointer] |
@@: |
;call get_next_service |
mov eax, 68 |
mov ebx, 31 |
mov ecx, 2 |
mov edx, [esp] |
mov edi, data_list |
mcall |
|
mov eax, 4 |
mov ebx, print_1 |
add ebx, [index_service] |
mov ecx, 0xd0000000 ;draw bkgr |
add ecx, [sc.work_text] |
mov edx, data_list |
mov edi, [sc.work] |
mcall |
|
mov eax, 47 |
mov ebx, default_settings_47 |
mov ecx, [esp] |
mov edx, print_2 |
add edx, [index_service] |
mov esi, 0x50000000 |
add esi, [sc.work_text] |
mov edi, [sc.work] |
mcall |
|
mov eax, 47 |
mov ebx, default_settings_47 |
mov ecx, [data_list.srv_proc] |
mov edx, print_3 |
add edx, [index_service] |
mov esi, 0x50000000 |
add esi, [sc.work_text] |
mov edi, [sc.work] |
mcall |
|
add dword[index_service],15 |
pop eax |
cmp eax,[final_pointer] ;eax - this_pointer |
push dword[data_list.fd] |
jnz @b |
pop eax |
and dword[index_service], 0 ; clear |
ret |
;------------------------------------------------------------------------------- |
;This function get 'this_pointer' in stack, stack don`t used |
;get_next_service |
; mov eax, 68 |
; mov ebx, 31 |
; mov ecx, 2 |
; mov edx, [esp+4] |
; mov edi, data_list |
; mcall |
; ret |
;------------------------------------------------------------------------------- |
save_data: |
mcall 70,file_str |
mov dword[file_str], 3 |
mov dword[file_str.size], 36 ;40 |
mov dword[file_str.addr], data_list |
mcall 68, 31, 1 |
mov [final_pointer], ecx |
mov [start_pointer], ebx |
push dword[start_pointer] |
@@: |
mov eax, 68 |
mov ebx, 31 |
mov ecx, 2 |
mov edx, [esp] |
mov edi, data_list |
mcall |
mcall 70, file_str |
add dword[file_str.pos], 36 ;40 |
pop eax |
cmp eax,[final_pointer] ;eax - this_pointer |
push dword[data_list.fd] |
jnz @b |
pop eax |
jmp still |
ret |
title: db 'list_services',0 |
table_title: db ' Service_name | Handler | Service_proc',0 |
index_service: dd 0 |
start_pointer: dd 0 |
final_pointer: dd 0 |
|
data_list: |
.name: rb 16 |
.fd: rd 1 |
.bk: rd 1 |
.base: rd 1 |
.entry: rd 1 |
.srv_proc: rd 1 |
|
file_str: |
dd 2 ;rewrite this value = 3 |
.pos: dd 0 |
dd 0 |
.size: dd 0 |
.addr: dd 0 |
;db '/tmp0/1/log_services.log',0 |
db 0 |
dd PARAM |
sc system_colors |
|
default_settings_47 = 0x00080100 |
print_1 = 0x0015003f |
print_2 = 0x00ac003f |
print_3 = 0x0113003f |
PARAM: rb 256 |
I_END: |
rb 256 |
align 16 |
STACKTOP: |
MEM: |