Subversion Repositories Kolibri OS

Rev

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