Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 986 → Rev 987

/programs/develop/tinypad/trunk/data/tp-idata.inc
3,12 → 3,14
hscrl_capt dd -1
body_capt dd -1
 
ins_mode db 1
 
s_status dd 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 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
 
15,10 → 17,24
include 'tp-tables.inc'
include 'tp-locale.inc'
 
macro editor_lines [str, flags]
{
common
local size
forward
virtual at 0
db str
size = $
end virtual
dd size
dw flags
db str
common
dd 0
}
 
;// 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 ?
35,25 → 51,16
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
editor_lines \
' ', 0, \
' org 100h', EDITOR_LINE_FLAG_MOFIFIED, \
' ', 0, \
' mov ah,09h ; write', 0, \
' mov dx,text', 0, \
' int 21h', 0, \
' int 20h', EDITOR_LINE_FLAG_MOFIFIED + EDITOR_LINE_FLAG_SAVED, \
' ', 0, \
' text db "Hello!",24h', 0
 
optsdlg_editor_parts: ; left,top,right,bottom,type
db 0, 12, 13, 29, 22
79,8 → 86,31
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
; INI file section/key names
 
sz ini_sec_window,INI_SEC_PREFIX,'window',0
sz ini_window_top,'top',0
sz ini_window_left,'left',0
sz ini_window_width,'width',0
sz ini_window_height,'height',0
 
sz ini_sec_colors,INI_SEC_PREFIX,'colors',0
sz ini_colors_text,'text',0
sz ini_colors_back,'back',0
sz ini_colors_text_sel,'text_sel',0
sz ini_colors_back_sel,'back_sel',0
sz ini_colors_symbol,'symbol',0
sz ini_colors_number,'number',0
sz ini_colors_string,'string',0
sz ini_colors_comment,'comment',0
sz ini_colors_line_moded,'line_moded',0
sz ini_colors_line_saved,'line_saved',0
 
sz ini_sec_options,INI_SEC_PREFIX,'options',0
sz ini_options_tabs_pos,'tabs_pos',0
sz ini_options_secure_sel,'secure_sel',0
sz ini_options_auto_braces,'auto_braces',0
sz ini_options_auto_indent,'auto_indent',0
sz ini_options_smart_tab,'smart_tab',0
sz ini_options_optim_save,'optim_save',0
sz ini_options_line_nums,'line_nums',0
/programs/develop/tinypad/trunk/data/tp-udata.inc
1,6 → 1,4
 
self_path rb PATHL
 
app_start:
dd ?,?
.params dd ?
106,3 → 104,29
 
temp_buf dd ?
copy_buf dd ?
 
label color_tbl dword
.text dd ?
.back dd ?
.text.sel dd ?
.back.sel dd ?
.symbol dd ?
.number dd ?
.string dd ?
.comment dd ?
.line.moded dd ?
.line.saved dd ?
 
tabs_pos db ?
secure_sel db ?
auto_braces db ?
auto_indent db ?
smart_tab db ?
optim_save db ?
line_nums db ?
 
mainwnd_pos:
.x dd ?
.y dd ?
.w dd ?
.h dd ?
/programs/develop/tinypad/trunk/external/dll.inc
15,8 → 15,6
or eax,eax
jz .fail
stdcall dll.Link,eax,edx
or eax,eax
jz .fail
stdcall dll.Init,[eax+4]
pop esi
add esi,8
60,9 → 58,11
 
proc dll.GetProcAddress, exp:dword,sz_name:dword
mov edx,[exp]
.next: xor eax,eax
test edx,edx
xor eax,eax
.next: or edx,edx
jz .end
cmp dword[edx],0
jz .end
stdcall strcmp,[edx],[sz_name]
test eax,eax
jz .ok
88,5 → 88,6
ret
endp
 
s_libdir db '/rd/1/lib/'
s_libdir.fname rb 32
s_libdir:
db '/sys/lib/'
.fname rb 32
/programs/develop/tinypad/trunk/external/libio.inc
1,25 → 1,35
;-----------------------------------------------------------------------------
; Copyright (c) 2006-2007, mike.dld
;-----------------------------------------------------------------------------
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
; DEALINGS IN THE SOFTWARE.
;-----------------------------------------------------------------------------
;;================================================================================================;;
;;//// libio.inc //// (c) mike.dld, 2007-2008 ////////////////////////////////////////////////////;;
;;================================================================================================;;
;; ;;
;; This file is part of Common development libraries (Libs-Dev). ;;
;; ;;
;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;;
;; General Public License as published by the Free Software Foundation, either version 3 of the ;;
;; License, or (at your option) any later version. ;;
;; ;;
;; Libs-Dev is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without ;;
;; even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;
;; General Public License for more details. ;;
;; ;;
;; You should have received a copy of the GNU General Public License along with Libs-Dev. If not, ;;
;; see <http://www.gnu.org/licenses/>. ;;
;; ;;
;;================================================================================================;;
 
 
O_BINARY = 00000000b
O_READ = 00000001b
O_WRITE = 00000010b
O_CREATE = 00000100b
O_SHARE = 00001000b
O_TEXT = 00010000b
 
SEEK_SET = 0
SEEK_CUR = 1
SEEK_END = 2
 
