Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
6013 IgorA 1
use32
2
	org 0x0
3
	db 'MENUET01'
4
	dd 1,start,i_end
5
	dd mem,stacktop
6
	dd 0,cur_dir_path
7
 
8
include '../../../../../proc32.inc'
9
include '../../../../../macros.inc'
6100 IgorA 10
include '../../../../../KOSfuncs.inc'
6013 IgorA 11
include '../../../../../develop/libraries/box_lib/load_lib.mac'
12
include '../../../../../dll.inc'
13
include '../opengl_const.inc'
14
include '../../../../../develop/info3ds/info_fun_float.inc'
15
 
16
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
17
 
18
struct FileInfoBlock
19
	Function dd ?
20
	Position dd ?
21
	Flags	 dd ?
22
	Count	 dd ?
23
	Buffer	 dd ?
24
		db ?
25
	FileName dd ?
26
ends
27
 
28
image_data dd 0 ;указатель на временную память, нужен для преобразования изображения
29
image_data_toolbar dd 0
30
IMAGE_FILE1_SIZE equ 128*144*3+54 ;размер файла с изображением
6100 IgorA 31
IMAGE_TOOLBAR_ICON_SIZE equ 256*3
32
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*3+54
6013 IgorA 33
 
34
macro load_image_file path,buf,size { ;макрос для загрузки изображений
35
	;path - может быть переменной или строковым параметром
36
	if path eqtype '' ;проверяем задан ли строкой параметр path
37
		jmp @f
38
			local .path_str
39
			.path_str db path ;формируем локальную переменную
40
			db 0
41
		@@:
42
		;32 - стандартный адрес по которому должен быть буфер с системным путем
43
		copy_path .path_str,[32],file_name,0
44
	else
45
		copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
46
	end if
47
	stdcall mem.Alloc, dword size ;выделяем память для изображения
48
	mov [buf],eax
6100 IgorA 49
	mov [run_file_70.Function], SSF_READ_FILE
6013 IgorA 50
	mov [run_file_70.Position], 0
51
	mov [run_file_70.Flags], 0
52
	mov [run_file_70.Count], dword size
53
	mov [run_file_70.Buffer], eax
54
	mov byte[run_file_70+20], 0
55
	mov [run_file_70.FileName], file_name
6100 IgorA 56
	mcall SF_FILE,run_file_70 ;загружаем файл изображения
6013 IgorA 57
	cmp ebx,0xffffffff
58
	je @f
59
		;определяем вид изображения и переводим его во временный буфер image_data
60
		stdcall dword[img_decode], dword[buf],ebx,0
61
		mov dword[image_data],eax
62
		;преобразуем изображение к формату rgb
63
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
64
		;удаляем временный буфер image_data
65
		stdcall dword[img_destroy], dword[image_data]
66
	@@:
67
}
68
 
69
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
70
 
71
align 4
72
start:
73
load_libraries l_libs_start,l_libs_end
74
	;проверка на сколько удачно загузились библиотеки
75
	mov	ebp,lib_0
76
	.test_lib_open:
77
	cmp	dword [ebp+ll_struc_size-4],0
78
	jz	@f
6100 IgorA 79
		mcall SF_TERMINATE_PROCESS
6013 IgorA 80
	@@:
81
	add ebp,ll_struc_size
82
	cmp ebp,l_libs_end
83
	jl .test_lib_open
84
 
6100 IgorA 85
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.sys_colors_new
86
	mcall SF_SET_EVENTS_MASK,0x27
6013 IgorA 87
 
6100 IgorA 88
	stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1
6013 IgorA 89
	stdcall [glEnable], GL_DEPTH_TEST
90
	stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
91
	stdcall [gluNewQuadric]
92
	mov [qObj],eax
93
 
94
	stdcall [glClearColor], 0.25,0.25,0.25,0.0
95
	stdcall [glShadeModel], GL_SMOOTH
96
 
97
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
98
	mov eax,[eax] ;eax -> ZBuffer
99
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
100
	mov dword[buf_ogl],eax
101
 
102
	load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
103
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
104
	stdcall mem.Free,[image_data_toolbar] ;освобождаем память
105
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
106
	stdcall [buf2d_convert_text_matrix], buf_1
6100 IgorA 107
 
108
	load_image_file 'toolb_1.png', image_data_toolbar,IMAGE_TOOLBAR_SIZE
6013 IgorA 109
	call draw_3d
110
 
111
align 4
112
red_win:
113
	call draw_window
114
 
115
align 4
116
still:
6100 IgorA 117
	mcall SF_WAIT_EVENT
6013 IgorA 118
	cmp al,1
119
	jz red_win
120
	cmp al,2
121
	jz key
122
	cmp al,3
123
	jz button
124
	jmp still
