;----------------------------------------------------------------------------- ; project name: TINYPAD ; compiler: flat assembler 1.67.18 ; memory to compile: 3.0/9.0 MBytes (without/with size optimizations) ; version: 4.0.4 ; last update: 2007-02-08 (Feb 08, 2007) ; minimal kernel: revision #270 (svn://kolibrios.org/kernel) ;----------------------------------------------------------------------------- ; originally by: Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi ; maintained by: Mike Semenyako >> mike.dld@gmail.com ; Ivan Poddubny >> ivan-yar@bk.ru ;----------------------------------------------------------------------------- ; TODO (4.1.0): ; - optimize drawing (reduce flickering) ; - add vertical selection, undo, goto position, overwrite mode ; - improve window drawing with small dimensions ; - save settings to ini file, not to executable ; - add prompt to save file before closing/opening ; - other bug-fixes and speed/size optimizations ; ; HISTORY: ; 4.0.4 (mike.dld) ; bug-fixes: ; - statusbar contained hint after dialog operation cancelled ; - small drawing fix for gutter and line saved/modified markers ; (incorrect calculations) ; - incorrect lines marking on Ctrl+V ; - put filename of current tab into open/save dialog (noticed by Maxxxx32) ; changes: ; - editor and other modifications to ease parts placement changing, ; including changes in look ; - modified/saved colors now match those in MSVS ; - function 70 for *all* file operations (including diamond's fixes) ; - use memory manager instead of statically allocated region ; - case-insensitive filenames input, to be able to open/save files with ; non-latin chars in name (russian etc.) ; - reduced flickering (changes checker) ; - overall code cleanup ; new features: ; - recode tables between CP866, CP1251 and KOI8-R (suggested by Victor) ; - tabbed interface, ability to open several files in one app instance ; (thanks IRC guys for ideas and testing) ; - make any tab default to compile it disregarding currently active tab ; - configuration dialog (colors, tabs positioning) ; 4.0.3 (mike.dld) ; bug-fixes: ; - 1-char selection if pressing out of real line length ; - fault in `writepos`, added call to function 9 ; - main menu items weren't highlighted if popup opened and cursor ; isn't in main menu item's area ; - statusbar and textboxes drawing fixes (wrong colors) ; - perform no redraw while pressing Shift, Ctrl, Alt keys ; - data length from DOCPAK in string representation (fixed by diamond) ; - compare file extension case-insensitively (fixed by diamond) ; changes: ; - function 70 instead of 58 for files loading/saving ; - clientarea-relative drawing (less code) ; - every line's dword is now splitted into 2 words; ; low word - line block length, so max line length is 65535 now ; high word - various flags. for now, only 2 of 16 bits are used: ; if bit #0 is set, line was modified since file open ; if bit #1 is set, line was saved after last modification ; high word could also be further used for code collapsing and different ; line marking features (breakpoints, errors, bookmarks, etc.) ; new features: ; - line markers for modified and saved lines ; - status messages for various actions ; 4.0.2 (mike.dld) ; bug-fixes: ; - program terminates if started with parameters (fine for DOCPAK) ; 4.0.1 (mike.dld) ; bug-fixes: ; - unable to run program after exiting from main menu (Alt+X) ; new features: ; - integration with DOCPAK ; 4.0 (mike.dld) ; bug-fixes: ; - main menu popups' "on show" was called only for first shown popup ; - clear selection on left/right arrow keys ; new features: ; - "replace" dialog (w/o "skip", "replace all") ; - line numbers display ; - options (except "appearance" and "smart tabulation") ; - options saving (colors, window position, "Options" popup triggers) ; 4.0 beta 2 (mike.dld) ; bug-fixes: ; - unable to start if /rd/1/example.asm is missing (from Halyavin) ; - clicking on menu items draws main window in popup (from Rohan) ; - passed parameters aren't taken into account (from Mario79) ; - background isn't erased if text lines < screen lines after ; selection deletion (from Rohan) ; 4.0 beta 1 (mike.dld) ; menu bar and popup menu; ; removed buttons from the top and input fields from the bottom since ; now they're accesible through main/popup menu; ; improved keyboard handling (using 66th function); ; support for almost all FASMW keyboard shourtcuts; ; added text selection ability, standard selection operations ; (copy,cut,paste); ; new integrated dialogs (open, save, find) ; fix to collapse SPACEs into TABs only for *.asm and *.inc files ; 3.78a (mike.dld) ; fixed termination while typing in x positions higher than (line_length+10); ; improved drawing on small heights ; don't draw window while its height = 0 (Kolibri "minimize" support) ; 3.78 (mike.dld) ; now lines may be of ANY length; ; optimized memory usage (less memory for internal file representation) ; after loading file, it's internal size equals to its real size ; plus 14 bytes for each line (4 bytes for line length ; and 10 spaced to the end - to reduce data relocations count); ; completely rewritten keyboard handling; ; added horizontal scrollbar; ; all line feed formats are supported: WIN(CRLF),*NIX(LF),MAC(CR); ; etc. ; 3.77 (mike.dld) ; changed save_string to collapse SPACEs into TABs; ; rewrote drawfile from scratch (speed++) ; through some drawing improvements needed ; (some checkups to reduce flickering); ; writepos (size--); ; fixed drawing window while height < 100px, and for non-asm files; ; several small fixes; speed/size optimizations ; 3.76 (mike.dld) ; changed loadfile/loadhdfile to expand TABs into SPACEs; ; changed TAB,ENTER,DELETE,BSPACE keys behaviour (rewritten from scratch); ; vertical scrollbar; ; extra window resizing capabilities (added a couple of constants); ; completely new text cursor management & moving text cursor with mouse; ; improved search function, moving cursor to beginning of text found; ; adjustable max line width (change LINE_WIDTH & recompile) // (obsolet) ; 3.75a ; fixed converting char to upper case in read_string ; 3.75 ; rewrote save_file from scratch; bugfix in loadfile; ; 3.74 ; optimisation ; 3.73 ; completly new load_file function ; 3.72 ; speed++ ; 3.71 ; error beep ; 3.6,3.7: ; many bugs fixed ; simple toolbar ; compile, run applications from TINYPAD, all fasm output is in debug board ; TAB button ; auto-indent ; Ctrl+L - insert comment string ;----------------------------------------------------------------------------- include 'lang.inc' include '..\..\..\macros.inc' ; useful stuff ;include 'proc32.inc' include 'tinypad.inc' ;purge mov,add,sub ;  SPEED header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,self_path APP_VERSION equ '4.0.4' ;include 'debug.inc' ;define __DEBUG__ 1 ;define __DEBUG_LEVEL__ 1 ;include 'debug-fdo.inc' ASEPC = '-' ; separator character (char) ATOPH = 19 ; menu bar height (pixels) SCRLW = 16 ; scrollbar widht/height (pixels) ATABW = 8 ; tab key indent width (chars) LINEH = 10 ; line height (pixels) PATHL = 256 ; maximum path length (chars) !!! don't change !!! AMINS = 8 ; minimal scroll thumb size (pixels) LCHGW = 3 ; changed/saved marker width (pixels) STATH = 16 ; status bar height (pixels) TBARH = 18 ; tab bar height (pixels) ;----------------------------------------------------------------------------- section @OPTIONS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;----------------------------------------------------------------------------- label color_tbl dword .text: RGB( 0, 0, 0) .back: RGB(255,255,255) .text.sel: RGB(255,255,255) .back.sel: RGB( 10, 36,106) .symbol: RGB( 48, 48,240) .number: RGB( 0,144, 0) .string: RGB(176, 0, 0) .comment: RGB(128,128,128) .line.moded: RGB(255,238, 98) .line.saved: RGB(108,226,108) ins_mode db 1 tab_pos db 2 options db OPTS_AUTOINDENT+OPTS_OPTIMSAVE+OPTS_SMARTTAB mainwnd_pos: .x dd 250 .y dd 75 .w dd 6*80+6+SCRLW+5 ;- 220 .h dd 402 ;- 220 ;----------------------------------------------------------------------------- section @CODE ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;----------------------------------------------------------------------------- ; fninit ; stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_left,50 ; mov [mainwnd_pos.x],eax ; stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_top,50 ; mov [mainwnd_pos.y],eax ; stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_right,350 ; sub eax,[mainwnd_pos.x] ; mov [mainwnd_pos.w],eax ; stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_bottom,450 ; sub eax,[mainwnd_pos.y] ; mov [mainwnd_pos.h],eax cld mov edi,@UDATA mov ecx,@PARAMS-@UDATA mov al,0 rep stosb mov al,[tab_pos] mov [tab_bar.Style],al mcall 68,11 or eax,eax jz key.alt_x.close mov eax,65536 call mem.Alloc mov [temp_buf],eax inc [do_not_draw] mov dword[app_start],7 mov esi,s_example mov edi,tb_opensave.text mov ecx,s_example.size mov [tb_opensave.length],cl rep movsb mov esi,s_still mov edi,s_search mov ecx,s_still.size mov [s_search.size],ecx rep movsb cmp byte[@PARAMS],0 jz no_params ;// Willow's code to support DOCPAK [ cmp byte[@PARAMS],'*' jne .noipc ;// diamond [ (convert size from decimal representation to dword) ;-- mov edx,dword[@PARAMS+1] mov esi,@PARAMS+1 xor edx,edx xor eax,eax @@: lodsb test al,al jz @f lea edx,[edx*4+edx] lea edx,[edx*2+eax-'0'] jmp @b @@: ;// diamond ] add edx,20 mov eax,edx call mem.Alloc mov ebp,eax push eax mov dword[ebp+0],0 mov dword[ebp+4],8 mcall 60,1,ebp mcall 40,1000000b mcall 23,200 cmp eax,7 jne key.alt_x.close mov byte[ebp],1 mov ecx,[ebp+12] lea esi,[ebp+16] call create_tab call load_from_memory pop ebp mov eax,ebp call mem.Free jmp @f .noipc: ;// Willow's code to support DOCPAK ] mov esi,@PARAMS mov edi,tb_opensave.text mov ecx,PATHL rep movsb mov edi,tb_opensave.text mov ecx,PATHL xor al,al repne scasb jne key.alt_x.close lea eax,[edi-tb_opensave.text-1] mov [tb_opensave.length],al call load_file jnc @f no_params: call create_tab @@: mov [s_status],0 dec [do_not_draw] mcall 66,1,1 mcall 40,00100111b red: call drawwindow ;----------------------------------------------------------------------------- still: call draw_statusbar ; write current position & number of strings .skip_write: mcall 10 ; wait here until event cmp [main_closed],0 jne key.alt_x dec eax ; redraw ? jz red dec eax ; key ? jz key dec eax ; button ? jz button sub eax,3 ; mouse ? jz mouse jmp still.skip_write ;----------------------------------------------------------------------------- func start_fasm ;///////////////////////////////////////////////////////////// ;----------------------------------------------------------------------------- ; BL = run after compile ;----------------------------------------------------------------------------- ; FASM infile,outfile,/path/to/files[,run] ;----------------------------------------------------------------------------- cmp [cur_editor.AsmMode],0 jne @f ret @@: mov eax,[tab_bar.Default.Ptr] or eax,eax jnz @f mov eax,[tab_bar.Current.Ptr] @@: cmp byte[eax+TABITEM.Editor.FilePath],'/' je @f ret @@: mov edi,fasm_parameters push eax cld lea esi,[eax+TABITEM.Editor.FilePath] add esi,[eax+TABITEM.Editor.FileName] push esi esi @@: lodsb cmp al,0 je @f stosb cmp al,'.' jne @b mov ecx,esi jmp @b @@: mov al,',' stosb pop esi sub ecx,esi dec ecx jz @f rep movsb @@: mov al,',' stosb pop ecx esi add esi,TABITEM.Editor.FilePath sub ecx,esi rep movsb cmp bl,0 ; run outfile ? je @f mov dword[edi],',run' add edi,4 @@: mov al,0 stosb mov [app_start.filename],app_fasm mov [app_start.params],fasm_parameters start_ret: mcall 70,app_start ret endf ;----------------------------------------------------------------------------- func open_debug_board ;/////////////////////////////////////////////////////// ;----------------------------------------------------------------------------- mov [app_start.filename],app_board mov [app_start.params],0 jmp start_ret endf ;----------------------------------------------------------------------------- func open_sysfuncs_txt ;////////////////////////////////////////////////////// ;----------------------------------------------------------------------------- mov [app_start.filename],app_docpak mov [app_start.params],sysfuncs_param call start_ret cmp eax,0xfffffff0 jb @f mov [app_start.filename],app_tinypad mov [app_start.params],sysfuncs_filename call start_ret @@: ret endf set_opt: .dialog: mov [bot_mode],1 mov [bot_dlg_height],128 mov [bot_dlg_handler],optsdlg_handler mov [focused_tb],tb_color mov al,[tb_color.length] mov [tb_color.pos.x],al mov [tb_color.sel.x],0 mov [tb_casesen],1 mov [cur_part],0 m2m [cur_color],dword[color_tbl.text] mov esi,color_tbl mov edi,cur_colors mov ecx,10 cld rep movsd call drawwindow ret .line_numbers: mov al,OPTS_LINENUMS jmp .main .optimal_fill: mov al,OPTS_OPTIMSAVE jmp .main .auto_indents: mov al,OPTS_AUTOINDENT jmp .main .auto_braces: mov al,OPTS_AUTOBRACES jmp .main .secure_sel: mov al,OPTS_SECURESEL .main: xor [options],al ret ;----------------------------------------------------------------------------- include 'tp-defines.inc' include 'tp-draw.asm' include 'tp-key.asm' include 'tp-button.asm' include 'tp-mouse.asm' include 'tp-files.asm' include 'tp-common.asm' include 'tp-dialog.asm' include 'tp-popup.asm' include 'tp-tbox.asm' include 'tp-tabctl.asm' include 'tp-editor.asm' include 'tp-recode.asm' ;include 'lib-ini.asm' ;----------------------------------------------------------------------------- section @DATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;----------------------------------------------------------------------------- vscrl_capt dd -1 hscrl_capt dd -1 body_capt dd -1 key0 db \ 0x00,0x00,0x02,0x03,0x04,0x05,0x06,0x07,\ 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,\ 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,\ 0x18,0x19,0x1A,0x1B,0x00,0x00,0x1E,0x1F,\ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,\ 0x28,0x29,0x00,0x2B,0x2C,0x2D,0x2E,0x2F,\ 0x30,0x31,0x32,0x33,0x34,0x35,0x00,0x00,\ 0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00 times 12*16 db 0x00 accel_table_main dd \ 0x0000000E,key.bkspace ,\ ; BackSpace 0x0000000F,key.tab ,\ ; Tab 0x0000001C,key.return ,\ ; Return 0x0000003D,key.f3 ,\ ; F3 0x00000043,key.f9 ,\ ; F9 0x00000147,key.home ,\ ; Home 0x00000148,key.up ,\ ; Up 0x00000149,key.pgup ,\ ; PageUp 0x0000014B,key.left ,\ ; Left 0x0000014D,key.right ,\ ; Right 0x0000014F,key.end ,\ ; End 0x00000150,key.down ,\ ; Down 0x00000151,key.pgdn ,\ ; PageDown 0x00000152,key.ins ,\ ; Insert 0x00000153,key.del ,\ ; Delete 0x00010043,key.shift_f9 ,\ ; Shift+F9 0x00010147,key.shift_home ,\ ; Shift+Home 0x00010148,key.shift_up ,\ ; Shift+Up 0x00010149,key.shift_pgup ,\ ; Shift+PageUp 0x0001014B,key.shift_left ,\ ; Shift+Left 0x0001014D,key.shift_right ,\ ; Shift+Right 0x0001014F,key.shift_end ,\ ; Shift+End 0x00010150,key.shift_down ,\ ; Shift+Down 0x00010151,key.shift_pgdn ,\ ; Shift+PageDown 0x00010153,key.del ,\ ; Shift+Delete 0x0002000F,key.ctrl_tab ,\ ; Ctrl+Tab 0x00020015,key.ctrl_y ,\ ; Ctrl+Y 0x00020018,key.ctrl_o ,\ ; Ctrl+O 0x0002001E,key.ctrl_a ,\ ; Ctrl+A 0x0002001F,key.ctrl_s ,\ ; Ctrl+S 0x00020020,key.ctrl_d ,\ ; Ctrl+D 0x00020021,key.ctrl_f ,\ ; Ctrl+F 0x00020022,key.ctrl_g ,\ ; Ctrl+G 0x00020023,key.ctrl_h ,\ ; Ctrl+H \;0x00020026,key.ctrl_l ,\ ; Ctrl+L 0x0002002D,key.ctrl_x ,\ ; Ctrl+X 0x0002002E,key.ctrl_c ,\ ; Ctrl+C 0x0002002F,key.ctrl_v ,\ ; Ctrl+V 0x00020031,key.ctrl_n ,\ ; Ctrl+N 0x0002003E,key.ctrl_f4 ,\ ; Ctrl+F4 0x00020043,key.ctrl_f9 ,\ ; Ctrl+F9 0x00020147,key.ctrl_home ,\ ; Ctrl+Home \;0x00020148,key.ctrl_up ,\ ; Ctrl+Up 0x00020149,key.ctrl_pgup ,\ ; Ctrl+PageUp 0x0002014B,key.ctrl_left ,\ ; Ctrl+Left 0x0002014D,key.ctrl_right ,\ ; Ctrl+Right 0x0002014F,key.ctrl_end ,\ ; Ctrl+End \;0x00020150,key.ctrl_down ,\ ; Ctrl+Down 0x00020151,key.ctrl_pgdn ,\ ; Ctrl+PageDown 0x00020153,key.del ,\ ; Ctrl+Del 0x0003000F,key.shift_ctrl_tab ,\ ; Shift+Ctrl+Tab 0x0003001F,key.shift_ctrl_s ,\ ; Shift+Ctrl+S 0x00030147,key.shift_ctrl_home ,\ ; Shift+Ctrl+Home \;0x00030148,key.shift_ctrl_up ,\ ; Shift+Ctrl+Up 0x00030149,key.shift_ctrl_pgup ,\ ; Shift+Ctrl+PageUp 0x0003014B,key.shift_ctrl_left ,\ ; Shift+Ctrl+Left 0x0003014D,key.shift_ctrl_right ,\ ; Shift+Ctrl+Right 0x0003014F,key.shift_ctrl_end ,\ ; Shift+Ctrl+End \;0x00030150,key.shift_ctrl_down ,\ ; Shift+Ctrl+Down 0x00030151,key.shift_ctrl_pgdn ,\ ; Shift+Ctrl+PageDown 0x0004002D,key.alt_x ,\ ; Alt+X 0 accel_table_textbox dd \ \;0x00000001,key.tb.escape ,\ ; Escape 0x0000000E,key.tb.bkspace ,\ ; BackSpace \;0x0000000F,key.tb.tab ,\ ; Tab \;0x0000001C,key.tb.return ,\ ; Return 0x00000147,key.tb.home ,\ ; Home 0x0000014B,key.tb.left ,\ ; Left 0x0000014D,key.tb.right ,\ ; Right 0x0000014F,key.tb.end ,\ ; End 0x00000153,key.tb.del ,\ ; Delete 0x00010147,key.tb.shift_home ,\ ; Shift+Home 0x0001014B,key.tb.shift_left ,\ ; Shift+Left 0x0001014D,key.tb.shift_right ,\ ; Shift+Right 0x0001014F,key.tb.shift_end ,\ ; Shift+End 0x00010153,key.tb.del ,\ ; Shift+Del 0 accel_table2 dd \ 1 ,key.alt_x ,\ 'VSL',btn.vscroll_up ,\ 'VSG',btn.vscroll_down ,\ 'HSL',btn.hscroll_up ,\ 'HSG',btn.hscroll_down ,\ 'TBL',btn.tabctl_right ,\ 'TBG',btn.tabctl_left ,\ 0 accel_table2_botdlg dd \ 1 ,key.alt_x ,\ 20001,btn.bot.cancel ,\ 20002,btn.bot.opensave ,\ 20003,btn.bot.find ,\ 20004,btn.bot.appearance,\ 21001,btn.bot.tabpos ,\ 0 add_table: times $1A db -$20 times $25 db -$00 times $10 db -$20 times $30 db -$00 times $10 db -$50 times $04 db -$00,-$01 times $08 db -$00 s_status dd 0 @^ fasm_start: dd 7 dd 0 dd fasm_parameters dd 0 dd 0 db '/RD/1/DEVELOP/FASM',0 board_start: dd 7 dd 0 dd 0 dd 0 dd 0 db '/RD/1/BOARD',0 tinypad_start: dd 7 dd 0 dd ? dd 0 dd 0 db '/RD/1/TINYPAD',0 docpak_start: dd 7 dd 0 dd sysfuncs_param dd 0 dd 0 db '/RD/1/DOCPAK',0 ^@ sz app_fasm ,'/RD/1/DEVELOP/FASM',0 sz app_board ,'/RD/1/BOARD',0 sz app_tinypad ,'/RD/1/TINYPAD',0 sz app_docpak ,'/RD/1/DOCPAK',0 sz sysfuncs_param,'g',0 include 'tp-locale.inc' ;// options dialog data [ label optsdlg_editor at $-EDITOR.Bounds ; rb PATHL ; FilePath db PATHL dup(?) ; dd 0 ; FileName dd ? dd ?,?,?,? ; Bounds RECT dd @f ; Lines dd ? dd ? ; Lines.Size dd ? dd 9 ; Lines.Count dd ? dd 21 ; Columns.Count dd ? dd 0,4 ; Caret POINT dd 100,4 ; SelStart POINT dd 0,0 ; TopLeft POINT dd 0,0 ; VScroll SCROLLBAR dd 0,0 ; HScroll SCROLLBAR dd 0 ; Gutter.Width dd ? db 0 ; Gutter.Visible db ? db 1 ; AsmMode db ? db 0 ; Modified db ? @@: dd 0x00000000+1 db ' ' dd 0x00010000+9 db ' org 100h' dd 0x00000000+1 db ' ' dd 0x00000000+20 db ' mov ah,09h ; write' dd 0x00000000+12 db ' mov dx,text' dd 0x00000000+8 db ' int 21h' dd 0x00030000+8 db ' int 20h' dd 0x00000000+1 db ' ' dd 0x00000000+21 db ' text db "Hello!",24h' dd 0 optsdlg_editor_parts: ; left,top,right,bottom,type db 0, 12, 13, 29, 22 db 0, 12, 33, 47, 42 db 0, 12, 53, 29, 72 db 0, 12, 83, 53, 92 db 2, 12, 43, 77, 52 db 3, 4, 43,148, 52 db 4, 48, 33, 53, 42 db 4,108, 83,113, 92 db 5, 36, 13, 59, 22 db 5, 54, 33, 71, 42 db 5, 36, 53, 53, 72 db 5,114, 83,131, 92 db 6, 60, 83,107, 92 db 7, 84, 33,125, 42 db 8, 1, 13, 5, 22 db 9, 1, 63, 5, 72 db 1, 1, 1,148,105 db -1 ;// ] sz symbols_ex,';?.%"',"'" sz symbols ,'#&*\:/<>|{}()[]=+-, ' sz ini_sec_window ,'Window',0 sz ini_window_top ,'Top',0 sz ini_window_left ,'Left',0 sz ini_window_right ,'Right',0 sz ini_window_bottom,'Bottom',0 TINYPAD_END: ; end of file self_path rb PATHL ;----------------------------------------------------------------------------- section @UDATA ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;----------------------------------------------------------------------------- app_start: dd ?,? .params dd ? dd ?,? db ? .filename dd ? f_info.length dd ? f_info.path: times PATHL+1 db ? f_info70 rd 7 file_info FILEINFO checker_ed EDITOR checker_ed_ll dd ? tab_bar TABCTL virtual at tab_bar.Current cur_tab TABITEM end virtual virtual at tab_bar.Current.Editor cur_editor EDITOR end virtual lines.scr dd ? ; number of lines on the screen columns.scr dd ? ; number of columns on the screen top_ofs dd ? ; height occupied by top buttons bot_ofs dd ? ; height occupied by bottom buttons dw ? left_ofs dd ? ; __rc dd ?,?,?,? copy_count dd ? ; number of lines for copying (Ctrl+E) copy_size dd ? ; size of data to copy s_title.size dd ? ; caption length cur_line_len dd ? h_popup dd ? bot_dlg_handler dd ? sel.begin.x dd ? sel.begin.y dd ? sel.end.x dd ? sel.end.y dd ? sel.selected db ? in_sel db ? do_not_draw db ? ; draw top and bottom buttons? main_closed db ? ; main window closed? tb_casesen db ? ; focused textbox is case-sensitive? draw_blines db ? align 4 s_fname.size dd ? s_fname rb PATHL+1 align 4 s_search.size dd ? s_search rb PATHL+1 s_title rb PATHL+11 ; window caption chr db ? ext db ? shi dd ? align 4 cl_3d_normal dd ? cl_3d_pushed dd ? cl_3d_outset dd ? cl_3d_inset dd ? cl_3d_grayed dd ? tb_color TBOX tb_opensave TBOX tb_find TBOX tb_replace TBOX tb_gotorow TBOX tb_gotocol TBOX focused_tb dd ? key1 rb 256 mst db ? mst2 db ? mev db ? mouse_captured db ? just_from_popup db ? bot_mode db ? align 4 bot_dlg_height dd ? bot_dlg_mode2 db ? temp_buf dd ? copy_buf dd ? ;----------------------------------------------------------------------------- section @PARAMS ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;----------------------------------------------------------------------------- fasm_parameters: p_info process_information p_info2 process_information sc system_colors rb 1024*4 MAIN_STACK: rb 1024*4 POPUP_STACK: STATIC_MEM_END: diff10 'Main memory size',0,$