Subversion Repositories Kolibri OS

Rev

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

  1. ;-----------------------------------------------------------------------------
  2. ; project name:      TINYPAD
  3. ; compiler:          flat assembler 1.67.21
  4. ; memory to compile: 3.0/9.0 MBytes (without/with size optimizations)
  5. ; version:           SVN (4.1)
  6. ; last update:       2015-07-17 (Jul 17, 2015)
  7. ; minimal kernel:    revision #4199 (svn://kolibrios.org/kernel/trunk)
  8. ;-----------------------------------------------------------------------------
  9. ; originally by:     Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
  10. ; maintained by:     Mike Semenyako          >> mike.dld@gmail.com
  11. ;                    Ivan Poddubny           >> ivan-yar@bk.ru
  12. ;                    Marat Zakiyanov aka Mario79
  13. ;                    Pathoswithin
  14. ;-----------------------------------------------------------------------------
  15. ; TODO:
  16. ;   - add vertical selection, undo, goto position, overwrite mode, smart tabulation
  17. ;   - improve window drawing with small dimensions
  18. ;   - save/load settings to/from ini file, not executable
  19. ;   - path autocompletion for open/save dialogs
  20. ;   - other bug-fixes and speed/size optimizations
  21. ;-----------------------------------------------------------------------------
  22. ; See history.txt for complete changelog
  23. ;-----------------------------------------------------------------------------
  24.  
  25. include 'lang.inc'
  26.  
  27. include '../../../config.inc'           ;for nightbuild
  28. include '../../../macros.inc'           ; useful stuff
  29. include '../../../struct.inc'
  30. include '../../../proc32.inc'
  31.  
  32. include 'external/libio.inc'
  33.  
  34. include 'tinypad.inc'
  35.  
  36. ;purge mov,add,sub            ;  SPEED
  37.  
  38. __header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,ini_path
  39.  
  40. APP_VERSION equ '4.1'
  41.  
  42. TRUE = 1
  43. FALSE = 0
  44.  
  45. ;define __DEBUG__ 1
  46. ;define __DEBUG_LEVEL__ 1
  47. ;include '../../../debug-fdo.inc'
  48.  
  49. ; compiled-in options
  50.  
  51. ASEPC = '-'  ; separator character (char)
  52. ATOPH = 19   ; menu bar height (pixels)
  53. SCRLW = 16   ; scrollbar widht/height (pixels)
  54. ATABW = 8    ; tab key indent width (chars)
  55. LINEH = 16+1 ; line height (pixels)
  56. PATHL = 256  ; maximum path length (chars) !!! don't change !!!
  57. AMINS = 8    ; minimal scroll thumb size (pixels)
  58. LCHGW = 3    ; changed/saved marker width (pixels)
  59.  
  60. STATH = 16   ; status bar height (pixels)
  61. TBARH = 18   ; tab bar height (pixels)
  62.  
  63. INI_SEC_PREFIX equ ''
  64.  
  65. ;-----------------------------------------------------------------------------
  66. __section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  67. ;-----------------------------------------------------------------------------
  68.         cld
  69.         mov     edi,@UDATA
  70.         mov     ecx,@PARAMS-@UDATA
  71.         mov     al,0
  72.         rep     stosb
  73.  
  74.         mcall   68,11
  75.         or      eax,eax
  76.         jz      key.alt_x.close
  77.  
  78.         stdcall dll.Load,@IMPORT
  79.         or      eax,eax
  80.         jnz     key.alt_x.close
  81.  
  82.         mov     edi,ini_path
  83.         xor     al,al
  84.         mov     ecx,PATHL
  85.         repne   scasb
  86.         mov     dword[edi-1],'.ini'
  87.         mov     byte[edi+3],0
  88.  
  89.         stdcall load_settings
  90.  
  91.         stdcall mem.Alloc,65536
  92.         mov     [temp_buf],eax
  93.  
  94.         inc     [do_not_draw]
  95.  
  96.         mov     dword[app_start],7
  97.  
  98.         mov     esi,s_example
  99.         mov     edi,tb_opensave.text
  100.         mov     ecx,s_example.size
  101.         mov     [tb_opensave.length],cl
  102.         rep     movsb
  103.  
  104.         mov     esi,s_still
  105.         mov     edi,s_search
  106.         mov     ecx,s_still.size
  107.         mov     [s_search.size],ecx
  108.         rep     movsb
  109.  
  110.         cmp     byte[@PARAMS],0
  111.         jz      no_params
  112.  
  113. ;// Willow's code to support DOCPAK [
  114.  
  115.         cmp     byte[@PARAMS],'*'
  116.         jne     .noipc
  117.  
  118. ;// diamond [ (convert size from decimal representation to dword)
  119. ;--     mov     edx,dword[@PARAMS+1]
  120.         mov     esi,@PARAMS+1
  121.         xor     edx,edx
  122.         xor     eax,eax
  123.     @@: lodsb
  124.         test    al,al
  125.         jz      @f
  126.         lea     edx,[edx*4+edx]
  127.         lea     edx,[edx*2+eax-'0']
  128.         jmp     @b
  129.     @@:
  130. ;// diamond ]
  131.  
  132.         add     edx,20
  133.  
  134.         stdcall mem.Alloc,edx
  135.         mov     ebp,eax
  136.         push    eax
  137.  
  138.         mov     dword[ebp+0],0
  139.         mov     dword[ebp+4],8
  140.         mcall   60,1,ebp
  141.         mcall   40,1000000b
  142.  
  143.         mcall   23,200
  144.  
  145.         cmp     eax,7
  146.         jne     key.alt_x.close
  147.         mov     byte[ebp],1
  148.  
  149.         mov     ecx,[ebp+12]
  150.         lea     esi,[ebp+16]
  151.         call    create_tab
  152.         call    load_from_memory
  153.  
  154.         pop     ebp
  155.         stdcall mem.Free,ebp
  156.  
  157.         jmp     @f
  158.   .noipc:
  159.  
  160. ;// Willow's code to support DOCPAK ]
  161.  
  162.         mov     esi,@PARAMS
  163.         mov     edi,tb_opensave.text
  164.         mov     ecx,PATHL
  165.         rep     movsb
  166.         mov     edi,tb_opensave.text
  167.         mov     ecx,PATHL
  168.         xor     al,al
  169.         repne   scasb
  170.         jne     key.alt_x.close
  171.         lea     eax,[edi-tb_opensave.text-1]
  172.         mov     [tb_opensave.length],al
  173.         call    load_file
  174.         jnc     @f
  175.  
  176.   no_params:
  177.         call    create_tab
  178.  
  179.     @@:
  180.         mov     [s_status],0
  181.         dec     [do_not_draw]
  182.  
  183.         mov     al,[tabs_pos]
  184.         mov     [tab_bar.Style],al
  185.  
  186. ;---------------------------------------------------------------------
  187.         mov     edi,filename_area
  188.         mov     esi,s_example+5
  189.         call    copy_str_1
  190.  
  191.         mov     esi,tb_opensave.text
  192.         mov     edi,fname_Info
  193.         call    copy_str_1
  194.         xor     eax,eax
  195.         mov     [edi],al
  196. ;---------------------------------------------------------------------
  197. ;OpenDialog     initialisation
  198.         push    dword OpenDialog_data
  199.         call    [OpenDialog_Init]
  200. ;---------------------------------------------------------------------
  201.  
  202.  
  203.         mcall   66,1,1
  204.         mcall   40,00100111b
  205. red:
  206.         call    drawwindow
  207.  
  208. ;-----------------------------------------------------------------------------
  209.  
  210. still:
  211.         call    draw_statusbar ; write current position & number of strings
  212.  
  213.   .skip_write:
  214.         cmp     [open_dialog],1
  215.         je      .open_dialog
  216.         mcall   10      ; wait here until event
  217.  
  218.         cmp     [main_closed],0
  219.         jne     key.alt_x
  220.         dec     eax     ; redraw ?
  221.         jz      red
  222.         dec     eax     ; key ?
  223.         jz      key
  224.         dec     eax     ; button ?
  225.         jz      button
  226.         sub     eax,3   ; mouse ?
  227.         jz      mouse
  228.  
  229.         jmp     still.skip_write
  230. ;---------------------------------------------------------------------
  231. .open_dialog:
  232.         pusha
  233.  
  234.         call    btn.bot.cancel
  235.  
  236.         mov     esi,tb_opensave.text
  237.         mov     edi,[OpenDialog_data.openfile_pach]
  238.         movzx   ecx,[tb_opensave.length]
  239.         mov     edx,[OpenDialog_data.filename_area]
  240.         mov     ebx,[OpenDialog_data.opendir_pach]
  241.         call    copy_str_2
  242.         movzx   eax,byte [bot_mode2]
  243.         mov     [OpenDialog_data.type],eax
  244.         popa
  245. ; invoke OpenDialog
  246.         push    dword OpenDialog_data
  247.         call    [OpenDialog_Start]
  248.  
  249.         cmp     [OpenDialog_data.status],1
  250.         jne     .3
  251.  
  252.         pusha
  253.         mov     edi,tb_opensave.text
  254.         mov     esi,[OpenDialog_data.openfile_pach]
  255.         call    copy_str_1
  256.         sub     edi,tb_opensave.text
  257.         dec     edi
  258.         mov     eax,edi
  259.         mov     [tb_opensave.length],al
  260.         popa
  261.  
  262.         cmp     [bot_mode2],0
  263.         je      .2
  264.         call    save_file
  265.         jmp     .3
  266. .2:
  267.         call    load_file
  268. .3:
  269.         mov     [open_dialog],0
  270.         jmp     red
  271. ;-----------------------------------------------------------------------------
  272. draw_window_for_OD:
  273.         call    drawwindow
  274.         call    draw_statusbar
  275.         ret
  276. ;-----------------------------------------------------------------------------
  277. copy_str_2:
  278.         cld
  279.         push    esi ecx
  280.         rep     movsb   ; edi  openfile_pach
  281.         xor     eax,eax
  282.         mov     [edi],al
  283.         pop     ecx esi
  284.         mov     edi,ebx
  285.         rep     movsb   ; edi opendir_pach
  286.         mov     [edi],al
  287.         mov     esi,edi
  288.         std
  289. @@:
  290.         lodsb
  291.         cmp     al,byte '/'
  292.         jne     @b
  293.         inc     esi
  294.         xor     eax,eax
  295.         mov     [esi],al
  296.         inc     esi
  297.         mov     edi,edx ; edi filename_area
  298.         call    copy_str_1
  299.         ret
  300. ;-----------------------------------------------------------------------------
  301. copy_str_1:
  302.         xor     eax,eax
  303.         cld
  304. @@:
  305.         lodsb
  306.         stosb
  307.         test    eax,eax
  308.         jnz     @b
  309.         ret
  310. ;-----------------------------------------------------------------------------
  311. proc get_event ctx ;//////////////////////////////////////////////////////////
  312. ;-----------------------------------------------------------------------------
  313.         mcall   10
  314.         dec     eax     ; redraw ?
  315.         jz      .redraw
  316.         dec     eax     ; key ?
  317.         jz      .key
  318.         dec     eax     ; button ?
  319.         jz      .button
  320.         sub     eax,2   ; background ?
  321.         jz      .background
  322.         dec     eax     ; mouse ?
  323.         jz      .mouse
  324.         dec     eax     ; ipc ?
  325.         jz      .ipc
  326.         dec     eax     ; network ?
  327.         jz      .network
  328.         dec     eax     ; debug ?
  329.         jz      .debug
  330.         sub     eax,7   ; irq ?
  331.         js      .nothing
  332.         cmp     eax,15
  333.         jg      .nothing
  334.         jmp     .irq
  335.  
  336.   .nothing:
  337.         mov     eax,EV_IDLE
  338.         ret
  339.  
  340.   .redraw:
  341.         mov     eax,EV_REDRAW
  342.         ret
  343.  
  344.   .key:
  345.         mov     eax,EV_KEY
  346.         ret
  347.  
  348.   .button:
  349.         mov     eax,EV_BUTTON
  350.         ret
  351.  
  352.   .background:
  353.         mov     eax,EV_BACKGROUND
  354.         ret
  355.  
  356.   .mouse:
  357.         mov     eax,EV_MOUSE
  358.         ret
  359.  
  360.   .ipc:
  361.         mov     eax,EV_IPC
  362.         ret
  363.  
  364.   .network:
  365.         mov     eax,EV_NETWORK
  366.         ret
  367.  
  368.   .debug:
  369.         mov     eax,EV_DEBUG
  370.         ret
  371. endp
  372.  
  373. ;-----------------------------------------------------------------------------
  374. proc load_settings ;//////////////////////////////////////////////////////////
  375. ;-----------------------------------------------------------------------------
  376.         pushad
  377.  
  378.         invoke  ini.get_int,ini_path,ini_sec_options,ini_options_tabs_pos,2
  379.         mov     [tabs_pos],al
  380.         invoke  ini.get_int,ini_path,ini_sec_options,ini_options_secure_sel,0
  381.         mov     [secure_sel],al
  382.         invoke  ini.get_int,ini_path,ini_sec_options,ini_options_auto_braces,0
  383.         mov     [auto_braces],al
  384.         invoke  ini.get_int,ini_path,ini_sec_options,ini_options_auto_indent,1
  385.         mov     [auto_indent],al
  386.         invoke  ini.get_int,ini_path,ini_sec_options,ini_options_optim_save,0
  387.         mov     [optim_save],al
  388.         invoke  ini.get_int,ini_path,ini_sec_options,ini_options_line_nums,0
  389.         mov     [line_nums],al
  390.  
  391.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_text,0x00000000
  392.         mov     [color_tbl.text],eax
  393.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_back,0x00ffffff
  394.         mov     [color_tbl.back],eax
  395.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_text_sel,0x00ffffff
  396.         mov     [color_tbl.text.sel],eax
  397.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_back_sel,0x000a246a
  398.         mov     [color_tbl.back.sel],eax
  399.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_symbol,0x003030f0
  400.         mov     [color_tbl.symbol],eax
  401.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_number,0x00009000
  402.         mov     [color_tbl.number],eax
  403.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_string,0x00b00000
  404.         mov     [color_tbl.string],eax
  405.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_comment,0x00808080
  406.         mov     [color_tbl.comment],eax
  407.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_line_moded,0x00ffee62
  408.         mov     [color_tbl.line.moded],eax
  409.         invoke  ini.get_color,ini_path,ini_sec_colors,ini_colors_line_saved,0x006ce26c
  410.         mov     [color_tbl.line.saved],eax
  411.  
  412.         invoke  ini.get_int,ini_path,ini_sec_window,ini_window_left,250
  413.         mov     [mainwnd_pos.x],eax
  414.         invoke  ini.get_int,ini_path,ini_sec_window,ini_window_top,75
  415.         mov     [mainwnd_pos.y],eax
  416.         invoke  ini.get_int,ini_path,ini_sec_window,ini_window_width,6*80+6+SCRLW+5
  417.         mov     [mainwnd_pos.w],eax
  418.         invoke  ini.get_int,ini_path,ini_sec_window,ini_window_height,402
  419.         mov     [mainwnd_pos.h],eax
  420.  
  421.         popad
  422.         ret
  423. endp
  424.  
  425. ;-----------------------------------------------------------------------------
  426. proc save_settings ;//////////////////////////////////////////////////////////
  427. ;-----------------------------------------------------------------------------
  428.         pushad
  429.  
  430.         movzx   eax,[tabs_pos]
  431.         invoke  ini.set_int,ini_path,ini_sec_options,ini_options_tabs_pos,eax
  432.         movzx   eax,[secure_sel]
  433.         invoke  ini.set_int,ini_path,ini_sec_options,ini_options_secure_sel,eax
  434.         movzx   eax,[auto_braces]
  435.         invoke  ini.set_int,ini_path,ini_sec_options,ini_options_auto_braces,eax
  436.         movzx   eax,[auto_indent]
  437.         invoke  ini.set_int,ini_path,ini_sec_options,ini_options_auto_indent,eax
  438.         movzx   eax,[optim_save]
  439.         invoke  ini.set_int,ini_path,ini_sec_options,ini_options_optim_save,eax
  440.         movzx   eax,[line_nums]
  441.         invoke  ini.set_int,ini_path,ini_sec_options,ini_options_line_nums,eax
  442.  
  443.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_text,[color_tbl.text]
  444.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_back,[color_tbl.back]
  445.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_text_sel,[color_tbl.text.sel]
  446.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_back_sel,[color_tbl.back.sel]
  447.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_symbol,[color_tbl.symbol]
  448.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_number,[color_tbl.number]
  449.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_string,[color_tbl.string]
  450.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_comment,[color_tbl.comment]
  451.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_line_moded,[color_tbl.line.moded]
  452.         invoke  ini.set_color,ini_path,ini_sec_colors,ini_colors_line_saved,[color_tbl.line.saved]
  453.  
  454.         invoke  ini.set_int,ini_path,ini_sec_window,ini_window_left,[mainwnd_pos.x]
  455.         invoke  ini.set_int,ini_path,ini_sec_window,ini_window_top,[mainwnd_pos.y]
  456.         invoke  ini.set_int,ini_path,ini_sec_window,ini_window_width,[mainwnd_pos.w]
  457.         invoke  ini.set_int,ini_path,ini_sec_window,ini_window_height,[mainwnd_pos.h]
  458.  
  459.         popad
  460.         ret
  461. endp
  462.  
  463. ;-----------------------------------------------------------------------------
  464. proc start_fasm ;/////////////////////////////////////////////////////////////
  465. ;-----------------------------------------------------------------------------
  466. ; BL = 0 - compile
  467. ; BL = 1 - run after compile
  468. ; BL = 2 - run under mtdbg after compile
  469. ;-----------------------------------------------------------------------------
  470. ; FASM infile,outfile,/path/to/files[,run]
  471. ;-----------------------------------------------------------------------------
  472.         cmp     [cur_editor.AsmMode],0
  473.         jne     @f
  474.         ret
  475.     @@:
  476.         mov     eax,[tab_bar.Default.Ptr]
  477.         or      eax,eax
  478.         jnz     @f
  479.         mov     eax,[tab_bar.Current.Ptr]
  480.     @@: cmp     byte[eax+TABITEM.Editor.FilePath],'/'
  481.         je      @f
  482.         ret
  483.     @@:
  484.         mov     edi,fasm_parameters
  485.         push    eax
  486.  
  487.         cld
  488.  
  489.         lea     esi,[eax+TABITEM.Editor.FilePath]
  490.         add     esi,[eax+TABITEM.Editor.FileName]
  491.         push    esi esi
  492.     @@: lodsb
  493.         cmp     al,0
  494.         je      @f
  495.         stosb
  496.         cmp     al,'.'
  497.         jne     @b
  498.         mov     ecx,esi
  499.         jmp     @b
  500.     @@:
  501.         mov     al,','
  502.         stosb
  503.  
  504.         pop     esi
  505.         sub     ecx,esi
  506.         dec     ecx
  507.         jz      @f
  508.         rep     movsb
  509.     @@:
  510.         mov     al,','
  511.         stosb
  512.  
  513.         pop     ecx esi
  514.         add     esi,TABITEM.Editor.FilePath
  515.         sub     ecx,esi
  516.         rep     movsb
  517.  
  518.         cmp     bl,0 ; compile outfile ?
  519.         je      @f
  520.         mov     dword[edi],',run'
  521.         cmp     bl,1 ; run outfile ?
  522.         je      do_run
  523.         mov     dword[edi],',dbg'
  524. do_run:
  525.         add     edi,4
  526.     @@:
  527.         mov     al,0
  528.         stosb
  529.  
  530.         mov     [app_start.filename],app_fasm
  531.         mov     [app_start.params],fasm_parameters
  532. start_ret:
  533.         mcall   70,app_start
  534.         ret
  535. endp
  536.  
  537. ;-----------------------------------------------------------------------------
  538. proc open_debug_board ;///////////////////////////////////////////////////////
  539. ;-----------------------------------------------------------------------------
  540.         mov     [app_start.filename],app_board
  541.         mov     [app_start.params],0
  542.         jmp     start_ret
  543. endp
  544.  
  545. ;-----------------------------------------------------------------------------
  546. proc open_sysfuncs_txt ;//////////////////////////////////////////////////////
  547. ;-----------------------------------------------------------------------------
  548.         mov     [app_start.filename],app_docpak
  549.         mov     [app_start.params],sysfuncs_param
  550.         call    start_ret
  551.         cmp     eax,0xfffffff0
  552.         jb      @f
  553.         mov     [app_start.filename],app_tinypad
  554.         mov     [app_start.params],sysfuncs_filename
  555.         call    start_ret
  556.     @@: ret
  557. endp
  558.  
  559. set_opt:
  560.  
  561.   .dialog:
  562.         mov     [bot_mode],1
  563.         mov     [bot_dlg_height],128
  564.         mov     [bot_dlg_handler],optsdlg_handler
  565.         mov     [focused_tb],tb_color
  566.         mov     al,[tb_color.length]
  567.         mov     [tb_color.pos.x],al
  568.         mov     [tb_color.sel.x],0
  569.         mov     [tb_casesen],1
  570.         mov     [cur_part],0
  571.         m2m     [cur_color],dword[color_tbl.text]
  572.         mov     esi,color_tbl
  573.         mov     edi,cur_colors
  574.         mov     ecx,10
  575.         cld
  576.         rep     movsd
  577.         call    drawwindow
  578.         ret
  579.  
  580.   .line_numbers:
  581.         xor     [line_nums],1
  582.         ret
  583.   .optimal_fill:
  584.         xor     [optim_save],1
  585.         ret
  586.   .auto_indents:
  587.         xor     [auto_indent],1
  588.         ret
  589.   .auto_braces:
  590.         xor     [auto_braces],1
  591.         ret
  592.   .secure_sel:
  593.         xor     [secure_sel],1
  594.         ret
  595.  
  596. ;-----------------------------------------------------------------------------
  597.  
  598. include 'data/tp-defines.inc'
  599.  
  600. include 'tp-draw.asm'
  601. include 'tp-key.asm'
  602. include 'tp-button.asm'
  603. include 'tp-mouse.asm'
  604. include 'tp-files.asm'
  605. include 'tp-common.asm'
  606. include 'tp-dialog.asm'
  607. include 'tp-popup.asm'
  608. include 'tp-tbox.asm'
  609. include 'tp-tabctl.asm'
  610. include 'tp-editor.asm'
  611. include 'tp-recode.asm'
  612. include 'tp-clipboard.asm'
  613.  
  614. include '../../../dll.inc'
  615.  
  616. ;-----------------------------------------------------------------------------
  617. __section @DATA ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  618. ;-----------------------------------------------------------------------------
  619.  
  620. ;include_debug_strings
  621.  
  622. include 'data/tp-idata.inc'
  623.  
  624. ;-----------------------------------------------------------------------------
  625. __section @IMPORT ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  626. ;-----------------------------------------------------------------------------
  627.  
  628. library \
  629.         libini,'libini.obj',\
  630.         libio,'libio.obj',\
  631.         libgfx,'libgfx.obj',\
  632.         proc_lib,'proc_lib.obj'
  633.  
  634. import  libini, \
  635.         ini.get_str  ,'ini_get_str',\
  636.         ini.set_str  ,'ini_set_str',\
  637.         ini.get_int  ,'ini_get_int',\
  638.         ini.set_int  ,'ini_set_int',\
  639.         ini.get_color,'ini_get_color',\
  640.         ini.set_color,'ini_set_color'
  641.  
  642. import  libio, \
  643.         file.find_first,'file_find_first',\
  644.         file.find_next ,'file_find_next',\
  645.         file.find_close,'file_find_close',\
  646.         file.size      ,'file_size',\
  647.         file.open      ,'file_open',\
  648.         file.read      ,'file_read',\
  649.         file.write     ,'file_write',\
  650.         file.seek      ,'file_seek',\
  651.         file.tell      ,'file_tell',\
  652.         file.eof?      ,'file_iseof',\
  653.         file.truncate  ,'file_truncate',\
  654.         file.close     ,'file_close'
  655.  
  656. import  libgfx, \
  657.         gfx.open        ,'gfx_open',\
  658.         gfx.close       ,'gfx_close',\
  659.         gfx.pen.color   ,'gfx_pen_color',\
  660.         gfx.brush.color ,'gfx_brush_color',\
  661.         gfx.pixel       ,'gfx_pixel',\
  662.         gfx.move.to     ,'gfx_move_to',\
  663.         gfx.line.to     ,'gfx_line_to',\
  664.         gfx.line        ,'gfx_line',\
  665.         gfx.polyline    ,'gfx_polyline',\
  666.         gfx.polyline.to ,'gfx_polyline_to',\
  667.         gfx.fillrect    ,'gfx_fillrect',\
  668.         gfx.fillrect.ex ,'gfx_fillrect_ex',\
  669.         gfx.framerect   ,'gfx_framerect',\
  670.         gfx.framerect.ex,'gfx_framerect_ex',\
  671.         gfx.rectangle   ,'gfx_rectangle',\
  672.         gfx.rectangle.ex,'gfx_rectangle_ex'
  673.  
  674. import  proc_lib, \
  675.         OpenDialog_Init  ,'OpenDialog_init',\
  676.         OpenDialog_Start  ,'OpenDialog_start'
  677.  
  678. TINYPAD_END:     ; end of file
  679.  
  680. ;-----------------------------------------------------------------------------
  681. __section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  682. ;-----------------------------------------------------------------------------
  683.  
  684. include 'data/tp-udata.inc'
  685.  
  686. ;-----------------------------------------------------------------------------
  687. __section @PARAMS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  688. ;-----------------------------------------------------------------------------
  689.  
  690. fasm_parameters:
  691.     rb 1024+256
  692. p_info  process_information
  693. p_info2 process_information
  694. sc      system_colors
  695.  
  696. ini_path rb PATHL
  697.  
  698. ;---------------------------------------------------------------------
  699. temp_dir_pach:
  700.         rb 4096
  701. ;---------------------------------------------------------------------
  702. fname_Info:
  703.         rb 4096            ; filename
  704. ;---------------------------------------------------------------------
  705. filename_area:
  706.         rb 256
  707. ;---------------------------------------------------------------------
  708. rb 1024*4
  709. MAIN_STACK:
  710. rb 1024*4
  711. POPUP_STACK:
  712.  
  713. STATIC_MEM_END:
  714.  
  715. diff10 'Main memory size',0,$
  716.