Subversion Repositories Kolibri OS

Rev

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