struct DateTime
struct FileDateTime
union
time dd ?
struct
58,22 → 68,32
struct FileInfoA
Attributes dd ?
Flags dd ?
DateCreate DateTime
DateAccess DateTime
DateModify DateTime
FileSize dd ?
DateCreate FileDateTime
DateAccess FileDateTime
DateModify FileDateTime
union
FileSize dq ?
struct
FileSizeLow dd ?
FileSizeHigh dd ?
FileName rb 264
ends
ends
FileName rb 252
ends
 
struct FileInfoW
Attributes dd ?
Flags dd ?
DateCreate DateTime
DateAccess DateTime
DateModify DateTime
FileSize dd ?
DateCreate FileDateTime
DateAccess FileDateTime
DateModify FileDateTime
union
FileSize dq ?
struct
FileSizeLow dd ?
FileSizeHigh dd ?
ends
ends
FileName rw 260
ends
 
89,3 → 109,4
FA_LABEL = 00001000b
FA_FOLDER = 00010000b
FA_ARCHIVED = 00100000b
FA_ANY = 00111111b
/programs/develop/tinypad/trunk/history.txt
9,6 → 9,10
- line is redrawn after lining up a single char and then deleting it
(pressing Del twice) [#1]
- update tab/window title and highlighting mode after file save
- allocate 1024 bytes in case file not found (avoid crash)
changes:
- max line length changed back to 4GB, each line overhead is 6 bytes now
- settings are stored in INI file (using libini), allowing binary to be compressed
new features:
- prompt to save modified file before closing (+fixes)
- button to close current tab (+fixes)
53,7 → 57,7
- 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
low word - line block length, so max line length is 64KB 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
/programs/develop/tinypad/trunk/tinypad.asm
32,7 → 32,7
 
;purge mov,add,sub ;  SPEED
 
header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,self_path
header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,ini_path
 
APP_VERSION equ 'SVN (4.0.5)'
 
44,6 → 44,8
;define __DEBUG_LEVEL__ 1
;include 'debug-fdo.inc'
 
; compiled-in options
 
ASEPC = '-' ; separator character (char)
ATOPH = 19 ; menu bar height (pixels)
SCRLW = 16 ; scrollbar widht/height (pixels)
56,50 → 58,12
STATH = 16 ; status bar height (pixels)
TBARH = 18 ; tab bar height (pixels)
 
;-----------------------------------------------------------------------------
section @OPTIONS ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----------------------------------------------------------------------------
INI_SEC_PREFIX equ ''
 
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
106,9 → 70,6
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
117,6 → 78,15
or eax,eax
jnz key.alt_x.close
 
mov edi,ini_path
xor al,al
mov ecx,PATHL
repne scasb
mov dword[edi-1],'.ini'
mov byte[edi+3],0
 
stdcall load_settings
 
stdcall mem.Alloc,65536
mov [temp_buf],eax
 
208,6 → 178,10
@@:
mov [s_status],0
dec [do_not_draw]
 
mov al,[tabs_pos]
mov [tab_bar.Style],al
 
mcall 66,1,1
mcall 40,00100111b
red:
297,6 → 271,100
endp
 
;-----------------------------------------------------------------------------
proc load_settings ;//////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
pushad
 
invoke ini.get_int,ini_path,ini_sec_options,ini_options_tabs_pos,2
mov [tabs_pos],al
invoke ini.get_int,ini_path,ini_sec_options,ini_options_secure_sel,0
mov [secure_sel],al
invoke ini.get_int,ini_path,ini_sec_options,ini_options_auto_braces,0
mov [auto_braces],al
invoke ini.get_int,ini_path,ini_sec_options,ini_options_auto_indent,1
mov [auto_indent],al
invoke ini.get_int,ini_path,ini_sec_options,ini_options_smart_tab,1
mov [smart_tab],al
invoke ini.get_int,ini_path,ini_sec_options,ini_options_optim_save,1
mov [optim_save],al
invoke ini.get_int,ini_path,ini_sec_options,ini_options_line_nums,0
mov [line_nums],al
 
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_text,0x00000000
mov [color_tbl.text],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_back,0x00ffffff
mov [color_tbl.back],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_text_sel,0x00ffffff
mov [color_tbl.text.sel],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_back_sel,0x000a246a
mov [color_tbl.back.sel],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_symbol,0x003030f0
mov [color_tbl.symbol],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_number,0x00009000
mov [color_tbl.number],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_string,0x00b00000
mov [color_tbl.string],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_comment,0x00808080
mov [color_tbl.comment],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_line_moded,0x00ffee62
mov [color_tbl.line.moded],eax
invoke ini.get_color,ini_path,ini_sec_colors,ini_colors_line_saved,0x006ce26c
mov [color_tbl.line.saved],eax
 
invoke ini.get_int,ini_path,ini_sec_window,ini_window_left,250
mov [mainwnd_pos.x],eax
invoke ini.get_int,ini_path,ini_sec_window,ini_window_top,75
mov [mainwnd_pos.y],eax
invoke ini.get_int,ini_path,ini_sec_window,ini_window_width,6*80+6+SCRLW+5
mov [mainwnd_pos.w],eax
invoke ini.get_int,ini_path,ini_sec_window,ini_window_height,402
mov [mainwnd_pos.h],eax
 
popad
ret
endp
 
;-----------------------------------------------------------------------------
proc save_settings ;//////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
pushad
 
movzx eax,[tabs_pos]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_tabs_pos,eax
movzx eax,[secure_sel]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_secure_sel,eax
movzx eax,[auto_braces]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_auto_braces,eax
movzx eax,[auto_indent]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_auto_indent,eax
movzx eax,[smart_tab]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_smart_tab,eax
movzx eax,[optim_save]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_optim_save,eax
movzx eax,[line_nums]
invoke ini.set_int,ini_path,ini_sec_options,ini_options_line_nums,eax
 
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_text,[color_tbl.text]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_back,[color_tbl.back]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_text_sel,[color_tbl.text.sel]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_back_sel,[color_tbl.back.sel]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_symbol,[color_tbl.symbol]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_number,[color_tbl.number]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_string,[color_tbl.string]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_comment,[color_tbl.comment]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_line_moded,[color_tbl.line.moded]
invoke ini.set_color,ini_path,ini_sec_colors,ini_colors_line_saved,[color_tbl.line.saved]
 
invoke ini.set_int,ini_path,ini_sec_window,ini_window_left,[mainwnd_pos.x]
invoke ini.set_int,ini_path,ini_sec_window,ini_window_top,[mainwnd_pos.y]
invoke ini.set_int,ini_path,ini_sec_window,ini_window_width,[mainwnd_pos.w]
invoke ini.set_int,ini_path,ini_sec_window,ini_window_height,[mainwnd_pos.h]
 
popad
ret
endp
 
;-----------------------------------------------------------------------------
proc start_fasm ;/////////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
; BL = run after compile
408,22 → 476,19
ret
 
.line_numbers:
mov al,OPTS_LINENUMS
jmp .main
xor [line_nums],1
ret
.optimal_fill:
mov al,OPTS_OPTIMSAVE
jmp .main
xor [optim_save],1
ret
.auto_indents:
mov al,OPTS_AUTOINDENT
jmp .main
xor [auto_indent],1
ret
.auto_braces:
mov al,OPTS_AUTOBRACES
jmp .main
xor [auto_braces],1
ret
.secure_sel:
mov al,OPTS_SECURESEL
 
.main:
xor [options],al
xor [secure_sel],1
ret
 
;-----------------------------------------------------------------------------
456,8 → 521,6
;-----------------------------------------------------------------------------
section @IMPORT ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----------------------------------------------------------------------------
;align 16
;@IMPORT:
 
library \
libini,'libini.obj',\
468,7 → 531,9
ini.get_str,'ini.get_str',\
ini.set_str,'ini.set_str',\
ini.get_int,'ini.get_int',\
ini.set_int,'ini.set_int'
ini.set_int ,'ini.set_int',\
ini.get_color,'ini.get_color',\
ini.set_color,'ini.set_color'
 
import libio, \
file.find_first,'file.find_first',\
520,6 → 585,8
p_info2 process_information
sc system_colors
 
ini_path rb PATHL
 
rb 1024*4
MAIN_STACK:
rb 1024*4
/programs/develop/tinypad/trunk/tinypad.inc
48,6 → 48,14
db ?
ends
 
struct EDITOR_LINE_DATA
Size dd ?
Flags dw ?
ends
 
EDITOR_LINE_FLAG_MOFIFIED = 0x0001
EDITOR_LINE_FLAG_SAVED = 0x0002
 
struct TABITEM
Editor EDITOR
ends
201,15 → 209,6
end if
}
 
