Subversion Repositories Kolibri OS

Rev

Rev 6288 | Rev 8174 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. use32
  2.         org 0x0
  3.         db 'MENUET01'
  4.         dd 1,start,i_end,mem,stacktop,0,cur_dir_path
  5.  
  6. include '../../../../../proc32.inc'
  7. include '../../../../../macros.inc'
  8. include '../../../../../KOSfuncs.inc'
  9. include '../../../../../load_img.inc'
  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.  
  15. align 4
  16. image_data_toolbar dd 0
  17. IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
  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
  29.                 mcall SF_TERMINATE_PROCESS
  30.         @@:
  31.         add ebp,ll_struc_size
  32.         cmp ebp,l_libs_end
  33.         jl .test_lib_open
  34.  
  35.         mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  36.         mcall SF_SET_EVENTS_MASK,0x27
  37.  
  38.         stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1
  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.  
  52.         load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h
  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
  57.  
  58.         load_image_file 'toolb_1.png', image_data_toolbar
  59.         call draw_3d
  60.  
  61. align 4
  62. red_win:
  63.         call draw_window
  64.  
  65. align 4
  66. still:
  67.         mcall SF_WAIT_EVENT
  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
  79.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  80.         mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption
  81.  
  82.         mov esi,[sc.work_button]
  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 ;сплошные грани вкл.
  86.         mcall ,(96 shl 16)+19,,6+0x40000000 ;масштаб +
  87.         mcall ,(126 shl 16)+19,,7+0x40000000 ;масштаб -
  88.  
  89.         mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+5 ;вершины вкл.
  90.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  91.         mcall ,,,(35 shl 16)+5 ;каркасные грани вкл.
  92.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  93.         mcall ,,,(65 shl 16)+5 ;сплошные грани вкл.
  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 ;масштаб -
  98.  
  99.         stdcall [kosglSwapBuffers]
  100.         mcall SF_REDRAW,SSF_END_DRAW
  101.         popad
  102.         ret
  103.  
  104. align 4
  105. key:
  106.         mcall SF_GET_KEY
  107.  
  108.         cmp ah,27 ;Esc
  109.         je button.exit
  110.  
  111.         cmp ah,61 ;+
  112.         jne @f
  113.                 call but_zoom_p
  114.                 jmp still
  115.         @@:
  116.         cmp ah,45 ;-
  117.         jne @f
  118.                 call but_zoom_m
  119.                 jmp still
  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:
  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.         @@:
  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.         @@:
  208.         cmp ah,1
  209.         jne still
  210. .exit:
  211.         stdcall [gluDeleteQuadric], [qObj]
  212.         stdcall mem.Free,[image_data_toolbar]
  213.         mcall SF_TERMINATE_PROCESS
  214.  
  215. align 4
  216. but_st_point:
  217.         stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT
  218.         call draw_3d
  219.         stdcall [kosglSwapBuffers]
  220.         ret
  221.  
  222. align 4
  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.  
  236. align 4
  237. but_zoom_p:
  238.         finit
  239.         fld dword[scale]
  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.         @@:
  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
  258.  
  259. align 4
  260. but_zoom_m:
  261.         finit
  262.         fld dword[scale]
  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.         @@:
  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
  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.  
  338. scale dd 0.4 ;начальный масштаб
  339. sc_delt dd 0.05 ;изменение масштаба при нажатии
  340. sc_min dd 0.1 ;минимальный масштаб
  341. sc_max dd 1.1 ;максимальный масштаб
  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. ;--------------------------------------------------
  472. system_dir_0 db '/sys/lib/'
  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 ;указатель на буфер изображения
  517.         dd 0 ;+4 left,top
  518. .w: dd 0
  519. .h: dd 0,0,24 ;+16 color,bit in pixel
  520.  
  521. align 4
  522. l_libs_start:
  523.         lib_0 l_libs lib_name_0, cur_dir_path, file_name,  system_dir_0,\
  524.                 err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i
  525.         lib_1 l_libs lib_name_1, cur_dir_path, file_name,  system_dir_1,\
  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
  534.         sc system_colors
  535. align 16
  536.         rb 4096
  537. stacktop:
  538.         cur_dir_path rb 4096
  539.         file_name rb 4096
  540. mem:
  541.