125
 
126
align 4
127
draw_window:
128
	pushad
6100 IgorA 129
	mcall SF_REDRAW,SSF_BEGIN_DRAW
130
	mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption
6013 IgorA 131
 
6100 IgorA 132
	mov esi,[sc.work_button]
133
	mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,3 ;вершины вкл.
134
	mcall ,(30 shl 16)+20,,4 ;каркасные грани вкл.
135
	mcall ,(55 shl 16)+20,,5 ;сплошные грани вкл.
136
 
137
	mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;вершины вкл.
138
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
139
	mcall ,,,(32 shl 16)+7 ;каркасные грани вкл.
140
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
141
	mcall ,,,(57 shl 16)+7 ;сплошные грани вкл.
142
 
6013 IgorA 143
	stdcall [kosglSwapBuffers]
6100 IgorA 144
	mcall SF_REDRAW,SSF_END_DRAW
6013 IgorA 145
	popad
146
	ret
147
 
148
align 4
149
key:
6100 IgorA 150
	mcall SF_GET_KEY
6013 IgorA 151
 
152
	cmp ah,27 ;Esc
153
	je button.exit
154
 
155
	cmp ah,61 ;+
156
	jne @f
157
		finit
158
		fld dword[scale]
159
		fadd dword[delt_sc]
160
		fst dword[scale]
161
		mov word[NumberSymbolsAD],3
162
		fstp qword[Data_Double]
163
		call DoubleFloat_to_String
164
		mov byte[txt_scale.v],0
165
		stdcall str_cat, txt_scale.v,Data_String
166
		call draw_3d
167
		stdcall [kosglSwapBuffers]
168
	@@:
169
	cmp ah,45 ;-
170
	jne @f
171
		finit
172
		fld dword[scale]
173
		fsub dword[delt_sc]
174
		fst dword[scale]
175
		mov word[NumberSymbolsAD],3
176
		fstp qword[Data_Double]
177
		call DoubleFloat_to_String
178
		mov byte[txt_scale.v],0
179
		stdcall str_cat, txt_scale.v,Data_String
180
		call draw_3d
181
		stdcall [kosglSwapBuffers]
182
	@@:
183
	cmp ah,178 ;Up
184
	jne @f
185
		finit
186
		fld dword[angle_y]
187
		fadd dword[delt_size]
188
		fst dword[angle_y]
189
		mov word[NumberSymbolsAD],2
190
		fstp qword[Data_Double]
191
		call DoubleFloat_to_String
192
		mov byte[txt_angle_y.v],0
193
		stdcall str_cat, txt_angle_y.v,Data_String
194
		call draw_3d
195
		stdcall [kosglSwapBuffers]
196
	@@:
197
	cmp ah,177 ;Down
198
	jne @f
199
		finit
200
		fld dword[angle_y]
201
		fsub dword[delt_size]
202
		fst dword[angle_y]
203
		mov word[NumberSymbolsAD],2
204
		fstp qword[Data_Double]
205
		call DoubleFloat_to_String
206
		mov byte[txt_angle_y.v],0
207
		stdcall str_cat, txt_angle_y.v,Data_String
208
		call draw_3d
209
		stdcall [kosglSwapBuffers]
210
	@@:
211
	cmp ah,176 ;Left
212
	jne @f
213
		finit
214
		fld dword[angle_z]
215
		fadd dword[delt_size]
216
		fst dword[angle_z]
217
		mov word[NumberSymbolsAD],2
218
		fstp qword[Data_Double]
219
		call DoubleFloat_to_String
220
		mov byte[txt_angle_z.v],0
221
		stdcall str_cat, txt_angle_z.v,Data_String
222
		call draw_3d
223
		stdcall [kosglSwapBuffers]
224
	@@:
225
	cmp ah,179 ;Right
226
	jne @f
227
		finit
228
		fld dword[angle_z]
229
		fsub dword[delt_size]
230
		fst dword[angle_z]
231
		mov word[NumberSymbolsAD],2
232
		fstp qword[Data_Double]
233
		call DoubleFloat_to_String
234
		mov byte[txt_angle_z.v],0
235
		stdcall str_cat, txt_angle_z.v,Data_String
236
		call draw_3d
237
		stdcall [kosglSwapBuffers]
238
	@@:
239
 
240
	jmp still
241
 
242
align 4
243
button:
6100 IgorA 244
	mcall SF_GET_BUTTON
245
	cmp ah,3
246
	jne @f
247
		call but_st_point
248
		jmp still
249
	@@:
250
	cmp ah,4
251
	jne @f
252
		call but_st_line
253
		jmp still
254
	@@:
255
	cmp ah,5
256
	jne @f
257
		call but_st_face
258
		jmp still
259
	@@:
6013 IgorA 260
	cmp ah,1