;// OPTIONS
 
OPTS_SECURESEL = 00000001b
OPTS_AUTOBRACES = 00000010b
OPTS_AUTOINDENT = 00000100b
OPTS_SMARTTAB = 00001000b
OPTS_OPTIMSAVE = 00010000b
OPTS_LINENUMS = 00100000b
 
;// MOUSE EVENTS
 
MEV_LDOWN = 1
/programs/develop/tinypad/trunk/tp-common.asm
70,8 → 70,8
;-----------------------------------------------------------------------------
proc get_real_length ;////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
movzx eax,word[esi]
@@: cmp byte[esi+eax+4-1],' '
mov eax,[esi+EDITOR_LINE_DATA.Size]
@@: cmp byte[esi+eax+sizeof.EDITOR_LINE_DATA-1],' '
jne @f
dec eax
jnz @b
90,8 → 90,8
mov esi,[cur_editor.Lines]
@@: dec ecx
js .exit
movzx eax,word[esi]
lea esi,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
jmp @b
.exit:
pop ecx eax
358,22 → 358,22
;-----------------------------------------------------------------------------
xor eax,eax
pushad
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
cmp ecx,edx
jbe .exit
sub ecx,edx
lea eax,[ecx+4]
lea eax,[ecx+sizeof.EDITOR_LINE_DATA]
call editor_realloc_lines
mov [esp+4*7],eax
add esi,eax
push ecx
mov edi,[cur_editor.Lines]
add edi,[edi-4]
add edi,[cur_editor.Lines.Size] ; !!! CHECK THIS!!! add edi,[edi-4]
dec edi
mov eax,esi
mov esi,edi
sub esi,ecx
lea ecx,[eax+4]
lea ecx,[eax+sizeof.EDITOR_LINE_DATA]
add ecx,edx
push ecx
neg ecx
381,7 → 381,7
std
rep movsb
pop edi ecx
add [eax],cx
add [eax+EDITOR_LINE_DATA.Size],ecx
mov al,' '
cld
rep stosb
403,12 → 403,12
cmp ecx,[sel.end.y]
je .single_line
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
mov ecx,[sel.begin.x]
call line_add_spaces
add esi,eax
lea edi,[esi+4]
lea edi,[esi+sizeof.EDITOR_LINE_DATA]
mov ecx,[sel.end.y]
call get_line_offset
call get_real_length
415,13 → 415,13
cmp eax,[sel.end.x]
jbe @f
mov eax,[sel.end.x]
@@: movzx ecx,word[esi]
@@: mov ecx,[esi+EDITOR_LINE_DATA.Size]
sub ecx,eax
mov ebx,[sel.begin.x]
add ebx,ecx
mov [edi-4],bx
mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],ebx
add edi,[sel.begin.x]
lea esi,[esi+eax+4]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
mov ecx,[cur_editor.Lines]
add ecx,[cur_editor.Lines.Size] ;*** add ecx,[ecx-4]
sub ecx,esi
434,8 → 434,8
 
