Subversion Repositories Kolibri OS

Rev

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

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