261
	jne still
262
.exit:
263
	stdcall [gluDeleteQuadric], [qObj]
6100 IgorA 264
	stdcall mem.Free,[image_data_toolbar]
265
	mcall SF_TERMINATE_PROCESS
6013 IgorA 266
 
6100 IgorA 267
align 4
268
but_st_point:
269
	stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT
270
	call draw_3d
271
	stdcall [kosglSwapBuffers]
272
	ret
6013 IgorA 273
 
274
align 4
6100 IgorA 275
but_st_line:
276
	stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE
277
	call draw_3d
278
	stdcall [kosglSwapBuffers]
279
	ret
280
 
281
align 4
282
but_st_face:
283
	stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL
284
	call draw_3d
285
	stdcall [kosglSwapBuffers]
286
	ret
287
 
288
 
289
align 4
6013 IgorA 290
caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
291
align 4
292
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
293
;sizeof.TinyGLContext = 28
294
 
295
align 4
296
draw_3d:
297
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
298
 
299
stdcall [glPushMatrix]
300
	call SetLight
301
 
302
	stdcall [glTranslatef], 0.0,0.0,0.5
303
	stdcall [glScalef], [scale], [scale], [scale]
304
 
305
	stdcall [glColor3f], 1.0, 1.0, 0.0
306
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
307
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
308
	stdcall [gluSphere], [qObj], 1.0, 32,32
309
 
310
	stdcall [glColor3f], 1.0, 0.0, 0.0
311
	stdcall [glTranslatef], -1.6,0.0,0.0
312
	stdcall [gluSphere], [qObj], 0.55, 16,16
313
 
314
	stdcall [glColor3f], 0.0, 0.0, 1.0
315
	stdcall [glTranslatef], 3.2,0.0,0.0
316
	stdcall [gluSphere], [qObj], 0.55, 16,16
317
stdcall [glPopMatrix]
318
 
319
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
320
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00
321
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,25,0xffff00
322
	ret
323
 
324
align 4
325
SetLight:
326
	stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
327
	stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
328
 
329
	stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
330
	stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
331
 
332
	stdcall [glEnable], GL_COLOR_MATERIAL
333
	stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
334
	stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
335
	stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
336
	stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
337
 
338
	stdcall [glEnable],GL_LIGHTING
339
	stdcall [glEnable],GL_LIGHT0
340
ret
341
 
342
qObj dd 0
343
 
344
scale dd 0.4
345
delt_sc dd 0.05
346
angle_z dd 0.0
347
angle_y dd 0.0
348
delt_size dd 3.0
349
 
350
light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2]
351
	;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии)
352
light_dir dd 0.0,0.0,0.0 ;направление лампы
353
mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика
354
mat_shininess dd 3.0 ; Размер блика (обратная пропорция)
355
white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником
356
lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения
357
 
358
;--------------------------------------------------
359
align 4
360
import_lib_tinygl:
361
 
362
macro E_LIB n
363
{
364
	n dd sz_#n
365
}
366
include '../export.inc'
367
	dd 0,0
368
macro E_LIB n
369
{
370
	sz_#n db `n,0
371
}
372
include '../export.inc'
373
 
374
align 4
375
import_buf2d:
376
	dd sz_init0
377
	buf2d_create dd sz_buf2d_create
378
	buf2d_create_f_img dd sz_buf2d_create_f_img
379
	buf2d_clear dd sz_buf2d_clear
380
	buf2d_draw dd sz_buf2d_draw
381
	buf2d_delete dd sz_buf2d_delete
382
	buf2d_resize dd sz_buf2d_resize
383
	buf2d_line dd sz_buf2d_line
384
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
385
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
386
	buf2d_circle dd sz_buf2d_circle
387
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
388
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
389
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
390
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
391
	buf2d_bit_blt dd sz_buf2d_bit_blt
392
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
393
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
394
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
395
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
396
	buf2d_draw_text dd sz_buf2d_draw_text
397
	buf2d_crop_color dd sz_buf2d_crop_color
398
	buf2d_offset_h dd sz_buf2d_offset_h
399
	buf2d_flood_fill dd sz_buf2d_flood_fill
400
	buf2d_set_pixel dd sz_buf2d_set_pixel
401
	dd 0,0
402
	sz_init0 db 'lib_init',0
403
	sz_buf2d_create db 'buf2d_create',0
404
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
405
	sz_buf2d_clear db 'buf2d_clear',0
406
	sz_buf2d_draw db 'buf2d_draw',0
407
	sz_buf2d_delete db 'buf2d_delete',0
408
	sz_buf2d_resize db 'buf2d_resize',0
409
	sz_buf2d_line db 'buf2d_line',0
410
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
411
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
412
	sz_buf2d_circle db 'buf2d_circle',0
