Subversion Repositories Kolibri OS

Rev

Rev 1101 | Rev 1214 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1101 Lrz 1
;заголовок приложения
2
use32                ; транслятор, использующий 32 разрядных команды
3
    org 0x0                ; базовый адрес кода, всегда 0x0
4
    db 'MENUET01'        ; идентификатор исполняемого файла (8 байт)
5
    dd 0x1                ; версия формата заголовка исполняемого файла
6
    dd start                ; адрес, на который система передаёт управление
7
                        ; после загрузки приложения в память
8
    dd i_end                ; размер приложения
9
    dd mem                  ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
10
    dd mem                  ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
11
    dd 0x0              ; указатель на строку с параметрами.
12
    dd cur_dir_path
13
 
14
 
15
include '../../../../../macros.inc'
16
include 'editbox_ex.mac'
1108 Lrz 17
include '../../load_lib.mac'
1101 Lrz 18
	@use_library	;use load lib macros
19
start:
20
;universal load library/librarys
21
sys_load_library  library_name, cur_dir_path, library_path, system_path, \
22
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
23
;if return code =-1 then exit, else nornary work
24
        cmp     eax,-1
25
        jz      exit
26
        mcall   40,0x27         ;установить маску для ожидаемых событий
27
red_win:
28
    call draw_window            ;первоначально необходимо нарисовать окно
29
align 4
30
still:                          ;основной обработчик
31
        mcall   10              ;Ожидать события
32
        dec  eax
33
        jz   red_win
34
        dec  eax
35
        jz   key
36
        dec  eax
37
        jz   button
38
 
39
        push    dword edit1
40
        call    [edit_box_mouse]
41
 
42
        push    dword edit2
43
        call    [edit_box_mouse]
44
 
45
        push    dword check1
46
        call    [check_box_mouse]
47
 
48
        push    dword check2
49
        call    [check_box_mouse]
50
 
51
        push    dword Option_boxs
52
        call    [option_box_mouse]
53
 
54
        push    dword Option_boxs2
55
        call    [option_box_mouse]
56
 
57
        jmp still    ;если ничего из перечисленного то снова в цикл
58
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59
button:
60
        mcall   17      ;получить идентификатор нажатой клавиши
61
        test ah,ah      ;если в ah 0, то перейти на обработчик событий still
62
        jz  still
63
exit:   mcall   -1
64
key:
65
        mcall   2       ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
66
 
67
        push    dword edit1
68
        call    [edit_box_key]
69
 
70
        push    dword edit2
71
        call    [edit_box_key]
72
 
73
        jmp still
74
 
75
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
76
align 4
77
draw_window:            ;рисование окна приложения
78
        mcall   12,1
79
        mcall   0,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
80
 
81
        push    dword edit1
82
        call    [edit_box_draw]
83
 
84
        push    dword edit2
85
        call    [edit_box_draw]
86
 
87
        push    dword check1
88
        call    [check_box_draw]
89
 
90
        push    dword check2
91
        call    [check_box_draw]
92
 
93
        push    dword Option_boxs
94
        call    [option_box_draw]
95
 
96
        push    dword Option_boxs2
97
        call    [option_box_draw]
98
 
99
        mcall   12,2
100
    ret
101
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
102
;DATA данные
103
;Всегда соблюдать последовательность в имени.
104
system_path      db '/sys/lib/'
105
library_name     db 'box_lib.obj',0
106
; Если есть желание разъединить, то нужно использовать следующию конструкцию
107
;system_path      db '/sys/lib/box_lib.obj',0
108
;... любая последовательность других команд и определений.
109
;library_name     db 'box_lib.obj',0
110
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
111
 
112
err_message_found_lib   db 'Sorry I cannot load library box_lib.obj',0
113
head_f_i:
114
head_f_l        db 'System error',0
115
err_message_import      db 'Error on load import library box_lib.obj',0
116
 
117
myimport:
118
 
119
edit_box_draw   dd      aEdit_box_draw
120
edit_box_key    dd      aEdit_box_key
121
edit_box_mouse  dd      aEdit_box_mouse
122
version_ed      dd      aVersion_ed
123
 
124
check_box_draw  dd      aCheck_box_draw
125
check_box_mouse dd      aCheck_box_mouse
126
version_ch      dd      aVersion_ch
127
 
128
option_box_draw  dd      aOption_box_draw
129
option_box_mouse dd      aOption_box_mouse
130
version_op       dd      aVersion_op
131
 
132
                dd      0
133
                dd      0
134
 
135
aEdit_box_draw  db 'edit_box',0
136
aEdit_box_key   db 'edit_box_key',0
137
aEdit_box_mouse db 'edit_box_mouse',0
138
aVersion_ed     db 'version_ed',0
139
 
140
aCheck_box_draw  db 'check_box_draw',0
141
aCheck_box_mouse db 'check_box_mouse',0
142
aVersion_ch      db 'version_ch',0
143
 
144
aOption_box_draw  db 'option_box_draw',0
145
aOption_box_mouse db 'option_box_mouse',0
146
aVersion_op       db 'version_op',0
147
 
148
 
149
 
150
 
151
check1 check_box 10,45,6,12,0x80AABBCC,0,0,check_text,14,ch_flag_en
152
check2 check_box 10,60,6,12,0x80AABBCC,0,0,check_text2,15
153
 
154
edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,ed_focus,hed_end-hed-1,hed_end-hed-1
155
edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,ed_figure_only
156
 
157
op1 option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
158
op2 option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
159
op3 option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
160
op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
161
op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
162
op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
163
 
164
option_group1   dd op1  ;указатели, они отображаются по умолчанию, когда выводится
165
option_group2   dd op12 ;приложение
166
Option_boxs     dd  op1,op2,op3,0
167
Option_boxs2    dd  op11,op12,op13,0
168
hed db   'BOXs load from lib  date 27.04.2009',0
169
hed_end:
170
rb  256
171
check_text db 'First checkbox'
172
check_text2 db 'Second checkbox'
173
op_text:                ; Сопровождающий текст для чек боксов
174
.1 db 'Option_Box #1'
175
.e1:
176
.2 db 'Option_Box #2'
177
.e2:
178
.3 db 'Option_Box #3'
179
.e3:
180
ed_buffer       rb 100
181
;-----------------------
182
;sc      system_colors
183
p_info  process_information
184
cur_dir_path    rb 4096
185
library_path    rb 4096
186
i_end:
187
rb 1024
188
mem: