Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
205 heavyiron 1
;--- другие макросы ---
2
include 'editbox.inc'
3
include 'txtbut.inc'
307 Lrz 4
;include 'gp.inc'
205 heavyiron 5
include 'label.inc'
6
;include 'checkbox.inc'
7
include 'check.inc'
8
include 'file_sys.inc'
9
include 'textwork.inc'
10
;include 'ini.inc'
11
 
12
lang fix ru;en
13
 
14
macro movr reg,val
15
{
16
if val < 65536
17
	push	val
18
	pop	reg
19
else
20
	mov	reg,val
21
end if
22
}
23
 
24
;--- заголовок ---
25
macro meos_header par_buf,cur_dir_buf
26
{
27
	use32
28
	org	0x0
29
 
30
	db	'MENUET01'
31
	dd	0x01
32
	dd	__app_start
33
	dd	__app_end
34
	dd	__app_end
35
	dd	__app_end
36
if  eq <>
37
	dd	0x0
38
else
39
	dd	par_buf
40
end if
41
if  eq <>
42
	dd	0x0
43
else
44
	dd	cur_dir_buf
45
end if
46
}
47
 
48
;--- определить точку входа ---
49
macro app_start
50
{
51
__app_start:
52
}
53
 
54
;--- определить конец приложения и размер стека ---
55
macro app_end stack_size
56
{
57
if  eq <>
58
	rb	1024
59
else
60
	rb	stack_size
61
end if
62
__app_end:
63
}
64
 
65
;--- завершить текущий поток ---
66
macro app_close
67
{
68
	xor	eax,eax
69
	dec	eax
70
	int	0x40
71
}
72
 
73
;--- получить код нажатой клавиши ---
74
macro get_key
75
{
76
	;mov     eax,2
77
	push	2
78
	pop	eax
79
	int	0x40
80
}
81
 
82
;--- получить код нажатой кнопки ---
83
macro get_pressed_button
84
{
85
	;mov     eax,17
86
	push	17
87
	pop	eax
88
	int	0x40
89
}
90
 
91
;--- сообщить системе о начале перерисовки окна ---
92
macro start_draw_window
93
{
94
	;mov     eax,12
95
	push	12
96
	pop	eax
97
	xor	ebx,ebx
98
	inc	ebx
99
	int	0x40
100
}
101
 
102
;--- сообщить системе о завершении перерисовки окна ---
103
macro stop_draw_window
104
{
105
	;mov     eax,12
106
	push	12
107
	pop	eax
108
	;mov     ebx,2
109
	push	2
110
	pop	ebx
111
	int	0x40
112
}
113
 
114
;--- установить маску ожидаемых событий ---
115
macro set_events_mask mask
116
{
117
	;mov     eax,40
118
	push	40
119
	pop	eax
120
	;mov     ebx,mask
121
	push	mask
122
	pop	ebx
123
	int	0x40
124
}
125
 
126
;--- получить информацию о процессе ---
127
macro get_procinfo proc_inf_buf,slot_num
128
{
129
	;mov     eax,9
130
	push	9
131
	pop	eax
132
	;mov     ebx,proc_inf_buf
133
	push	proc_inf_buf
134
	pop	ebx
135
if  eq <>
136
	xor	ecx,ecx
137
	dec	ecx
138
else
139
	;mov     ecx,slot_num
140
	push	slot_num
141
	pop	ecx
142
end if
143
	int	0x40
144
}
145
 
146
macro get_sys_colors col_buf
147
{
148
	;mov     eax,48
149
	push	48
150
	pop	eax
151
	;mov     ebx,3
152
	push	3
153
	pop	ebx
154
	;mov     ecx,col_buf
155
	push	col_buf
156
	pop	ecx
157
	;mov     edx,40
158
	push	40
159
	pop	edx
160
	int	0x40
161
}
162
 
163
macro get_grab_area
164
{
165
	movr	 eax,48
166
	movr	 ebx,7
167
	int	0x40
168
}
169
 
307 Lrz 170
macro get_skin_height
205 heavyiron 171
{
172
	movr	 eax,48
173
	movr	 ebx,4
174
	int	0x40
175
}
176
 