.single_line:
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
call get_real_length
cmp eax,[sel.begin.x]
jbe .exit
444,8 → 444,8
jbe @f
mov ecx,eax
@@: sub ecx,[sel.begin.x]
sub [esi],cx
lea edi,[esi+4]
sub [esi+EDITOR_LINE_DATA.Size],ecx
lea edi,[esi+sizeof.EDITOR_LINE_DATA]
add edi,[sel.begin.x]
lea esi,[edi+ecx]
mov ecx,[cur_editor.Lines]
464,8 → 464,8
 
mov ecx,[cur_editor.Lines.Count]
call get_line_offset
movzx eax,word[esi]
lea esi,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
mov eax,[cur_editor.Lines]
add eax,[cur_editor.Lines.Size] ;*** add eax,[eax-4]
sub esi,eax
/programs/develop/tinypad/trunk/tp-dialog.asm
350,8 → 350,9
jmp .draw_color.2
 
.draw_editor:
push dword[options] [tab_bar.Current.Ptr]
mov [options],0
;push dword[options] [tab_bar.Current.Ptr]
push [tab_bar.Current.Ptr]
;mov [options],0
mov ebp,optsdlg_editor
call set_cur_tab
 
366,8 → 367,9
call draw_editor
call .xchg_colors
 
pop ebp eax
mov [options],al
;pop ebp eax
pop ebp
;mov [options],al
call set_cur_tab
ret
 
383,7 → 385,7
dec ecx
mcall 8,,,0x40000000+21001
mov esi,[cl_3d_normal]
mov al,[tab_pos]
mov al,[tabs_pos]
 
TPOSH = 6
TPOSW = 10
687,8 → 689,10
mov [bot_mode],al
mov [bot_dlg_height],eax
call optsdlg_handler.xchg_colors
mov al,[tab_pos]
mov al,[tabs_pos]
mov [tab_bar.Style],al
 
stdcall save_settings
call drawwindow
ret
 
695,8 → 699,8
tabpos_round db 4,3,1,2
 
btn.bot.tabpos:
movzx eax,[tab_pos]
movzx eax,[tabs_pos]
mov al,[tabpos_round+eax-1]
mov [tab_pos],al
mov [tabs_pos],al
@@: call optsdlg_handler.draw_tabpos
ret
/programs/develop/tinypad/trunk/tp-editor.asm
16,7 → 16,7
call draw_framerect
 
mov [cur_editor.Gutter.Visible],0
test [options],OPTS_LINENUMS
test [line_nums],1
jnz @f
xor eax,eax
jmp .lp1
574,14 → 574,12
.lp6:
mcall 13
 
lodsd
 
