Subversion Repositories Kolibri OS

Rev

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

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