Subversion Repositories Kolibri OS

Rev

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

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