forked from KolibriOS/kolibrios
Another small changes to Tinypad on the way to 4.1.0, added support for mouse wheel
git-svn-id: svn://kolibrios.org@617 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f23fc38433
commit
6b39363987
86
programs/develop/tinypad/trunk/data/tp-idata.inc
Normal file
86
programs/develop/tinypad/trunk/data/tp-idata.inc
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
|
||||||
|
vscrl_capt dd -1
|
||||||
|
hscrl_capt dd -1
|
||||||
|
body_capt dd -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 sysfuncs_param,'g',0
|
||||||
|
|
||||||
|
include 'tp-tables.inc'
|
||||||
|
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
|
189
programs/develop/tinypad/trunk/data/tp-tables.inc
Normal file
189
programs/develop/tinypad/trunk/data/tp-tables.inc
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
table.866.1251 db \
|
||||||
|
$C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7 , $C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF,\
|
||||||
|
$D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7 , $D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF,\
|
||||||
|
$E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF,\
|
||||||
|
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7 , $F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF,\
|
||||||
|
$A8,$B8,$AA,$BA,$AF,$BF,$A1,$A2 , $B0,$95,$B7,$00,$B9,$A4,$00,$00
|
||||||
|
table.1251.866 db \
|
||||||
|
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$00,$00,$00,$00,$00,$F9,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$00,$F6,$F7,$00,$FD,$00,$00,$00 , $F0,$00,$F2,$00,$00,$00,$00,$F4,\
|
||||||
|
$F8,$00,$00,$00,$00,$00,$00,$FA , $F1,$FC,$F3,$00,$00,$00,$00,$F5,\
|
||||||
|
$80,$81,$82,$83,$84,$85,$86,$87 , $88,$89,$8A,$8B,$8C,$8D,$8E,$8F,\
|
||||||
|
$90,$91,$92,$93,$94,$95,$96,$97 , $98,$99,$9A,$9B,$9C,$9D,$9E,$9F,\
|
||||||
|
$A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7 , $A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF,\
|
||||||
|
$E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF
|
||||||
|
table.866.koi db \
|
||||||
|
$E1,$E2,$F7,$E7,$E4,$E5,$F6,$FA , $E9,$EA,$EB,$EC,$ED,$EE,$EF,$F0,\
|
||||||
|
$F2,$F3,$F4,$F5,$E6,$E8,$E3,$FE , $FB,$FD,$FF,$F9,$F8,$FC,$E0,$F1,\
|
||||||
|
$C1,$C2,$D7,$C7,$C4,$C5,$D6,$DA , $C9,$CA,$CB,$CC,$CD,$CE,$CF,$D0,\
|
||||||
|
$90,$00,$00,$81,$87,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$83,\
|
||||||
|
$84,$89,$88,$86,$80,$8A,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$85,$82,$8D,$8C,$8E,$8F,$8B,\
|
||||||
|
$D2,$D3,$D4,$D5,$C6,$C8,$C3,$DE , $DB,$DD,$DF,$D9,$D8,$DC,$C0,$D1,\
|
||||||
|
$B3,$A3,$B4,$A4,$B7,$A7,$BE,$AE , $00,$95,$9E,$00,$B0,$9F,$00,$A0
|
||||||
|
table.koi.866 db \
|
||||||
|
$C4,$B3,$DA,$BF,$C0,$D9,$C3,$B4 , $C2,$C1,$C5,$DF,$DC,$DB,$DD,$DE,\
|
||||||
|
$B0,$00,$00,$00,$00,$F9,$00,$00 , $00,$00,$00,$00,$00,$00,$FA,$FD,\
|
||||||
|
$FF,$00,$00,$F1,$F3,$00,$00,$F5 , $00,$00,$00,$00,$00,$00,$F7,$00,\
|
||||||
|
$FC,$00,$00,$F0,$F2,$00,$00,$F4 , $00,$00,$00,$00,$00,$00,$F6,$00,\
|
||||||
|
$EE,$A0,$A1,$E6,$A4,$A5,$E4,$A3 , $E5,$A8,$A9,$AA,$AB,$AC,$AD,$AE,\
|
||||||
|
$AF,$EF,$E0,$E1,$E2,$E3,$A6,$A2 , $EC,$EB,$A7,$E8,$ED,$E9,$E7,$EA,\
|
||||||
|
$9E,$80,$81,$96,$84,$85,$94,$83 , $95,$88,$89,$8A,$8B,$8C,$8D,$8E,\
|
||||||
|
$8F,$9F,$90,$91,$92,$93,$86,$82 , $9C,$9B,$87,$98,$9D,$99,$97,$9A
|
||||||
|
table.1251.koi db \
|
||||||
|
$B1,$B2,$00,$A2,$00,$00,$00,$00 , $00,$00,$B9,$00,$BA,$BC,$BB,$BF,\
|
||||||
|
$A1,$91,$92,$93,$94,$95,$96,$97 , $00,$99,$A9,$00,$AA,$AC,$AB,$AF,\
|
||||||
|
$A0,$BE,$AE,$B8,$9F,$BD,$00,$00 , $B3,$98,$B4,$9D,$00,$00,$9C,$B7,\
|
||||||
|
$00,$00,$B6,$A6,$AD,$00,$00,$9E , $A3,$B0,$A4,$9B,$A8,$B5,$A5,$A7,\
|
||||||
|
$E1,$E2,$F7,$E7,$E4,$E5,$F6,$FA , $E9,$EA,$EB,$EC,$ED,$EE,$EF,$F0,\
|
||||||
|
$F2,$F3,$F4,$F5,$E6,$E8,$E3,$FE , $FB,$FD,$FF,$F9,$F8,$FC,$E0,$F1,\
|
||||||
|
$C1,$C2,$D7,$C7,$C4,$C5,$D6,$DA , $C9,$CA,$CB,$CC,$CD,$CE,$CF,$D0,\
|
||||||
|
$D2,$D3,$D4,$D5,$C6,$C8,$C3,$DE , $DB,$DD,$DF,$D9,$D8,$DC,$C0,$D1
|
||||||
|
table.koi.1251 db \
|
||||||
|
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
||||||
|
$00,$91,$92,$93,$94,$95,$96,$97 , $00,$99,$00,$BB,$AE,$AB,$B7,$A4,\
|
||||||
|
$A0,$90,$83,$B8,$BA,$BE,$B3,$BF , $BC,$9A,$9C,$9E,$9D,$B4,$A2,$9F,\
|
||||||
|
$B9,$80,$81,$A8,$AA,$BD,$B2,$AF , $A3,$8A,$8C,$8E,$8D,$A5,$A1,$8F,\
|
||||||
|
$FE,$E0,$E1,$F6,$E4,$E5,$F4,$E3 , $F5,$E8,$E9,$EA,$EB,$EC,$ED,$EE,\
|
||||||
|
$EF,$FF,$F0,$F1,$F2,$F3,$E6,$E2 , $FC,$FB,$E7,$F8,$FD,$F9,$F7,$FA,\
|
||||||
|
$DE,$C0,$C1,$D6,$C4,$C5,$D4,$C3 , $D5,$C8,$C9,$CA,$CB,$CC,$CD,$CE,\
|
||||||
|
$CF,$DF,$D0,$D1,$D2,$D3,$C6,$C2 , $DC,$DB,$C7,$D8,$DD,$D9,$D7,$DA
|
105
programs/develop/tinypad/trunk/data/tp-udata.inc
Normal file
105
programs/develop/tinypad/trunk/data/tp-udata.inc
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
|
||||||
|
self_path rb PATHL
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
ctx dd ?
|
||||||
|
|
||||||
|
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 rd 2
|
||||||
|
mst2 rd 2
|
||||||
|
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 ?
|
92
programs/develop/tinypad/trunk/external/dll.inc
vendored
Normal file
92
programs/develop/tinypad/trunk/external/dll.inc
vendored
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
|
||||||
|
proc dll.Load, import_table:dword
|
||||||
|
mov esi,[import_table]
|
||||||
|
.next_lib: mov edx,[esi]
|
||||||
|
or edx,edx
|
||||||
|
jz .exit
|
||||||
|
push esi
|
||||||
|
mov esi,[esi+4]
|
||||||
|
mov edi,s_libdir.fname
|
||||||
|
@@: lodsb
|
||||||
|
stosb
|
||||||
|
or al,al
|
||||||
|
jnz @b
|
||||||
|
mcall 68,19,s_libdir
|
||||||
|
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
|
||||||
|
jmp .next_lib
|
||||||
|
.exit: xor eax,eax
|
||||||
|
ret
|
||||||
|
.fail: add esp,4
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc dll.Link, exp:dword,imp:dword
|
||||||
|
push eax
|
||||||
|
mov esi,[imp]
|
||||||
|
test esi,esi
|
||||||
|
jz .done
|
||||||
|
.next: lodsd
|
||||||
|
test eax,eax
|
||||||
|
jz .done
|
||||||
|
stdcall dll.GetProcAddress,[exp],eax
|
||||||
|
or eax,eax
|
||||||
|
jz @f
|
||||||
|
mov [esi-4],eax
|
||||||
|
jmp .next
|
||||||
|
@@: mov dword[esp],0
|
||||||
|
.done: pop eax
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc dll.Init, dllentry:dword
|
||||||
|
pushad
|
||||||
|
mov eax,mem.Alloc
|
||||||
|
mov ebx,mem.Free
|
||||||
|
mov ecx,mem.ReAlloc
|
||||||
|
mov edx,dll.Load
|
||||||
|
stdcall [dllentry]
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc dll.GetProcAddress, exp:dword,sz_name:dword
|
||||||
|
mov edx,[exp]
|
||||||
|
.next: xor eax,eax
|
||||||
|
test edx,edx
|
||||||
|
jz .end
|
||||||
|
stdcall strcmp,[edx],[sz_name]
|
||||||
|
test eax,eax
|
||||||
|
jz .ok
|
||||||
|
add edx,8
|
||||||
|
jmp .next
|
||||||
|
.ok: mov eax,[edx+4]
|
||||||
|
.end: ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
proc strcmp, str1:dword,str2:dword
|
||||||
|
push esi edi
|
||||||
|
mov esi,[str1]
|
||||||
|
mov edi,[str2]
|
||||||
|
xor eax,eax
|
||||||
|
@@: lodsb
|
||||||
|
scasb
|
||||||
|
jne .fail
|
||||||
|
or al,al
|
||||||
|
jnz @b
|
||||||
|
jmp .ok
|
||||||
|
.fail: or eax,-1
|
||||||
|
.ok: pop edi esi
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
s_libdir db '/rd/1/lib/'
|
||||||
|
s_libdir.fname rb 32
|
91
programs/develop/tinypad/trunk/external/libio.inc
vendored
Normal file
91
programs/develop/tinypad/trunk/external/libio.inc
vendored
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; 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.
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
O_READ = 00000001b
|
||||||
|
O_WRITE = 00000010b
|
||||||
|
O_CREATE = 00000100b
|
||||||
|
O_SHARE = 00001000b
|
||||||
|
|
||||||
|
SEEK_SET = 0
|
||||||
|
SEEK_CUR = 1
|
||||||
|
SEEK_END = 2
|
||||||
|
|
||||||
|
struct DateTime
|
||||||
|
union
|
||||||
|
time dd ?
|
||||||
|
struct
|
||||||
|
sec db ?
|
||||||
|
min db ?
|
||||||
|
hour db ?
|
||||||
|
ends
|
||||||
|
ends
|
||||||
|
union
|
||||||
|
date dd ?
|
||||||
|
struct
|
||||||
|
day db ?
|
||||||
|
month db ?
|
||||||
|
year dw ?
|
||||||
|
ends
|
||||||
|
ends
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct FileInfoBlock
|
||||||
|
Function dd ?
|
||||||
|
Position dd ?
|
||||||
|
Flags dd ?
|
||||||
|
Count dd ?
|
||||||
|
Buffer dd ?
|
||||||
|
db ?
|
||||||
|
FileName dd ?
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct FileInfoHeader
|
||||||
|
Version dd ?
|
||||||
|
FilesRead dd ?
|
||||||
|
FilesCount dd ?
|
||||||
|
rd 5
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct FileInfoA
|
||||||
|
Attributes dd ?
|
||||||
|
Flags dd ?
|
||||||
|
DateCreate DateTime
|
||||||
|
DateAccess DateTime
|
||||||
|
DateModify DateTime
|
||||||
|
FileSize dd ?
|
||||||
|
FileSizeHigh dd ?
|
||||||
|
FileName rb 264
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct FileInfoW
|
||||||
|
Attributes dd ?
|
||||||
|
Flags dd ?
|
||||||
|
DateCreate DateTime
|
||||||
|
DateAccess DateTime
|
||||||
|
DateModify DateTime
|
||||||
|
FileSize dd ?
|
||||||
|
FileSizeHigh dd ?
|
||||||
|
FileName rw 260
|
||||||
|
ends
|
||||||
|
|
||||||
|
virtual at 0
|
||||||
|
FileInfo FileInfoA
|
||||||
|
FileInfo fix FileInfoA
|
||||||
|
sizeof.FileInfo fix sizeof.FileInfoA
|
||||||
|
end virtual
|
||||||
|
|
||||||
|
FA_READONLY = 00000001b
|
||||||
|
FA_HIDDEN = 00000010b
|
||||||
|
FA_SYSTEM = 00000100b
|
||||||
|
FA_LABEL = 00001000b
|
||||||
|
FA_FOLDER = 00010000b
|
||||||
|
FA_ARCHIVED = 00100000b
|
159
programs/develop/tinypad/trunk/history.txt
Normal file
159
programs/develop/tinypad/trunk/history.txt
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
|
||||||
|
HISTORY:
|
||||||
|
|
||||||
|
4.0.5 (Rus, mike.dld)
|
||||||
|
bug-fixes:
|
||||||
|
- new tab is created when opening a file from Tinypad's home folder
|
||||||
|
(was opening in current tab if there was a new file, even modified)
|
||||||
|
- show "save file" dialog for new files or files from Tinypad's home folder
|
||||||
|
new features:
|
||||||
|
- prompt to save modified file before closing
|
||||||
|
- button to close current tab
|
||||||
|
- mouse scroll wheel support
|
||||||
|
|
||||||
|
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 <BS> 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
|
@ -4,169 +4,41 @@
|
|||||||
; memory to compile: 3.0/9.0 MBytes (without/with size optimizations)
|
; memory to compile: 3.0/9.0 MBytes (without/with size optimizations)
|
||||||
; version: 4.0.4
|
; version: 4.0.4
|
||||||
; last update: 2007-02-08 (Feb 08, 2007)
|
; last update: 2007-02-08 (Feb 08, 2007)
|
||||||
; minimal kernel: revision #270 (svn://kolibrios.org/kernel)
|
; minimal kernel: revision #270 (svn://kolibrios.org/kernel/trunk)
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; originally by: Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
|
; originally by: Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
|
||||||
; maintained by: Mike Semenyako >> mike.dld@gmail.com
|
; maintained by: Mike Semenyako >> mike.dld@gmail.com
|
||||||
; Ivan Poddubny >> ivan-yar@bk.ru
|
; Ivan Poddubny >> ivan-yar@bk.ru
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; TODO (4.1.0):
|
; TODO (4.1.0):
|
||||||
; - optimize drawing (reduce flickering)
|
; - add vertical selection, undo, goto position, overwrite mode, smart tabulation
|
||||||
; - add vertical selection, undo, goto position, overwrite mode
|
|
||||||
; - improve window drawing with small dimensions
|
; - improve window drawing with small dimensions
|
||||||
; - save settings to ini file, not to executable
|
; - save/load settings to/from ini file, not executable
|
||||||
; - add prompt to save file before closing/opening
|
; - path autocompletion for open/save dialogs
|
||||||
; - other bug-fixes and speed/size optimizations
|
; - other bug-fixes and speed/size optimizations
|
||||||
;
|
;-----------------------------------------------------------------------------
|
||||||
; HISTORY:
|
; See history.txt for complete changelog
|
||||||
; 4.0.5 (mike.dld and Rus)
|
|
||||||
; bug-fixes:
|
|
||||||
; - a new tab is created when opening a file from folder of tinypad
|
|
||||||
; - correct call save-dialog for saving new files or files from folder of tinypad
|
|
||||||
; new features:
|
|
||||||
; - added prompt to save file before closing
|
|
||||||
; - added close tab button
|
|
||||||
; 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 <BS> 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 'lang.inc'
|
||||||
include '..\..\..\macros.inc' ; useful stuff
|
|
||||||
;include 'proc32.inc'
|
include '../../../macros.inc' ; useful stuff
|
||||||
|
include '../../../struct.inc'
|
||||||
|
include '../../../proc32.inc'
|
||||||
|
|
||||||
|
include 'external/libio.inc'
|
||||||
|
|
||||||
include 'tinypad.inc'
|
include 'tinypad.inc'
|
||||||
|
|
||||||
;purge mov,add,sub ; SPEED
|
;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,self_path
|
||||||
|
|
||||||
APP_VERSION equ '4.0.4'
|
APP_VERSION equ '4.0.4'
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
;include 'debug.inc'
|
;include 'debug.inc'
|
||||||
;define __DEBUG__ 1
|
;define __DEBUG__ 1
|
||||||
;define __DEBUG_LEVEL__ 1
|
;define __DEBUG_LEVEL__ 1
|
||||||
@ -241,8 +113,11 @@ section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|||||||
or eax,eax
|
or eax,eax
|
||||||
jz key.alt_x.close
|
jz key.alt_x.close
|
||||||
|
|
||||||
mov eax,65536
|
stdcall dll.Load,@IMPORT
|
||||||
call mem.Alloc
|
or eax,eax
|
||||||
|
jnz key.alt_x.close
|
||||||
|
|
||||||
|
stdcall mem.Alloc,65536
|
||||||
mov [temp_buf],eax
|
mov [temp_buf],eax
|
||||||
|
|
||||||
inc [do_not_draw]
|
inc [do_not_draw]
|
||||||
@ -285,8 +160,7 @@ section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|||||||
|
|
||||||
add edx,20
|
add edx,20
|
||||||
|
|
||||||
mov eax,edx
|
stdcall mem.Alloc,edx
|
||||||
call mem.Alloc
|
|
||||||
mov ebp,eax
|
mov ebp,eax
|
||||||
push eax
|
push eax
|
||||||
|
|
||||||
@ -307,8 +181,7 @@ section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|||||||
call load_from_memory
|
call load_from_memory
|
||||||
|
|
||||||
pop ebp
|
pop ebp
|
||||||
mov eax,ebp
|
stdcall mem.Free,ebp
|
||||||
call mem.Free
|
|
||||||
|
|
||||||
jmp @f
|
jmp @f
|
||||||
.noipc:
|
.noipc:
|
||||||
@ -361,7 +234,70 @@ still:
|
|||||||
jmp still.skip_write
|
jmp still.skip_write
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func start_fasm ;/////////////////////////////////////////////////////////////
|
proc get_event ctx ;//////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
mcall 10
|
||||||
|
dec eax ; redraw ?
|
||||||
|
jz .redraw
|
||||||
|
dec eax ; key ?
|
||||||
|
jz .key
|
||||||
|
dec eax ; button ?
|
||||||
|
jz .button
|
||||||
|
sub eax,2 ; background ?
|
||||||
|
jz .background
|
||||||
|
dec eax ; mouse ?
|
||||||
|
jz .mouse
|
||||||
|
dec eax ; ipc ?
|
||||||
|
jz .ipc
|
||||||
|
dec eax ; network ?
|
||||||
|
jz .network
|
||||||
|
dec eax ; debug ?
|
||||||
|
jz .debug
|
||||||
|
sub eax,7 ; irq ?
|
||||||
|
js .nothing
|
||||||
|
cmp eax,15
|
||||||
|
jg .nothing
|
||||||
|
jmp .irq
|
||||||
|
|
||||||
|
.nothing:
|
||||||
|
mov eax,EV_IDLE
|
||||||
|
ret
|
||||||
|
|
||||||
|
.redraw:
|
||||||
|
mov eax,EV_REDRAW
|
||||||
|
ret
|
||||||
|
|
||||||
|
.key:
|
||||||
|
mov eax,EV_KEY
|
||||||
|
ret
|
||||||
|
|
||||||
|
.button:
|
||||||
|
mov eax,EV_BUTTON
|
||||||
|
ret
|
||||||
|
|
||||||
|
.background:
|
||||||
|
mov eax,EV_BACKGROUND
|
||||||
|
ret
|
||||||
|
|
||||||
|
.mouse:
|
||||||
|
mov eax,EV_MOUSE
|
||||||
|
ret
|
||||||
|
|
||||||
|
.ipc:
|
||||||
|
mov eax,EV_IPC
|
||||||
|
ret
|
||||||
|
|
||||||
|
.network:
|
||||||
|
mov eax,EV_NETWORK
|
||||||
|
ret
|
||||||
|
|
||||||
|
.debug:
|
||||||
|
mov eax,EV_DEBUG
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
proc start_fasm ;/////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; BL = run after compile
|
; BL = run after compile
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -426,18 +362,18 @@ func start_fasm ;/////////////////////////////////////////////////////////////
|
|||||||
start_ret:
|
start_ret:
|
||||||
mcall 70,app_start
|
mcall 70,app_start
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func open_debug_board ;///////////////////////////////////////////////////////
|
proc open_debug_board ;///////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov [app_start.filename],app_board
|
mov [app_start.filename],app_board
|
||||||
mov [app_start.params],0
|
mov [app_start.params],0
|
||||||
jmp start_ret
|
jmp start_ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func open_sysfuncs_txt ;//////////////////////////////////////////////////////
|
proc open_sysfuncs_txt ;//////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov [app_start.filename],app_docpak
|
mov [app_start.filename],app_docpak
|
||||||
mov [app_start.params],sysfuncs_param
|
mov [app_start.params],sysfuncs_param
|
||||||
@ -448,7 +384,7 @@ func open_sysfuncs_txt ;//////////////////////////////////////////////////////
|
|||||||
mov [app_start.params],sysfuncs_filename
|
mov [app_start.params],sysfuncs_filename
|
||||||
call start_ret
|
call start_ret
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
set_opt:
|
set_opt:
|
||||||
|
|
||||||
@ -492,7 +428,7 @@ set_opt:
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
include 'tp-defines.inc'
|
include 'data/tp-defines.inc'
|
||||||
|
|
||||||
include 'tp-draw.asm'
|
include 'tp-draw.asm'
|
||||||
include 'tp-key.asm'
|
include 'tp-key.asm'
|
||||||
@ -507,358 +443,70 @@ include 'tp-tabctl.asm'
|
|||||||
include 'tp-editor.asm'
|
include 'tp-editor.asm'
|
||||||
include 'tp-recode.asm'
|
include 'tp-recode.asm'
|
||||||
|
|
||||||
;include 'lib-ini.asm'
|
include 'external/dll.inc'
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
section @DATA ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
section @DATA ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
vscrl_capt dd -1
|
include 'data/tp-idata.inc'
|
||||||
hscrl_capt dd -1
|
|
||||||
body_capt dd -1
|
|
||||||
|
|
||||||
key0 db \
|
;-----------------------------------------------------------------------------
|
||||||
0x00,0x00,0x02,0x03,0x04,0x05,0x06,0x07,\
|
section @IMPORT ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,\
|
;-----------------------------------------------------------------------------
|
||||||
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,\
|
;align 16
|
||||||
0x18,0x19,0x1A,0x1B,0x00,0x00,0x1E,0x1F,\
|
;@IMPORT:
|
||||||
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 \
|
library \
|
||||||
0x0000000E,key.bkspace ,\ ; BackSpace
|
libini,'libini.obj',\
|
||||||
0x0000000F,key.tab ,\ ; Tab
|
libio,'libio.obj',\
|
||||||
0x0000001C,key.return ,\ ; Return
|
libgfx,'libgfx.obj'
|
||||||
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 \
|
import libini, \
|
||||||
\;0x00000001,key.tb.escape ,\ ; Escape
|
ini.get_str,'ini.get_str',\
|
||||||
0x0000000E,key.tb.bkspace ,\ ; BackSpace
|
ini.set_str,'ini.set_str',\
|
||||||
\;0x0000000F,key.tb.tab ,\ ; Tab
|
ini.get_int,'ini.get_int',\
|
||||||
\;0x0000001C,key.tb.return ,\ ; Return
|
ini.set_int,'ini.set_int'
|
||||||
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 \
|
import libio, \
|
||||||
1 ,key.alt_x ,\
|
file.find_first,'file.find_first',\
|
||||||
'VSL',btn.vscroll_up ,\
|
file.find_next ,'file.find_next',\
|
||||||
'VSG',btn.vscroll_down ,\
|
file.find_close,'file.find_close',\
|
||||||
'HSL',btn.hscroll_up ,\
|
file.size ,'file.size',\
|
||||||
'HSG',btn.hscroll_down ,\
|
file.open ,'file.open',\
|
||||||
'TBL',btn.tabctl_right ,\
|
file.read ,'file.read',\
|
||||||
'TBG',btn.tabctl_left ,\
|
file.write ,'file.write',\
|
||||||
177 , key.ctrl_f4 ,\ ; close current tab button
|
file.seek ,'file.seek',\
|
||||||
0
|
file.tell ,'file.tell',\
|
||||||
|
file.eof? ,'file.eof?',\
|
||||||
|
file.truncate ,'file.truncate',\
|
||||||
|
file.close ,'file.close'
|
||||||
|
|
||||||
accel_table2_botdlg dd \
|
import libgfx, \
|
||||||
1 ,key.alt_x ,\
|
gfx.open ,'gfx.open',\
|
||||||
20001,btn.bot.cancel ,\
|
gfx.close ,'gfx.close',\
|
||||||
20002,btn.bot.opensave ,\
|
gfx.pen.color ,'gfx.pen.color',\
|
||||||
20003,btn.bot.find ,\
|
gfx.brush.color ,'gfx.brush.color',\
|
||||||
20004,btn.bot.appearance,\
|
gfx.pixel ,'gfx.pixel',\
|
||||||
20007, btn.bot.no ,\
|
gfx.move.to ,'gfx.move.to',\
|
||||||
21001,btn.bot.tabpos ,\
|
gfx.line.to ,'gfx.line.to',\
|
||||||
0
|
gfx.line ,'gfx.line',\
|
||||||
|
gfx.polyline ,'gfx.polyline',\
|
||||||
add_table:
|
gfx.polyline.to ,'gfx.polyline.to',\
|
||||||
times $1A db -$20
|
gfx.fillrect ,'gfx.fillrect',\
|
||||||
times $25 db -$00
|
gfx.fillrect.ex ,'gfx.fillrect.ex',\
|
||||||
times $10 db -$20
|
gfx.framerect ,'gfx.framerect',\
|
||||||
times $30 db -$00
|
gfx.framerect.ex,'gfx.framerect.ex',\
|
||||||
times $10 db -$50
|
gfx.rectangle ,'gfx.rectangle',\
|
||||||
times $04 db -$00,-$01
|
gfx.rectangle.ex,'gfx.rectangle.ex'
|
||||||
times $08 db -$00
|
|
||||||
|
|
||||||
s_status dd 0
|
|
||||||
|
|
||||||
@^
|
|
||||||
fasm_start:
|
|
||||||
dd 7
|
|
||||||
dd 0
|
|
||||||
dd fasm_parameters
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
db '/sys/DEVELOP/FASM',0
|
|
||||||
board_start:
|
|
||||||
dd 7
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
db '/sys/DEVELOP/BOARD',0
|
|
||||||
tinypad_start:
|
|
||||||
dd 7
|
|
||||||
dd 0
|
|
||||||
dd ?
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
db '/sys/TINYPAD',0
|
|
||||||
docpak_start:
|
|
||||||
dd 7
|
|
||||||
dd 0
|
|
||||||
dd sysfuncs_param
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
db '/sys/DOCPAK',0
|
|
||||||
^@
|
|
||||||
|
|
||||||
sz app_fasm ,'/sys/DEVELOP/FASM',0
|
|
||||||
sz app_board ,'/sys/DEVELOP/BOARD',0
|
|
||||||
sz app_tinypad ,'/sys/TINYPAD',0
|
|
||||||
sz app_docpak ,'/sys/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
|
TINYPAD_END: ; end of file
|
||||||
|
|
||||||
self_path rb PATHL
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
app_start:
|
include 'data/tp-udata.inc'
|
||||||
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 ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
section @PARAMS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
@ -150,7 +150,7 @@ macro popup_res _name,[_lang,_title,_accel,_action]
|
|||||||
m2 = -2
|
m2 = -2
|
||||||
end if
|
end if
|
||||||
store word (m1*6+m2*6+6*8) at _name+POPUP.width
|
store word (m1*6+m2*6+6*8) at _name+POPUP.width
|
||||||
store word (c1*POP_IHEIGHT+c2*4+4) at _name+POPUP.height
|
store word (c1*POP_IHEIGHT+c2*POP_SHEIGHT+3) at _name+POPUP.height
|
||||||
store dword (((m1+2)*6-1)*65536) at _name+POPUP.acc_ofs
|
store dword (((m1+2)*6-1)*65536) at _name+POPUP.acc_ofs
|
||||||
end if
|
end if
|
||||||
}
|
}
|
||||||
@ -216,7 +216,8 @@ MEV_LDOWN = 1
|
|||||||
MEV_LUP = 2
|
MEV_LUP = 2
|
||||||
MEV_RDOWN = 3
|
MEV_RDOWN = 3
|
||||||
MEV_RUP = 4
|
MEV_RUP = 4
|
||||||
MEV_MOVE = 5
|
MEV_WHEEL = 5
|
||||||
|
MEV_MOVE = 6
|
||||||
|
|
||||||
;// KEY MODIFIERS
|
;// KEY MODIFIERS
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ button:
|
|||||||
call open_sysfuncs_txt
|
call open_sysfuncs_txt
|
||||||
ret
|
ret
|
||||||
|
|
||||||
func search
|
proc search
|
||||||
cld
|
cld
|
||||||
mov ecx,[cur_editor.Caret.Y]
|
mov ecx,[cur_editor.Caret.Y]
|
||||||
mov edx,ecx
|
mov edx,ecx
|
||||||
@ -179,4 +179,4 @@ func search
|
|||||||
mov [s_status],s_text_not_found
|
mov [s_status],s_text_not_found
|
||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func clear_selection ;////////////////////////////////////////////////////////
|
proc clear_selection ;////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push eax ebx
|
push eax ebx
|
||||||
mov eax,[cur_editor.SelStart.Y]
|
mov eax,[cur_editor.SelStart.Y]
|
||||||
@ -11,10 +11,10 @@ func clear_selection ;////////////////////////////////////////////////////////
|
|||||||
pop [cur_editor.SelStart.Y] [cur_editor.SelStart.X]
|
pop [cur_editor.SelStart.Y] [cur_editor.SelStart.X]
|
||||||
pop ebx eax
|
pop ebx eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func pt_in_rect ;/////////////////////////////////////////////////////////////
|
proc pt_in_rect ;/////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp eax,[ecx+0x0]
|
cmp eax,[ecx+0x0]
|
||||||
jl @f
|
jl @f
|
||||||
@ -28,14 +28,18 @@ func pt_in_rect ;/////////////////////////////////////////////////////////////
|
|||||||
ret
|
ret
|
||||||
@@: clc
|
@@: clc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func check_bottom_right ;/////////////////////////////////////////////////////
|
proc check_bottom_right ;/////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push eax
|
push eax
|
||||||
mov eax,[cur_editor.TopLeft.Y]
|
mov eax,[cur_editor.TopLeft.Y]
|
||||||
add eax,[lines.scr]
|
or eax,eax
|
||||||
|
jns @f
|
||||||
|
xor eax,eax
|
||||||
|
mov [cur_editor.TopLeft.Y],eax
|
||||||
|
@@: add eax,[lines.scr]
|
||||||
cmp eax,[cur_editor.Lines.Count]
|
cmp eax,[cur_editor.Lines.Count]
|
||||||
jbe .lp1
|
jbe .lp1
|
||||||
mov eax,[cur_editor.Lines.Count]
|
mov eax,[cur_editor.Lines.Count]
|
||||||
@ -44,7 +48,11 @@ func check_bottom_right ;/////////////////////////////////////////////////////
|
|||||||
xor eax,eax
|
xor eax,eax
|
||||||
@@: mov [cur_editor.TopLeft.Y],eax
|
@@: mov [cur_editor.TopLeft.Y],eax
|
||||||
.lp1: mov eax,[cur_editor.TopLeft.X]
|
.lp1: mov eax,[cur_editor.TopLeft.X]
|
||||||
add eax,[columns.scr]
|
or eax,eax
|
||||||
|
jns @f
|
||||||
|
xor eax,eax
|
||||||
|
mov [cur_editor.TopLeft.X],eax
|
||||||
|
@@: add eax,[columns.scr]
|
||||||
cmp eax,[cur_editor.Columns.Count]
|
cmp eax,[cur_editor.Columns.Count]
|
||||||
jbe .exit
|
jbe .exit
|
||||||
mov eax,[cur_editor.Columns.Count]
|
mov eax,[cur_editor.Columns.Count]
|
||||||
@ -55,10 +63,10 @@ func check_bottom_right ;/////////////////////////////////////////////////////
|
|||||||
.exit:
|
.exit:
|
||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_real_length ;////////////////////////////////////////////////////////
|
proc get_real_length ;////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
movzx eax,word[esi]
|
movzx eax,word[esi]
|
||||||
@@: cmp byte[esi+eax+4-1],' '
|
@@: cmp byte[esi+eax+4-1],' '
|
||||||
@ -66,10 +74,10 @@ func get_real_length ;////////////////////////////////////////////////////////
|
|||||||
dec eax
|
dec eax
|
||||||
jnz @b
|
jnz @b
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_line_offset ;////////////////////////////////////////////////////////
|
proc get_line_offset ;////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Input:
|
; Input:
|
||||||
; ECX = line number
|
; ECX = line number
|
||||||
@ -86,10 +94,10 @@ func get_line_offset ;////////////////////////////////////////////////////////
|
|||||||
.exit:
|
.exit:
|
||||||
pop ecx eax
|
pop ecx eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func init_sel_vars ;//////////////////////////////////////////////////////////
|
proc init_sel_vars ;//////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
pushad
|
pushad
|
||||||
mov [sel.selected],1
|
mov [sel.selected],1
|
||||||
@ -113,10 +121,10 @@ func init_sel_vars ;//////////////////////////////////////////////////////////
|
|||||||
mov [sel.end.y],edx
|
mov [sel.end.y],edx
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_scroll_vars ;////////////////////////////////////////////////////////
|
proc get_scroll_vars ;////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Input:
|
; Input:
|
||||||
; EAX = maximum data size (units)
|
; EAX = maximum data size (units)
|
||||||
@ -159,10 +167,10 @@ func get_scroll_vars ;////////////////////////////////////////////////////////
|
|||||||
mov dword[esp+4],0
|
mov dword[esp+4],0
|
||||||
mov dword[esp+8],0
|
mov dword[esp+8],0
|
||||||
jmp @b
|
jmp @b
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func uint2strz ;//////////////////////////////////////////////////////////////
|
proc uint2strz ;//////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
dec ebx
|
dec ebx
|
||||||
jz @f
|
jz @f
|
||||||
@ -176,10 +184,10 @@ func uint2strz ;//////////////////////////////////////////////////////////////
|
|||||||
das
|
das
|
||||||
stosb
|
stosb
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func uint2str ;///////////////////////////////////////////////////////////////
|
proc uint2str ;///////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp eax,ecx
|
cmp eax,ecx
|
||||||
jb @f
|
jb @f
|
||||||
@ -193,10 +201,10 @@ func uint2str ;///////////////////////////////////////////////////////////////
|
|||||||
das
|
das
|
||||||
stosb
|
stosb
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func strlen ;/////////////////////////////////////////////////////////////////
|
proc strlen ;/////////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push ebx
|
push ebx
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
@ -207,10 +215,10 @@ func strlen ;/////////////////////////////////////////////////////////////////
|
|||||||
jmp @b
|
jmp @b
|
||||||
@@: pop ebx
|
@@: pop ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func rgb_to_gray ;////////////////////////////////////////////////////////////
|
proc rgb_to_gray ;////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push 0 eax
|
push 0 eax
|
||||||
and dword[esp],0x000000FF
|
and dword[esp],0x000000FF
|
||||||
@ -235,14 +243,14 @@ func rgb_to_gray ;////////////////////////////////////////////////////////////
|
|||||||
pop eax
|
pop eax
|
||||||
add esp,4
|
add esp,4
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;float_gray_r dd 0.30f
|
;float_gray_r dd 0.30f
|
||||||
;float_gray_g dd 0.59f
|
;float_gray_g dd 0.59f
|
||||||
;float_gray_b dd 0.11f
|
;float_gray_b dd 0.11f
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_active_menu_item ;///////////////////////////////////////////////////
|
proc get_active_menu_item ;///////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
pushad
|
pushad
|
||||||
mov [mi_cur],0
|
mov [mi_cur],0
|
||||||
@ -276,10 +284,10 @@ func get_active_menu_item ;///////////////////////////////////////////////////
|
|||||||
or [mi_cur],-1
|
or [mi_cur],-1
|
||||||
@@: popad
|
@@: popad
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_active_popup_item ;//////////////////////////////////////////////////
|
proc get_active_popup_item ;//////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
pushad
|
pushad
|
||||||
mov [pi_cur],0
|
mov [pi_cur],0
|
||||||
@ -296,9 +304,9 @@ func get_active_popup_item ;//////////////////////////////////////////////////
|
|||||||
call pt_in_rect
|
call pt_in_rect
|
||||||
jnc .outside_window
|
jnc .outside_window
|
||||||
inc dword[ecx+0x0]
|
inc dword[ecx+0x0]
|
||||||
mov dword[ecx+0x4],3
|
mov dword[ecx+0x4],2
|
||||||
dec dword[ecx+0x8]
|
dec dword[ecx+0x8]
|
||||||
mov dword[ecx+0xC],3+POP_IHEIGHT-1
|
mov dword[ecx+0xC],2+POP_IHEIGHT-1
|
||||||
mov edx,[ebp+POPUP.data]
|
mov edx,[ebp+POPUP.data]
|
||||||
@@: inc [pi_cur]
|
@@: inc [pi_cur]
|
||||||
inc edx
|
inc edx
|
||||||
@ -306,12 +314,12 @@ func get_active_popup_item ;//////////////////////////////////////////////////
|
|||||||
cmp byte[edx],'-'
|
cmp byte[edx],'-'
|
||||||
jne .lp1
|
jne .lp1
|
||||||
pushd [ecx+0xC]
|
pushd [ecx+0xC]
|
||||||
sub dword[ecx+0xC],POP_IHEIGHT-4
|
sub dword[ecx+0xC],POP_IHEIGHT-POP_SHEIGHT
|
||||||
call pt_in_rect
|
call pt_in_rect
|
||||||
popd [ecx+0xC]
|
popd [ecx+0xC]
|
||||||
jc .separator
|
jc .separator
|
||||||
add dword[ecx+0x4],4
|
add dword[ecx+0x4],POP_SHEIGHT
|
||||||
add dword[ecx+0xC],4
|
add dword[ecx+0xC],POP_SHEIGHT
|
||||||
jmp .lp3
|
jmp .lp3
|
||||||
.lp1: call pt_in_rect
|
.lp1: call pt_in_rect
|
||||||
jnc .lp2
|
jnc .lp2
|
||||||
@ -335,10 +343,10 @@ func get_active_popup_item ;//////////////////////////////////////////////////
|
|||||||
.outside_window:
|
.outside_window:
|
||||||
or [pi_cur],-1
|
or [pi_cur],-1
|
||||||
jmp .exit
|
jmp .exit
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func line_add_spaces ;////////////////////////////////////////////////////////
|
proc line_add_spaces ;////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Input:
|
; Input:
|
||||||
; ESI = line offset
|
; ESI = line offset
|
||||||
@ -378,10 +386,10 @@ func line_add_spaces ;////////////////////////////////////////////////////////
|
|||||||
.exit:
|
.exit:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func delete_selection ;///////////////////////////////////////////////////////
|
proc delete_selection ;///////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; call init_sel_vars
|
; call init_sel_vars
|
||||||
|
|
||||||
@ -470,10 +478,10 @@ func delete_selection ;///////////////////////////////////////////////////////
|
|||||||
.exit.2:
|
.exit.2:
|
||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_selection_size ;/////////////////////////////////////////////////////
|
proc get_selection_size ;/////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push ecx esi
|
push ecx esi
|
||||||
mov ecx,[sel.end.y]
|
mov ecx,[sel.end.y]
|
||||||
@ -485,10 +493,10 @@ func get_selection_size ;/////////////////////////////////////////////////////
|
|||||||
sub eax,esi
|
sub eax,esi
|
||||||
pop esi ecx
|
pop esi ecx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_lines_in_file ;//////////////////////////////////////////////////////
|
proc get_lines_in_file ;//////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Input:
|
; Input:
|
||||||
; ESI = data pointer
|
; ESI = data pointer
|
||||||
@ -528,10 +536,10 @@ func get_lines_in_file ;//////////////////////////////////////////////////////
|
|||||||
sub [esp],edx
|
sub [esp],edx
|
||||||
xor edx,edx
|
xor edx,edx
|
||||||
jmp .lp1
|
jmp .lp1
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func update_caption ;/////////////////////////////////////////////////////////
|
proc update_caption ;/////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
lea esi,[cur_editor.FilePath]
|
lea esi,[cur_editor.FilePath]
|
||||||
mov edi,s_title
|
mov edi,s_title
|
||||||
@ -572,12 +580,13 @@ func update_caption ;/////////////////////////////////////////////////////////
|
|||||||
add esp,4
|
add esp,4
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func mem.Alloc ;//////////////////////////////////////////////////////////////
|
proc mem.Alloc,size ;/////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push ebx ecx
|
push ebx ecx
|
||||||
|
mov eax,[size]
|
||||||
lea ecx,[eax+4+4095]
|
lea ecx,[eax+4+4095]
|
||||||
and ecx,not 4095
|
and ecx,not 4095
|
||||||
mcall 68,12
|
mcall 68,12
|
||||||
@ -586,12 +595,20 @@ func mem.Alloc ;//////////////////////////////////////////////////////////////
|
|||||||
add eax,4
|
add eax,4
|
||||||
pop ecx ebx
|
pop ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
@^
|
||||||
|
push ebx ecx
|
||||||
|
mcall 68,12,[size]
|
||||||
|
pop ecx ebx
|
||||||
|
ret
|
||||||
|
^@
|
||||||
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func mem.ReAlloc ;////////////////////////////////////////////////////////////
|
proc mem.ReAlloc,mptr,size ;//////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push ebx ecx esi edi eax
|
push ebx ecx esi edi eax
|
||||||
|
mov eax,[mptr]
|
||||||
|
mov ebx,[size]
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jz @f
|
jz @f
|
||||||
lea ecx,[ebx+4+4095]
|
lea ecx,[ebx+4+4095]
|
||||||
@ -599,8 +616,7 @@ func mem.ReAlloc ;////////////////////////////////////////////////////////////
|
|||||||
add ecx,-4
|
add ecx,-4
|
||||||
cmp ecx,[eax-4]
|
cmp ecx,[eax-4]
|
||||||
je .exit
|
je .exit
|
||||||
@@: mov eax,ebx
|
@@: stdcall mem.Alloc,ebx
|
||||||
call mem.Alloc
|
|
||||||
xchg eax,[esp]
|
xchg eax,[esp]
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jz .exit
|
jz .exit
|
||||||
@ -616,18 +632,31 @@ func mem.ReAlloc ;////////////////////////////////////////////////////////////
|
|||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
xchg eax,[esp]
|
xchg eax,[esp]
|
||||||
call mem.Free
|
stdcall mem.Free,eax
|
||||||
.exit:
|
.exit:
|
||||||
pop eax edi esi ecx ebx
|
pop eax edi esi ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
@^
|
||||||
|
push ebx ecx edx
|
||||||
|
mcall 68,20,[size],[mptr]
|
||||||
|
pop edx ecx ebx
|
||||||
|
ret
|
||||||
|
^@
|
||||||
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func mem.Free ;///////////////////////////////////////////////////////////////
|
proc mem.Free,mptr ;//////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push ebx ecx
|
push ebx ecx
|
||||||
|
mov eax,[mptr]
|
||||||
lea ecx,[eax-4]
|
lea ecx,[eax-4]
|
||||||
mcall 68,13
|
mcall 68,13
|
||||||
pop ecx ebx
|
pop ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
@^
|
||||||
|
push ebx ecx
|
||||||
|
mcall 68,13,[mptr]
|
||||||
|
pop ecx ebx
|
||||||
|
ret
|
||||||
|
^@
|
||||||
|
endp
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func define_3d_button ;///////////////////////////////////////////////////////
|
proc define_3d_button ;///////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; ebx = <x,width>
|
; ebx = <x,width>
|
||||||
; ecx = <y,height>
|
; ecx = <y,height>
|
||||||
@ -26,7 +26,7 @@ func define_3d_button ;///////////////////////////////////////////////////////
|
|||||||
mcall 4,,[sc.work_text],[esp+4*8+4*2],[esp+4*8+4*1]
|
mcall 4,,[sc.work_text],[esp+4*8+4*2],[esp+4*8+4*1]
|
||||||
popad
|
popad
|
||||||
ret 4*3
|
ret 4*3
|
||||||
endf
|
endp
|
||||||
|
|
||||||
finddlg_handler:
|
finddlg_handler:
|
||||||
cmp al,1
|
cmp al,1
|
||||||
@ -641,7 +641,7 @@ botdlg.button:
|
|||||||
|
|
||||||
movzx eax,[tb_replace.length]
|
movzx eax,[tb_replace.length]
|
||||||
add eax,10
|
add eax,10
|
||||||
call mem.Alloc
|
stdcall mem.Alloc,eax
|
||||||
mov [copy_buf],eax
|
mov [copy_buf],eax
|
||||||
|
|
||||||
movzx eax,[tb_replace.length]
|
movzx eax,[tb_replace.length]
|
||||||
@ -661,8 +661,7 @@ botdlg.button:
|
|||||||
call key.ctrl_v
|
call key.ctrl_v
|
||||||
pop [cur_editor.SelStart.X]
|
pop [cur_editor.SelStart.X]
|
||||||
|
|
||||||
mov eax,[copy_buf]
|
stdcall mem.Free,[copy_buf]
|
||||||
call mem.Free
|
|
||||||
|
|
||||||
pop [copy_buf] [copy_count] [copy_size]
|
pop [copy_buf] [copy_count] [copy_size]
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
proc drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
cmp [just_from_popup],1
|
cmp [just_from_popup],1
|
||||||
@ -10,9 +10,11 @@ func drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
|||||||
mcall 48,3,sc,sizeof.system_colors
|
mcall 48,3,sc,sizeof.system_colors
|
||||||
call calc_3d_colors
|
call calc_3d_colors
|
||||||
|
|
||||||
mcall 12,1
|
;mcall 12,1
|
||||||
|
invoke gfx.open,TRUE
|
||||||
|
mov [ctx],eax
|
||||||
|
|
||||||
m2m [sc.work],dword[color_tbl.back]
|
;m2m [sc.work],dword[color_tbl.back]
|
||||||
|
|
||||||
mov edx,[sc.work]
|
mov edx,[sc.work]
|
||||||
add edx,0x73000000
|
add edx,0x73000000
|
||||||
@ -110,42 +112,52 @@ func drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
|||||||
call draw_editor
|
call draw_editor
|
||||||
call draw_tabctl
|
call draw_tabctl
|
||||||
.exit.2:
|
.exit.2:
|
||||||
mcall 12,2
|
;mcall 12,2
|
||||||
|
invoke gfx.close,[ctx]
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_bottom_dialog ;/////////////////////////////////////////////////////
|
proc draw_bottom_dialog ;/////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [bot_dlg_height],0
|
cmp [bot_dlg_height],0
|
||||||
je .exit
|
je .exit
|
||||||
pushad
|
pushad
|
||||||
mov ebx,[p_info.client_box.width]
|
invoke gfx.pen.color,[ctx],[cl_3d_inset]
|
||||||
mov ecx,[bot_ofs]
|
mov ecx,[bot_ofs]
|
||||||
dec ecx
|
dec ecx
|
||||||
push cx
|
invoke gfx.line,[ctx],0,ecx,[p_info.client_box.width],ecx
|
||||||
shl ecx,16
|
invoke gfx.brush.color,[ctx],[cl_3d_normal]
|
||||||
pop cx
|
inc ecx
|
||||||
mcall 38,,,[cl_3d_inset]
|
mov eax,ecx
|
||||||
mov ecx,[bot_ofs-2]
|
add eax,[bot_dlg_height]
|
||||||
mov cx,word[bot_dlg_height]
|
invoke gfx.fillrect,[ctx],0,ecx,[p_info.client_box.width],eax
|
||||||
dec ecx
|
;mov ebx,[p_info.client_box.width]
|
||||||
mov ebx,[p_info.client_box.width]
|
;mov ecx,[bot_ofs]
|
||||||
inc ebx
|
;dec ecx
|
||||||
mcall 13,,,[cl_3d_normal]
|
;push cx
|
||||||
|
;shl ecx,16
|
||||||
|
;pop cx
|
||||||
|
;mcall 38,,,[cl_3d_inset]
|
||||||
|
;mov ecx,[bot_ofs-2]
|
||||||
|
;mov cx,word[bot_dlg_height]
|
||||||
|
;dec ecx
|
||||||
|
;mov ebx,[p_info.client_box.width]
|
||||||
|
;inc ebx
|
||||||
|
;mcall 13,,,[cl_3d_normal]
|
||||||
mov al,1
|
mov al,1
|
||||||
call [bot_dlg_handler]
|
call [bot_dlg_handler]
|
||||||
popad
|
popad
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
mi_sel dd ?
|
mi_sel dd ?
|
||||||
mi_cur dd -1
|
mi_cur dd -1
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_main_menu ;/////////////////////////////////////////////////////////
|
proc draw_main_menu ;/////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov ebx,[p_info.client_box.width]
|
mov ebx,[p_info.client_box.width]
|
||||||
inc ebx
|
inc ebx
|
||||||
@ -221,10 +233,10 @@ func draw_main_menu ;/////////////////////////////////////////////////////////
|
|||||||
|
|
||||||
cross:
|
cross:
|
||||||
db 'X'
|
db 'X'
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_statusbar ;///// DRAW POSITION, MODIFIED STATE, HINT ///////////////
|
proc draw_statusbar ;///// DRAW POSITION, MODIFIED STATE, HINT ///////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [do_not_draw],1 ; return if drawing is not permitted
|
cmp [do_not_draw],1 ; return if drawing is not permitted
|
||||||
jae .exit
|
jae .exit
|
||||||
@ -298,9 +310,9 @@ func draw_statusbar ;///// DRAW POSITION, MODIFIED STATE, HINT ///////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func draw_fillrect ; ebx,ecx,edx
|
proc draw_fillrect ; ebx,ecx,edx
|
||||||
; ebx = <left,width>
|
; ebx = <left,width>
|
||||||
; ecx = <top,height>
|
; ecx = <top,height>
|
||||||
push ebx ecx edx
|
push ebx ecx edx
|
||||||
@ -310,9 +322,9 @@ func draw_fillrect ; ebx,ecx,edx
|
|||||||
mcall 13,,,esi
|
mcall 13,,,esi
|
||||||
pop edx ecx ebx
|
pop edx ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func draw_framerect ; ebx,ecx,edx
|
proc draw_framerect ; ebx,ecx,edx
|
||||||
; ebx = <left,width>
|
; ebx = <left,width>
|
||||||
; ecx = <top,height>
|
; ecx = <top,height>
|
||||||
push ebx ecx
|
push ebx ecx
|
||||||
@ -341,9 +353,9 @@ func draw_framerect ; ebx,ecx,edx
|
|||||||
|
|
||||||
pop ecx ebx
|
pop ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func draw_check
|
proc draw_check
|
||||||
push bx
|
push bx
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
pop bx
|
pop bx
|
||||||
@ -361,18 +373,18 @@ func draw_check
|
|||||||
sub ecx,0x00010001
|
sub ecx,0x00010001
|
||||||
mcall
|
mcall
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func calc_middle
|
proc calc_middle
|
||||||
shr eax,1
|
shr eax,1
|
||||||
shr ebx,1
|
shr ebx,1
|
||||||
and eax,0x007F7F7F
|
and eax,0x007F7F7F
|
||||||
and ebx,0x007F7F7F
|
and ebx,0x007F7F7F
|
||||||
add eax,ebx
|
add eax,ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func calc_3d_colors
|
proc calc_3d_colors
|
||||||
pushad
|
pushad
|
||||||
m2m [cl_3d_normal],[sc.work]
|
m2m [cl_3d_normal],[sc.work]
|
||||||
m2m [cl_3d_inset],[sc.work_graph]
|
m2m [cl_3d_inset],[sc.work_graph]
|
||||||
@ -399,9 +411,9 @@ func calc_3d_colors
|
|||||||
mov [cl_3d_grayed],eax
|
mov [cl_3d_grayed],eax
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func draw_3d_panel ; x,y,w,h
|
proc draw_3d_panel ; x,y,w,h
|
||||||
push eax ebx ecx edx
|
push eax ebx ecx edx
|
||||||
cmp dword[esp+16+8],4
|
cmp dword[esp+16+8],4
|
||||||
jl .exit
|
jl .exit
|
||||||
@ -447,4 +459,4 @@ func draw_3d_panel ; x,y,w,h
|
|||||||
.exit:
|
.exit:
|
||||||
pop edx ecx ebx eax
|
pop edx ecx ebx eax
|
||||||
ret 4*4
|
ret 4*4
|
||||||
endf
|
endp
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor ;///// DRAW EDITOR //////////////////////////////////////////
|
proc draw_editor ;///// DRAW EDITOR //////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
mov ebx,[cur_editor.Bounds.Left-2]
|
mov ebx,[cur_editor.Bounds.Left-2]
|
||||||
@ -61,10 +61,10 @@ func draw_editor ;///// DRAW EDITOR //////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_gutter ;///// DRAW EDITOR GUTTER (LEFT PANEL) ///////////////
|
proc draw_editor_gutter ;///// DRAW EDITOR GUTTER (LEFT PANEL) ///////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [cur_editor.Gutter.Visible],0
|
cmp [cur_editor.Gutter.Visible],0
|
||||||
je .exit
|
je .exit
|
||||||
@ -121,10 +121,10 @@ func draw_editor_gutter ;///// DRAW EDITOR GUTTER (LEFT PANEL) ///////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_vscroll ;///// DRAW EDITOR VERTICAL SCROLL BAR //////////////
|
proc draw_editor_vscroll ;///// DRAW EDITOR VERTICAL SCROLL BAR //////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov ebx,[cur_editor.Bounds.Right]
|
mov ebx,[cur_editor.Bounds.Right]
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
@ -230,10 +230,10 @@ func draw_editor_vscroll ;///// DRAW EDITOR VERTICAL SCROLL BAR //////////////
|
|||||||
mcall 38,,,[cl_3d_inset]
|
mcall 38,,,[cl_3d_inset]
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_hscroll ;///// DRAW EDITOR HORIZONTAL SCROLL BAR ////////////
|
proc draw_editor_hscroll ;///// DRAW EDITOR HORIZONTAL SCROLL BAR ////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov ebx,[cur_editor.Bounds.Left-2]
|
mov ebx,[cur_editor.Bounds.Left-2]
|
||||||
mov bx,SCRLW
|
mov bx,SCRLW
|
||||||
@ -338,10 +338,10 @@ func draw_editor_hscroll ;///// DRAW EDITOR HORIZONTAL SCROLL BAR ////////////
|
|||||||
mcall 38,,,[cl_3d_inset]
|
mcall 38,,,[cl_3d_inset]
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_text.part ;///// DRAW EDITOR TEXT (PARTLY) //////////////////
|
proc draw_editor_text.part ;///// DRAW EDITOR TEXT (PARTLY) //////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; EAX = start line
|
; EAX = start line
|
||||||
; EBX = end line
|
; EBX = end line
|
||||||
@ -414,10 +414,10 @@ func draw_editor_text.part ;///// DRAW EDITOR TEXT (PARTLY) //////////////////
|
|||||||
.exit:
|
.exit:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_text ;///// DRAW EDITOR TEXT ////////////////////////////////
|
proc draw_editor_text ;///// DRAW EDITOR TEXT ////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [cur_editor.Lines],0
|
cmp [cur_editor.Lines],0
|
||||||
jne @f
|
jne @f
|
||||||
@ -808,10 +808,10 @@ func draw_editor_text ;///// DRAW EDITOR TEXT ////////////////////////////////
|
|||||||
popad
|
popad
|
||||||
add esp,4
|
add esp,4
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_text.get_next_part ;/////////////////////////////////////////
|
proc draw_editor_text.get_next_part ;/////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Input:
|
; Input:
|
||||||
; ECX = current letter
|
; ECX = current letter
|
||||||
@ -926,10 +926,10 @@ func draw_editor_text.get_next_part ;/////////////////////////////////////////
|
|||||||
mov ecx,[cur_line_len]
|
mov ecx,[cur_line_len]
|
||||||
mov eax,[color_tbl.text]
|
mov eax,[color_tbl.text]
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_editor_caret ;///// DRAW EDITOR TEXT CARET /////////////////////////
|
proc draw_editor_caret ;///// DRAW EDITOR TEXT CARET /////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [bot_mode],0
|
cmp [bot_mode],0
|
||||||
jne @f
|
jne @f
|
||||||
@ -966,10 +966,10 @@ func draw_editor_caret ;///// DRAW EDITOR TEXT CARET /////////////////////////
|
|||||||
loop .lp8
|
loop .lp8
|
||||||
@@:
|
@@:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func editor_realloc_lines ;///// ADD $DELTA$ TO LINES SIZE ///////////////////
|
proc editor_realloc_lines ;///// ADD $DELTA$ TO LINES SIZE ///////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; EAX = delta
|
; EAX = delta
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -979,12 +979,12 @@ func editor_realloc_lines ;///// ADD $DELTA$ TO LINES SIZE ///////////////////
|
|||||||
mov eax,[cur_editor.Lines]
|
mov eax,[cur_editor.Lines]
|
||||||
mov [cur_editor.Lines.Size],ebx
|
mov [cur_editor.Lines.Size],ebx
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
call mem.ReAlloc
|
stdcall mem.ReAlloc,eax,ebx
|
||||||
mov [cur_editor.Lines],eax
|
mov [cur_editor.Lines],eax
|
||||||
sub eax,ecx
|
sub eax,ecx
|
||||||
pop ecx ebx
|
pop ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
REDRAW_TEXT = 00000001b
|
REDRAW_TEXT = 00000001b
|
||||||
REDRAW_HSCROLL = 00000010b
|
REDRAW_HSCROLL = 00000010b
|
||||||
@ -993,7 +993,7 @@ REDRAW_ONELINE = 00001000b
|
|||||||
REDRAW_TWOLINES = 00010000b
|
REDRAW_TWOLINES = 00010000b
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func editor_check_for_changes ;///// EDITOR CHANGES CHECKER //////////////////
|
proc editor_check_for_changes ;///// EDITOR CHANGES CHECKER //////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call .check_cursor_visibility
|
call .check_cursor_visibility
|
||||||
.direct:
|
.direct:
|
||||||
@ -1181,4 +1181,4 @@ func editor_check_for_changes ;///// EDITOR CHANGES CHECKER //////////////////
|
|||||||
pop [cur_editor.SelStart.Y] [cur_editor.SelStart.X]
|
pop [cur_editor.SelStart.Y] [cur_editor.SelStart.X]
|
||||||
@@: pop ebx eax
|
@@: pop ebx eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func save_file ;//////////////////////////////////////////////////////////////
|
proc save_file ;//////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov esi,tb_opensave.text
|
mov esi,tb_opensave.text
|
||||||
mov edi,f_info.path
|
mov edi,f_info.path
|
||||||
@ -21,7 +21,7 @@ func save_file ;//////////////////////////////////////////////////////////////
|
|||||||
mov eax,[cur_editor.Lines.Count]
|
mov eax,[cur_editor.Lines.Count]
|
||||||
shl eax,1
|
shl eax,1
|
||||||
lea eax,[eax+ebx+1024]
|
lea eax,[eax+ebx+1024]
|
||||||
call mem.Alloc
|
stdcall mem.Alloc,eax
|
||||||
push eax
|
push eax
|
||||||
mov esi,[cur_editor.Lines]
|
mov esi,[cur_editor.Lines]
|
||||||
mov edi,eax
|
mov edi,eax
|
||||||
@ -55,10 +55,10 @@ func save_file ;//////////////////////////////////////////////////////////////
|
|||||||
.exit.2:
|
.exit.2:
|
||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func save_string ;////////////////////////////////////////////////////////////
|
proc save_string ;////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
movzx ecx,word[esi]
|
movzx ecx,word[esi]
|
||||||
test dword[esi],0x00010000
|
test dword[esi],0x00010000
|
||||||
@ -126,9 +126,9 @@ func save_string ;////////////////////////////////////////////////////////////
|
|||||||
movzx eax,word[esi-4]
|
movzx eax,word[esi-4]
|
||||||
add esi,eax;[esi-4]
|
add esi,eax;[esi-4]
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func set_status_fs_error
|
proc set_status_fs_error
|
||||||
push eax
|
push eax
|
||||||
mov esi,s_fs_error
|
mov esi,s_fs_error
|
||||||
@@: dec eax
|
@@: dec eax
|
||||||
@ -141,10 +141,10 @@ func set_status_fs_error
|
|||||||
pop eax
|
pop eax
|
||||||
call draw_statusbar
|
call draw_statusbar
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func load_file ;//////////////////////////////////////////////////////////////
|
proc load_file ;//////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [tb_opensave.length],0
|
cmp [tb_opensave.length],0
|
||||||
jne @f
|
jne @f
|
||||||
@ -171,7 +171,7 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
mov [f_info70+0],0
|
mov [f_info70+0],0
|
||||||
mov eax,dword[file_info.Size]
|
mov eax,dword[file_info.Size]
|
||||||
mov [f_info70+12],eax
|
mov [f_info70+12],eax
|
||||||
call mem.Alloc
|
stdcall mem.Alloc,eax
|
||||||
mov [f_info70+16],eax
|
mov [f_info70+16],eax
|
||||||
mcall 70,f_info70
|
mcall 70,f_info70
|
||||||
|
|
||||||
@ -185,8 +185,7 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
cmp ebx,6 ;// ATV driver fix (6 instead of 5)
|
cmp ebx,6 ;// ATV driver fix (6 instead of 5)
|
||||||
je .file_found
|
je .file_found
|
||||||
|
|
||||||
mov eax,[f_info70+16]
|
stdcall mem.Free,[f_info70+16]
|
||||||
call mem.Free
|
|
||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -221,8 +220,7 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
call flush_cur_tab
|
call flush_cur_tab
|
||||||
pop edi esi ecx
|
pop edi esi ecx
|
||||||
call load_from_memory
|
call load_from_memory
|
||||||
mov eax,[f_info70+16]
|
stdcall mem.Free,[f_info70+16]
|
||||||
call mem.Free
|
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [cur_editor.TopLeft.Y],eax
|
mov [cur_editor.TopLeft.Y],eax
|
||||||
@ -251,10 +249,10 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
|
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func load_from_memory ;///////////////////////////////////////////////////////
|
proc load_from_memory ;///////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; ECX = data length
|
; ECX = data length
|
||||||
; ESI = data pointer
|
; ESI = data pointer
|
||||||
@ -265,9 +263,8 @@ func load_from_memory ;///////////////////////////////////////////////////////
|
|||||||
lea edx,[ebx+ecx]
|
lea edx,[ebx+ecx]
|
||||||
imul ebx,eax,14
|
imul ebx,eax,14
|
||||||
add ebx,edx
|
add ebx,edx
|
||||||
mov eax,[ebp+EDITOR.Lines]
|
|
||||||
mov [ebp+EDITOR.Lines.Size],ebx
|
mov [ebp+EDITOR.Lines.Size],ebx
|
||||||
call mem.ReAlloc
|
stdcall mem.ReAlloc,[ebp+EDITOR.Lines],ebx
|
||||||
mov [ebp+EDITOR.Lines],eax
|
mov [ebp+EDITOR.Lines],eax
|
||||||
|
|
||||||
mov [ebp+EDITOR.Columns.Count],0
|
mov [ebp+EDITOR.Columns.Count],0
|
||||||
@ -335,4 +332,4 @@ func load_from_memory ;///////////////////////////////////////////////////////
|
|||||||
mov al,' '
|
mov al,' '
|
||||||
rep stosb
|
rep stosb
|
||||||
jmp .next_char
|
jmp .next_char
|
||||||
endf
|
endp
|
||||||
|
@ -109,7 +109,7 @@ key:
|
|||||||
jmp key.tab.direct
|
jmp key.tab.direct
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_a ;///// SELECT ALL DOCUMENT ///////////////////////////////////
|
proc key.ctrl_a ;///// SELECT ALL DOCUMENT ///////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [cur_editor.SelStart.X],eax
|
mov [cur_editor.SelStart.X],eax
|
||||||
@ -122,10 +122,10 @@ func key.ctrl_a ;///// SELECT ALL DOCUMENT ///////////////////////////////////
|
|||||||
mov [cur_editor.Caret.X],eax
|
mov [cur_editor.Caret.X],eax
|
||||||
call draw_editor
|
call draw_editor
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
|
proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov [bot_dlg_mode2],0
|
mov [bot_dlg_mode2],0
|
||||||
|
|
||||||
@ -149,10 +149,10 @@ func key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
|
|||||||
mov [tb_casesen],0;1
|
mov [tb_casesen],0;1
|
||||||
call drawwindow
|
call drawwindow
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_s ;///// ENTER SAVE FILENAME ///////////////////////////////////
|
proc key.ctrl_s ;///// ENTER SAVE FILENAME ///////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [cur_editor.FilePath], 0
|
cmp [cur_editor.FilePath], 0
|
||||||
je key.shift_ctrl_s
|
je key.shift_ctrl_s
|
||||||
@ -166,17 +166,17 @@ func key.ctrl_s ;///// ENTER SAVE FILENAME ///////////////////////////////////
|
|||||||
key.shift_ctrl_s:
|
key.shift_ctrl_s:
|
||||||
mov [bot_dlg_mode2],1
|
mov [bot_dlg_mode2],1
|
||||||
jmp key.ctrl_o.direct
|
jmp key.ctrl_o.direct
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_n ;///// CREATE NEW FILE (TAB) /////////////////////////////////
|
proc key.ctrl_n ;///// CREATE NEW FILE (TAB) /////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call create_tab
|
call create_tab
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_f ;///// ENTER KEYWORD TO FIND /////////////////////////////////
|
proc key.ctrl_f ;///// ENTER KEYWORD TO FIND /////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov [bot_dlg_mode2],0
|
mov [bot_dlg_mode2],0
|
||||||
mov [bot_dlg_height],16*2+4*2-1
|
mov [bot_dlg_height],16*2+4*2-1
|
||||||
@ -202,18 +202,18 @@ func key.ctrl_f ;///// ENTER KEYWORD TO FIND /////////////////////////////////
|
|||||||
mov [tb_casesen],0
|
mov [tb_casesen],0
|
||||||
call drawwindow
|
call drawwindow
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.ctrl_h
|
proc key.ctrl_h
|
||||||
mov [bot_dlg_mode2],1
|
mov [bot_dlg_mode2],1
|
||||||
mov [bot_dlg_height],16*3+4*2+1
|
mov [bot_dlg_height],16*3+4*2+1
|
||||||
|
|
||||||
mov [s_status],s_enter_text_to_replace
|
mov [s_status],s_enter_text_to_replace
|
||||||
|
|
||||||
jmp key.ctrl_f.direct
|
jmp key.ctrl_f.direct
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.ctrl_g
|
proc key.ctrl_g
|
||||||
ret
|
ret
|
||||||
@^
|
@^
|
||||||
mov [bot_dlg_mode2],0
|
mov [bot_dlg_mode2],0
|
||||||
@ -230,10 +230,10 @@ func key.ctrl_g
|
|||||||
call drawwindow
|
call drawwindow
|
||||||
ret
|
ret
|
||||||
^@
|
^@
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_left ;///// GO TO PREVIOUS WORD ////////////////////////////////
|
proc key.ctrl_left ;///// GO TO PREVIOUS WORD ////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -323,10 +323,10 @@ func key.ctrl_left ;///// GO TO PREVIOUS WORD ////////////////////////////////
|
|||||||
call editor_check_for_changes
|
call editor_check_for_changes
|
||||||
.exit.2:
|
.exit.2:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_right ;///// GO TO NEXT WORD ///////////////////////////////////
|
proc key.ctrl_right ;///// GO TO NEXT WORD ///////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -412,28 +412,26 @@ func key.ctrl_right ;///// GO TO NEXT WORD ///////////////////////////////////
|
|||||||
call editor_check_for_changes
|
call editor_check_for_changes
|
||||||
.exit.2:
|
.exit.2:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_x
|
proc key.ctrl_x
|
||||||
cmp [sel.selected],0
|
cmp [sel.selected],0
|
||||||
je @f
|
je @f
|
||||||
call key.ctrl_c
|
call key.ctrl_c
|
||||||
call key.del
|
call key.del
|
||||||
mov [cur_editor.Modified],1
|
mov [cur_editor.Modified],1
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_c
|
proc key.ctrl_c
|
||||||
mov [copy_size],0
|
mov [copy_size],0
|
||||||
cmp [sel.selected],0
|
cmp [sel.selected],0
|
||||||
je .exit
|
je .exit
|
||||||
|
|
||||||
call get_selection_size
|
call get_selection_size
|
||||||
mov ebx,eax
|
stdcall mem.ReAlloc,[copy_buf],eax
|
||||||
mov eax,[copy_buf]
|
|
||||||
call mem.ReAlloc
|
|
||||||
mov [copy_buf],eax
|
mov [copy_buf],eax
|
||||||
|
|
||||||
cld
|
cld
|
||||||
@ -518,10 +516,10 @@ func key.ctrl_c
|
|||||||
jecxz @b
|
jecxz @b
|
||||||
rep stosb
|
rep stosb
|
||||||
jmp @b
|
jmp @b
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_v
|
proc key.ctrl_v
|
||||||
cmp [copy_size],0
|
cmp [copy_size],0
|
||||||
je .exit
|
je .exit
|
||||||
|
|
||||||
@ -530,11 +528,10 @@ func key.ctrl_v
|
|||||||
mov eax,[copy_size]
|
mov eax,[copy_size]
|
||||||
call editor_realloc_lines
|
call editor_realloc_lines
|
||||||
|
|
||||||
mov eax,[cur_editor.Lines]
|
|
||||||
mov ebx,[cur_editor.Lines.Size]
|
mov ebx,[cur_editor.Lines.Size]
|
||||||
add ebx,[copy_size]
|
add ebx,[copy_size]
|
||||||
mov [cur_editor.Lines.Size],ebx
|
mov [cur_editor.Lines.Size],ebx
|
||||||
call mem.ReAlloc
|
stdcall mem.ReAlloc,[cur_editor.Lines],ebx
|
||||||
mov [cur_editor.Lines],eax
|
mov [cur_editor.Lines],eax
|
||||||
|
|
||||||
mov ecx,[cur_editor.Caret.Y]
|
mov ecx,[cur_editor.Caret.Y]
|
||||||
@ -635,10 +632,10 @@ func key.ctrl_v
|
|||||||
mov [cur_editor.Columns.Count],eax
|
mov [cur_editor.Columns.Count],eax
|
||||||
@@: pop eax
|
@@: pop eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
|
proc key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov eax,94
|
mov eax,94
|
||||||
call editor_realloc_lines
|
call editor_realloc_lines
|
||||||
@ -674,10 +671,10 @@ func key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_y ;///// DELETE CURRENT LINE ///////////////////////////////////
|
proc key.ctrl_y ;///// DELETE CURRENT LINE ///////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov eax,[cur_editor.Caret.Y]
|
mov eax,[cur_editor.Caret.Y]
|
||||||
inc eax
|
inc eax
|
||||||
@ -712,10 +709,10 @@ func key.ctrl_y ;///// DELETE CURRENT LINE ///////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.up ;///// GO TO PREVIOUS LINE ///////////////////////////////////////
|
proc key.up ;///// GO TO PREVIOUS LINE ///////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -740,10 +737,10 @@ func key.up ;///// GO TO PREVIOUS LINE ///////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.down ;///// GO TO NEXT LINE /////////////////////////////////////////
|
proc key.down ;///// GO TO NEXT LINE /////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -770,10 +767,10 @@ func key.down ;///// GO TO NEXT LINE /////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.left ;///// GO TO PREVIOUS CHAR /////////////////////////////////////
|
proc key.left ;///// GO TO PREVIOUS CHAR /////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -791,10 +788,10 @@ func key.left ;///// GO TO PREVIOUS CHAR /////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.right ;///// GO TO NEXT CHAR ////////////////////////////////////////
|
proc key.right ;///// GO TO NEXT CHAR ////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -813,10 +810,10 @@ func key.right ;///// GO TO NEXT CHAR ////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.pgup ;///// GO TO PREVIOUS PAGE /////////////////////////////////////
|
proc key.pgup ;///// GO TO PREVIOUS PAGE /////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -841,10 +838,10 @@ func key.pgup ;///// GO TO PREVIOUS PAGE /////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.pgdn ;///// GO TO NEXT PAGE /////////////////////////////////////////
|
proc key.pgdn ;///// GO TO NEXT PAGE /////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -869,10 +866,10 @@ func key.pgdn ;///// GO TO NEXT PAGE /////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.home ;///// GO TO LINE START ////////////////////////////////////////
|
proc key.home ;///// GO TO LINE START ////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -887,10 +884,10 @@ func key.home ;///// GO TO LINE START ////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.end ;///// GO TO LINE END ///////////////////////////////////////////
|
proc key.end ;///// GO TO LINE END ///////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -908,10 +905,10 @@ func key.end ;///// GO TO LINE END ///////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_home ;///// GO TO PAGE START ///////////////////////////////////
|
proc key.ctrl_home ;///// GO TO PAGE START ///////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -928,10 +925,10 @@ func key.ctrl_home ;///// GO TO PAGE START ///////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_end ;///// GO TO PAGE END //////////////////////////////////////
|
proc key.ctrl_end ;///// GO TO PAGE END //////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -953,10 +950,10 @@ func key.ctrl_end ;///// GO TO PAGE END //////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_pgup ;///// GO TO DOCUMENT START ///////////////////////////////
|
proc key.ctrl_pgup ;///// GO TO DOCUMENT START ///////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -973,10 +970,10 @@ func key.ctrl_pgup ;///// GO TO DOCUMENT START ///////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_pgdn ;///// GO TO DOCUMENT END /////////////////////////////////
|
proc key.ctrl_pgdn ;///// GO TO DOCUMENT END /////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call clear_selection
|
call clear_selection
|
||||||
|
|
||||||
@ -997,10 +994,10 @@ func key.ctrl_pgdn ;///// GO TO DOCUMENT END /////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.del ;///// DELETE NEXT CHAR OR SELECTION ////////////////////////////
|
proc key.del ;///// DELETE NEXT CHAR OR SELECTION ////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call delete_selection
|
call delete_selection
|
||||||
jnc .exit
|
jnc .exit
|
||||||
@ -1139,20 +1136,21 @@ func key.del ;///// DELETE NEXT CHAR OR SELECTION ////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
key.ins:
|
proc key.ins ;///// TOGGLE INSERT/OVERWRITE MODE /////////////////////////////
|
||||||
;// ... toggle insert/overwrite mode here ...
|
;-----------------------------------------------------------------------------
|
||||||
xor [ins_mode],1
|
xor [ins_mode],1
|
||||||
mov eax,[cur_editor.Caret.Y]
|
mov eax,[cur_editor.Caret.Y]
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
call draw_editor_text.part
|
call draw_editor_text.part
|
||||||
call draw_editor_caret
|
call draw_editor_caret
|
||||||
ret
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.bkspace ;///// DELETE PREVIOUS CHAR OR SELECTION ////////////////////
|
proc key.bkspace ;///// DELETE PREVIOUS CHAR OR SELECTION ////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call delete_selection
|
call delete_selection
|
||||||
jnc key.del.exit
|
jnc key.del.exit
|
||||||
@ -1212,10 +1210,10 @@ func key.bkspace ;///// DELETE PREVIOUS CHAR OR SELECTION ////////////////////
|
|||||||
dec [cur_editor.Caret.Y]
|
dec [cur_editor.Caret.Y]
|
||||||
cld
|
cld
|
||||||
jmp key.del.line_up
|
jmp key.del.line_up
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.tab ;///// TABULATE /////////////////////////////////////////////////
|
proc key.tab ;///// TABULATE /////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call delete_selection
|
call delete_selection
|
||||||
mov eax,[cur_editor.Caret.X]
|
mov eax,[cur_editor.Caret.X]
|
||||||
@ -1297,10 +1295,10 @@ func key.tab ;///// TABULATE /////////////////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.return ;///// CARRIAGE RETURN ///////////////////////////////////////
|
proc key.return ;///// CARRIAGE RETURN ///////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call delete_selection
|
call delete_selection
|
||||||
|
|
||||||
@ -1432,10 +1430,10 @@ func key.return ;///// CARRIAGE RETURN ///////////////////////////////////////
|
|||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_tab ;///// SWITCH TO NEXT TAB //////////////////////////////////
|
proc key.ctrl_tab ;///// SWITCH TO NEXT TAB //////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [tab_bar.Items.Count],1
|
cmp [tab_bar.Items.Count],1
|
||||||
je .exit
|
je .exit
|
||||||
@ -1459,10 +1457,10 @@ func key.ctrl_tab ;///// SWITCH TO NEXT TAB //////////////////////////////////
|
|||||||
call update_caption
|
call update_caption
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.shift_ctrl_tab ;///// SWITCH TO PREVIOUS TAB ////////////////////////
|
proc key.shift_ctrl_tab ;///// SWITCH TO PREVIOUS TAB ////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [tab_bar.Items.Count],1
|
cmp [tab_bar.Items.Count],1
|
||||||
je .exit
|
je .exit
|
||||||
@ -1487,10 +1485,10 @@ func key.shift_ctrl_tab ;///// SWITCH TO PREVIOUS TAB ////////////////////////
|
|||||||
call update_caption
|
call update_caption
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_f4 ;///// CLOSE CURRENT TAB ////////////////////////////////////
|
proc key.ctrl_f4 ;///// CLOSE CURRENT TAB ////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [cur_editor.Modified], 0
|
cmp [cur_editor.Modified], 0
|
||||||
je .close
|
je .close
|
||||||
@ -1511,10 +1509,10 @@ func key.ctrl_f4 ;///// CLOSE CURRENT TAB ////////////////////////////////////
|
|||||||
call draw_tabctl
|
call draw_tabctl
|
||||||
call draw_statusbar
|
call draw_statusbar
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.shift_f9 ;///// SET DEFAULT TAB /////////////////////////////////////
|
proc key.shift_f9 ;///// SET DEFAULT TAB /////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov eax,[tab_bar.Current.Ptr]
|
mov eax,[tab_bar.Current.Ptr]
|
||||||
cmp eax,[tab_bar.Default.Ptr]
|
cmp eax,[tab_bar.Default.Ptr]
|
||||||
@ -1529,34 +1527,34 @@ func key.shift_f9 ;///// SET DEFAULT TAB /////////////////////////////////////
|
|||||||
call draw_editor
|
call draw_editor
|
||||||
@@: call draw_tabctl
|
@@: call draw_tabctl
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.f3 ;///// FIND NEXT MATCH ///////////////////////////////////////////
|
proc key.f3 ;///// FIND NEXT MATCH ///////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call search
|
call search
|
||||||
jc @f
|
jc @f
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.f9 ;///// COMPILE AND RUN ///////////////////////////////////////////
|
proc key.f9 ;///// COMPILE AND RUN ///////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov bl,1
|
mov bl,1
|
||||||
call start_fasm
|
call start_fasm
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.ctrl_f9 ;///// COMPILE //////////////////////////////////////////////
|
proc key.ctrl_f9 ;///// COMPILE //////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov bl,0
|
mov bl,0
|
||||||
call start_fasm
|
call start_fasm
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func key.alt_x ;///// EXIT PROGRAM ///////////////////////////////////////////
|
proc key.alt_x ;///// EXIT PROGRAM ///////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov esi,self_path
|
mov esi,self_path
|
||||||
mov byte[esi+PATHL-1],0
|
mov byte[esi+PATHL-1],0
|
||||||
@ -1583,4 +1581,4 @@ func key.alt_x ;///// EXIT PROGRAM ///////////////////////////////////////////
|
|||||||
jne .bgn_rp
|
jne .bgn_rp
|
||||||
mov [main_closed],1
|
mov [main_closed],1
|
||||||
mcall -1
|
mcall -1
|
||||||
endf
|
endp
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
func check_mouse_in_edit_area
|
proc check_mouse_in_edit_area
|
||||||
mcall 37,1
|
mcall 37,1
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
and ebx,0x0000FFFF
|
and ebx,0x0000FFFF
|
||||||
@ -16,16 +16,24 @@ func check_mouse_in_edit_area
|
|||||||
mov ecx,__rc
|
mov ecx,__rc
|
||||||
call pt_in_rect
|
call pt_in_rect
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func get_mouse_event
|
proc get_mouse_event
|
||||||
mcall 37,2
|
mcall 37,2
|
||||||
and al,3
|
and al,3
|
||||||
mov bl,[ecx]
|
mov bl,[ecx]
|
||||||
cmp [ecx],al
|
cmp [ecx],al
|
||||||
mov [ecx],al
|
mov [ecx],al
|
||||||
jne @f
|
jne @f
|
||||||
mov eax,MEV_MOVE
|
mcall 37,7
|
||||||
|
or eax,eax
|
||||||
|
jz .mv
|
||||||
|
add [ecx+6],ax
|
||||||
|
shr eax,16
|
||||||
|
add [ecx+4],ax
|
||||||
|
mov eax,MEV_WHEEL
|
||||||
|
ret
|
||||||
|
.mv: mov eax,MEV_MOVE
|
||||||
ret
|
ret
|
||||||
@@: mov bh,al
|
@@: mov bh,al
|
||||||
and ebx,0x0101
|
and ebx,0x0101
|
||||||
@ -43,9 +51,9 @@ func get_mouse_event
|
|||||||
ret
|
ret
|
||||||
@@: mov eax,MEV_RUP
|
@@: mov eax,MEV_RUP
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
mouse_ev dd mouse.l_down,mouse.l_up,mouse.r_down,mouse.r_up,mouse.move
|
mouse_ev dd mouse.l_down,mouse.l_up,mouse.r_down,mouse.r_up,mouse.wheel,mouse.move
|
||||||
|
|
||||||
mouse:
|
mouse:
|
||||||
mov ecx,mst
|
mov ecx,mst
|
||||||
@ -76,6 +84,19 @@ mouse:
|
|||||||
@@: mov [mev],al
|
@@: mov [mev],al
|
||||||
jmp [mouse_ev+eax*4-4]
|
jmp [mouse_ev+eax*4-4]
|
||||||
|
|
||||||
|
.wheel:
|
||||||
|
movsx eax,word[mst+4]
|
||||||
|
lea eax,[eax*3]
|
||||||
|
add [cur_editor.TopLeft.X],eax
|
||||||
|
movsx eax,word[mst+6]
|
||||||
|
lea eax,[eax*3]
|
||||||
|
add [cur_editor.TopLeft.Y],eax
|
||||||
|
xor eax,eax
|
||||||
|
mov [mst+4],eax
|
||||||
|
call check_bottom_right
|
||||||
|
call draw_editor
|
||||||
|
jmp still.skip_write
|
||||||
|
|
||||||
.move:
|
.move:
|
||||||
mcall 37,1
|
mcall 37,1
|
||||||
movsx ebx,ax
|
movsx ebx,ax
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
;POP_WIDTH = (popup_text.max_title+popup_text.max_accel+6)*6
|
;POP_WIDTH = (popup_text.max_title+popup_text.max_accel+6)*6
|
||||||
POP_IHEIGHT = 16
|
POP_IHEIGHT = 16
|
||||||
|
POP_SHEIGHT = 3
|
||||||
;POP_HEIGHT = popup_text.cnt_item*POP_IHEIGHT+popup_text.cnt_sep*4+4
|
;POP_HEIGHT = popup_text.cnt_item*POP_IHEIGHT+popup_text.cnt_sep*4+4
|
||||||
|
|
||||||
popup_thread_start:
|
popup_thread_start:
|
||||||
|
@ -38,57 +38,3 @@ recode:
|
|||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
table.866.1251 db \
|
|
||||||
$C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7 , $C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF,\
|
|
||||||
$D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7 , $D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF,\
|
|
||||||
$E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF,\
|
|
||||||
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7 , $F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF,\
|
|
||||||
$A8,$B8,$AA,$BA,$AF,$BF,$A1,$A2 , $B0,$95,$B7,$00,$B9,$A4,$00,$00
|
|
||||||
table.1251.866 db \
|
|
||||||
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$00,$00,$00,$00,$00,$F9,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$00,$F6,$F7,$00,$FD,$00,$00,$00 , $F0,$00,$F2,$00,$00,$00,$00,$F4,\
|
|
||||||
$F8,$00,$00,$00,$00,$00,$00,$FA , $F1,$FC,$F3,$00,$00,$00,$00,$F5,\
|
|
||||||
$80,$81,$82,$83,$84,$85,$86,$87 , $88,$89,$8A,$8B,$8C,$8D,$8E,$8F,\
|
|
||||||
$90,$91,$92,$93,$94,$95,$96,$97 , $98,$99,$9A,$9B,$9C,$9D,$9E,$9F,\
|
|
||||||
$A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7 , $A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF,\
|
|
||||||
$E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF
|
|
||||||
table.866.koi db \
|
|
||||||
$E1,$E2,$F7,$E7,$E4,$E5,$F6,$FA , $E9,$EA,$EB,$EC,$ED,$EE,$EF,$F0,\
|
|
||||||
$F2,$F3,$F4,$F5,$E6,$E8,$E3,$FE , $FB,$FD,$FF,$F9,$F8,$FC,$E0,$F1,\
|
|
||||||
$C1,$C2,$D7,$C7,$C4,$C5,$D6,$DA , $C9,$CA,$CB,$CC,$CD,$CE,$CF,$D0,\
|
|
||||||
$90,$00,$00,$81,$87,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$83,\
|
|
||||||
$84,$89,$88,$86,$80,$8A,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$85,$82,$8D,$8C,$8E,$8F,$8B,\
|
|
||||||
$D2,$D3,$D4,$D5,$C6,$C8,$C3,$DE , $DB,$DD,$DF,$D9,$D8,$DC,$C0,$D1,\
|
|
||||||
$B3,$A3,$B4,$A4,$B7,$A7,$BE,$AE , $00,$95,$9E,$00,$B0,$9F,$00,$A0
|
|
||||||
table.koi.866 db \
|
|
||||||
$C4,$B3,$DA,$BF,$C0,$D9,$C3,$B4 , $C2,$C1,$C5,$DF,$DC,$DB,$DD,$DE,\
|
|
||||||
$B0,$00,$00,$00,$00,$F9,$00,$00 , $00,$00,$00,$00,$00,$00,$FA,$FD,\
|
|
||||||
$FF,$00,$00,$F1,$F3,$00,$00,$F5 , $00,$00,$00,$00,$00,$00,$F7,$00,\
|
|
||||||
$FC,$00,$00,$F0,$F2,$00,$00,$F4 , $00,$00,$00,$00,$00,$00,$F6,$00,\
|
|
||||||
$EE,$A0,$A1,$E6,$A4,$A5,$E4,$A3 , $E5,$A8,$A9,$AA,$AB,$AC,$AD,$AE,\
|
|
||||||
$AF,$EF,$E0,$E1,$E2,$E3,$A6,$A2 , $EC,$EB,$A7,$E8,$ED,$E9,$E7,$EA,\
|
|
||||||
$9E,$80,$81,$96,$84,$85,$94,$83 , $95,$88,$89,$8A,$8B,$8C,$8D,$8E,\
|
|
||||||
$8F,$9F,$90,$91,$92,$93,$86,$82 , $9C,$9B,$87,$98,$9D,$99,$97,$9A
|
|
||||||
table.1251.koi db \
|
|
||||||
$B1,$B2,$00,$A2,$00,$00,$00,$00 , $00,$00,$B9,$00,$BA,$BC,$BB,$BF,\
|
|
||||||
$A1,$91,$92,$93,$94,$95,$96,$97 , $00,$99,$A9,$00,$AA,$AC,$AB,$AF,\
|
|
||||||
$A0,$BE,$AE,$B8,$9F,$BD,$00,$00 , $B3,$98,$B4,$9D,$00,$00,$9C,$B7,\
|
|
||||||
$00,$00,$B6,$A6,$AD,$00,$00,$9E , $A3,$B0,$A4,$9B,$A8,$B5,$A5,$A7,\
|
|
||||||
$E1,$E2,$F7,$E7,$E4,$E5,$F6,$FA , $E9,$EA,$EB,$EC,$ED,$EE,$EF,$F0,\
|
|
||||||
$F2,$F3,$F4,$F5,$E6,$E8,$E3,$FE , $FB,$FD,$FF,$F9,$F8,$FC,$E0,$F1,\
|
|
||||||
$C1,$C2,$D7,$C7,$C4,$C5,$D6,$DA , $C9,$CA,$CB,$CC,$CD,$CE,$CF,$D0,\
|
|
||||||
$D2,$D3,$D4,$D5,$C6,$C8,$C3,$DE , $DB,$DD,$DF,$D9,$D8,$DC,$C0,$D1
|
|
||||||
table.koi.1251 db \
|
|
||||||
$00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\
|
|
||||||
$00,$91,$92,$93,$94,$95,$96,$97 , $00,$99,$00,$BB,$AE,$AB,$B7,$A4,\
|
|
||||||
$A0,$90,$83,$B8,$BA,$BE,$B3,$BF , $BC,$9A,$9C,$9E,$9D,$B4,$A2,$9F,\
|
|
||||||
$B9,$80,$81,$A8,$AA,$BD,$B2,$AF , $A3,$8A,$8C,$8E,$8D,$A5,$A1,$8F,\
|
|
||||||
$FE,$E0,$E1,$F6,$E4,$E5,$F4,$E3 , $F5,$E8,$E9,$EA,$EB,$EC,$ED,$EE,\
|
|
||||||
$EF,$FF,$F0,$F1,$F2,$F3,$E6,$E2 , $FC,$FB,$E7,$F8,$FD,$F9,$F7,$FA,\
|
|
||||||
$DE,$C0,$C1,$D6,$C4,$C5,$D4,$C3 , $D5,$C8,$C9,$CA,$CB,$CC,$CD,$CE,\
|
|
||||||
$CF,$DF,$D0,$D1,$D2,$D3,$C6,$C2 , $DC,$DB,$C7,$D8,$DD,$D9,$D7,$DA
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func flush_cur_tab ;///// SAVE CURRENT TAB DATA TO CONTROL ///////////////////
|
proc flush_cur_tab ;///// SAVE CURRENT TAB DATA TO CONTROL ///////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; EBP = TABITEM*
|
; EBP = TABITEM*
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -11,10 +11,10 @@ func flush_cur_tab ;///// SAVE CURRENT TAB DATA TO CONTROL ///////////////////
|
|||||||
rep movsd
|
rep movsd
|
||||||
pop edi esi ecx
|
pop edi esi ecx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func set_cur_tab ;///// SET SPECIFIED TAB CURRENT (FOCUS IT) /////////////////
|
proc set_cur_tab ;///// SET SPECIFIED TAB CURRENT (FOCUS IT) /////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; EBP = TABITEM*
|
; EBP = TABITEM*
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -30,10 +30,10 @@ func set_cur_tab ;///// SET SPECIFIED TAB CURRENT (FOCUS IT) /////////////////
|
|||||||
; call update_caption
|
; call update_caption
|
||||||
pop edi esi ecx
|
pop edi esi ecx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func make_tab_visible ;///// MAKE SPECIFIED TAB VISIBLE IF IT'S OFFSCREEN ////
|
proc make_tab_visible ;///// MAKE SPECIFIED TAB VISIBLE IF IT'S OFFSCREEN ////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
call flush_cur_tab
|
call flush_cur_tab
|
||||||
imul eax,[tab_bar.Items.Left],sizeof.TABITEM
|
imul eax,[tab_bar.Items.Left],sizeof.TABITEM
|
||||||
@ -64,10 +64,10 @@ func make_tab_visible ;///// MAKE SPECIFIED TAB VISIBLE IF IT'S OFFSCREEN ////
|
|||||||
div ebx
|
div ebx
|
||||||
@@: mov [tab_bar.Items.Left],eax
|
@@: mov [tab_bar.Items.Left],eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func create_tab ;///// ADD TAB TO THE END ////////////////////////////////////
|
proc create_tab ;///// ADD TAB TO THE END ////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push eax ecx esi edi
|
push eax ecx esi edi
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ func create_tab ;///// ADD TAB TO THE END ////////////////////////////////////
|
|||||||
imul ebx,[tab_bar.Items.Count],sizeof.TABITEM
|
imul ebx,[tab_bar.Items.Count],sizeof.TABITEM
|
||||||
mov eax,[tab_bar.Items]
|
mov eax,[tab_bar.Items]
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
call mem.ReAlloc
|
stdcall mem.ReAlloc,eax,ebx
|
||||||
mov [tab_bar.Items],eax
|
mov [tab_bar.Items],eax
|
||||||
sub ecx,eax
|
sub ecx,eax
|
||||||
sub [tab_bar.Current.Ptr],ecx
|
sub [tab_bar.Current.Ptr],ecx
|
||||||
@ -87,7 +87,7 @@ func create_tab ;///// ADD TAB TO THE END ////////////////////////////////////
|
|||||||
|
|
||||||
mov eax,1024
|
mov eax,1024
|
||||||
mov [cur_editor.Lines.Size],eax
|
mov [cur_editor.Lines.Size],eax
|
||||||
call mem.Alloc
|
stdcall mem.Alloc,eax
|
||||||
mov [cur_editor.Lines],eax
|
mov [cur_editor.Lines],eax
|
||||||
mov [cur_editor.Lines.Count],1
|
mov [cur_editor.Lines.Count],1
|
||||||
mov [cur_editor.Columns.Count],1
|
mov [cur_editor.Columns.Count],1
|
||||||
@ -131,10 +131,10 @@ func create_tab ;///// ADD TAB TO THE END ////////////////////////////////////
|
|||||||
mov ebp,cur_tab
|
mov ebp,cur_tab
|
||||||
pop edi esi ecx eax
|
pop edi esi ecx eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func delete_tab ;///// DELETE SPECIFIED TAB //////////////////////////////////
|
proc delete_tab ;///// DELETE SPECIFIED TAB //////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [tab_bar.Default.Ptr],0
|
cmp [tab_bar.Default.Ptr],0
|
||||||
je @f
|
je @f
|
||||||
@ -146,8 +146,7 @@ func delete_tab ;///// DELETE SPECIFIED TAB //////////////////////////////////
|
|||||||
.lp1:
|
.lp1:
|
||||||
mov [tab_bar.Default.Ptr],0
|
mov [tab_bar.Default.Ptr],0
|
||||||
|
|
||||||
@@: mov eax,[ebp+TABITEM.Editor.Lines]
|
@@: stdcall mem.Free,[ebp+TABITEM.Editor.Lines]
|
||||||
call mem.Free
|
|
||||||
imul ecx,[tab_bar.Items.Count],sizeof.TABITEM
|
imul ecx,[tab_bar.Items.Count],sizeof.TABITEM
|
||||||
add ecx,[tab_bar.Items]
|
add ecx,[tab_bar.Items]
|
||||||
sub ecx,ebp
|
sub ecx,ebp
|
||||||
@ -164,7 +163,7 @@ func delete_tab ;///// DELETE SPECIFIED TAB //////////////////////////////////
|
|||||||
push ebx
|
push ebx
|
||||||
mov eax,[tab_bar.Items]
|
mov eax,[tab_bar.Items]
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
call mem.ReAlloc
|
stdcall mem.ReAlloc,eax,ebx
|
||||||
mov [tab_bar.Items],eax
|
mov [tab_bar.Items],eax
|
||||||
sub ecx,eax
|
sub ecx,eax
|
||||||
sub ebp,ecx
|
sub ebp,ecx
|
||||||
@ -188,17 +187,16 @@ func delete_tab ;///// DELETE SPECIFIED TAB //////////////////////////////////
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.no_tabs:
|
.no_tabs:
|
||||||
mov eax,[tab_bar.Items]
|
stdcall mem.Free,[tab_bar.Items]
|
||||||
call mem.Free
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [tab_bar.Items],eax
|
mov [tab_bar.Items],eax
|
||||||
mov [tab_bar.Current.Ptr],eax
|
mov [tab_bar.Current.Ptr],eax
|
||||||
mov [tab_bar.Default.Ptr],eax
|
mov [tab_bar.Default.Ptr],eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_tabctl ;///// DRAW TAB CONTROL /////////////////////////////////////
|
proc draw_tabctl ;///// DRAW TAB CONTROL /////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
dec [tab_bar.Items.Left]
|
dec [tab_bar.Items.Left]
|
||||||
@ -374,7 +372,7 @@ func draw_tabctl ;///// DRAW TAB CONTROL /////////////////////////////////////
|
|||||||
call dword[esp+(8+4)+8+8]
|
call dword[esp+(8+4)+8+8]
|
||||||
mcall 13,,,[sc.work]
|
mcall 13,,,[sc.work]
|
||||||
pop ecx ebx
|
pop ecx ebx
|
||||||
mov edx,[color_tbl.text]
|
mov edx,[sc.work_text];[color_tbl.text]
|
||||||
.draw_tabs.inactive:
|
.draw_tabs.inactive:
|
||||||
|
|
||||||
cmp ebp,[tab_bar.Default.Ptr]
|
cmp ebp,[tab_bar.Default.Ptr]
|
||||||
@ -562,10 +560,10 @@ func draw_tabctl ;///// DRAW TAB CONTROL /////////////////////////////////////
|
|||||||
movzx ecx,cx
|
movzx ecx,cx
|
||||||
lea edi,[edi+ecx+1]
|
lea edi,[edi+ecx+1]
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_tab_size ;///// GET TAB WIDTH ///////////////////////////////////////
|
proc get_tab_size ;///// GET TAB WIDTH ///////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; EBP = TABITEM*
|
; EBP = TABITEM*
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -586,10 +584,10 @@ func get_tab_size ;///// GET TAB WIDTH ///////////////////////////////////////
|
|||||||
.lp2: mov ecx,TBARH-1
|
.lp2: mov ecx,TBARH-1
|
||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_max_tab_width ;///// GET WIDTH OF LONGEST TAB ///////////////////////
|
proc get_max_tab_width ;///// GET WIDTH OF LONGEST TAB ///////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push ebx ecx ebp
|
push ebx ecx ebp
|
||||||
mov ecx,[tab_bar.Items.Count]
|
mov ecx,[tab_bar.Items.Count]
|
||||||
@ -618,10 +616,10 @@ func get_max_tab_width ;///// GET WIDTH OF LONGEST TAB ///////////////////////
|
|||||||
add eax,13
|
add eax,13
|
||||||
@@: pop ebp ecx ebx
|
@@: pop ebp ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func get_hidden_tabitems_number ;/////////////////////////////////////////////
|
proc get_hidden_tabitems_number ;/////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov al,[tab_bar.Style]
|
mov al,[tab_bar.Style]
|
||||||
dec al
|
dec al
|
||||||
@ -676,10 +674,10 @@ func get_hidden_tabitems_number ;/////////////////////////////////////////////
|
|||||||
@@: pop ecx
|
@@: pop ecx
|
||||||
mov eax,ecx
|
mov eax,ecx
|
||||||
ret 8
|
ret 8
|
||||||
endf
|
endp
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func align_editor_in_tab ;///// ADJUST EDITOR POSITION TO FIT IN TAB /////////
|
proc align_editor_in_tab ;///// ADJUST EDITOR POSITION TO FIT IN TAB /////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
m2m [cur_editor.Bounds.Left],[tab_bar.Bounds.Left]
|
m2m [cur_editor.Bounds.Left],[tab_bar.Bounds.Left]
|
||||||
m2m [cur_editor.Bounds.Top],[tab_bar.Bounds.Top]
|
m2m [cur_editor.Bounds.Top],[tab_bar.Bounds.Top]
|
||||||
@ -720,4 +718,4 @@ func align_editor_in_tab ;///// ADJUST EDITOR POSITION TO FIT IN TAB /////////
|
|||||||
.tabs_on_right:
|
.tabs_on_right:
|
||||||
sub [cur_editor.Bounds.Right],ebx
|
sub [cur_editor.Bounds.Right],ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
@ -6,7 +6,7 @@ tb.pos.x db ?
|
|||||||
tb.sel.x db ?
|
tb.sel.x db ?
|
||||||
tb.sel.selected db ?
|
tb.sel.selected db ?
|
||||||
|
|
||||||
func textbox.get_width
|
proc textbox.get_width
|
||||||
push ebx edx
|
push ebx edx
|
||||||
movzx eax,[tbox.width]
|
movzx eax,[tbox.width]
|
||||||
add eax,-6
|
add eax,-6
|
||||||
@ -19,9 +19,9 @@ func textbox.get_width
|
|||||||
mov eax,ebx
|
mov eax,ebx
|
||||||
@@: pop edx ebx
|
@@: pop edx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func textbox.delete_selection
|
proc textbox.delete_selection
|
||||||
cmp [tb.sel.selected],0
|
cmp [tb.sel.selected],0
|
||||||
je .exit.2
|
je .exit.2
|
||||||
pushad
|
pushad
|
||||||
@ -49,9 +49,9 @@ func textbox.delete_selection
|
|||||||
.exit.2:
|
.exit.2:
|
||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func textbox.draw ; TBOX* ebp
|
proc textbox.draw ; TBOX* ebp
|
||||||
call textbox.get_width
|
call textbox.get_width
|
||||||
movzx ebx,[tbox.pos.x]
|
movzx ebx,[tbox.pos.x]
|
||||||
sub bl,[tbox.ofs.x]
|
sub bl,[tbox.ofs.x]
|
||||||
@ -196,9 +196,9 @@ func textbox.draw ; TBOX* ebp
|
|||||||
add ebx,0x00010001
|
add ebx,0x00010001
|
||||||
mcall
|
mcall
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func textbox.key
|
proc textbox.key
|
||||||
mov ebp,[focused_tb]
|
mov ebp,[focused_tb]
|
||||||
mov esi,accel_table_textbox
|
mov esi,accel_table_textbox
|
||||||
.acc: cmp ebx,[esi]
|
.acc: cmp ebx,[esi]
|
||||||
@ -243,12 +243,12 @@ func textbox.key
|
|||||||
call textbox.draw
|
call textbox.draw
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
textbox.mouse:
|
textbox.mouse:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
func key.tb.bkspace
|
proc key.tb.bkspace
|
||||||
call textbox.delete_selection
|
call textbox.delete_selection
|
||||||
jnc @f
|
jnc @f
|
||||||
|
|
||||||
@ -258,17 +258,17 @@ func key.tb.bkspace
|
|||||||
jmp key.tb.del.direct
|
jmp key.tb.del.direct
|
||||||
|
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.home
|
proc key.tb.home
|
||||||
xor al,al
|
xor al,al
|
||||||
mov [tbox.pos.x],al
|
mov [tbox.pos.x],al
|
||||||
mov [tbox.sel.x],al
|
mov [tbox.sel.x],al
|
||||||
mov [tbox.ofs.x],al
|
mov [tbox.ofs.x],al
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.left
|
proc key.tb.left
|
||||||
mov al,[tbox.pos.x]
|
mov al,[tbox.pos.x]
|
||||||
mov [tbox.sel.x],al
|
mov [tbox.sel.x],al
|
||||||
dec al
|
dec al
|
||||||
@ -281,9 +281,9 @@ func key.tb.left
|
|||||||
jge @f
|
jge @f
|
||||||
mov [tbox.ofs.x],0
|
mov [tbox.ofs.x],0
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.right
|
proc key.tb.right
|
||||||
call textbox.get_width
|
call textbox.get_width
|
||||||
mov bl,[tbox.pos.x]
|
mov bl,[tbox.pos.x]
|
||||||
mov [tbox.sel.x],bl
|
mov [tbox.sel.x],bl
|
||||||
@ -297,9 +297,9 @@ func key.tb.right
|
|||||||
jbe @f
|
jbe @f
|
||||||
inc [tbox.ofs.x]
|
inc [tbox.ofs.x]
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.end
|
proc key.tb.end
|
||||||
call textbox.get_width
|
call textbox.get_width
|
||||||
movzx ebx,[tbox.length]
|
movzx ebx,[tbox.length]
|
||||||
mov [tbox.pos.x],bl
|
mov [tbox.pos.x],bl
|
||||||
@ -309,9 +309,9 @@ func key.tb.end
|
|||||||
xor bl,bl
|
xor bl,bl
|
||||||
@@: mov [tbox.ofs.x],bl
|
@@: mov [tbox.ofs.x],bl
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.del
|
proc key.tb.del
|
||||||
call textbox.delete_selection
|
call textbox.delete_selection
|
||||||
jnc @f
|
jnc @f
|
||||||
.direct:
|
.direct:
|
||||||
@ -327,16 +327,16 @@ func key.tb.del
|
|||||||
rep movsb
|
rep movsb
|
||||||
|
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.shift_home
|
proc key.tb.shift_home
|
||||||
xor al,al
|
xor al,al
|
||||||
mov [tbox.pos.x],al
|
mov [tbox.pos.x],al
|
||||||
mov [tbox.ofs.x],al
|
mov [tbox.ofs.x],al
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.shift_left
|
proc key.tb.shift_left
|
||||||
mov al,[tbox.pos.x]
|
mov al,[tbox.pos.x]
|
||||||
dec al
|
dec al
|
||||||
js @f
|
js @f
|
||||||
@ -347,9 +347,9 @@ func key.tb.shift_left
|
|||||||
jge @f
|
jge @f
|
||||||
mov [tbox.ofs.x],0
|
mov [tbox.ofs.x],0
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.shift_right
|
proc key.tb.shift_right
|
||||||
call textbox.get_width
|
call textbox.get_width
|
||||||
mov bl,[tbox.pos.x]
|
mov bl,[tbox.pos.x]
|
||||||
inc bl
|
inc bl
|
||||||
@ -361,9 +361,9 @@ func key.tb.shift_right
|
|||||||
jbe @f
|
jbe @f
|
||||||
inc [tbox.ofs.x]
|
inc [tbox.ofs.x]
|
||||||
@@: ret
|
@@: ret
|
||||||
endf
|
endp
|
||||||
|
|
||||||
func key.tb.shift_end
|
proc key.tb.shift_end
|
||||||
call textbox.get_width
|
call textbox.get_width
|
||||||
movzx ebx,[tbox.length]
|
movzx ebx,[tbox.length]
|
||||||
mov [tbox.pos.x],bl
|
mov [tbox.pos.x],bl
|
||||||
@ -372,4 +372,4 @@ func key.tb.shift_end
|
|||||||
xor bl,bl
|
xor bl,bl
|
||||||
@@: mov [tbox.ofs.x],bl
|
@@: mov [tbox.ofs.x],bl
|
||||||
ret
|
ret
|
||||||
endf
|
endp
|
||||||
|
@ -1,6 +1,47 @@
|
|||||||
@^ fix macro comment {
|
@^ fix macro comment {
|
||||||
^@ fix }
|
^@ fix }
|
||||||
|
|
||||||
|
; -------------------------
|
||||||
|
macro library [lname,fname]
|
||||||
|
{
|
||||||
|
forward
|
||||||
|
dd __#lname#_library_table__,__#lname#_library_name__
|
||||||
|
common
|
||||||
|
dd 0
|
||||||
|
forward
|
||||||
|
align 4
|
||||||
|
__#lname#_library_name__ db fname,0
|
||||||
|
}
|
||||||
|
|
||||||
|
macro import lname,[name,sname]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
align 4
|
||||||
|
__#lname#_library_table__:
|
||||||
|
forward
|
||||||
|
if used name
|
||||||
|
name dd __#name#_import_name__
|
||||||
|
end if
|
||||||
|
common
|
||||||
|
dd 0
|
||||||
|
forward
|
||||||
|
if used name
|
||||||
|
align 4
|
||||||
|
__#name#_import_name__ db sname,0
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro export [name,sname]
|
||||||
|
{
|
||||||
|
forward
|
||||||
|
dd __#name#_export_name__,name
|
||||||
|
common
|
||||||
|
dd 0
|
||||||
|
forward
|
||||||
|
align 4
|
||||||
|
__#name#_export_name__ db sname,0
|
||||||
|
}
|
||||||
|
; -------------------------
|
||||||
|
|
||||||
macro m2m dest,src {
|
macro m2m dest,src {
|
||||||
push src
|
push src
|
||||||
|
270
programs/proc32.inc
Normal file
270
programs/proc32.inc
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
|
||||||
|
; Macroinstructions for defining and calling procedures
|
||||||
|
|
||||||
|
macro stdcall proc,[arg] ; directly call STDCALL procedure
|
||||||
|
{ common
|
||||||
|
if ~ arg eq
|
||||||
|
reverse
|
||||||
|
pushd arg
|
||||||
|
common
|
||||||
|
end if
|
||||||
|
call proc }
|
||||||
|
|
||||||
|
macro invoke proc,[arg] ; indirectly call STDCALL procedure
|
||||||
|
{ common
|
||||||
|
if ~ arg eq
|
||||||
|
reverse
|
||||||
|
pushd arg
|
||||||
|
common
|
||||||
|
end if
|
||||||
|
call [proc] }
|
||||||
|
|
||||||
|
macro ccall proc,[arg] ; directly call CDECL procedure
|
||||||
|
{ common
|
||||||
|
size@ccall = 0
|
||||||
|
if ~ arg eq
|
||||||
|
reverse
|
||||||
|
pushd arg
|
||||||
|
size@ccall = size@ccall+4
|
||||||
|
common
|
||||||
|
end if
|
||||||
|
call proc
|
||||||
|
if size@ccall
|
||||||
|
add esp,size@ccall
|
||||||
|
end if }
|
||||||
|
|
||||||
|
macro cinvoke proc,[arg] ; indirectly call CDECL procedure
|
||||||
|
{ common
|
||||||
|
size@ccall = 0
|
||||||
|
if ~ arg eq
|
||||||
|
reverse
|
||||||
|
pushd arg
|
||||||
|
size@ccall = size@ccall+4
|
||||||
|
common
|
||||||
|
end if
|
||||||
|
call [proc]
|
||||||
|
if size@ccall
|
||||||
|
add esp,size@ccall
|
||||||
|
end if }
|
||||||
|
|
||||||
|
macro proc [args] ; define procedure
|
||||||
|
{ common
|
||||||
|
match name params, args>
|
||||||
|
\{ define@proc name,<params \} }
|
||||||
|
|
||||||
|
prologue@proc equ prologuedef
|
||||||
|
|
||||||
|
macro prologuedef procname,flag,parmbytes,localbytes,reglist
|
||||||
|
{ if parmbytes | localbytes
|
||||||
|
push ebp
|
||||||
|
mov ebp,esp
|
||||||
|
if localbytes
|
||||||
|
sub esp,localbytes
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
irps reg, reglist \{ push reg \} }
|
||||||
|
|
||||||
|
epilogue@proc equ epiloguedef
|
||||||
|
|
||||||
|
macro epiloguedef procname,flag,parmbytes,localbytes,reglist
|
||||||
|
{ irps reg, reglist \{ reverse pop reg \}
|
||||||
|
if parmbytes | localbytes
|
||||||
|
leave
|
||||||
|
end if
|
||||||
|
if flag and 10000b
|
||||||
|
retn
|
||||||
|
else
|
||||||
|
retn parmbytes
|
||||||
|
end if }
|
||||||
|
|
||||||
|
macro define@proc name,statement
|
||||||
|
{ local params,flag,regs,parmbytes,localbytes,current
|
||||||
|
if used name
|
||||||
|
name:
|
||||||
|
match =stdcall args, statement \{ params equ args
|
||||||
|
flag = 11b \}
|
||||||
|
match =stdcall, statement \{ params equ
|
||||||
|
flag = 11b \}
|
||||||
|
match =c args, statement \{ params equ args
|
||||||
|
flag = 10001b \}
|
||||||
|
match =c, statement \{ params equ
|
||||||
|
flag = 10001b \}
|
||||||
|
match =params, params \{ params equ statement
|
||||||
|
flag = 0 \}
|
||||||
|
virtual at ebp+8
|
||||||
|
match =uses reglist=,args, params \{ regs equ reglist
|
||||||
|
params equ args \}
|
||||||
|
match =regs =uses reglist, regs params \{ regs equ reglist
|
||||||
|
params equ \}
|
||||||
|
match =regs, regs \{ regs equ \}
|
||||||
|
match =,args, params \{ defargs@proc args \}
|
||||||
|
match =args@proc args, args@proc params \{ defargs@proc args \}
|
||||||
|
parmbytes = $ - (ebp+8)
|
||||||
|
end virtual
|
||||||
|
name # % = parmbytes/4
|
||||||
|
all@vars equ
|
||||||
|
current = 0
|
||||||
|
match prologue:reglist, prologue@proc:<regs> \{ prologue name,flag,parmbytes,localbytes,reglist \}
|
||||||
|
macro locals
|
||||||
|
\{ virtual at ebp-localbytes+current
|
||||||
|
macro label def \\{ match . type,def> \\\{ deflocal@proc .,label,<type \\\} \\}
|
||||||
|
struc db [val] \\{ \common deflocal@proc .,db,val \\}
|
||||||
|
struc du [val] \\{ \common deflocal@proc .,du,val \\}
|
||||||
|
struc dw [val] \\{ \common deflocal@proc .,dw,val \\}
|
||||||
|
struc dp [val] \\{ \common deflocal@proc .,dp,val \\}
|
||||||
|
struc dd [val] \\{ \common deflocal@proc .,dd,val \\}
|
||||||
|
struc dt [val] \\{ \common deflocal@proc .,dt,val \\}
|
||||||
|
struc dq [val] \\{ \common deflocal@proc .,dq,val \\}
|
||||||
|
struc rb cnt \\{ deflocal@proc .,rb cnt, \\}
|
||||||
|
struc rw cnt \\{ deflocal@proc .,rw cnt, \\}
|
||||||
|
struc rp cnt \\{ deflocal@proc .,rp cnt, \\}
|
||||||
|
struc rd cnt \\{ deflocal@proc .,rd cnt, \\}
|
||||||
|
struc rt cnt \\{ deflocal@proc .,rt cnt, \\}
|
||||||
|
struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \}
|
||||||
|
macro endl
|
||||||
|
\{ purge label
|
||||||
|
restruc db,du,dw,dp,dd,dt,dq
|
||||||
|
restruc rb,rw,rp,rd,rt,rq
|
||||||
|
current = $-(ebp-localbytes)
|
||||||
|
end virtual \}
|
||||||
|
macro ret operand
|
||||||
|
\{ match any, operand \\{ retn operand \\}
|
||||||
|
match , operand \\{ match epilogue:reglist, epilogue@proc:<regs>
|
||||||
|
\\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \}
|
||||||
|
macro finish@proc \{ localbytes = (((current-1) shr 2)+1) shl 2
|
||||||
|
end if \} }
|
||||||
|
|
||||||
|
macro defargs@proc [arg]
|
||||||
|
{ common
|
||||||
|
if ~ arg eq
|
||||||
|
forward
|
||||||
|
local ..arg,current@arg
|
||||||
|
match argname:type, arg
|
||||||
|
\{ current@arg equ argname
|
||||||
|
label ..arg type
|
||||||
|
argname equ ..arg
|
||||||
|
if dqword eq type
|
||||||
|
dd ?,?,?,?
|
||||||
|
else if tbyte eq type
|
||||||
|
dd ?,?,?
|
||||||
|
else if qword eq type | pword eq type
|
||||||
|
dd ?,?
|
||||||
|
else
|
||||||
|
dd ?
|
||||||
|
end if \}
|
||||||
|
match =current@arg,current@arg
|
||||||
|
\{ current@arg equ arg
|
||||||
|
arg equ ..arg
|
||||||
|
..arg dd ? \}
|
||||||
|
common
|
||||||
|
args@proc equ current@arg
|
||||||
|
forward
|
||||||
|
restore current@arg
|
||||||
|
common
|
||||||
|
end if }
|
||||||
|
|
||||||
|
macro deflocal@proc name,def,[val]
|
||||||
|
{ common
|
||||||
|
match vars, all@vars \{ all@vars equ all@vars, \}
|
||||||
|
all@vars equ all@vars name
|
||||||
|
forward
|
||||||
|
local ..var,..tmp
|
||||||
|
match =label,def \{ ..tmp equ \}
|
||||||
|
match tmp,..tmp \{ ..var def val \}
|
||||||
|
match ,..tmp \{ label ..var val \}
|
||||||
|
match =?, val \{ ..tmp equ \}
|
||||||
|
match any =dup (=?), val \{ ..tmp equ \}
|
||||||
|
match tmp : value, ..tmp : val
|
||||||
|
\{ tmp: end virtual
|
||||||
|
initlocal@proc ..var,def value
|
||||||
|
virtual at tmp\}
|
||||||
|
common
|
||||||
|
match first rest, ..var, \{ name equ first \} }
|
||||||
|
|
||||||
|
macro initlocal@proc name,def
|
||||||
|
{ virtual at name
|
||||||
|
def
|
||||||
|
size@initlocal = $ - name
|
||||||
|
end virtual
|
||||||
|
position@initlocal = 0
|
||||||
|
while size@initlocal > position@initlocal
|
||||||
|
virtual at name
|
||||||
|
def
|
||||||
|
if size@initlocal - position@initlocal < 2
|
||||||
|
current@initlocal = 1
|
||||||
|
load byte@initlocal byte from name+position@initlocal
|
||||||
|
else if size@initlocal - position@initlocal < 4
|
||||||
|
current@initlocal = 2
|
||||||
|
load word@initlocal word from name+position@initlocal
|
||||||
|
else
|
||||||
|
current@initlocal = 4
|
||||||
|
load dword@initlocal dword from name+position@initlocal
|
||||||
|
end if
|
||||||
|
end virtual
|
||||||
|
if current@initlocal = 1
|
||||||
|
mov byte [name+position@initlocal],byte@initlocal
|
||||||
|
else if current@initlocal = 2
|
||||||
|
mov word [name+position@initlocal],word@initlocal
|
||||||
|
else
|
||||||
|
mov dword [name+position@initlocal],dword@initlocal
|
||||||
|
end if
|
||||||
|
position@initlocal = position@initlocal + current@initlocal
|
||||||
|
end while }
|
||||||
|
|
||||||
|
macro endp
|
||||||
|
{ purge ret,locals,endl
|
||||||
|
finish@proc
|
||||||
|
purge finish@proc
|
||||||
|
restore regs@proc
|
||||||
|
match all,args@proc \{ restore all \}
|
||||||
|
restore args@proc
|
||||||
|
match all,all@vars \{ restore all \} }
|
||||||
|
|
||||||
|
macro local [var]
|
||||||
|
{ common
|
||||||
|
locals
|
||||||
|
forward done@local equ
|
||||||
|
match varname[count]:vartype, var
|
||||||
|
\{ match =BYTE, vartype \\{ varname rb count
|
||||||
|
restore done@local \\}
|
||||||
|
match =WORD, vartype \\{ varname rw count
|
||||||
|
restore done@local \\}
|
||||||
|
match =DWORD, vartype \\{ varname rd count
|
||||||
|
restore done@local \\}
|
||||||
|
match =PWORD, vartype \\{ varname rp count
|
||||||
|
restore done@local \\}
|
||||||
|
match =QWORD, vartype \\{ varname rq count
|
||||||
|
restore done@local \\}
|
||||||
|
match =TBYTE, vartype \\{ varname rt count
|
||||||
|
restore done@local \\}
|
||||||
|
match =DQWORD, vartype \\{ label varname dqword
|
||||||
|
rq count+count
|
||||||
|
restore done@local \\}
|
||||||
|
match , done@local \\{ virtual
|
||||||
|
varname vartype
|
||||||
|
end virtual
|
||||||
|
rb count*sizeof.\#vartype
|
||||||
|
restore done@local \\} \}
|
||||||
|
match :varname:vartype, done@local:var
|
||||||
|
\{ match =BYTE, vartype \\{ varname db ?
|
||||||
|
restore done@local \\}
|
||||||
|
match =WORD, vartype \\{ varname dw ?
|
||||||
|
restore done@local \\}
|
||||||
|
match =DWORD, vartype \\{ varname dd ?
|
||||||
|
restore done@local \\}
|
||||||
|
match =PWORD, vartype \\{ varname dp ?
|
||||||
|
restore done@local \\}
|
||||||
|
match =QWORD, vartype \\{ varname dq ?
|
||||||
|
restore done@local \\}
|
||||||
|
match =TBYTE, vartype \\{ varname dt ?
|
||||||
|
restore done@local \\}
|
||||||
|
match =DQWORD, vartype \\{ label varname dqword
|
||||||
|
dq ?,?
|
||||||
|
restore done@local \\}
|
||||||
|
match , done@local \\{ varname vartype
|
||||||
|
restore done@local \\} \}
|
||||||
|
match ,done@local
|
||||||
|
\{ var
|
||||||
|
restore done@local \}
|
||||||
|
common
|
||||||
|
endl }
|
Loading…
Reference in New Issue
Block a user