177
macro min_window
178
{
179
	movr	 eax,18
180
	movr	 ebx,10
181
	int	0x40
182
}
183
 
184
macro activ_window slot_n
185
{
186
	movr	 eax,18
187
	movr	 ebx,3
188
if  eq <>
189
else
190
	movr	 ecx,slot_n
191
end if
192
	int	0x40
193
}
194
 
195
macro get_active_window
196
{
197
	movr	 eax,18
198
	movr	 ebx,7
199
	int	0x40
200
}
201
 
202
macro delay time
203
{
204
	movr	 eax,5
205
if 
206
else
207
	movr	 ebx,time
208
end if
209
	int	0x40
210
}
211
 
212
;--- ожидать события ---
213
macro wait_event redraw,key,button,mouse,ipc,other
214
{
215
	movr	 eax,10
216
	int	0x40
217
	dec	ax
218
if  eq <>
219
else
220
	jz	redraw
221
end if
222
	dec	ax
223
if  eq <>
224
else
225
	jz	key
226
end if
227
	dec	ax
228
if 
229
else
230
	jz	button
231
end if
232
	dec	ax
233
	dec	ax
234
	dec	ax
235
if  eq <>
236
else
237
	jz	mouse
238
end if
239
if  eq <>
240
else
241
	dec	ax
242
	jz	ipc
243
end if
244
if  eq <>
245
	jmp	still
246
else
247
	jmp	other
248
end if
249
}
250
 
251
;--- получить размеры экрана ---
252
macro get_screen_size
253
{
254
	movr	 eax,14
255
	int	0x40
256
}
257
 
258
macro get_screen_prop  struc_ptr
259
{
260
	movr	 eax,61
261
	push	eax eax
262
	xor	ebx,ebx
263
	inc	ebx
264
	int	0x40
265
	mov	[struc_ptr],eax
266
	pop	eax
267
	inc	ebx
268
	int	0x40
269
	mov	[struc_ptr+4],ax
270
	pop	eax
271
	inc	ebx
272
	int	0x40
273
	mov	[struc_ptr+6],eax
274
}
275
 
276
macro resize_mem mem_size
277
{
278
	movr	 eax,64
279
	xor	ebx,ebx
280
	inc	ebx
281
if  eq <>
282
else
283
	movr	 ecx,mem_size
284
end if
285
	int	0x40
286
}
287
 
288
evm_redraw equ 1
289
evm_key equ 10b
290
evm_button equ 100b
291
evm_mouse equ 100000b
292
evm_ipc equ 1000000b
293
 
294
struc procinfo
295
{
296
.takts_per_second: dd ?
297
.window_stack_pos: dw ?
298
.slot_number: dw ?
299
dw ?
300
.name: rb 11
301
.align: db ?
302
.addres: dd ?
303
.use_mem: dd ?
304
.pid: dd ?
305
.left: dd ?
306
.top: dd ?
307
.width: dd ?
308
.height: dd ?
309
.slot_state: dw ?
310
rb (1024-56)
311
}
312
 
313
struc sys_color_table
314
{
315
.frames: dd ?  ;+0
316
.grab: dd ?    ;+4
317
.grab_button: dd ? ;+8
318
.grab_button_text: dd ?  ;+12
319
.grab_text: dd ?  ;+16
320
.work: dd ?	  ;+20
321
.work_button: dd ?;+24
322
.work_button_text: dd ? ;+28
323
.work_text: dd ?	;+32
324
.work_graph: dd ?	;+36
325
}
326
 
327
struc screen_size
328
{
329
.height: dw ?
330
.width: dw ?
331
}
332
 
333
struc screen_prop
334
{
335
.height: dw ? ;+0
336
.width: dw ?  ;+2
337
.bitspp: dw ? ;+4
338
.bytesps: dd ?;+6
339
}
340
 
341
struc ipc_buffer size
342
{
343
.block: dd ?
344
.in_use: dd ?
345
.messages: rb size
346
}
347
 
348
;--- цвета ---
349
cl_white=0xffffff
307 Lrz 350
cl_black=0x000000
351
 
352
;==============================================================================
353
;============== Константы =====================================================
354
;==============================================================================