Subversion Repositories Kolibri OS

Rev

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