Subversion Repositories Kolibri OS

Rev

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

  1. ;   RDsave для Kolibri (0.6.5.0 и старше)
  2. ;   Save RAM-disk to hard or floppy drive
  3. ;---------------------------------------------------------------------
  4. ;   Mario79 2005
  5. ;   Heavyiron 12.02.2007
  6. ;   <Lrz>     11.05.2009 - для работы нужна системная библиотека box_lib.obj
  7. ;   Mario79   08.09.2010 - select path with OpenDialog,keys 1,2,3,4 for select options
  8. ;   Heavyiron 01.12.2013 - new logic
  9. ;---------------------------------------------------------------------
  10. appname equ 'RDsave '
  11. version equ '1.41'
  12. debug   equ no
  13.  
  14. use32        ; включить 32-битный режим ассемблера
  15. org 0x0      ; адресация с нуля
  16.  
  17. db 'MENUET01'    ; 8-байтный идентификатор MenuetOS
  18. dd 0x01          ; версия заголовка (всегда 1)
  19. dd START         ; адрес первой команды
  20. dd IM_END        ; размер программы
  21. dd I_END         ; количество памяти
  22. dd stacktop      ; адрес вершины стека
  23. dd PARAMS        ; адрес буфера для параметров
  24. dd cur_dir_path
  25.  
  26.  
  27. include 'lang.inc'
  28. include '../../../macros.inc'
  29. if debug eq yes
  30. include '../../../debug.inc'
  31. end if
  32. include '../../../proc32.inc'
  33. include '../../../dll.inc'
  34. include '../../../develop/libraries/box_lib/load_lib.mac'
  35. include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
  36. include 'str.inc'
  37.  
  38.         @use_library
  39. ;---------------------------------------------------------------------
  40. ;---  НАЧАЛО ПРОГРАММЫ  ----------------------------------------------
  41. ;---------------------------------------------------------------------
  42. align 4
  43. START:
  44. ;---------------------------------------------------------------------
  45.         mcall  48,3,sc,sizeof.system_colors
  46.         mcall  68,11
  47.  
  48. load_libraries l_libs_start,end_l_libs
  49.         inc     eax
  50.         test    eax,eax
  51.         jz      close
  52.  
  53. stdcall dll.Init,[init_lib]
  54.  
  55. invoke  ini_get_int,ini_file,asettings,aautoclose,0
  56.         mov   [autoclose],eax
  57. invoke  ini_get_str,ini_file,apath,apath,fname_buf,4096,path
  58. stdcall _lstrcpy,ini_path,fname_buf
  59.  
  60. stdcall _lstrcpy,filename_area,start_temp_file_name
  61.  
  62.         mov   eax,PARAMS
  63.         cmp   byte[eax], 0
  64.         je    no_params
  65.         cmp   byte[eax], 'h'
  66.         je    @f
  67.         cmp   byte[eax], 'H'
  68.         jne   .no_h
  69. @@:
  70.         mov   [hidden],1
  71.         jmp   no_params
  72. .no_h:
  73.         mov   [param],1
  74.         stdcall _lstrcpy,fname_buf,eax
  75.         xor   eax,eax
  76.         mov   ah,2
  77.         jmp   noclose
  78.  
  79. ;---------------------------------------------------------------------
  80. no_params:
  81. stdcall _lstrcpy,check_dir,ini_path
  82.         call    check_path
  83.         test    eax,eax
  84.         jz      path_ok
  85.         cmp     eax,6
  86.         je      path_ok
  87. ;---------------------------------------------------------------------
  88. if debug eq yes
  89. dps 'read_folder_error'
  90. newline
  91. end if
  92. ;---------------------------------------------------------------------
  93.  
  94. stdcall _lstrcpy,fname_buf,communication_area_default_path
  95.  
  96.         mov     [hidden],0
  97.  
  98. ;OpenDialog     initialisation
  99.         push    dword OpenDialog_data
  100.         call    [OpenDialog_Init]
  101.  
  102. ; prepare for PathShow
  103.         push    dword PathShow_data_1
  104.         call    [PathShow_prepare]
  105.         call    draw_window
  106.         mov     ah,3
  107.         mov     ecx,fname_buf
  108.         jmp     noclose
  109. ;---------------------------------------------------------------------
  110. path_ok:
  111. ;OpenDialog     initialisation
  112.         push    dword OpenDialog_data
  113.         call    [OpenDialog_Init]
  114.  
  115. ; prepare for PathShow
  116.         push    dword PathShow_data_1
  117.         call    [PathShow_prepare]
  118.  
  119.         mcall   40,0x00000027
  120.  
  121.         cmp     [hidden],1
  122.         jne     red
  123.         mov     ah,2
  124.         jmp     noclose
  125. red:
  126.         call    draw_window
  127. ;---------------------------------------------------------------------
  128. still:
  129.         mcall 10
  130.  
  131.         dec     eax      ; перерисовать окно?
  132.         jz      red      ; если да - на метку red
  133.         dec     eax
  134.         jz      key
  135.         dec     eax
  136.         jz      button
  137.         jmp     still
  138. ;---------------------------------------------------------------------
  139. button:
  140.         mcall   17      ; получить идентификатор нажатой кнопки
  141.         dec     ah
  142.         jz      close
  143.         cmp     ah,1             ; кнопка с id=1("закрыть")?
  144.         jne     noclose
  145. close:
  146.         or       eax,-1          ; функция -1: завершить программу
  147.         mcall
  148. ;---------------------------------------------------------------------
  149. key:
  150.         mcall   2
  151.         cmp     ah,0x1b
  152.         je      close
  153.         cmp     ah,0x0D
  154.         jne     @f
  155.         mov     ah,2
  156.         jmp     noclose
  157. @@:
  158.         cmp     ah,9h
  159.         jne     still
  160. ;---------------------------------------------------------------------
  161. noclose:
  162.         mov     ecx,fname_buf
  163.         push  16
  164.         mov   ebx,1
  165.         cmp   byte[ecx+1],'f'
  166.         je    @f
  167.         cmp   byte[ecx+1],'F'
  168.         jne   not_fdd
  169. @@:
  170.         cmp   byte[ecx+4],'1'
  171.         jne   @f
  172.         cmp   ah,2
  173.         je    doit
  174. @@:
  175.         inc   ebx
  176.         cmp   ah,2
  177.         je    doit
  178. not_fdd:
  179.         push  18
  180.         mov   ebx,6     ; 18.6 = save to specified folder
  181.         cmp   ah,2
  182.         je    doit
  183.  
  184. ; invoke OpenDialog
  185.         push    dword OpenDialog_data
  186.         call    [OpenDialog_Start]
  187.         cmp     [OpenDialog_data.status],1
  188.         jne     still
  189.  
  190. ; prepare for PathShow
  191.         push    dword PathShow_data_1
  192.         call    [PathShow_prepare]
  193.         call    draw_window
  194.         mov     ecx,fname_buf
  195.         mov     ah,2
  196.         jmp     noclose
  197.  
  198. doit:
  199.         cmp     [param],0
  200.         jne     @f
  201.         call    save_ini
  202. @@:
  203.         cmp   byte[ecx+1],'r'
  204.         je    @f
  205.         cmp   byte[ecx+1],'R'
  206.         jne   not_rd
  207. @@:
  208.         mov   edx,rdError
  209.         call  print_err
  210.         cmp     [param],1
  211.         je      @f
  212.         jmp     still
  213. @@:
  214.         mov     [param],0
  215.         jmp     no_params
  216. not_rd:
  217.         pop     eax
  218.         mcall
  219.         call    check_for_error
  220.         cmp     [param],1
  221.         je      @f
  222.         jmp     still
  223. @@:
  224.         mov     [param],0
  225.         jmp     no_params
  226.  
  227. ;---------------------------------------------------------------------
  228. check_for_error:                      ;Обработчик ошибок
  229. stdcall _lstrcpy,check_dir,ok
  230. stdcall _lstrcat,check_dir,fname_buf
  231.         mov     edx,check_dir
  232.         test    eax,eax
  233.         jz      print_ok
  234.         cmp     ebx,6
  235.         je      @f
  236.         mov     edx,error11
  237.         jmp     print_err
  238. @@:    
  239.         cmp     eax, 11
  240.         ja      .unknown
  241.         mov     edx, [errors+eax*4]
  242.         stdcall _lstrcat,error_msg,edx
  243.         mov     edx, error_msg
  244.         jmp     print_err
  245. .unknown:
  246.         mov     edx, aUnknownError
  247. print_err:
  248.         pushad
  249.         stdcall _lstrlen,ini_path
  250.         invoke  ini_set_str,ini_file,apath,apath,ini_path,eax
  251.         stdcall _lstrcpy,fname_buf,ini_path
  252.         popad
  253.         cmp     [hidden],1
  254.         je      @f
  255.         cmp     [param],1
  256.         je      @f
  257.         stdcall _lstrlen,edx
  258.         imul    eax,6
  259.         mov     ebx,390
  260.         sub     ebx,eax
  261.         sar     ebx,1
  262.         shl     ebx,16
  263.         add     ebx,96
  264.         mov     ecx,[sc.work_text]
  265.         or      ecx,0xc0880000
  266.         mcall   4, , , , ,[sc.work]
  267.         ret
  268. @@:
  269.         mov     dword [is_notify + 8], edx
  270.         mcall   70, is_notify
  271.         ret
  272. print_ok:
  273.         cmp     [hidden],1
  274.         je       @f
  275.         cmp     [param],1
  276.         je       @f
  277.         stdcall _lstrlen,edx
  278.         imul    eax,6
  279.         mov     ebx,390
  280.         sub     ebx,eax
  281.         sar     ebx,1
  282.         shl     ebx,16
  283.         add     ebx,96
  284.         mov     ecx,[sc.work_text]
  285.         or      ecx,0xc0008800
  286.         mcall   4, , , , ,[sc.work]
  287.         mcall   5,100
  288.         cmp     [autoclose],1
  289.         je      close
  290.         ret
  291. @@:
  292.         mov     dword [is_notify + 8], edx
  293.         mcall   70, is_notify
  294.         mcall   5,100
  295.         jmp     close
  296. ;---------------------------------------------------------------------
  297. draw_PathShow:
  298.         pushad
  299.         mcall   13,<15,280>,<32,16>,0xffffff
  300.         push    dword PathShow_data_1
  301.         call    [PathShow_draw]
  302.         popad
  303.         ret
  304. ;---------------------------------------------------------------------
  305. save_ini:
  306.         pushad
  307.         stdcall _lstrlen,fname_buf
  308.         invoke  ini_set_str,ini_file,apath,apath,fname_buf,eax
  309.         invoke  ini_set_int,ini_file,asettings,aautoclose,[autoclose]
  310.         popad
  311.         ret
  312. ;---------------------------------------------------------------------
  313. check_path:
  314. stdcall _lstrlen,check_dir
  315.         mov     edi,check_dir
  316.         add     edi,eax
  317. @@:
  318.         mov     byte [edi],0
  319.         dec     edi
  320.         cmp     byte [edi],'/'
  321.         jne     @b
  322.  
  323. if debug eq yes
  324. dps     'read_folder_name: '
  325.         mov     edx,check_dir
  326.         call    debug_outstr
  327. newline
  328. end if
  329.         mcall   70,read_folder
  330.         ret
  331. ;---------------------------------------------------------------------
  332. ;---  Draw window  ---------------------------------------------------
  333. ;---------------------------------------------------------------------
  334. draw_window:
  335.         mcall   12,1
  336.  
  337.         mov     edx,[sc.work]
  338.         or      edx,0x34000000
  339.         mcall   0,<200,400>,<200,130>, , ,title
  340.  
  341. ;buttons
  342.         mcall   8,<198,70>,<68,20>,2,[sc.work_button]
  343.         inc     edx
  344.         mcall    ,<125,70>,
  345.         inc     edx
  346.         mcall    ,<300,75>,<30,20>
  347.  
  348. ;labels
  349.         mov     ecx,[sc.work_button_text]
  350.         or      ecx,0x80000000
  351.         mcall   4,<134,75>, ,save
  352.         mcall    ,<215,75>, ,cansel
  353.         mcall    ,<315,36>, ,select
  354.        
  355.         mov     ecx,[sc.work]
  356.         mov     dword [frame_data.font_backgr_color],ecx
  357.         push    dword frame_data
  358.         call    [Frame_draw]
  359.  
  360.         call    draw_PathShow
  361.  
  362.         mcall   12,2
  363.         ret
  364.  
  365. ;---------------------------------------------------------------------
  366. ;---  Data  ----------------------------------------------------------
  367. ;---------------------------------------------------------------------
  368. if lang eq ru
  369. save            db 'Сохранить',0
  370. cansel          db 'Отмена',0
  371. select          db 'Изменить',0
  372. label1          db ' Образ будет сохранен в: ',0
  373. ok              db 'RAM-диск сохранен успешно в ',0
  374. error1          db 'Не определена база и/или раздел жёсткого диска',0
  375. error2          db 'Функция не поддерживается для данной файловой системы',0
  376. error3          db 'Неизвестная файловая система',0
  377. error4          db 'Странно... Ошибка 4',0
  378. error5          db 'Несуществующий путь',0
  379. error6          db 'Файл закончился',0
  380. error7          db 'Указатель вне памяти приложения',0
  381. error8          db 'Диск заполнен',0
  382. error9          db 'Файловая структура разрушена',0
  383. error10         db 'Доступ запрещён',0
  384. error11         db 'Ошибка устройства',0
  385. aUnknownError   db 'Неизвестная ошибка',0
  386. rdError         db 'Нельзя сохранять образ в самого себя',0
  387. error_msg       db 'Ошибка: ',0
  388. ;---------------------------------------------------------------------
  389. else if lang eq et
  390. save            db 'Salvesta',0
  391. cansel          db 'Cansel',0
  392. select          db ' Valige',0
  393. label1          db ' RAM-drive will be saved as: ',0
  394. ok              db 'RAM-ketas salvestatud edukalt ',0
  395. error1          db 'Hard disk base and/or partition not defined',0
  396. error2          db 'The file system does not support this function',0
  397. error3          db 'Tundmatu failis№steem',0
  398. error4          db 'Strange... Error 4',0
  399. error5          db 'Vigane teekond',0
  400. error6          db 'End of file',0
  401. error7          db 'Pointer is outside of application memory',0
  402. error8          db 'Ketas tфis',0
  403. error9          db 'FAT tabel vigane',0
  404. error10         db 'Juurdepффs keelatud',0
  405. error11         db 'Seadme viga',0
  406. aUnknownError   db 'Tundmatu viga',0
  407. rdError         db "You can't save image on itself",0
  408. error_msg       db 'Viga: ',0
  409. ;---------------------------------------------------------------------
  410. else if lang eq it
  411. save            db '  Salva',0
  412. cansel          db 'Cansel',0
  413. select          db 'Seleziona',0
  414. label1          db ' RAM-drive will be saved as: ',0
  415. ok              db 'Il RAM-drivet e stato salvato ',0
  416. error1          db 'Hard disk base and/or partition not defined',0
  417. error2          db 'The file system does not support this function',0
  418. error3          db 'Filesystem sconosciuto',0
  419. error4          db 'Strange... Error 4',0
  420. error5          db 'Percorso non valido',0
  421. error6          db 'End of file',0
  422. error7          db 'Pointer is outside of application memory',0
  423. error8          db 'Disco pieno',0
  424. error9          db 'Tabella FAT corrotta',0
  425. error10         db 'Accesso negato',0
  426. error11         db 'Errore di device',0
  427. aUnknownError   db 'Errore sconosciuto',0
  428. rdError         db "You can't save image on itself",0
  429. error_msg       db 'Errore: ',0
  430. ;---------------------------------------------------------------------
  431. else
  432. save            db '  Save',0
  433. cansel          db 'Cansel',0
  434. select          db ' Select',0
  435. label1          db ' RAM-drive will be saved as: ',0
  436. ok              db 'RAM-drive was saved successfully in ',0
  437. error1          db 'Hard disk base and/or partition not defined',0
  438. error2          db 'The file system does not support this function',0
  439. error3          db 'Unknown file system',0
  440. error4          db 'Strange... Error 4',0
  441. error5          db 'Incorrect path',0
  442. error6          db 'End of file',0
  443. error7          db 'Pointer is outside of application memory',0
  444. error8          db 'Disk is full',0
  445. error9          db 'File structure is destroyed',0
  446. error10         db 'Access denied',0
  447. error11         db 'Device error',0
  448. aUnknownError   db 'Unknown error',0
  449. rdError         db "You can't save image on itself",0
  450. error_msg       db 'Error: ',0
  451. end if
  452. ;---------------------------------------------------------------------
  453. errors:
  454.         dd      ok
  455.         dd      error1
  456.         dd      error2
  457.         dd      error3
  458.         dd      error4
  459.         dd      error5
  460.         dd      error6
  461.         dd      error7
  462.         dd      error8
  463.         dd      error9
  464.         dd      error10
  465.         dd      error11
  466. ;---------------------------------------------------------------------
  467.  
  468. title   db appname,version,0
  469.  
  470. ;Lib_DATA
  471. ;Всегда соблюдать последовательность в имени.
  472. system_dir_Boxlib       db '/sys/lib/box_lib.obj',0
  473. system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
  474. system_dir_libini       db '/sys/lib/libini.obj',0
  475. ;---------------------------------------------------------------------
  476. head_f_i:
  477. head_f_l        db 'System error',0
  478.  
  479. err_message_found_lib1  db 'box_lib.obj - Not found!',0
  480. err_message_found_lib2  db 'proc_lib.obj - Not found!',0
  481. err_message_found_lib3  db 'libini.obj - Not found!',0
  482.  
  483. err_message_import1     db 'box_lib.obj - Wrong import!',0
  484. err_message_import2     db 'proc_lib.obj - Wrong import!',0
  485. err_message_import3     db 'libini.obj - Wrong import!',0
  486. ;---------------------------------------------------------------------
  487. l_libs_start:
  488.  
  489. library01  l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
  490. err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
  491.  
  492. library02  l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
  493. err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
  494.  
  495. library03  l_libs system_dir_libini+9, cur_dir_path, library_path, system_dir_libini, \
  496. err_message_found_lib3, head_f_l, libini_import, err_message_import3, head_f_i
  497.  
  498. end_l_libs:
  499. ;---------------------------------------------------------------------
  500. OpenDialog_data:
  501. .type                   dd 1    ; Save
  502. .procinfo               dd procinfo     ;+4
  503. .com_area_name          dd communication_area_name      ;+8
  504. .com_area               dd 0    ;+12
  505. .opendir_path           dd temp_dir_path        ;+16
  506. .dir_default_path       dd communication_area_default_path      ;+20
  507. .start_path             dd open_dialog_path     ;+24
  508. .draw_window            dd draw_window  ;+28
  509. .status                 dd 0    ;+32
  510. .openfile_pach          dd fname_buf    ;+36
  511. .filename_area          dd filename_area        ;+40
  512. .filter_area            dd Filter
  513. .x:
  514. .x_size                 dw 420 ;+48 ; Window X size
  515. .x_start                dw 200 ;+50 ; Window X position
  516. .y:
  517. .y_size                 dw 320 ;+52 ; Window y size
  518. .y_start                dw 120 ;+54 ; Window Y position
  519.  
  520. communication_area_name:
  521.         db 'FFFFFFFF_open_dialog',0
  522. open_dialog_path:
  523. if __nightbuild eq yes
  524.     db '/sys/MANAGERS/opendial',0
  525. else
  526.     db '/sys/File Managers/opendial',0
  527. end if
  528. communication_area_default_path:
  529.         db '/',0
  530.  
  531. Filter:
  532. dd      Filter.end - Filter
  533. .1:
  534. db      'IMG',0
  535. db      'IMA',0
  536. .end:
  537. db      0
  538.  
  539. start_temp_file_name:   db 'kolibri.img',0
  540.  
  541. ;---------------------------------------------------------------------
  542. align 4
  543. ProcLib_import:
  544. OpenDialog_Init         dd aOpenDialog_Init
  545. OpenDialog_Start        dd aOpenDialog_Start
  546.         dd      0
  547.         dd      0
  548. aOpenDialog_Init        db 'OpenDialog_init',0
  549. aOpenDialog_Start       db 'OpenDialog_start',0
  550. ;---------------------------------------------------------------------
  551. PathShow_data_1:
  552. .type                   dd 0    ;+0
  553. .start_y                dw 36   ;+4
  554. .start_x                dw 20   ;+6
  555. .font_size_x            dw 6    ;+8     ; 6 - for font 0, 8 - for font 1
  556. .area_size_x            dw 270  ;+10
  557. .font_number            dd 0    ;+12    ; 0 - monospace, 1 - variable
  558. .background_flag        dd 0    ;+16
  559. .font_color             dd 0    ;+20
  560. .background_color       dd 0    ;+24
  561. .text_pointer           dd fname_buf    ;+28
  562. .work_area_pointer      dd text_work_area       ;+32
  563. .temp_text_length       dd 0    ;+36
  564. ;---------------------------------------------------------------------
  565. align 4
  566. Box_lib_import:
  567. ;edit_box_draw           dd aEdit_box_draw
  568. ;edit_box_key            dd aEdit_box_key
  569. ;edit_box_mouse          dd aEdit_box_mouse
  570. ;version_ed              dd aVersion_ed
  571.  
  572. PathShow_prepare        dd sz_PathShow_prepare
  573. PathShow_draw           dd sz_PathShow_draw
  574. Frame_draw              dd sz_Frame_draw
  575.                         dd 0
  576.                         dd 0
  577.  
  578. ;aEdit_box_draw          db 'edit_box',0
  579. ;aEdit_box_key           db 'edit_box_key',0
  580. ;aEdit_box_mouse         db 'edit_box_mouse',0
  581. ;aVersion_ed             db 'version_ed',0
  582.  
  583. sz_PathShow_prepare     db 'PathShow_prepare',0
  584. sz_PathShow_draw        db 'PathShow_draw',0
  585.  
  586. sz_Frame_draw           db 'frame_draw',0
  587. ;szVersion_frame        db 'version_frame',0
  588. ;---------------------------------------------------------------------
  589. frame_data:
  590. .type                   dd 0 ;+0
  591. .x:
  592. .x_size                 dw 374 ;+4
  593. .x_start                dw 8 ;+6
  594. .y:
  595. .y_size                 dw 45 ;+8
  596. .y_start                dw 17 ;+10
  597. .ext_fr_col             dd 0x888888 ;+12
  598. .int_fr_col             dd 0xffffff ;+16
  599. .draw_text_flag         dd 1 ;+20
  600. .text_pointer           dd label1 ;+24
  601. .text_position          dd 0 ;+28
  602. .font_number            dd 0 ;+32
  603. .font_size_y            dd 9 ;+36
  604. .font_color             dd 0x0 ;+40
  605. .font_backgr_color      dd 0xdddddd ;+44
  606. ;---------------------------------------------------------------------
  607. align 4
  608. libini_import:
  609. init_lib     dd a_init
  610. ini_get_str  dd aini_get_str
  611. ini_get_int  dd aini_get_int
  612. ini_set_str  dd aini_set_str
  613. ini_set_int  dd aini_set_int
  614.              dd 0
  615.              dd 0
  616. a_init       db 'lib_init',0
  617. aini_get_str db 'ini_get_str',0
  618. aini_get_int db 'ini_get_int',0
  619. aini_set_str db 'ini_set_str',0
  620. aini_set_int db 'ini_set_int',0
  621. ;---------------------------------------------------------------------
  622.  
  623. apath db 'path',0
  624. asettings db 'settings',0
  625. aautoclose db 'autoclose',0
  626. path    db '/hd2/1/kolibri.img',0
  627. ini_file db  '/sys/settings/rdsave.ini',0
  628. ;ini_file db  '/sys/rdsave.ini',0
  629. ;---------------------------------------------------------------------
  630. is_notify:
  631.     dd    7, 0, ok, 0, 0
  632.     db    "/rd/1/@notify", 0
  633.    
  634. read_folder:
  635. .subfunction    dd 1
  636. .start          dd 0
  637. .flags          dd 0
  638. .size           dd 1
  639. .return         dd folder_data
  640.                 db 0
  641. .name:          dd check_dir
  642.  
  643. param dd 0
  644. hidden dd 0
  645. ;---------------------------------------------------------------------
  646. IM_END:
  647. ;---------------------------------------------------------------------
  648. align 4
  649. PARAMS:
  650.        rb 256
  651. ini_path:
  652.         rb 4096
  653. check_dir:
  654.         rb 4096
  655.  
  656. sc     system_colors
  657.  
  658. autoclose rd 1
  659.  
  660. folder_data:
  661.         rb 304*32+32 ; 9 Kb
  662. ;---------------------------------------------------------------------
  663. cur_dir_path:
  664.         rb 4096
  665. ;---------------------------------------------------------------------
  666. library_path:
  667.         rb 4096
  668. ;---------------------------------------------------------------------
  669. temp_dir_path:
  670.         rb 4096
  671. ;---------------------------------------------------------------------
  672. fname_buf:
  673.         rb 4096
  674. ;---------------------------------------------------------------------
  675. procinfo:
  676.         rb 1024
  677. ;---------------------------------------------------------------------
  678. filename_area:
  679.         rb 256
  680. ;---------------------------------------------------------------------
  681. text_work_area:
  682.         rb 1024
  683. ;---------------------------------------------------------------------
  684. align 32
  685.         rb 4096
  686. stacktop:
  687. I_END:  ; метка конца программы