pushad
mov edx,[color_tbl.back]
test eax,0x00010000
test [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
jz @f
mov edx,[color_tbl.line.moded]
test eax,0x00020000
test [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_SAVED
jz @f
mov edx,[color_tbl.line.saved]
@@: mov ebx,[left_ofs]
593,8 → 591,9
popad
 
xor ecx,ecx
and eax,0x0000FFFF
mov eax,[esi+EDITOR_LINE_DATA.Size]
mov [cur_line_len],eax
add esi,sizeof.EDITOR_LINE_DATA
 
or eax,eax
ja .next_block
/programs/develop/tinypad/trunk/tp-files.asm
17,8 → 17,8
mov ecx,[cur_editor.Lines.Count]
@@: call get_real_length
add ebx,eax
movzx eax,word[esi]
lea esi,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
loop @b
mov eax,[cur_editor.Lines.Count]
shl eax,1
30,7 → 30,7
 
.new_string:
call save_string
cmp dword[esi],0
cmp dword[esi+EDITOR_LINE_DATA.Size],0
jne .new_string
pop eax
sub edi,eax
64,11 → 64,11
;-----------------------------------------------------------------------------
proc save_string ;////////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
movzx ecx,word[esi]
test dword[esi],0x00010000
mov ecx,[esi+EDITOR_LINE_DATA.Size]
test [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
jz @f
or dword[esi],0x00020000
@@: add esi,4
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_SAVED
@@: add esi,sizeof.EDITOR_LINE_DATA
 
@@: cmp byte[esi+ecx-1],' '
jne @f
81,7 → 81,7
.next_char:
mov al,[esi+ebx]
inc ebx
test [options],OPTS_OPTIMSAVE
test [optim_save],1
jz .put
test ah,00000001b
jnz .char
127,8 → 127,7
.endcopy:
mov eax,0x0A0D
stosw
movzx eax,word[esi-4]
add esi,eax;[esi-4]
add esi,[esi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
ret
endp
 
174,7 → 173,10
mcall 70,f_info70
mov [f_info70+0],0
mov eax,dword[file_info.Size]
mov [f_info70+12],eax
or eax, eax
jnz @f
mov eax, 1024
@@: mov [f_info70+12],eax
stdcall mem.Alloc,eax
mov [f_info70+16],eax
mcall 70,f_info70
233,7 → 235,7
call get_lines_in_file
mov [ebp+EDITOR.Lines.Count],eax
lea edx,[ebx+ecx]
imul ebx,eax,14
imul ebx,eax,16
add ebx,edx
mov [ebp+EDITOR.Lines.Size],ebx
stdcall mem.ReAlloc,[ebp+EDITOR.Lines],ebx
245,7 → 247,7
 
.next_line:
mov ebx,edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
.next_char:
or edx,edx
jle .exit
266,10 → 268,10
mov ecx,10
mov al,' '
rep stosb
lea eax,[edi-4]
lea eax,[edi-sizeof.EDITOR_LINE_DATA]
sub eax,ebx
mov [ebx],eax
mov dword[ebx+eax+4],0
mov [ebx+EDITOR_LINE_DATA.Size],eax
mov [ebx+eax+sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],0
sub eax,10
jnz @f
inc eax
286,9 → 288,9
.LF: mov ecx,10
mov al,' '
rep stosb
lea eax,[edi-4]
lea eax,[edi-sizeof.EDITOR_LINE_DATA]
sub eax,ebx
mov [ebx],eax
mov [ebx+EDITOR_LINE_DATA.Size],eax
add eax,-10
cmp eax,[ebp+EDITOR.Columns.Count]
jbe .next_line
295,7 → 297,7
mov [ebp+EDITOR.Columns.Count],eax
jmp .next_line
 
.TB: lea eax,[edi-4]
.TB: lea eax,[edi-sizeof.EDITOR_LINE_DATA]
sub eax,ebx
mov ecx,eax
add ecx,ATABW
/programs/develop/tinypad/trunk/tp-key.asm
78,7 → 78,7
mov esi,accel_table_main
.acc: cmp eax,[esi]
jne @f
test [options],OPTS_SECURESEL
test [secure_sel],1
jz .lp1
m2m [cur_editor.SelStart.X],[cur_editor.Caret.X]
m2m [cur_editor.SelStart.Y],[cur_editor.Caret.Y]
102,7 → 102,7
movzx eax,[eax+key1]
push eax
 
test [options],OPTS_SECURESEL
test [secure_sel],1
jz .lp2
m2m [cur_editor.SelStart.X],[cur_editor.Caret.X]
m2m [cur_editor.SelStart.Y],[cur_editor.Caret.Y]
109,7 → 109,7
jmp .put
.lp2: call delete_selection
 
test [options],OPTS_AUTOBRACES
test [auto_braces],1
jz .put
cmp al,'['
jne @f
274,12 → 274,12
cld
mov ecx,ebx
call get_line_offset
.lp1: cmp dx,[esi]
.lp1: cmp edx,[esi+EDITOR_LINE_DATA.Size]
jle @f
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
@@: dec edx
jl .nx1
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
mov ecx,edx
@@: push ecx
297,18 → 297,18
js .exit.2
mov ecx,ebx
call get_line_offset
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
dec edx
jmp .lp1
@@:
mov ecx,ebx
call get_line_offset
.lp2: cmp dx,[esi]
.lp2: cmp edx,[esi+EDITOR_LINE_DATA.Size]
jle @f
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
@@: or edx,edx
jl .nx2
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
@@: mov edi,symbols_ex
mov ecx,symbols_ex.size+symbols.size
323,7 → 323,7
js .exit.2
mov ecx,ebx
call get_line_offset
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
dec edx
jmp .lp2
@@:
367,10 → 367,10
cld
.lp1: mov ecx,ebx
call get_line_offset
movzx ecx,word[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
cmp edx,ecx
jge .nx1
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
sub ecx,edx
@@: push ecx
392,10 → 392,10
 
.lp2: mov ecx,ebx
call get_line_offset
movzx ecx,word[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
cmp edx,ecx
jge .nx2
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
sub ecx,edx
@@: push ecx
477,8 → 477,9
jge @f
xor eax,eax
@@: add esi,[sel.begin.x]
add esi,4
stosd
add esi,sizeof.EDITOR_LINE_DATA
mov [edi+EDITOR_LINE_DATA.Size],eax
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,eax
jecxz @f
rep movsb
494,13 → 495,14
rep movsb
mov ecx,[sel.end.y]
@@: call get_line_offset
movzx eax,word[esi]
add esi,4
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
cmp eax,[sel.end.x]
jle @f
mov eax,[sel.end.x]
@@: mov ebx,edi
stosd
mov [edi+EDITOR_LINE_DATA.Size],eax
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,eax
jecxz @f
rep movsb
524,19 → 526,20
mov eax,[sel.end.x]
sub eax,[sel.begin.x]
mov edi,[copy_buf]
stosd
mov [edi+EDITOR_LINE_DATA.Size],eax
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,[sel.begin.y]
call get_line_offset
mov ebx,[sel.begin.x]
mov ecx,[sel.end.x]
cmp ebx,[esi]
cmp ebx,[esi+EDITOR_LINE_DATA.Size]
jge .add_spaces
cmp ecx,[esi]
cmp ecx,[esi+EDITOR_LINE_DATA.Size]
jle .lp1
mov ecx,[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
.lp1: sub ecx,[sel.begin.x]
sub eax,ecx
lea esi,[esi+ebx+4]
lea esi,[esi+ebx+sizeof.EDITOR_LINE_DATA]
rep movsb
 
.add_spaces:
565,13 → 568,13
 
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
pushd [esi] esi
pushd [esi+EDITOR_LINE_DATA.Size] esi
mov ecx,[cur_editor.Caret.X]
call line_add_spaces
add [esp],eax
add esi,eax
mov ecx,[copy_size]
sub ecx,4
sub ecx,sizeof.EDITOR_LINE_DATA
mov edi,[cur_editor.Lines]
add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4]
dec edi
578,7 → 581,7
mov eax,esi
mov esi,edi
sub esi,ecx
lea ecx,[eax+4]
lea ecx,[eax+sizeof.EDITOR_LINE_DATA]
add ecx,[cur_editor.Caret.X]
neg ecx
lea ecx,[esi+ecx+1]
591,14 → 594,15
 
cld
pop edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov esi,[copy_buf]
lodsd
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
 
mov ebx,[cur_editor.Caret.X]
add eax,ebx
mov [edi-4],ax
mov byte[edi-4+2],0x0001
mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],eax
mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
sub eax,ebx
call .check_columns
add edi,ebx
605,16 → 609,17
@@: push ecx
mov ecx,eax
rep movsb
lodsd
and eax,0x0000FFFF
stosd
mov byte[edi-4+2],0x0001
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
mov [edi+EDITOR_LINE_DATA.Size],eax
mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
add edi,sizeof.EDITOR_LINE_DATA
pop ecx
loop @b
 
pop ecx
sub ecx,ebx
add [edi-4],cx
add [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],ecx
call .check_columns
mov ecx,eax
rep movsb
633,12 → 638,13
.single_line:
cld
pop edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov esi,[copy_buf]
lodsd
add [edi-4],ax
and dword[edi-4],not 0x00020000
or dword[edi-4],0x00010000
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
add [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],eax
and [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
call .check_columns
add edi,[cur_editor.Caret.X]
add esp,4
655,7 → 661,7
 
.check_columns:
push eax
movzx eax,word[edi-4]
mov eax,[edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
cmp eax,[cur_editor.Columns.Count]
jbe @f
mov [cur_editor.Columns.Count],eax
666,7 → 672,7
;-----------------------------------------------------------------------------
proc key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
;-----------------------------------------------------------------------------
mov eax,94
mov eax,90+sizeof.EDITOR_LINE_DATA
call editor_realloc_lines
 
mov ecx,[cur_editor.Caret.Y]
675,14 → 681,14
 
mov ecx,[cur_editor.Lines.Count]
call get_line_offset
lea edi,[esi+90+4]
lea ecx,[esi+4]
lea edi,[esi+90+sizeof.EDITOR_LINE_DATA]
lea ecx,[esi+sizeof.EDITOR_LINE_DATA]
sub ecx,ebx
std
rep movsb
 
lea edi,[ebx+5]
mov word[ebx],90
lea edi,[ebx+sizeof.EDITOR_LINE_DATA+1]
mov [ebx+EDITOR_LINE_DATA.Size],90
mov al,ASEPC
mov ecx,79
cld
690,7 → 696,7
mov al,' '
mov ecx,10
rep stosb
mov byte[ebx+4],';'
mov byte[ebx+sizeof.EDITOR_LINE_DATA],';'
 
inc [cur_editor.Lines.Count]
inc [cur_editor.Caret.Y]
713,9 → 719,8
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
mov edi,esi
lodsd
and eax,0x0000FFFF
add esi,eax
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
push eax
 
dec [cur_editor.Lines.Count]
727,7 → 732,7
rep movsd
 
pop eax
add eax,4
add eax,sizeof.EDITOR_LINE_DATA
neg eax
call editor_realloc_lines
 
1033,9 → 1038,9
 
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
lea ebx,[esi+4]
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
lea ebx,[esi+sizeof.EDITOR_LINE_DATA]
mov ebp,esi
 
call get_real_length
1047,7 → 1052,7
jae .line_up
lea edi,[ebx+ecx]
neg ecx
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add ecx,eax;[ebp]
repe scasb
je .line_up
1057,7 → 1062,7
add edi,ecx
lea esi,[edi+1]
neg ecx
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add ecx,eax;[ebp]
dec ecx
rep movsb
1074,27 → 1079,27
cmp eax,[cur_editor.Caret.Y]
je .exit
mov edi,[temp_buf]
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov esi,ebx
mov ecx,[cur_editor.Caret.X]
rep movsb
mov ecx,[cur_editor.Caret.X]
mov eax,[temp_buf]
mov [eax],ecx
cmp cx,[ebp]
mov [eax+EDITOR_LINE_DATA.Size],ecx
cmp ecx,[ebp+EDITOR_LINE_DATA.Size]
jbe @f
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
sub ecx,eax
sub edi,ecx
mov al,' '
rep stosb
@@: lea esi,[ebx+4]
movzx eax,word[ebp]
@@: lea esi,[ebx+sizeof.EDITOR_LINE_DATA]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add esi,eax
movzx ecx,word[esi-4]
mov ecx,[esi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
mov eax,[temp_buf]
add [eax],ecx
or dword[eax],0x00010000
add [eax+EDITOR_LINE_DATA.Size],ecx
or [eax+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
rep movsb
 
mov ecx,edi
1110,14 → 1115,13
mov edi,[cur_editor.Lines]
add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4]
dec edi
lea esi,[edi+8]
lea esi,[edi+sizeof.EDITOR_LINE_DATA*2] ; !!! CHECK THIS !!!
sub esi,ecx
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add esi,eax
movzx eax,word[ebp]
movzx eax,word[ebp+eax+4]
mov eax,[ebp+eax+sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
add esi,eax
lea ecx,[esi-4]
lea ecx,[esi-sizeof.EDITOR_LINE_DATA]
sub ecx,ebp
std
cmp esi,edi
1125,10 → 1129,10
jz .lp1
mov edi,ebp
add edi,[esp]
lea esi,[ebp+8]
movzx eax,word[esi-8]
lea esi,[ebp+sizeof.EDITOR_LINE_DATA*2] ; !!! CHECK THIS !!!
mov eax,[esi-sizeof.EDITOR_LINE_DATA*2+EDITOR_LINE_DATA.Size] ; !!! CHECK THIS !!!
add esi,eax
movzx eax,word[esi-4]
mov eax,[esi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size] ; !!! CHECK THIS !!!
add esi,eax
mov ecx,[cur_editor.Lines]
add ecx,[cur_editor.Lines.Size] ;*** add ecx,[ecx-4]
1153,8 → 1157,8
 
mov ecx,[cur_editor.Lines.Count]
call get_line_offset
movzx eax,word[esi]
lea esi,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
mov eax,[cur_editor.Lines]
add eax,[cur_editor.Lines.Size] ;*** add eax,[eax-4]
sub esi,eax
1191,8 → 1195,8
dec [cur_editor.Caret.X]
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
mov ebx,eax
call get_real_length
1202,10 → 1206,10
mov [cur_editor.Modified],1
ret
 
@@: lea edi,[esi+4+ebx]
@@: lea edi,[esi+sizeof.EDITOR_LINE_DATA+ebx]
mov ecx,ebx
neg ecx
movzx eax,word[esi]
mov eax,[esi+EDITOR_LINE_DATA.Size]
add ecx,eax
dec ecx
lea esi,[edi+1]
1225,12 → 1229,12
@@: mov ecx,[cur_editor.Caret.Y]
dec ecx
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
mov ebp,esi
lea ebx,[esi+4]
movzx ecx,word[ebp]
lea ebx,[esi+sizeof.EDITOR_LINE_DATA]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
@@: cmp byte[ebx+ecx-1],' '
jne @f
dec ecx
1258,8 → 1262,8
pop eax
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
xchg eax,ecx
 
1267,7 → 1271,7
cmp eax,[cur_editor.Caret.X]
jae @f
mov eax,[cur_editor.Caret.X]
@@: movzx edx,word[esi]
@@: mov edx,[esi+EDITOR_LINE_DATA.Size]
sub edx,eax
cmp ecx,edx
jl @f
1282,8 → 1286,8
dec ecx
mov edi,ecx
add ecx,-10+1
movzx eax,word[esi]
lea eax,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea eax,[esi+eax+sizeof.EDITOR_LINE_DATA]
sub ecx,eax
lea esi,[edi-10]
std
1292,11 → 1296,11
mov al,' '
rep stosb
popad
add word[esi],10
add [esi+EDITOR_LINE_DATA.Size],10
jmp @b
@@: lea ebx,[esi+4]
@@: lea ebx,[esi+sizeof.EDITOR_LINE_DATA]
push ecx
movzx edi,word[esi]
mov edi,[esi+EDITOR_LINE_DATA.Size]
lea edi,[ebx+edi-1]
mov esi,edi
sub esi,ecx
1310,7 → 1314,7
rep stosb
cld
pop [cur_editor.Caret.X]
lea esi,[ebx-4]
lea esi,[ebx-sizeof.EDITOR_LINE_DATA]
call get_real_length
cmp eax,[cur_editor.Caret.X]
jae @f
1338,9 → 1342,9
call get_line_offset
 
mov ebx,[cur_editor.Caret.X]
cmp bx,[esi]
cmp ebx,[esi+EDITOR_LINE_DATA.Size]
jb @f
movzx ebx,word[esi]
mov ebx,[esi+EDITOR_LINE_DATA.Size]
dec ebx
jns @f
xor ebx,ebx
1352,14 → 1356,15
lea ecx,[ebx+1]
@@: dec ecx
jz @f
cmp byte[esi+ecx+4-1],' '
cmp byte[esi+ecx+sizeof.EDITOR_LINE_DATA-1],' '
je @b
@@: lea eax,[ecx+10]
or eax,0x00010000
stosd
mov [edi+EDITOR_LINE_DATA.Size],eax
mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
add edi,sizeof.EDITOR_LINE_DATA
jecxz @f
push esi
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
rep movsb
pop esi
@@: mov al,' '
1366,10 → 1371,10
mov ecx,10
rep stosb
 
movzx ecx,word[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
sub ecx,ebx
add esi,ebx
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
inc ecx
@@: dec ecx
jz @f
1380,11 → 1385,11
jne .lp1
inc esi
loop @b
.lp1: test [options],OPTS_AUTOINDENT
.lp1: test [auto_indent],1
jz .lp2
push edi ecx
movzx ecx,word[ebp]
lea edi,[ebp+4]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
lea edi,[ebp+sizeof.EDITOR_LINE_DATA]
mov al,' '
repe scasb
mov eax,ecx
1391,13 → 1396,13
pop ecx edi
je .lp2
neg eax
movzx edx,word[ebp]
mov edx,[ebp+EDITOR_LINE_DATA.Size]
add eax,edx;[ebp]
dec eax
jmp @f
.lp2: xor eax,eax
@@: mov edx,edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov [cur_editor.Caret.X],eax
jecxz @f
push ecx
1411,10 → 1416,10
mov al,' '
rep stosb
 
lea eax,[edi-4]
lea eax,[edi-sizeof.EDITOR_LINE_DATA]
sub eax,edx
or eax,0x00010000
mov [edx],eax
mov [edx+EDITOR_LINE_DATA.Size],eax
mov [edx+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
mov ecx,edi
sub ecx,[temp_buf]
1423,20 → 1428,20
mov edi,[cur_editor.Lines]
add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4]
dec edi
lea esi,[edi+4]
lea esi,[edi+sizeof.EDITOR_LINE_DATA]
sub esi,ecx
movzx ecx,word[ebp]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
add esi,ecx
lea ecx,[esi-4]
lea ecx,[esi-sizeof.EDITOR_LINE_DATA]
sub ecx,ebp
std
cmp esi,edi
jb @f
je .lp3
lea esi,[ebp+4]
lea esi,[ebp+sizeof.EDITOR_LINE_DATA]
mov eax,[esp]
lea edi,[esi+eax-4]
movzx ecx,word[ebp]
lea edi,[esi+eax-sizeof.EDITOR_LINE_DATA]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
add esi,ecx
mov ecx,[cur_editor.Lines]
add ecx,[cur_editor.Lines.Size] ;*** add ecx,[ecx-4]
1593,29 → 1598,13
.direct:
call try_to_close_tabs
or eax,eax
jz .close
jz @f
mov [bot_mode2],2
jmp key.ctrl_o.direct
 
@@: stdcall save_settings
 
.close:
mov esi,self_path
mov byte[esi+PATHL-1],0
mov edi,f_info.path
cld
@@: lodsb
stosb
or al,al
jnz @b
 
mov [f_info70+0],2
mov [f_info70+4],0
mov [f_info70+8],0
mov [f_info70+12],TINYPAD_END
mov [f_info70+16],0
mov byte[f_info70+20],0
mov [f_info70+21],f_info.path
mcall 70,f_info70
 
mov [main_closed],1
mcall -1
endp
/programs/develop/tinypad/trunk/tp-popup.asm
260,23 → 260,23
;mov word[mm.Options+0],0
mov byte[mm.Options+5],0
or byte[mm.Options+2],0x02
test [options],OPTS_SECURESEL
test [secure_sel],1
jnz @f
and byte[mm.Options+2],0xFD
@@: or byte[mm.Options+3],0x02
test [options],OPTS_AUTOBRACES
test [auto_braces],1
jnz @f
and byte[mm.Options+3],0xFD
@@: or byte[mm.Options+4],0x02
test [options],OPTS_AUTOINDENT
test [auto_indent],1
jnz @f
and byte[mm.Options+4],0xFD
@@: or byte[mm.Options+6],0x02
test [options],OPTS_OPTIMSAVE
test [optim_save],1
jnz @f
and byte[mm.Options+6],0xFD
@@: or byte[mm.Options+8],0x02
test [options],OPTS_LINENUMS
test [line_nums],1
jnz @f
and byte[mm.Options+8],0xFD
@@: ret
/programs/develop/tinypad/trunk/tp-tabctl.asm
101,9 → 101,9
mov [cur_editor.SelStart.X],eax
mov [cur_editor.SelStart.Y],eax
mov edi,[cur_editor.Lines]
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,10
mov [edi-4],ecx
mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],ecx
mov [edi+10],eax
mov al,' '
cld