413
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
414
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
415
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
416
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
417
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
418
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
419
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
420
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
421
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
422
	sz_buf2d_draw_text db 'buf2d_draw_text',0
423
	sz_buf2d_crop_color db 'buf2d_crop_color',0
424
	sz_buf2d_offset_h db 'buf2d_offset_h',0
425
	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
426
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
427
 
428
align 4
429
import_libimg:
430
	dd alib_init1
431
	img_is_img  dd aimg_is_img
432
	img_info    dd aimg_info
433
	img_from_file dd aimg_from_file
434
	img_to_file dd aimg_to_file
435
	img_from_rgb dd aimg_from_rgb
436
	img_to_rgb  dd aimg_to_rgb
437
	img_to_rgb2 dd aimg_to_rgb2
438
	img_decode  dd aimg_decode
439
	img_encode  dd aimg_encode
440
	img_create  dd aimg_create
441
	img_destroy dd aimg_destroy
442
	img_destroy_layer dd aimg_destroy_layer
443
	img_count   dd aimg_count
444
	img_lock_bits dd aimg_lock_bits
445
	img_unlock_bits dd aimg_unlock_bits
446
	img_flip    dd aimg_flip
447
	img_flip_layer dd aimg_flip_layer
448
	img_rotate  dd aimg_rotate
449
	img_rotate_layer dd aimg_rotate_layer
450
	img_draw    dd aimg_draw
451
 
452
	dd 0,0
453
	alib_init1   db 'lib_init',0
454
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
455
	aimg_info    db 'img_info',0
456
	aimg_from_file db 'img_from_file',0
457
	aimg_to_file db 'img_to_file',0
458
	aimg_from_rgb db 'img_from_rgb',0
459
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
460
	aimg_to_rgb2 db 'img_to_rgb2',0
461
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
462
	aimg_encode  db 'img_encode',0
463
	aimg_create  db 'img_create',0
464
	aimg_destroy db 'img_destroy',0
465
	aimg_destroy_layer db 'img_destroy_layer',0
466
	aimg_count   db 'img_count',0
467
	aimg_lock_bits db 'img_lock_bits',0
468
	aimg_unlock_bits db 'img_unlock_bits',0
469
	aimg_flip    db 'img_flip',0
470
	aimg_flip_layer db 'img_flip_layer',0
471
	aimg_rotate  db 'img_rotate',0
472
	aimg_rotate_layer db 'img_rotate_layer',0
473
	aimg_draw    db 'img_draw',0
474
 
475
;--------------------------------------------------
476
system_dir_0 db '/sys/lib/'
477
lib_name_0 db 'tinygl.obj',0
478
system_dir_1 db '/sys/lib/'
479
lib_name_1 db 'buf2d.obj',0
480
system_dir_2 db '/sys/lib/'
481
lib_name_2 db 'libimg.obj',0
482
err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0
483
err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0
484
err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0
485
head_f_i:
486
head_f_l db 'System error',0
487
err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0
488
err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0
489
err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0
490
;--------------------------------------------------
491
 
492
txt_scale:
493
db 'Scale: '
494
.v:
495
db 0
496
rb 10
497
 
498
txt_angle_z:
499
db 'Rotate z: '
500
.v:
501
db 0
502
rb 10
503
 
504
txt_angle_y:
505
db 'Rotate y: '
506
.v:
507
db 0
508
rb 10
509
 
510
align 4
511
buf_ogl:
512
	dd 0 ;указатель на буфер изображения
513
	dw 10,10 ;+4 left,top
514
.w: dd 400
515
.h: dd 350
516
	dd 0,24 ;+16 color,bit in pixel
517
 
518
align 4
519
buf_1:
520
	dd 0 ;указатель на буфер изображения
521
	dw 25,25 ;+4 left,top
522
	dd 128,144 ;+8 w,h
523
	dd 0,24 ;+16 color,bit in pixel
524
 
525
align 4
526
l_libs_start:
527
	lib_0 l_libs lib_name_0, cur_dir_path, library_path,  system_dir_0,\
528
		err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i
529
	lib_1 l_libs lib_name_1, cur_dir_path, library_path,  system_dir_1,\
530
		err_msg_found_lib_1, head_f_l, import_buf2d,  err_msg_import_1,head_f_i
531
	lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\
532
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
533
l_libs_end:
534
 
535
align 4
536
i_end:
537
	run_file_70 FileInfoBlock
6100 IgorA 538
	sc system_colors
539
		rb sizeof.sys_colors_new-sizeof.system_colors
6013 IgorA 540
align 16
541
	rb 4096
542
stacktop:
543
	cur_dir_path rb 4096
544
	library_path rb 4096
545
	file_name rb 4096
546
mem: