Subversion Repositories Kolibri OS

Rev

Rev 1372 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1372 Rev 1432
1
ed_struc_size=76
-
 
2
 
-
 
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
;Basic macros for use editbox                             ;
2
;Basic macros for use editbox                             ;
5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
4
ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
7
ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
5
ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
8
ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
6
ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
9
ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
7
ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
10
shift_color     equ [edi+16]            ;=0x6a9480 ¤«ï ¯à¨¬¥à  ¢®§ì¥¬ ¦¥«¥­ë© 梥⠡®ªá 
8
shift_color     equ [edi+16]            ;=0x6a9480 ¤«ï ¯à¨¬¥à  ¢®§ì¥¬ ¦¥«¥­ë© 梥⠡®ªá 
11
ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
9
ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
12
ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
10
ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
13
ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
11
ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
14
ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
12
ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
15
ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
13
ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
16
ed_mouse_variable 	equ [edi+40]	; 㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî ¤«ï ¡®ªá /£à㯯ë 
14
ed_mouse_variable 	equ [edi+40]	; 㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî ¤«ï ¡®ªá /£à㯯ë 
17
ed_flags        equ [edi+44]            ;ä« £¨
15
ed_flags        equ [edi+44]            ;ä« £¨
18
bp_flags	equ [ebp+44]		;¢ ­¥ª®â®àëå ¯à®æ¥¤ãà å edi ¨á¯®«ì§ã¥âáï, ¢§ ¬¥­ 㪠§ â¥«ì åà ­¨âìáï ¢ ebp
16
bp_flags	equ [ebp+44]		;¢ ­¥ª®â®àëå ¯à®æ¥¤ãà å edi ¨á¯®«ì§ã¥âáï, ¢§ ¬¥­ 㪠§ â¥«ì åà ­¨âìáï ¢ ebp
19
ed_size equ [edi+48]                    ;ª®«-¢® ᨬ¢®«®¢
17
ed_size equ [edi+48]                    ;ª®«-¢® ᨬ¢®«®¢
20
bp_size equ [ebp+48]			;ª®«-¢® ᨬ¢¯®«®¢, ¤«ï  ¤à¥á æ¨¨ ¨á¯«ì§ã¥âáï ebp¡ edi § ­ïâ
18
bp_size equ [ebp+48]			;ª®«-¢® ᨬ¢¯®«®¢, ¤«ï  ¤à¥á æ¨¨ ¨á¯«ì§ã¥âáï ebp¡ edi § ­ïâ
21
ed_pos  equ [edi+52]                    ;¯®§¨æ¨ï ªãàá®à 
19
ed_pos  equ [edi+52]                    ;¯®§¨æ¨ï ªãàá®à 
22
ed_offset       equ [edi+56]            ;ᬥ饭¨¥
20
ed_offset       equ [edi+56]            ;ᬥ饭¨¥
23
cl_curs_x       equ [edi+60]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
21
cl_curs_x       equ [edi+60]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
24
cl_curs_y       equ [edi+64]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
22
cl_curs_y       equ [edi+64]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
25
ed_shift_pos    equ [edi+68]            ;¯®«®¦¥­¨¥ ªãàá®à 
23
ed_shift_pos    equ [edi+68]            ;¯®«®¦¥­¨¥ ªãàá®à 
26
ed_shift_pos_old equ [edi+72]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
24
ed_shift_pos_old equ [edi+72]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
27
 
-
 
28
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
29
;Bit mask from editbox 
-
 
30
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
31
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
-
 
32
ed_always_focus= 100000000000000b
-
 
33
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
-
 
34
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
-
 
35
ed_shift_on_off=1111111111110111b
-
 
36
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
-
 
37
ed_shift_off=   1111111111111011b
-
 
38
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
-
 
39
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
-
 
40
ed_shift_cl=    1111111111100011b
-
 
41
ed_shift_mcl=   1111111111111011b
-
 
42
ed_left_fl=               100000b
-
 
43
ed_right_fl=    1111111111011111b
-
 
44
ed_offset_fl=            1000000b
-
 
45
ed_offset_cl=   1111111110111111b
-
 
46
ed_insert=              10000000b
-
 
47
ed_insert_cl=   1111111101111111b
-
 
48
ed_mouse_on =          100000000b
-
 
49
ed_mous_adn_b=         100011000b
-
 
50
ed_mouse_on_off=1111111011111111b
-
 
51
ed_height=14 ; ¢ëá®â 
-
 
52
 
-
 
53
struc  edit_box width,left,top,color,shift_color,focus_border_color,\
-
 
54
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
-
 
55
{
-
 
56
.width dd width
-
 
57
.left  dd left
-
 
58
.top   dd top
-
 
59
.color dd color
-
 
60
.shift_color dd shift_color
-
 
61
.focus_border_color dd focus_border_color
-
 
62
.blur_border_color  dd blur_border_color
-
 
63
.text_color dd text_color
-
 
64
.max  dd max
-
 
65
.text dd text
-
 
66
.mouse_variable dd mouse_variable
-
 
67
.flags  dd flags+0
-
 
68
.size   dd size+0
-
 
69
.pos    dd pos+0
-
 
70
.offset dd 0
-
 
71
.cl_curs_x dd 0
-
 
72
.cl_curs_y dd 0
-
 
73
.shift     dd 0
-
 
74
.shift_old dd 0
-
 
75
}
-
 
76
macro edit_boxes_set_sys_color start,end,color_table
-
 
77
{
-
 
78
        mov     edi,start
-
 
79
        mov     ecx,((end-start)/ed_struc_size)
-
 
80
        mov     esi,color_table
-
 
81
@@:
-
 
82
        mov     eax,dword [esi+36]
-
 
83
        mov     ebx,dword [esi+20]
-
 
84
        push	dword eax
-
 
85
	pop     dword ed_focus_border_color
-
 
86
        shr     bh,1
-
 
87
        shr     bl,1
-
 
88
        shr     ah,1
-
 
89
        shr     al,1
-
 
90
        add     ah,bh
-
 
91
        add     al,bl
-
 
92
        ror     eax,16
-
 
93
        ror     ebx,16
-
 
94
        shr     bl,1
-
 
95
        shr     al,1
-
 
96
        add     al,bl
-
 
97
        ror     eax,16
-
 
98
	mov	dword ed_blur_border_color,eax
-
 
99
	mov	dword shift_color,eax
-
 
100
        add     edi,ed_struc_size
-
 
101
        loop    @b
-
 
102
}
-
 
103
 
25
 
104
macro init_editbox
26
macro init_editbox
105
{
27
{
106
pushad
28
pushad
107
	mcall
29
	mcall
108
 
30
 
109
popad
31
popad
110
}
32
}
111
 
33
 
112
 
34
 
113
macro use_editbox_draw
35
macro use_editbox_draw
114
{
36
{
115
edit_box:
37
edit_box:
116
.draw:
38
.draw:
117
        pushad
39
        pushad
118
;--- à¨á㥬 à ¬ªã ---
40
;--- à¨á㥬 à ¬ªã ---
119
        mov     edi,dword [esp+36]
41
        mov     edi,dword [esp+36]
120
        call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
42
        call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
121
.draw_bg_cursor_text:
43
.draw_bg_cursor_text:
122
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
44
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
123
        call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
45
        call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
124
;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
46
;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
125
        call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
47
        call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
126
;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
48
;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
127
        call    .draw_shift
49
        call    .draw_shift
128
.draw_cursor_text:
50
.draw_cursor_text:
129
;--- à¨á㥬 ªãàá®à ---
51
;--- à¨á㥬 ªãàá®à ---
130
        ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
52
        ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
131
        test    word ed_flags,ed_focus
53
        test    word ed_flags,ed_focus
132
        jz     	@f
54
        jz     	@f
133
        call    .draw_cursor
55
        call    .draw_cursor
134
@@:
56
@@:
135
        call    .draw_text
57
        call    .draw_text
136
;        ret
58
;        ret
137
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
138
;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢;;
60
;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢;;
139
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
61
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
140
.editbox_exit:
62
.editbox_exit:
141
        popad
63
        popad
142
        ret 4
64
        ret 4
143
}
65
}
144
 
66
 
145
 
67
 
146
macro use_editbox_key
68
macro use_editbox_key
147
{
69
{
148
;==========================================================
70
;==========================================================
149
;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
71
;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
150
;==========================================================
72
;==========================================================
151
edit_box_key:
73
edit_box_key:
152
pushad
74
pushad
153
        mov     edi,dword [esp+36]
75
        mov     edi,dword [esp+36]
154
        test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
76
        test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
155
        je      edit_box.editbox_exit
77
        je      edit_box.editbox_exit
156
        test    word ed_flags,ed_mouse_on
78
        test    word ed_flags,ed_mouse_on
157
        jne     edit_box.editbox_exit
79
        jne     edit_box.editbox_exit
158
 
80
 
159
;à®¢¥àª  ­ ¦ â shift ?
81
;à®¢¥àª  ­ ¦ â shift ?
160
        call    edit_box_key.check_shift
82
        call    edit_box_key.check_shift
161
;----------------------------------------------------------
83
;----------------------------------------------------------
162
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
84
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
163
;----------------------------------------------------------
85
;----------------------------------------------------------
164
use_key_process  backspase,delete,left,right,home,end,insert
86
use_key_process  backspase,delete,left,right,home,end,insert
165
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
87
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
166
;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
88
;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
167
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
168
use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
90
use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
169
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
91
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
170
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
92
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
171
;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
93
;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
172
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
94
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
173
use_key_figures_only
95
use_key_figures_only
174
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
96
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
175
;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
97
;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
176
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
98
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
177
are_key_shift_press
99
are_key_shift_press
178
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
100
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179
; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
101
; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
180
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
102
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
181
are_key_cur_end
103
are_key_cur_end
182
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
104
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
183
;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
105
;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
184
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
106
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
185
use_work_key
107
use_work_key
186
}
108
}
187
 
109
 
188
macro use_editbox_mouse
110
macro use_editbox_mouse
189
{
111
{
190
;==========================================================
112
;==========================================================
191
;=== ®¡à ¡®âª  ¬ëè¨ =======================================
113
;=== ®¡à ¡®âª  ¬ëè¨ =======================================
192
;==========================================================
114
;==========================================================
193
;save for stdcall ebx,esi,edi,ebp
115
;save for stdcall ebx,esi,edi,ebp
194
edit_box_mouse:
116
edit_box_mouse:
195
pushad
117
pushad
196
        mov     edi,dword [esp+36]
118
        mov     edi,dword [esp+36]
197
;debug
119
;debug
198
;----------------------------------------------------------
120
;----------------------------------------------------------
199
;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
121
;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
200
;----------------------------------------------------------
122
;----------------------------------------------------------
201
        mcall   37,2
123
        mcall   37,2
202
;----------------------------------------------------------
124
;----------------------------------------------------------
203
;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
125
;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
204
;----------------------------------------------------------
126
;----------------------------------------------------------
205
        test    eax,1
127
        test    eax,1
206
        jnz     edit_box_mouse.mouse_left_button
128
        jnz     edit_box_mouse.mouse_left_button
207
        and     word ed_flags,ed_mouse_on_off
129
        and     word ed_flags,ed_mouse_on_off
208
	mov	ebx,dword ed_mouse_variable
130
	mov	ebx,dword ed_mouse_variable
209
	push	0
131
	push	0
210
	pop	dword [ebx]
132
	pop	dword [ebx]
211
;        mov     dword [ebx],ebx
133
;        mov     dword [ebx],ebx
212
        jmp     edit_box.editbox_exit
134
        jmp     edit_box.editbox_exit
213
.mouse_left_button:
135
.mouse_left_button:
214
;----------------------------------------------------------
136
;----------------------------------------------------------
215
;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
137
;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
216
;----------------------------------------------------------
138
;----------------------------------------------------------
217
        mov     eax,dword ed_mouse_variable
139
        mov     eax,dword ed_mouse_variable
218
	push	dword [eax]
140
	push	dword [eax]
219
	pop	eax
141
	pop	eax
220
        test    eax,eax
142
        test    eax,eax
221
        jz      @f
143
        jz      @f
222
        cmp     eax,edi
144
        cmp     eax,edi
223
        je      @f
145
        je      @f
224
        jmp     edit_box_mouse._blur
146
        jmp     edit_box_mouse._blur
225
;----------------------------------------------------------
147
;----------------------------------------------------------
226
;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
148
;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
227
;----------------------------------------------------------
149
;----------------------------------------------------------
228
@@:     mcall   37,1
150
@@:     mcall   37,1
229
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
151
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
230
;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
152
;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
231
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
153
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
232
use_work_mouse
154
use_work_mouse
233
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
155
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
234
;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
156
;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
235
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
157
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
236
use_general_func
158
use_general_func
237
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
159
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
238
;”㭪樨 ¤«ï à ¡®âë á key
160
;”㭪樨 ¤«ï à ¡®âë á key
239
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
161
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
240
use_key_func
162
use_key_func
241
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
163
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
242
;”㭪樨 ¤«ï à ¡®âë á mouse
164
;”㭪樨 ¤«ï à ¡®âë á mouse
243
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
165
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
244
use_mouse_func 
166
use_mouse_func 
245
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
167
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
246
;Bit mask from editbox
168
;Bit mask from editbox
247
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
169
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
248
}
170
}
249
 
171
 
250
 
172
 
251
 
173
 
252
 
174
 
253
 
175
 
254
 
176
 
255
 
177
 
256
 
178
 
257
 
179
 
258
 
180
 
259
 
181
 
260
 
182
 
261
 
183
 
262
 
184
 
263
 
185
 
264
 
186
 
265
 
187
 
266
 
188
 
267
 
189
 
268
 
190
 
269
 
191
 
270
 
192
 
271
 
193
 
272
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
194
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
273
;­¨¦¥ à á¯®«®¦¥­ë ä㭪樨 ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì  «£®à¨â¬
195
;­¨¦¥ à á¯®«®¦¥­ë ä㭪樨 ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì  «£®à¨â¬
274
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
196
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
275
;Œ ªà®á ¤«ï ¢ë¢®¤  ®á­®¢­ëå ä㭪権 ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬
197
;Œ ªà®á ¤«ï ¢ë¢®¤  ®á­®¢­ëå ä㭪権 ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬
276
macro use_general_func
198
macro use_general_func
277
{
199
{
278
;debug_func
200
;debug_func
279
;----------------------------------------------------------
201
;----------------------------------------------------------
280
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ¢ë¤¥«¥­®© ç á⨠-----------------
202
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ¢ë¤¥«¥­®© ç á⨠-----------------
281
;----------------------------------------------------------
203
;----------------------------------------------------------
282
edit_box.draw_shift:
204
edit_box.draw_shift:
283
        test    word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
205
        test    word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
284
        jz      @f
206
        jz      @f
285
        mov     ebp,shift_color
207
        mov     ebp,shift_color
286
        mov     ebx,dword       ed_shift_pos
208
        mov     ebx,dword       ed_shift_pos
287
        call    edit_box_key.sh_cl_
209
        call    edit_box_key.sh_cl_
288
@@:     ret
210
@@:     ret
289
;----------------------------------------------------------
211
;----------------------------------------------------------
290
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
212
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
291
;----------------------------------------------------------
213
;----------------------------------------------------------
292
edit_box.draw_text:
214
edit_box.draw_text:
293
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
215
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
294
;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
216
;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
295
        call    edit_box.get_n
217
        call    edit_box.get_n
296
        mov     esi,ed_size
218
        mov     esi,ed_size
297
        mov     ebx,ed_offset
219
        mov     ebx,ed_offset
298
        sub     esi,ebx
220
        sub     esi,ebx
299
        cmp     eax,esi
221
        cmp     eax,esi
300
        jae     @F
222
        jae     @F
301
        mov     esi,eax         ;çâ®¡ë ­¥ ¢ë室¨âì §  ¯à¥¤¥«ë íªà ­ 
223
        mov     esi,eax         ;çâ®¡ë ­¥ ¢ë室¨âì §  ¯à¥¤¥«ë íªà ­ 
302
;--- à¨á㥬 ⥪áâ ---                                            
224
;--- à¨á㥬 ⥪áâ ---                                            
303
@@:     mov     eax,4
225
@@:     mov     eax,4
304
        mov     ebx,ed_left
226
        mov     ebx,ed_left
305
        mov     edx,ed_offset
227
        mov     edx,ed_offset
306
        add     ebx,2
228
        add     ebx,2
307
        shl     ebx,16
229
        shl     ebx,16
308
        add     ebx,ed_top
230
        add     ebx,ed_top
309
        mov     ecx,ed_text_color
231
        mov     ecx,ed_text_color
310
        add     ebx,4
232
        add     ebx,4
311
        add     edx,ed_text
233
        add     edx,ed_text
312
        mcall
234
        mcall
313
ret
235
ret
314
;----------------------------------------------------------
236
;----------------------------------------------------------
315
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
237
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
316
;¢å®¤­ë¥ ¤ ­­ë¥
238
;¢å®¤­ë¥ ¤ ­­ë¥
317
;eax
239
;eax
318
;edx - color
240
;edx - color
319
;----------------------------------------------------------
241
;----------------------------------------------------------
320
;¢å®¤ ⮫쪮 梥â edx
242
;¢å®¤ ⮫쪮 梥â edx
321
edit_box.draw_bg:
243
edit_box.draw_bg:
322
        mov     ebx,ed_left
244
        mov     ebx,ed_left
323
        add     ebx,1
245
        add     ebx,1
324
        mov     edx,ed_color
246
        mov     edx,ed_color
325
        shl     ebx,16
247
        shl     ebx,16
326
        add     ebx,ed_width
248
        add     ebx,ed_width
327
        sub     ebx,1
249
        sub     ebx,1
328
edit_box.draw_bg_eax:
250
edit_box.draw_bg_eax:
329
        mov     ecx,ed_top
251
        mov     ecx,ed_top
330
        mov     eax,13
252
        mov     eax,13
331
        add     ecx,1
253
        add     ecx,1
332
        shl     ecx,16
254
        shl     ecx,16
333
        add     ecx,ed_height
255
        add     ecx,ed_height
334
        dec     ecx
256
        dec     ecx
335
        mcall   
257
        mcall   
336
ret
258
ret
337
;----------------------------------------------------------
259
;----------------------------------------------------------
338
;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨­¥ ª®¬¯®­¥­â 
260
;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨­¥ ª®¬¯®­¥­â 
339
;----------------------------------------------------------
261
;----------------------------------------------------------
340
edit_box.get_n:
262
edit_box.get_n:
341
        mov     eax,ed_width    ;¯®«ã祬 è¨à¨­ã ª®¬¯®­¥­â 
263
        mov     eax,ed_width    ;¯®«ã祬 è¨à¨­ã ª®¬¯®­¥­â 
342
        xor     edx,edx   ;१ã«ìâ â à á¯®«®£ ¥âáï ¢ ¯ à¥ edx:eax ¢ eax - ®áâ â®ª
264
        xor     edx,edx   ;१ã«ìâ â à á¯®«®£ ¥âáï ¢ ¯ à¥ edx:eax ¢ eax - ®áâ â®ª
343
        sub     eax,4           ;¢ëç⨬ 4
265
        sub     eax,4           ;¢ëç⨬ 4
344
        mov     ebx,6           ;§ £à㧬¨ ¤¥«¨â¥«ì
266
        mov     ebx,6           ;§ £à㧬¨ ¤¥«¨â¥«ì
345
        div     ebx             ;à §¬¤¥«¨¬ ­  6
267
        div     ebx             ;à §¬¤¥«¨¬ ­  6
346
ret
268
ret
347
;----------------------------------------------------------
269
;----------------------------------------------------------
348
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
270
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
349
;----------------------------------------------------------
271
;----------------------------------------------------------
350
;¢å®¤­ë¥ ebp- 梥â
272
;¢å®¤­ë¥ ebp- 梥â
351
edit_box.clear_cursor:
273
edit_box.clear_cursor:
352
        mov     edx,ebp
274
        mov     edx,ebp
353
        mov     ebx,cl_curs_x
275
        mov     ebx,cl_curs_x
354
        mov     ecx,cl_curs_y
276
        mov     ecx,cl_curs_y
355
        jmp     edit_box.draw_curs
277
        jmp     edit_box.draw_curs
356
edit_box.draw_cursor:
278
edit_box.draw_cursor:
357
        mov     edx,ed_text_color
279
        mov     edx,ed_text_color
358
        mov     ebx,ed_pos
280
        mov     ebx,ed_pos
359
        mov     ecx,ed_offset
281
        mov     ecx,ed_offset
360
        sub     ebx,ecx
282
        sub     ebx,ecx
361
 
283
 
362
        lea     ebx,[ebx*2+ebx]
284
        lea     ebx,[ebx*2+ebx]
363
        shl     ebx,1
285
        shl     ebx,1
364
        ;imul   ebx,6
286
        ;imul   ebx,6
365
        add     ebx,ed_left
287
        add     ebx,ed_left
366
        mov     ecx,ed_top
288
        mov     ecx,ed_top
367
        inc     ebx
289
        inc     ebx
368
        add     ecx,2
290
        add     ecx,2
369
        mov     ebp,ebx
291
        mov     ebp,ebx
370
        shl     ebx,16
292
        shl     ebx,16
371
        mov     bx,bp
293
        mov     bx,bp
372
        mov     ebp,ecx
294
        mov     ebp,ecx
373
        
295
        
374
        shl     ecx,16
296
        shl     ecx,16
375
        mov     cx,bp
297
        mov     cx,bp
376
        add     ecx,ed_height-4
298
        add     ecx,ed_height-4
377
        
299
        
378
        mov     cl_curs_x,ebx
300
        mov     cl_curs_x,ebx
379
        mov     cl_curs_y,ecx
301
        mov     cl_curs_y,ecx
380
edit_box.draw_curs:              
302
edit_box.draw_curs:              
381
        mcall   38
303
        mcall   38
382
ret
304
ret
383
;----------------------------------------------------------
305
;----------------------------------------------------------
384
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
306
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
385
;----------------------------------------------------------
307
;----------------------------------------------------------
386
edit_box.draw_border:
308
edit_box.draw_border:
387
;--- 梥â à ¬ª¨ ---
309
;--- 梥â à ¬ª¨ ---
388
        test    word ed_flags,ed_focus
310
        test    word ed_flags,ed_focus
389
        mov     edx,ed_focus_border_color
311
        mov     edx,ed_focus_border_color
390
        jne     @f
312
        jne     @f
391
        mov     edx,ed_blur_border_color
313
        mov     edx,ed_blur_border_color
392
@@:
314
@@:
393
;--- ᢥàåã ---
315
;--- ᢥàåã ---
394
        mov     eax,38
316
        mov     eax,38
395
        mov     ebx,ed_left
317
        mov     ebx,ed_left
396
        mov     ecx,ebx
318
        mov     ecx,ebx
397
        shl     ebx,16
319
        shl     ebx,16
398
        mov     bx,cx
320
        mov     bx,cx
399
        add     ebx,ed_width
321
        add     ebx,ed_width
400
        mov     ecx,ed_top
322
        mov     ecx,ed_top
401
        mov     esi,ecx
323
        mov     esi,ecx
402
        shl     ecx,16
324
        shl     ecx,16
403
        mov     cx,si
325
        mov     cx,si
404
        mcall
326
        mcall
405
;--- á­¨§ã ---
327
;--- á­¨§ã ---
406
        mov     esi,ecx
328
        mov     esi,ecx
407
        add     ecx,ed_height
329
        add     ecx,ed_height
408
        mov     ebp,ecx
330
        mov     ebp,ecx
409
        shl     ecx,16
331
        shl     ecx,16
410
        mov     cx,bp
332
        mov     cx,bp
411
        mcall
333
        mcall
412
;--- á«¥¢  ---
334
;--- á«¥¢  ---
413
        mov     cx,si
335
        mov     cx,si
414
        mov     ebp,ebx
336
        mov     ebp,ebx
415
        sub     ebx,ed_width
337
        sub     ebx,ed_width
416
        mcall
338
        mcall
417
;--- á¯à ¢  ---
339
;--- á¯à ¢  ---
418
        mov     ebx,ebp
340
        mov     ebx,ebp
419
        shl     ebx,16
341
        shl     ebx,16
420
        mov     bx,bp
342
        mov     bx,bp
421
        mcall
343
        mcall
422
ret
344
ret
423
;----------------------------------------------------------
345
;----------------------------------------------------------
424
;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
346
;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
425
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
347
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
426
;--- ¥á«¨ ᬥ饭¨¥ ¡ë«® ãáâ ­®¢ª  ä« £  ed_offset_cl ¨­ ç¥
348
;--- ¥á«¨ ᬥ饭¨¥ ¡ë«® ãáâ ­®¢ª  ä« £  ed_offset_cl ¨­ ç¥
427
; ¥á«¨ ­¨ç¥£® ­¥ ¨§¬¥­¨«®áì â® ¢ëáâ ¢«¥­¨¥ ed_offset_fl
349
; ¥á«¨ ­¨ç¥£® ­¥ ¨§¬¥­¨«®áì â® ¢ëáâ ¢«¥­¨¥ ed_offset_fl
428
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags
350
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags
429
;----------------------------------------------------------
351
;----------------------------------------------------------
430
edit_box.check_offset:
352
edit_box.check_offset:
431
pushad
353
pushad
432
        mov     ecx,ed_pos
354
        mov     ecx,ed_pos
433
        mov     ebx,ed_offset
355
        mov     ebx,ed_offset
434
        cmp     ebx,ecx
356
        cmp     ebx,ecx
435
        ja      edit_box.sub_8
357
        ja      edit_box.sub_8
436
 
358
 
437
        push    ebx
359
        push    ebx
438
        call    edit_box.get_n                  ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ à¥ ॣ¨áâ஢ edx:eax 
360
        call    edit_box.get_n                  ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ à¥ ॣ¨áâ஢ edx:eax 
439
        pop     ebx
361
        pop     ebx
440
        mov     edx,ebx
362
        mov     edx,ebx
441
        add     edx,eax         ;ed_offset+width editbox
363
        add     edx,eax         ;ed_offset+width editbox
442
        inc     edx             ;­¥®¡å®¤¨¬® ¤«ï ­®¬ «ì­®£® ¯®«®¦¥­¨ï ªãàá®à  ¢ ªà ©­¥© «¥¢®© ¯®§¨æ¨¨
364
        inc     edx             ;­¥®¡å®¤¨¬® ¤«ï ­®¬ «ì­®£® ¯®«®¦¥­¨ï ªãàá®à  ¢ ªà ©­¥© «¥¢®© ¯®§¨æ¨¨
443
        cmp     edx,ecx
365
        cmp     edx,ecx
444
        ja      @f
366
        ja      @f
445
 
367
 
446
        mov     edx,ed_size
368
        mov     edx,ed_size
447
        cmp     edx,ecx
369
        cmp     edx,ecx
448
        je      edit_box.add_end
370
        je      edit_box.add_end
449
 
371
 
450
        sub     edx,ecx
372
        sub     edx,ecx
451
        cmp     edx,8
373
        cmp     edx,8
452
        jbe     edit_box.add_8
374
        jbe     edit_box.add_8
453
        add     ebx,8
375
        add     ebx,8
454
        jmp     edit_box.chk_d
376
        jmp     edit_box.chk_d
455
 
377
 
456
edit_box.sub_8:
378
edit_box.sub_8:
457
	cmp     ecx,0
379
	cmp     ecx,0
458
        je      edit_box.sub_min
380
        je      edit_box.sub_min
459
        cmp     ebx,8
381
        cmp     ebx,8
460
        jbe     edit_box.sub_min
382
        jbe     edit_box.sub_min
461
        sub     ebx,8   ;ebx=ed_offset
383
        sub     ebx,8   ;ebx=ed_offset
462
        jmp     edit_box.chk_d
384
        jmp     edit_box.chk_d
463
edit_box.sub_min:
385
edit_box.sub_min:
464
        xor     ebx,ebx
386
        xor     ebx,ebx
465
        jmp     edit_box.chk_d
387
        jmp     edit_box.chk_d
466
 
388
 
467
edit_box.add_end:sub    edx,eax
389
edit_box.add_end:sub    edx,eax
468
        mov     ebx,edx
390
        mov     ebx,edx
469
        jmp     edit_box.chk_d
391
        jmp     edit_box.chk_d
470
edit_box.add_8: add     ebx,edx
392
edit_box.add_8: add     ebx,edx
471
edit_box.chk_d: mov     ed_offset,ebx
393
edit_box.chk_d: mov     ed_offset,ebx
472
        call    edit_box.draw_bg
394
        call    edit_box.draw_bg
473
        and     word ed_flags,ed_offset_cl
395
        and     word ed_flags,ed_offset_cl
474
edit_ex
396
edit_ex
475
@@:
397
@@:
476
        or      word ed_flags,ed_offset_fl
398
        or      word ed_flags,ed_offset_fl
477
edit_ex
399
edit_ex
478
}
400
}
479
 
401
 
480
macro use_key_func
402
macro use_key_func
481
{
403
{
482
;Ž¡à ¡®âª  Shift ¤«ï á­ïâ¨ï ¢ë¤¥«¥­¨ï ­¥¨§¢¥áâ­®© ®¡« áâ¨
404
;Ž¡à ¡®âª  Shift ¤«ï á­ïâ¨ï ¢ë¤¥«¥­¨ï ­¥¨§¢¥áâ­®© ®¡« áâ¨
483
edit_box_key.shift: ;;;;;;;SHIFT
405
edit_box_key.shift: ;;;;;;;SHIFT
484
        test    word ed_flags,ed_shift
406
        test    word ed_flags,ed_shift
485
        je      edit_box_key.f_exit
407
        je      edit_box_key.f_exit
486
 
408
 
487
@@:     mov     ebp,shift_color
409
@@:     mov     ebp,shift_color
488
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
410
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
489
        mov     ebx,dword       ed_shift_pos
411
        mov     ebx,dword       ed_shift_pos
490
        call    edit_box_key.sh_cl_
412
        call    edit_box_key.sh_cl_
491
        jmp     edit_box.draw_cursor_text
413
        jmp     edit_box.draw_cursor_text
492
;;;;;;;;;;;;;;;;;;;;;
414
;;;;;;;;;;;;;;;;;;;;;
493
edit_box_key.f_exit:    call   edit_box.check_offset
415
edit_box_key.f_exit:    call   edit_box.check_offset
494
        and     word ed_flags,ed_shift_cl
416
        and     word ed_flags,ed_shift_cl
495
        call    edit_box_key.enable_null
417
        call    edit_box_key.enable_null
496
        jmp     edit_box.draw_cursor_text
418
        jmp     edit_box.draw_cursor_text
497
edit_box_key.sh_cl_:
419
edit_box_key.sh_cl_:
498
;;;;;;SHIFT end
420
;;;;;;SHIFT end
499
;®¡à ¡®âª  ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥­¨¨ ¢ë¤¥«¥­¨ï
421
;®¡à ¡®âª  ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥­¨¨ ¢ë¤¥«¥­¨ï
500
;¤«ï ®¡à ¡®âª¨ á­ïâ¨ï ¢ë¤¥«¥­¨ï
422
;¤«ï ®¡à ¡®âª¨ á­ïâ¨ï ¢ë¤¥«¥­¨ï
501
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
423
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
502
        mov     eax,dword       ed_pos
424
        mov     eax,dword       ed_pos
503
        cmp     eax,ebx
425
        cmp     eax,ebx
504
 
426
 
505
        jae     edit_box_key.sh_n
427
        jae     edit_box_key.sh_n
506
        push    eax  ;¬¥­ì襥 ¢ eax
428
        push    eax  ;¬¥­ì襥 ¢ eax
507
        push    ebx  ;¡®«ì襥
429
        push    ebx  ;¡®«ì襥
508
        jmp     edit_box_key.sh_n1
430
        jmp     edit_box_key.sh_n1
509
                     ;¥á«¨ ¨­ ç¥
431
                     ;¥á«¨ ¨­ ç¥
510
edit_box_key.sh_n:
432
edit_box_key.sh_n:
511
	push    ebx  
433
	push    ebx  
512
        push    eax
434
        push    eax
513
edit_box_key.sh_n1: 
435
edit_box_key.sh_n1: 
514
        call    edit_box.check_offset
436
        call    edit_box.check_offset
515
        call    edit_box.get_n
437
        call    edit_box.get_n
516
        mov     edx,eax ;size of ed_box
438
        mov     edx,eax ;size of ed_box
517
        mov     ecx,ed_offset
439
        mov     ecx,ed_offset
518
        add     eax,ecx ;eax = w_off= ed_offset+width
440
        add     eax,ecx ;eax = w_off= ed_offset+width
519
        mov     edx,eax ;save
441
        mov     edx,eax ;save
520
        pop     ebx     ;¡®«ì襥
442
        pop     ebx     ;¡®«ì襥
521
        pop     eax     ;¬¥­ì襥
443
        pop     eax     ;¬¥­ì襥
522
 
444
 
523
        cmp     eax,ecx         ;áà ¢­¥­¨¥ á ¬¥­ì襣® á offset.
445
        cmp     eax,ecx         ;áà ¢­¥­¨¥ á ¬¥­ì襣® á offset.
524
        jae     edit_box_key.f_f            ;¥á«¨ ¡®«ìè¥
446
        jae     edit_box_key.f_f            ;¥á«¨ ¡®«ìè¥
525
        xor     eax,eax
447
        xor     eax,eax
526
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
448
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
527
        jb      @f
449
        jb      @f
528
        sub     ebx,ecx
450
        sub     ebx,ecx
529
        jmp     edit_box_key.nxt_f
451
        jmp     edit_box_key.nxt_f
530
@@:     mov     ebx,edx
452
@@:     mov     ebx,edx
531
        sub     ebx,ecx 
453
        sub     ebx,ecx 
532
        jmp     edit_box_key.nxt_f
454
        jmp     edit_box_key.nxt_f
533
edit_box_key.f_f:   
455
edit_box_key.f_f:   
534
        sub     eax,ecx
456
        sub     eax,ecx
535
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
457
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
536
        jle     @f
458
        jle     @f
537
        sub     ebx,ecx
459
        sub     ebx,ecx
538
        sub     ebx,eax
460
        sub     ebx,eax
539
        jmp     edit_box_key.nxt_f
461
        jmp     edit_box_key.nxt_f
540
@@:
462
@@:
541
        mov     ebx,edx 
463
        mov     ebx,edx 
542
        sub     ebx,ecx
464
        sub     ebx,ecx
543
        sub     ebx,eax
465
        sub     ebx,eax
544
edit_box_key.nxt_f:
466
edit_box_key.nxt_f:
545
        mov     edx,ebx
467
        mov     edx,ebx
546
        lea     ebx,[eax*2+eax]
468
        lea     ebx,[eax*2+eax]
547
        shl     ebx,1
469
        shl     ebx,1
548
        add     ebx,ed_left
470
        add     ebx,ed_left
549
        inc     ebx
471
        inc     ebx
550
        shl     ebx,16
472
        shl     ebx,16
551
        lea     ecx,[edx*2+edx]
473
        lea     ecx,[edx*2+edx]
552
        shl     ecx,1   
474
        shl     ecx,1   
553
        mov     bx,cx
475
        mov     bx,cx
554
        inc     ebx
476
        inc     ebx
555
        mov     edx,ebp;shift_color
477
        mov     edx,ebp;shift_color
556
 
478
 
557
        call    edit_box.draw_bg_eax
479
        call    edit_box.draw_bg_eax
558
@@:     call    edit_box_key.enable_null
480
@@:     call    edit_box_key.enable_null
559
        ret
481
        ret
560
;;;;;;;;;;;;;;;;;;;;;
482
;;;;;;;;;;;;;;;;;;;;;
561
;“áâ ­®¢ª - á­ï⨥ ¢ë¤¥«¥­¨ï ¢ ®¤¨­ ᨬ¢®«
483
;“áâ ­®¢ª - á­ï⨥ ¢ë¤¥«¥­¨ï ¢ ®¤¨­ ᨬ¢®«
562
;;;;;;;;;;;;;;;;;;;;;
484
;;;;;;;;;;;;;;;;;;;;;
563
edit_box_key.drw_sim:
485
edit_box_key.drw_sim:
564
        mov     eax,dword       ed_pos
486
        mov     eax,dword       ed_pos
565
        call    edit_box_key.draw_rectangle   ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª á § ¤ ­­ë¬ 梥⮬
487
        call    edit_box_key.draw_rectangle   ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª á § ¤ ­­ë¬ 梥⮬
566
        jmp     @b
488
        jmp     @b
567
;;;;;;;;;;;;;;;;;;;;;
489
;;;;;;;;;;;;;;;;;;;;;
568
;”ãªæ¨ï ãáâ ­®¢ª¨ ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
490
;”ãªæ¨ï ãáâ ­®¢ª¨ ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
569
;‹®£¨ª : 
491
;‹®£¨ª : 
570
;;;;;;;;;;
492
;;;;;;;;;;
571
edit_box_key.draw_wigwag:
493
edit_box_key.draw_wigwag:
572
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
494
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
573
        mov     ebp,shift_color
495
        mov     ebp,shift_color
574
        call    edit_box.clear_cursor
496
        call    edit_box.clear_cursor
575
 
497
 
576
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
498
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
577
        mov     ebp,shift_color
499
        mov     ebp,shift_color
578
        mov     eax,dword       ed_pos
500
        mov     eax,dword       ed_pos
579
        test    word ed_flags,ed_left_fl
501
        test    word ed_flags,ed_left_fl
580
        jz      edit_box_key.low
502
        jz      edit_box_key.low
581
        jmp     @f
503
        jmp     @f
582
;;;;;;;;;;
504
;;;;;;;;;;
583
;”ãªæ¨ï 㤠«¥­¨ï ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
505
;”ãªæ¨ï 㤠«¥­¨ï ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
584
;‹®£¨ª : 
506
;‹®£¨ª : 
585
;;;;;;;;;;
507
;;;;;;;;;;
586
edit_box_key.draw_wigwag_cl:
508
edit_box_key.draw_wigwag_cl:
587
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
509
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
588
        mov     ebp,ed_color
510
        mov     ebp,ed_color
589
        call    edit_box.clear_cursor
511
        call    edit_box.clear_cursor
590
 
512
 
591
        mov     ebp,ed_color
513
        mov     ebp,ed_color
592
        mov     eax,dword       ed_pos
514
        mov     eax,dword       ed_pos
593
        test    word ed_flags,ed_left_fl
515
        test    word ed_flags,ed_left_fl
594
        jz      edit_box_key.low
516
        jz      edit_box_key.low
595
@@:     call    edit_box_key.draw_rectangle  ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª § ªà è¨¢ ¥¬®© ®¡« áâ¨
517
@@:     call    edit_box_key.draw_rectangle  ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª § ªà è¨¢ ¥¬®© ®¡« áâ¨
596
        ret
518
        ret
597
edit_box_key.low:   dec     eax
519
edit_box_key.low:   dec     eax
598
        jmp     @b
520
        jmp     @b
599
;¢å®¤­®© ¯ à ¬¥âà ebx - ed_pos
521
;¢å®¤­®© ¯ à ¬¥âà ebx - ed_pos
600
edit_box_key.sh_first_sh:
522
edit_box_key.sh_first_sh:
601
        test    word ed_flags,ed_shift
523
        test    word ed_flags,ed_shift
602
        je      @f
524
        je      @f
603
        mov     dword ed_shift_pos_old,ebx
525
        mov     dword ed_shift_pos_old,ebx
604
        test    word ed_flags,ed_shift_on
526
        test    word ed_flags,ed_shift_on
605
        jne     @f
527
        jne     @f
606
        mov     dword ed_shift_pos,ebx
528
        mov     dword ed_shift_pos,ebx
607
        or      word ed_flags,ed_shift_on
529
        or      word ed_flags,ed_shift_on
608
@@:     ret
530
@@:     ret
609
;Ž¡à ¡®âª  ªà ©­¨å ¯®«®¦¥­¨© ¢ editbox ¯à¨ ­ ¦ â®¬ shift
531
;Ž¡à ¡®âª  ªà ©­¨å ¯®«®¦¥­¨© ¢ editbox ¯à¨ ­ ¦ â®¬ shift
610
;¯à®¨§¢®¤¨â á­ï⨥ ¢ë¤¥«¥­¨¥, ¥á«¨ ­¥â shift
532
;¯à®¨§¢®¤¨â á­ï⨥ ¢ë¤¥«¥­¨¥, ¥á«¨ ­¥â shift
611
;¨­ ç¥ ¢®®¡é¥ ¢ë室¨â
533
;¨­ ç¥ ¢®®¡é¥ ¢ë室¨â
612
edit_box_key.sh_st_of:
534
edit_box_key.sh_st_of:
613
        test    word ed_flags,ed_shift
535
        test    word ed_flags,ed_shift
614
        jne     @f
536
        jne     @f
615
        test    word ed_flags,ed_shift_bac
537
        test    word ed_flags,ed_shift_bac
616
        je      @f
538
        je      @f
617
        mov     ebp,ed_color
539
        mov     ebp,ed_color
618
        mov     ebx,dword       ed_shift_pos
540
        mov     ebx,dword       ed_shift_pos
619
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
541
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
620
        and     word ed_flags,ed_shift_cl ; ®ç¨á⪠ ®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥­¨¥ 
542
        and     word ed_flags,ed_shift_cl ; ®ç¨á⪠ ®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥­¨¥ 
621
        jmp     edit_box.draw_cursor_text
543
        jmp     edit_box.draw_cursor_text
622
@@:
544
@@:
623
        and     word ed_flags,ed_shift_off
545
        and     word ed_flags,ed_shift_off
624
        popad
546
        popad
625
        ret     4
547
        ret     4
626
;¯à®¢¥àª  á®áâ®ï­¨ï shift ¡ë« «¨ ®­ ­ ¦ â à ­ìè¥?
548
;¯à®¢¥àª  á®áâ®ï­¨ï shift ¡ë« «¨ ®­ ­ ¦ â à ­ìè¥?
627
edit_box_key.sh_enable:
549
edit_box_key.sh_enable:
628
        test    word ed_flags,ed_shift
550
        test    word ed_flags,ed_shift
629
        jne     edit_box_key.sh_ext_en ;­ à¨á®¢ âì § ªà è¥­ë© ¯àאַ㣮«ì­¨ª
551
        jne     edit_box_key.sh_ext_en ;­ à¨á®¢ âì § ªà è¥­ë© ¯àאַ㣮«ì­¨ª
630
 
552
 
631
        test    word ed_flags,ed_shift_bac
553
        test    word ed_flags,ed_shift_bac
632
        je      @f
554
        je      @f
633
        call    edit_box.check_offset
555
        call    edit_box.check_offset
634
 
556
 
635
        mov     ebp,ed_color
557
        mov     ebp,ed_color
636
        mov     ebx,dword       ed_shift_pos
558
        mov     ebx,dword       ed_shift_pos
637
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
559
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
638
        call    edit_box_key.draw_wigwag_cl 
560
        call    edit_box_key.draw_wigwag_cl 
639
        and     word ed_flags,ed_shift_cl ; 1¢ à ­¥ ­ã¦­® 
561
        and     word ed_flags,ed_shift_cl ; 1¢ à ­¥ ­ã¦­® 
640
        ret
562
        ret
641
 
563
 
642
@@:     mov     ebp,ed_color
564
@@:     mov     ebp,ed_color
643
        call    edit_box.clear_cursor
565
        call    edit_box.clear_cursor
644
        call    edit_box.check_offset
566
        call    edit_box.check_offset
645
        ret
567
        ret
646
edit_box_key.sh_ext_en:     
568
edit_box_key.sh_ext_en:     
647
        call    edit_box.check_offset
569
        call    edit_box.check_offset
648
        test    word ed_flags,ed_offset_fl
570
        test    word ed_flags,ed_offset_fl
649
        je      @f
571
        je      @f
650
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
572
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
651
        mov     eax,dword       ed_shift_pos
573
        mov     eax,dword       ed_shift_pos
652
        mov     ebx,dword       ed_pos
574
        mov     ebx,dword       ed_pos
653
        mov     ecx,dword       ed_shift_pos_old
575
        mov     ecx,dword       ed_shift_pos_old
654
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
576
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
655
        cmp     eax,ecx
577
        cmp     eax,ecx
656
        je      edit_box_key.1_shem
578
        je      edit_box_key.1_shem
657
        jb      edit_box_key.smaller
579
        jb      edit_box_key.smaller
658
        cmp     ecx,ebx
580
        cmp     ecx,ebx
659
        ja      edit_box_key.1_shem
581
        ja      edit_box_key.1_shem
660
        call    edit_box_key.draw_wigwag_cl ;clear
582
        call    edit_box_key.draw_wigwag_cl ;clear
661
        jmp     edit_box_key.sh_e_end
583
        jmp     edit_box_key.sh_e_end
662
edit_box_key.smaller:
584
edit_box_key.smaller:
663
        cmp     ecx,ebx
585
        cmp     ecx,ebx
664
        jb      edit_box_key.1_shem
586
        jb      edit_box_key.1_shem
665
        call    edit_box_key.draw_wigwag_cl ;clear
587
        call    edit_box_key.draw_wigwag_cl ;clear
666
        jmp     edit_box_key.sh_e_end
588
        jmp     edit_box_key.sh_e_end
667
;alike  =
589
;alike  =
668
edit_box_key.1_shem:        call   edit_box_key.draw_wigwag
590
edit_box_key.1_shem:        call   edit_box_key.draw_wigwag
669
edit_box_key.sh_e_end:      and     word ed_flags,ed_shift_off
591
edit_box_key.sh_e_end:      and     word ed_flags,ed_shift_off
670
        ret
592
        ret
671
@@:     mov     ebp,shift_color
593
@@:     mov     ebp,shift_color
672
        mov     ebx,dword       ed_shift_pos
594
        mov     ebx,dword       ed_shift_pos
673
        call    edit_box_key.sh_cl_
595
        call    edit_box_key.sh_cl_
674
        jmp     edit_box_key.sh_e_end
596
        jmp     edit_box_key.sh_e_end
675
;äã­ªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ­ ¦ â¨¨ home and end
597
;äã­ªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ­ ¦ â¨¨ home and end
676
edit_box_key.sh_home_end:
598
edit_box_key.sh_home_end:
677
        mov     ebp,ed_color
599
        mov     ebp,ed_color
678
        call    edit_box.clear_cursor
600
        call    edit_box.clear_cursor
679
        test    word ed_flags,ed_shift_bac
601
        test    word ed_flags,ed_shift_bac
680
        je      @f
602
        je      @f
681
        mov     ebp,ed_color
603
        mov     ebp,ed_color
682
        mov     ebx,dword       ed_shift_pos_old
604
        mov     ebx,dword       ed_shift_pos_old
683
        call    edit_box_key.sh_cl_
605
        call    edit_box_key.sh_cl_
684
 
606
 
685
@@:     test    word ed_flags,ed_shift
607
@@:     test    word ed_flags,ed_shift
686
        je      edit_box_key.sh_exit_ ;¢ë©â¨
608
        je      edit_box_key.sh_exit_ ;¢ë©â¨
687
        mov     ebp,shift_color
609
        mov     ebp,shift_color
688
        mov     ebx,dword       ed_shift_pos
610
        mov     ebx,dword       ed_shift_pos
689
        call    edit_box_key.sh_cl_
611
        call    edit_box_key.sh_cl_
690
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
612
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
691
        jmp     edit_box_key.sh_e_end
613
        jmp     edit_box_key.sh_e_end
692
edit_box_key.sh_exit_:      
614
edit_box_key.sh_exit_:      
693
	call    edit_box.check_offset
615
	call    edit_box.check_offset
694
        ret
616
        ret
695
;äã­ªæ¨ï ¢­¥á¥­¨ï 0 ¯®  ¤à¥áã ed_size+1
617
;äã­ªæ¨ï ¢­¥á¥­¨ï 0 ¯®  ¤à¥áã ed_size+1
696
edit_box_key.enable_null:
618
edit_box_key.enable_null:
697
        pusha
619
        pusha
698
        mov     eax,ed_size
620
        mov     eax,ed_size
699
        mov     ebx,ed_text
621
        mov     ebx,ed_text
700
        test    eax,eax
622
        test    eax,eax
701
        add     eax,ebx
623
        add     eax,ebx
702
        jne     @f
624
        jne     @f
703
        inc     eax
625
        inc     eax
704
@@:     xor     ebx,ebx
626
@@:     xor     ebx,ebx
705
        mov     [eax],bl
627
        mov     [eax],bl
706
edit_ex
628
edit_ex
707
;- 㤠«¥­¨¥ ᨬ¢®« 
629
;- 㤠«¥­¨¥ ᨬ¢®« 
708
;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
630
;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
709
edit_box_key.del_char:
631
edit_box_key.del_char:
710
        mov     esi,ed_text
632
        mov     esi,ed_text
711
        test    word ed_flags,ed_shift_on
633
        test    word ed_flags,ed_shift_on
712
        je      @f
634
        je      @f
713
        mov     eax,dword ed_shift_pos
635
        mov     eax,dword ed_shift_pos
714
        mov     ebx,esi
636
        mov     ebx,esi
715
        cmp     eax,ecx
637
        cmp     eax,ecx
716
        jae     edit_box_key.dh_n
638
        jae     edit_box_key.dh_n
717
 
639
 
718
        mov     ed_pos,eax      ;çâ® ¡ë ­¥ ¡ë«® ã¡¥£ ­¨ï ªãàá®à 
640
        mov     ed_pos,eax      ;çâ® ¡ë ­¥ ¡ë«® ã¡¥£ ­¨ï ªãàá®à 
719
        mov     ebp,ecx
641
        mov     ebp,ecx
720
        sub     ebp,eax
642
        sub     ebp,eax
721
        add     ebx,eax  ;eax ¬¥­ìè¥ 
643
        add     ebx,eax  ;eax ¬¥­ìè¥ 
722
        sub     edx,ecx
644
        sub     edx,ecx
723
        add     esi,ecx
645
        add     esi,ecx
724
 
646
 
725
        mov     dword ed_shift_pos,ebp
647
        mov     dword ed_shift_pos,ebp
726
        jmp     edit_box_key.del_ch_sh
648
        jmp     edit_box_key.del_ch_sh
727
                     ;¥á«¨ ¨­ ç¥
649
                     ;¥á«¨ ¨­ ç¥
728
edit_box_key.dh_n:  
650
edit_box_key.dh_n:  
729
        mov     ebp,eax
651
        mov     ebp,eax
730
        sub     ebp,ecx
652
        sub     ebp,ecx
731
        add     ebx,ecx
653
        add     ebx,ecx
732
        sub     edx,eax
654
        sub     edx,eax
733
        add     esi,eax
655
        add     esi,eax
734
        mov     dword ed_shift_pos,ebp
656
        mov     dword ed_shift_pos,ebp
735
        jmp     edit_box_key.del_ch_sh
657
        jmp     edit_box_key.del_ch_sh
736
 
658
 
737
@@:     add     esi,ecx ;㪠§ â¥«ì + ᬥ饭¨¥ ª ॠ«ì­®¬ã ¡ãää¥àã
659
@@:     add     esi,ecx ;㪠§ â¥«ì + ᬥ饭¨¥ ª ॠ«ì­®¬ã ¡ãää¥àã
738
        mov     ebx,esi
660
        mov     ebx,esi
739
        inc     esi
661
        inc     esi
740
        cld
662
        cld
741
 
663
 
742
        sub     edx,ecx
664
        sub     edx,ecx
743
edit_box_key.del_ch_sh:
665
edit_box_key.del_ch_sh:
744
 
666
 
745
        push    edi
667
        push    edi
746
        mov     edi,ebx
668
        mov     edi,ebx
747
@@:
669
@@:
748
        lodsb
670
        lodsb
749
        stosb
671
        stosb
750
        dec edx
672
        dec edx
751
        jns @b
673
        jns @b
752
        
674
        
753
        pop edi
675
        pop edi
754
        ret
676
        ret
755
;¢ëç¨á«¨âì § ªà è¨¢ ¥¬ãî ®¡« áâì
677
;¢ëç¨á«¨âì § ªà è¨¢ ¥¬ãî ®¡« áâì
756
;ᮣ« è¥­¨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size
678
;ᮣ« è¥­¨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size
757
edit_box_key.clear_bg:
679
edit_box_key.clear_bg:
758
        call    edit_box.get_n  ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨­ë ª®¬¯®­¥­â 
680
        call    edit_box.get_n  ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨­ë ª®¬¯®­¥­â 
759
        push    eax
681
        push    eax
760
        mov     ebx,ed_offset
682
        mov     ebx,ed_offset
761
        add     eax,ebx ;eax = w_off= ed_offset+width
683
        add     eax,ebx ;eax = w_off= ed_offset+width
762
        mov     ebx,ebp ;ed_size
684
        mov     ebx,ebp ;ed_size
763
        
685
        
764
        cmp     eax,ebx
686
        cmp     eax,ebx
765
        jb      @f
687
        jb      @f
766
        mov     eax,ed_pos
688
        mov     eax,ed_pos
767
        sub     ebx,eax
689
        sub     ebx,eax
768
        mov     ecx,ed_offset
690
        mov     ecx,ed_offset
769
        sub     eax,ecx
691
        sub     eax,ecx
770
        jmp     edit_box_key.nxt
692
        jmp     edit_box_key.nxt
771
@@:     mov     ebx,ed_pos
693
@@:     mov     ebx,ed_pos
772
        push    ebx
694
        push    ebx
773
        sub     eax,ebx
695
        sub     eax,ebx
774
        mov     ebx,eax ;It is don't optimal
696
        mov     ebx,eax ;It is don't optimal
775
        
697
        
776
        pop     eax     ;ed_pos
698
        pop     eax     ;ed_pos
777
        mov     ecx,ed_offset
699
        mov     ecx,ed_offset
778
        sub     eax,ecx
700
        sub     eax,ecx
779
edit_box_key.nxt:
701
edit_box_key.nxt:
780
        mov     ebp,eax  ;¯à®¢¥àª  ­  ¢ë室 § ªà è¨¢ ¥¬®© ®¡« á⨠§  ¯à¥¤¥«ë ¤«¨­ë
702
        mov     ebp,eax  ;¯à®¢¥àª  ­  ¢ë室 § ªà è¨¢ ¥¬®© ®¡« á⨠§  ¯à¥¤¥«ë ¤«¨­ë
781
        add     ebp,ebx
703
        add     ebp,ebx
782
        pop     edx
704
        pop     edx
783
        cmp     ebp,edx
705
        cmp     ebp,edx
784
        je      @f
706
        je      @f
785
        inc     ebx
707
        inc     ebx
786
 
708
 
787
@@:     mov     edx,ebx
709
@@:     mov     edx,ebx
788
        lea     ebx,[eax*2+eax]
710
        lea     ebx,[eax*2+eax]
789
        shl     ebx,1
711
        shl     ebx,1
790
        add     ebx,ed_left
712
        add     ebx,ed_left
791
        inc     ebx
713
        inc     ebx
792
        shl     ebx,16
714
        shl     ebx,16
793
        lea     ecx,[edx*2+edx]
715
        lea     ecx,[edx*2+edx]
794
        shl     ecx,1   
716
        shl     ecx,1   
795
        mov     bx,cx
717
        mov     bx,cx
796
        mov     edx,ed_color
718
        mov     edx,ed_color
797
        call    edit_box.draw_bg_eax
719
        call    edit_box.draw_bg_eax
798
        ret
720
        ret
799
;;;;;;;;;;;;;;;;;;;
721
;;;;;;;;;;;;;;;;;;;
800
;;; Ž¡à ¡®âª  ¯à¨¬¨â¨¢®¢
722
;;; Ž¡à ¡®âª  ¯à¨¬¨â¨¢®¢
801
;;;;;;;;;;;;;;;;;;;;
723
;;;;;;;;;;;;;;;;;;;;
802
; à¨á®¢ âì ¯àאַ㣮«ì­¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp
724
; à¨á®¢ âì ¯àאַ㣮«ì­¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp
803
;¢å®¤­ë¥ ¯ à ¬¥âàë:
725
;¢å®¤­ë¥ ¯ à ¬¥âàë:
804
;eax=dword ed_pos
726
;eax=dword ed_pos
805
;ebp=-梥â ed_color or shift_color 
727
;ebp=-梥â ed_color or shift_color 
806
edit_box_key.draw_rectangle:
728
edit_box_key.draw_rectangle:
807
        mov     ecx,dword ed_offset
729
        mov     ecx,dword ed_offset
808
        sub     eax,ecx
730
        sub     eax,ecx
809
        lea     ebx,[eax*2+eax]
731
        lea     ebx,[eax*2+eax]
810
        shl     ebx,1
732
        shl     ebx,1
811
        inc     ebx
733
        inc     ebx
812
        add     ebx,ed_left
734
        add     ebx,ed_left
813
        shl     ebx,16
735
        shl     ebx,16
814
        add     ebx,6
736
        add     ebx,6
815
        mov     edx,ebp
737
        mov     edx,ebp
816
        call    edit_box.draw_bg_eax
738
        call    edit_box.draw_bg_eax
817
        ret
739
        ret
818
;;;;;;;;;;;;;;;;;;
740
;;;;;;;;;;;;;;;;;;
819
;;à®¢¥àª  ­ ¦ â «¨ shift
741
;;à®¢¥àª  ­ ¦ â «¨ shift
820
;;;;;;;;;;;;;;;;;;
742
;;;;;;;;;;;;;;;;;;
821
edit_box_key.check_shift:
743
edit_box_key.check_shift:
822
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
744
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
823
        mcall   66,3
745
        mcall   66,3
824
        test    al,0x03
746
        test    al,0x03
825
        je      @f
747
        je      @f
826
        or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
748
        or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
827
@@:edit_ex
749
@@:edit_ex
828
}
750
}
829
;¬ ªà®á ª« ¢¨è ­  ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï 
751
;¬ ªà®á ª« ¢¨è ­  ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï 
830
macro use_key_process backspase,delete,left,right,home,end,insert
752
macro use_key_process backspase,delete,left,right,home,end,insert
831
{
753
{
832
if backspase eq 
754
if backspase eq 
833
else
755
else
834
        cmp     ah,8
756
        cmp     ah,8
835
        jz      edit_box_key.backspace
757
        jz      edit_box_key.backspace
836
end if
758
end if
837
if delete eq 
759
if delete eq 
838
else
760
else
839
        cmp     ah,0xb6
761
        cmp     ah,0xb6
840
        jz      edit_box_key.delete
762
        jz      edit_box_key.delete
841
end if
763
end if
842
if left eq 
764
if left eq 
843
else
765
else
844
        cmp     ah,176
766
        cmp     ah,176
845
        jz      edit_box_key.left
767
        jz      edit_box_key.left
846
end if
768
end if
847
if right eq 
769
if right eq 
848
else
770
else
849
        cmp     ah,179
771
        cmp     ah,179
850
        jz      edit_box_key.right
772
        jz      edit_box_key.right
851
end if
773
end if
852
if home eq 
774
if home eq 
853
else
775
else
854
        cmp     ah,180
776
        cmp     ah,180
855
        jz      edit_box_key.home
777
        jz      edit_box_key.home
856
end if
778
end if
857
if home eq 
779
if home eq 
858
else
780
else
859
        cmp     ah,181
781
        cmp     ah,181
860
        jz      edit_box_key.end
782
        jz      edit_box_key.end
861
end if
783
end if
862
if insert eq 
784
if insert eq 
863
else
785
else
864
        cmp     ah,185  ;insert
786
        cmp     ah,185  ;insert
865
        jz      edit_box_key.insert
787
        jz      edit_box_key.insert
866
end if
788
end if
867
}
789
}
868
 
790
 
869
macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
791
macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
870
{
792
{
871
if up eq 
793
if up eq 
872
else
794
else
873
        cmp     ah,177
795
        cmp     ah,177
874
        jz      edit_box.editbox_exit
796
        jz      edit_box.editbox_exit
875
end if
797
end if
876
if down eq 
798
if down eq 
877
else
799
else
878
        cmp     ah,178
800
        cmp     ah,178
879
        jz      edit_box.editbox_exit
801
        jz      edit_box.editbox_exit
880
end if
802
end if
881
if esc eq 
803
if esc eq 
882
else
804
else
883
        cmp     ah,27   ;ESC - ª« ¢¨è  ))
805
        cmp     ah,27   ;ESC - ª« ¢¨è  ))
884
        jz      edit_box.editbox_exit
806
        jz      edit_box.editbox_exit
885
end if
807
end if
886
if enter eq 
808
if enter eq 
887
else
809
else
888
        cmp     ah,13   ;ENTER - ª« ¢¨è  ))
810
        cmp     ah,13   ;ENTER - ª« ¢¨è  ))
889
        jz      edit_box.editbox_exit
811
        jz      edit_box.editbox_exit
890
end if
812
end if
891
if tab eq 
813
if tab eq 
892
else
814
else
893
        cmp     ah,9   ;TAB - ª« ¢¨è  ))
815
        cmp     ah,9   ;TAB - ª« ¢¨è  ))
894
        jz      edit_box.editbox_exit
816
        jz      edit_box.editbox_exit
895
end if
817
end if
896
 
818
 
897
if numl eq 
819
if numl eq 
898
else
820
else
899
        cmp     ah,4   ;Num Lock - ª« ¢¨è  ))
821
        cmp     ah,4   ;Num Lock - ª« ¢¨è  ))
900
        jz      edit_box.editbox_exit
822
        jz      edit_box.editbox_exit
901
end if
823
end if
902
 
824
 
903
if capsl eq 
825
if capsl eq 
904
else
826
else
905
        cmp     ah,2   ;Caps Lock - ª« ¢¨è  ))
827
        cmp     ah,2   ;Caps Lock - ª« ¢¨è  ))
906
        jz      edit_box.editbox_exit
828
        jz      edit_box.editbox_exit
907
end if
829
end if
908
 
830
 
909
if scrolll eq 
831
if scrolll eq 
910
else
832
else
911
        cmp     ah,1   ;Scroll Lock - ª« ¢¨è  ))
833
        cmp     ah,1   ;Scroll Lock - ª« ¢¨è  ))
912
        jz      edit_box.editbox_exit
834
        jz      edit_box.editbox_exit
913
end if
835
end if
914
 
836
 
915
}
837
}
916
 
838
 
917
macro use_key_figures_only
839
macro use_key_figures_only
918
{
840
{
919
        test    word ed_flags,ed_figure_only  ; ⮫쪮 æ¨äàë ?
841
        test    word ed_flags,ed_figure_only  ; ⮫쪮 æ¨äàë ?
920
        jz      @f
842
        jz      @f
921
        cmp     ah,'0'
843
        cmp     ah,'0'
922
        jb      edit_box.editbox_exit
844
        jb      edit_box.editbox_exit
923
        cmp     ah,'9'
845
        cmp     ah,'9'
924
        ja      edit_box.editbox_exit
846
        ja      edit_box.editbox_exit
925
@@:
847
@@:
926
}
848
}
927
macro are_key_shift_press
849
macro are_key_shift_press
928
{
850
{
929
        test    word ed_flags,ed_shift_on
851
        test    word ed_flags,ed_shift_on
930
        je      @f
852
        je      @f
931
        ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
853
        ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
932
        push    eax
854
        push    eax
933
        mov     edx,ed_size
855
        mov     edx,ed_size
934
        mov     ecx, ed_pos
856
        mov     ecx, ed_pos
935
        pusha
857
        pusha
936
;;;;;;;;;;;;;;;;;;;;;
858
;;;;;;;;;;;;;;;;;;;;;
937
;clear input arrea
859
;clear input arrea
938
        mov     ebp,ed_color
860
        mov     ebp,ed_color
939
        mov     ebx,dword       ed_shift_pos
861
        mov     ebx,dword       ed_shift_pos
940
        call    edit_box_key.sh_cl_
862
        call    edit_box_key.sh_cl_
941
        mov     ebp,ed_size
863
        mov     ebp,ed_size
942
        call    edit_box_key.clear_bg
864
        call    edit_box_key.clear_bg
943
;;;;;;;;;;;;;;;;;;;;;
865
;;;;;;;;;;;;;;;;;;;;;
944
        popa 
866
        popa 
945
        call    edit_box_key.del_char
867
        call    edit_box_key.del_char
946
;;;;
868
;;;;
947
        mov     eax,dword ed_shift_pos
869
        mov     eax,dword ed_shift_pos
948
        mov     ebx,ed_size
870
        mov     ebx,ed_size
949
        sub     ebx,eax
871
        sub     ebx,eax
950
        mov     ed_size,ebx
872
        mov     ed_size,ebx
951
        pop     eax
873
        pop     eax
952
@@:
874
@@:
953
}
875
}
954
macro are_key_cur_end
876
macro are_key_cur_end
955
{
877
{
956
        mov     ecx,ed_size
878
        mov     ecx,ed_size
957
        mov     edx, ed_max
879
        mov     edx, ed_max
958
        test    word ed_flags,ed_insert
880
        test    word ed_flags,ed_insert
959
        jne     @f
881
        jne     @f
960
        cmp     ecx,edx
882
        cmp     ecx,edx
961
        jae     edit_box.editbox_exit
883
        jae     edit_box.editbox_exit
962
@@:     mov     ebx, ed_pos
884
@@:     mov     ebx, ed_pos
963
        cmp     ebx,edx
885
        cmp     ebx,edx
964
        jl      @f ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­®
886
        jl      @f ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­®
965
        jmp     edit_box.editbox_exit
887
        jmp     edit_box.editbox_exit
966
 
888
 
967
@@:     ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
889
@@:     ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
968
        mov     ecx,ed_size
890
        mov     ecx,ed_size
969
        push    edi eax
891
        push    edi eax
970
        mov     ebp,edi
892
        mov     ebp,edi
971
        mov     esi,ed_text     ; “ª § â¥«ì ­  ¡ãä¥à
893
        mov     esi,ed_text     ; “ª § â¥«ì ­  ¡ãä¥à
972
                                ;ã¤¥¬ à ¡®â âì á® áâப®©
894
                                ;ã¤¥¬ à ¡®â âì á® áâப®©
973
        add     esi,ecx         ;add ed_size ¤®¡ ¢¨¬ max size
895
        add     esi,ecx         ;add ed_size ¤®¡ ¢¨¬ max size
974
        mov     edi,esi
896
        mov     edi,esi
975
 
897
 
976
        cmp     ecx,ebx         ;…᫨ ã ­ á ¯®§¨æ¨ï ªãàá®à  = ⥪ã饬ã à §¬¥àã ­ ¯¥ç â ­­ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®­æ¥
898
        cmp     ecx,ebx         ;…᫨ ã ­ á ¯®§¨æ¨ï ªãàá®à  = ⥪ã饬ã à §¬¥àã ­ ¯¥ç â ­­ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®­æ¥
977
        je      edit_box_key.In_k
899
        je      edit_box_key.In_k
978
 
900
 
979
        test    dword bp_flags,ed_insert ;IF insert is enable  â.ª. edi ¨§¬¥­¥­  ¤à¥á㥬 ç¥à¥§ ebp
901
        test    dword bp_flags,ed_insert ;IF insert is enable  â.ª. edi ¨§¬¥­¥­  ¤à¥á㥬 ç¥à¥§ ebp
980
        jne     edit_box_key.ins_v
902
        jne     edit_box_key.ins_v
981
;clear
903
;clear
982
pusha
904
pusha
983
        mov     edi,ebp
905
        mov     edi,ebp
984
        mov     ebp,ed_size
906
        mov     ebp,ed_size
985
        call    edit_box_key.clear_bg
907
        call    edit_box_key.clear_bg
986
popa
908
popa
987
        sub     ecx,ebx         ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥­¨ï.
909
        sub     ecx,ebx         ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥­¨ï.
988
        inc     edi             ;‘¬¥á⨬ ­ è¨ ᨬ¢®«ë ¢ ¯à ¢®
910
        inc     edi             ;‘¬¥á⨬ ­ è¨ ᨬ¢®«ë ¢ ¯à ¢®
989
        std
911
        std
990
        inc     ecx
912
        inc     ecx
991
   @@:  
913
   @@:  
992
        ;--------
914
        ;--------
993
        lodsb
915
        lodsb
994
        stosb
916
        stosb
995
        ;--------
917
        ;--------
996
        loop    @b
918
        loop    @b
997
edit_box_key.In_k:  
919
edit_box_key.In_k:  
998
	cld
920
	cld
999
        pop eax
921
        pop eax
1000
        mov al,ah
922
        mov al,ah
1001
        stosb
923
        stosb
1002
        pop edi
924
        pop edi
1003
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
925
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
1004
        ; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
926
        ; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
1005
        inc      dword ed_size
927
        inc      dword ed_size
1006
        inc      dword ed_pos
928
        inc      dword ed_pos
1007
        call    edit_box_key.draw_all2
929
        call    edit_box_key.draw_all2
1008
        jmp     edit_box_key.shift
930
        jmp     edit_box_key.shift
1009
}
931
}
1010
macro use_work_key
932
macro use_work_key
1011
{
933
{
1012
edit_box_key.insert: test   word ed_flags,ed_insert ;not    word ed_insert
934
edit_box_key.insert: test   word ed_flags,ed_insert ;not    word ed_insert
1013
         je     @f
935
         je     @f
1014
         and    word ed_flags,ed_insert_cl
936
         and    word ed_flags,ed_insert_cl
1015
 
937
 
1016
        jmp     edit_box.editbox_exit
938
        jmp     edit_box.editbox_exit
1017
@@:
939
@@:
1018
        or      word ed_flags,ed_insert
940
        or      word ed_flags,ed_insert
1019
        jmp     edit_box.editbox_exit
941
        jmp     edit_box.editbox_exit
1020
edit_box_key.ins_v:
942
edit_box_key.ins_v:
1021
;        dec     dword [ebp+48];ed_size    ;processing is insert
943
;        dec     dword [ebp+48];ed_size    ;processing is insert
1022
	dec	dword bp_size
944
	dec	dword bp_size
1023
        sub     esi,ecx
945
        sub     esi,ecx
1024
        add     esi,ebx
946
        add     esi,ebx
1025
        mov     edi,esi
947
        mov     edi,esi
1026
;clear
948
;clear
1027
pusha
949
pusha
1028
        mov     edi,ebp
950
        mov     edi,ebp
1029
        mov     ebp,ed_pos
951
        mov     ebp,ed_pos
1030
        call    edit_box_key.clear_bg
952
        call    edit_box_key.clear_bg
1031
popa
953
popa
1032
        jmp     edit_box_key.In_k
954
        jmp     edit_box_key.In_k
1033
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
955
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1034
edit_box_key.delete:        
956
edit_box_key.delete:        
1035
        mov     edx,ed_size
957
        mov     edx,ed_size
1036
        mov     ecx,ed_pos
958
        mov     ecx,ed_pos
1037
        cmp     edx,ecx
959
        cmp     edx,ecx
1038
        jg      edit_box_key.bac_del
960
        jg      edit_box_key.bac_del
1039
        test    word ed_flags,ed_shift_on
961
        test    word ed_flags,ed_shift_on
1040
        jne     edit_box_key.del_bac
962
        jne     edit_box_key.del_bac
1041
        popad
963
        popad
1042
        ret     4
964
        ret     4
1043
edit_box_key.bac_del:       
965
edit_box_key.bac_del:       
1044
        call    edit_box_key.del_char
966
        call    edit_box_key.del_char
1045
        jmp     edit_box_key.draw_all
967
        jmp     edit_box_key.draw_all
1046
;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
968
;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
1047
;--- ­ ¦ â  ª« ¢¨è  backspace ---
969
;--- ­ ¦ â  ª« ¢¨è  backspace ---
1048
edit_box_key.backspace:
970
edit_box_key.backspace:
1049
        ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
971
        ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
1050
        mov     ecx,ed_pos
972
        mov     ecx,ed_pos
1051
        test    ecx,ecx
973
        test    ecx,ecx
1052
        jnz     edit_box_key.del_bac
974
        jnz     edit_box_key.del_bac
1053
        test    word ed_flags,ed_shift_on
975
        test    word ed_flags,ed_shift_on
1054
        jne     edit_box_key.bac_del
976
        jne     edit_box_key.bac_del
1055
        popad
977
        popad
1056
        ret     4
978
        ret     4
1057
 
979
 
1058
edit_box_key.del_bac:
980
edit_box_key.del_bac:
1059
        mov     edx,ed_size
981
        mov     edx,ed_size
1060
        cmp     edx,ecx ;if ed_pos=ed_size
982
        cmp     edx,ecx ;if ed_pos=ed_size
1061
        je      @f
983
        je      @f
1062
        dec     ecx
984
        dec     ecx
1063
        call    edit_box_key.del_char
985
        call    edit_box_key.del_char
1064
@@:     test    word ed_flags,ed_shift_on
986
@@:     test    word ed_flags,ed_shift_on
1065
        jne     edit_box_key.bac_del
987
        jne     edit_box_key.bac_del
1066
        dec      dword ed_pos
988
        dec      dword ed_pos
1067
edit_box_key.draw_all:
989
edit_box_key.draw_all:
1068
        push    edit_box_key.shift;.draw_cursor_text;eax
990
        push    edit_box_key.shift;.draw_cursor_text;eax
1069
 
991
 
1070
        test    word ed_flags,ed_shift_on
992
        test    word ed_flags,ed_shift_on
1071
        je      @f
993
        je      @f
1072
        mov     eax,dword ed_shift_pos
994
        mov     eax,dword ed_shift_pos
1073
        mov     ebx,ed_size
995
        mov     ebx,ed_size
1074
        sub     ebx,eax
996
        sub     ebx,eax
1075
        mov     ed_size,ebx
997
        mov     ed_size,ebx
1076
 
998
 
1077
        mov     ebp,ed_color
999
        mov     ebp,ed_color
1078
        call    edit_box.clear_cursor
1000
        call    edit_box.clear_cursor
1079
        call    edit_box.check_offset
1001
        call    edit_box.check_offset
1080
        call    edit_box.draw_bg
1002
        call    edit_box.draw_bg
1081
        ret
1003
        ret
1082
@@:     dec      dword ed_size
1004
@@:     dec      dword ed_size
1083
 
1005
 
1084
edit_box_key.draw_all2:
1006
edit_box_key.draw_all2:
1085
        and    word ed_flags,ed_shift_cl
1007
        and    word ed_flags,ed_shift_cl
1086
        mov     ebp,ed_color
1008
        mov     ebp,ed_color
1087
        call    edit_box.clear_cursor
1009
        call    edit_box.clear_cursor
1088
        call    edit_box.check_offset
1010
        call    edit_box.check_offset
1089
        mov     ebp,ed_size
1011
        mov     ebp,ed_size
1090
        call    edit_box_key.clear_bg
1012
        call    edit_box_key.clear_bg
1091
        ret
1013
        ret
1092
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1014
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1093
;--- ­ ¦ â  ª« ¢¨è  left ---
1015
;--- ­ ¦ â  ª« ¢¨è  left ---
1094
edit_box_key.left:  
1016
edit_box_key.left:  
1095
	mov     ebx,ed_pos
1017
	mov     ebx,ed_pos
1096
        test    ebx,ebx
1018
        test    ebx,ebx
1097
        jz      edit_box_key.sh_st_of
1019
        jz      edit_box_key.sh_st_of
1098
        or      word ed_flags,ed_left_fl
1020
        or      word ed_flags,ed_left_fl
1099
        call    edit_box_key.sh_first_sh
1021
        call    edit_box_key.sh_first_sh
1100
        dec      dword ed_pos
1022
        dec      dword ed_pos
1101
        call    edit_box_key.sh_enable
1023
        call    edit_box_key.sh_enable
1102
        jmp     edit_box.draw_cursor_text
1024
        jmp     edit_box.draw_cursor_text
1103
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1025
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1104
;--- ­ ¦ â  ª« ¢¨è  right ---
1026
;--- ­ ¦ â  ª« ¢¨è  right ---
1105
edit_box_key.right: 
1027
edit_box_key.right: 
1106
	mov     ebx,ed_pos
1028
	mov     ebx,ed_pos
1107
        cmp     ebx,ed_size
1029
        cmp     ebx,ed_size
1108
        je      edit_box_key.sh_st_of
1030
        je      edit_box_key.sh_st_of
1109
        and     word ed_flags,ed_right_fl
1031
        and     word ed_flags,ed_right_fl
1110
        call    edit_box_key.sh_first_sh
1032
        call    edit_box_key.sh_first_sh
1111
        inc     dword  ed_pos
1033
        inc     dword  ed_pos
1112
        call    edit_box_key.sh_enable
1034
        call    edit_box_key.sh_enable
1113
        jmp     edit_box.draw_cursor_text
1035
        jmp     edit_box.draw_cursor_text
1114
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1036
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1115
edit_box_key.home:  
1037
edit_box_key.home:  
1116
        mov     ebx,ed_pos
1038
        mov     ebx,ed_pos
1117
        test    ebx,ebx
1039
        test    ebx,ebx
1118
        jz      edit_box_key.sh_st_of
1040
        jz      edit_box_key.sh_st_of
1119
        call    edit_box_key.sh_first_sh
1041
        call    edit_box_key.sh_first_sh
1120
        xor     eax,eax
1042
        xor     eax,eax
1121
        mov     ed_pos,eax
1043
        mov     ed_pos,eax
1122
        call    edit_box_key.sh_home_end
1044
        call    edit_box_key.sh_home_end
1123
        jmp     edit_box.draw_cursor_text
1045
        jmp     edit_box.draw_cursor_text
1124
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1046
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1125
edit_box_key.end:   
1047
edit_box_key.end:   
1126
        mov     ebx,ed_pos
1048
        mov     ebx,ed_pos
1127
        cmp     ebx,dword ed_size
1049
        cmp     ebx,dword ed_size
1128
        je      edit_box_key.sh_st_of
1050
        je      edit_box_key.sh_st_of
1129
        call    edit_box_key.sh_first_sh
1051
        call    edit_box_key.sh_first_sh
1130
        mov     eax,ed_size
1052
        mov     eax,ed_size
1131
        mov     ed_pos,eax
1053
        mov     ed_pos,eax
1132
        call    edit_box_key.sh_home_end
1054
        call    edit_box_key.sh_home_end
1133
        jmp     edit_box.draw_cursor_text
1055
        jmp     edit_box.draw_cursor_text
1134
}
1056
}
1135
 
1057
 
1136
macro use_mouse_func
1058
macro use_mouse_func
1137
{
1059
{
1138
;----------------------------------------------------------
1060
;----------------------------------------------------------
1139
;--- Ž¡à ¡®âª  .mouse_wigwag
1061
;--- Ž¡à ¡®âª  .mouse_wigwag
1140
;----------------------------------------------------------
1062
;----------------------------------------------------------
1141
edit_box_mouse.mouse_wigwag:
1063
edit_box_mouse.mouse_wigwag:
1142
        shr     eax,16
1064
        shr     eax,16
1143
        or      word ed_flags,ed_shift_bac+ed_shift_on+ed_shift
1065
        or      word ed_flags,ed_shift_bac+ed_shift_on+ed_shift
1144
;;;;;;;;;;;;;;;;;;
1066
;;;;;;;;;;;;;;;;;;
1145
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
1067
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
1146
;;;;;;;;;;;;;;;;;;
1068
;;;;;;;;;;;;;;;;;;
1147
        test    ax,0x8000
1069
        test    ax,0x8000
1148
        jnz     edit_box_mouse.mleft
1070
        jnz     edit_box_mouse.mleft
1149
 
1071
 
1150
        mov     ebx,ed_left
1072
        mov     ebx,ed_left
1151
        cmp     eax,ebx
1073
        cmp     eax,ebx
1152
        jb      edit_box_mouse.mleft
1074
        jb      edit_box_mouse.mleft
1153
 
1075
 
1154
        add     ebx,ed_width
1076
        add     ebx,ed_width
1155
        cmp     eax,ebx
1077
        cmp     eax,ebx
1156
        ja      edit_box_mouse.mright 
1078
        ja      edit_box_mouse.mright 
1157
 
1079
 
1158
        sub     ebx,ed_width
1080
        sub     ebx,ed_width
1159
 
1081
 
1160
        xor     edx,edx
1082
        xor     edx,edx
1161
        sub     eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨­ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨­ âë ¤® editbox ¯® ®á¨ å
1083
        sub     eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨­ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨­ âë ¤® editbox ¯® ®á¨ å
1162
        mov     ebx,6
1084
        mov     ebx,6
1163
        div     ebx
1085
        div     ebx
1164
;;;;;;;;;;;;;;;;;;
1086
;;;;;;;;;;;;;;;;;;
1165
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox
1087
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox
1166
;;;;;;;;;;;;;;;;;;
1088
;;;;;;;;;;;;;;;;;;
1167
;®«ã稫¨ ª®®à¤¨­ âë ¢ eax ¬ë誨, â.¥. ªã¤  ®­  ¯¥à¥¬¥á⨫ áì
1089
;®«ã稫¨ ª®®à¤¨­ âë ¢ eax ¬ë誨, â.¥. ªã¤  ®­  ¯¥à¥¬¥á⨫ áì
1168
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1090
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1169
        add     eax,ed_offset   ;¤®¡ ¢¨¬ ᬥ饭¨¥
1091
        add     eax,ed_offset   ;¤®¡ ¢¨¬ ᬥ饭¨¥
1170
        cmp     eax,dword ed_size       ;¥á«¨ ¢ë諨 §  ¯à¥¤¥«ë, â® ­¨ç¥£® ­¥ ¤¥« âì
1092
        cmp     eax,dword ed_size       ;¥á«¨ ¢ë諨 §  ¯à¥¤¥«ë, â® ­¨ç¥£® ­¥ ¤¥« âì
1171
        ja      edit_box_mouse.mwigvag
1093
        ja      edit_box_mouse.mwigvag
1172
edit_box_mouse.mdraw: 
1094
edit_box_mouse.mdraw: 
1173
        mov     dword   ed_pos,eax ;á®åà ­¨¬ ­®¢®¥ §­ ç¥­¨¥
1095
        mov     dword   ed_pos,eax ;á®åà ­¨¬ ­®¢®¥ §­ ç¥­¨¥
1174
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1096
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1175
        mov     ecx,dword       ed_shift_pos
1097
        mov     ecx,dword       ed_shift_pos
1176
        mov     ebx,dword       ed_shift_pos_old
1098
        mov     ebx,dword       ed_shift_pos_old
1177
        mov     dword   ed_shift_pos_old,eax    ;¢­¥á¥¬ ­®¢®¥ §­ ç¥­¨¥ áâ à®© ¯®§¨æ¨¨ ªãàá®à 
1099
        mov     dword   ed_shift_pos_old,eax    ;¢­¥á¥¬ ­®¢®¥ §­ ç¥­¨¥ áâ à®© ¯®§¨æ¨¨ ªãàá®à 
1178
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
1100
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
1179
        cmp     ecx,ebx         ;¢ëïá­ï¥¬ ªã¤  ¡ë«® ¤¢¨¦¥­¨¥ ­  ®¤¨­ è £ ­ § ¤
1101
        cmp     ecx,ebx         ;¢ëïá­ï¥¬ ªã¤  ¡ë«® ¤¢¨¦¥­¨¥ ­  ®¤¨­ è £ ­ § ¤
1180
        je      edit_box_mouse.m1_shem        ;¤¢¨¦¥­¨ï ­¥ ¡ë«® à ­¥¥ 
1102
        je      edit_box_mouse.m1_shem        ;¤¢¨¦¥­¨ï ­¥ ¡ë«® à ­¥¥ 
1181
        jb      edit_box_mouse.msmaller       ;¤¢¨¦¥­¨¥ ¡ë«® ->
1103
        jb      edit_box_mouse.msmaller       ;¤¢¨¦¥­¨¥ ¡ë«® ->
1182
        cmp     ebx,eax         ;¤¢¨¦¥­¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤  ¤¢¨¦¥­¨¥ ¯à®¨á室¨â
1104
        cmp     ebx,eax         ;¤¢¨¦¥­¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤  ¤¢¨¦¥­¨¥ ¯à®¨á室¨â
1183
        ja      edit_box_mouse.m1_shem        ;¥á«¨ ¡ë«® ¤¢¨¦¥­¨¥ <- â® ­ã¦­® § ªà á¨âì ®¡« áâì
1105
        ja      edit_box_mouse.m1_shem        ;¥á«¨ ¡ë«® ¤¢¨¦¥­¨¥ <- â® ­ã¦­® § ªà á¨âì ®¡« áâì
1184
        je      edit_box_mouse.mwigvag        ;¥á«¨ ¨§¬¥­¥­¨ï ­¥ ¡ë«®, â® ­¨ç¥£® ­¥ ¤¥« âì
1106
        je      edit_box_mouse.mwigvag        ;¥á«¨ ¨§¬¥­¥­¨ï ­¥ ¡ë«®, â® ­¨ç¥£® ­¥ ¤¥« âì
1185
        mov     ebp,ed_color    ;âã⠭㦭® ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old
1107
        mov     ebp,ed_color    ;âã⠭㦭® ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old
1186
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1108
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1187
        call    edit_box_key.sh_cl_
1109
        call    edit_box_key.sh_cl_
1188
        jmp     edit_box_mouse.mwigvag
1110
        jmp     edit_box_mouse.mwigvag
1189
edit_box_mouse.msmaller:
1111
edit_box_mouse.msmaller:
1190
        cmp     ebx,eax
1112
        cmp     ebx,eax
1191
        jb      edit_box_mouse.m1_shem
1113
        jb      edit_box_mouse.m1_shem
1192
        mov     ebp,ed_color
1114
        mov     ebp,ed_color
1193
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1115
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1194
        call    edit_box_key.sh_cl_
1116
        call    edit_box_key.sh_cl_
1195
        jmp     edit_box_mouse.mwigvag
1117
        jmp     edit_box_mouse.mwigvag
1196
;alike  =
1118
;alike  =
1197
edit_box_mouse.m1_shem: 
1119
edit_box_mouse.m1_shem: 
1198
        mov     ebp,shift_color
1120
        mov     ebp,shift_color
1199
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1121
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1200
        mov     ebx,ecx
1122
        mov     ebx,ecx
1201
        call    edit_box_key.sh_cl_
1123
        call    edit_box_key.sh_cl_
1202
        jmp     edit_box_mouse.mwigvag
1124
        jmp     edit_box_mouse.mwigvag
1203
edit_box_mouse.mwigvag:
1125
edit_box_mouse.mwigvag:
1204
        and     word ed_flags,ed_shift_mcl
1126
        and     word ed_flags,ed_shift_mcl
1205
        jmp     edit_box.draw_cursor_text
1127
        jmp     edit_box.draw_cursor_text
1206
;       popa
1128
;       popa
1207
;       ret
1129
;       ret
1208
edit_box_mouse.mleft:
1130
edit_box_mouse.mleft:
1209
        mov     eax,ed_pos
1131
        mov     eax,ed_pos
1210
        cmp     eax,0                                        
1132
        cmp     eax,0                                        
1211
        jbe      edit_box_mouse.mwigvag
1133
        jbe      edit_box_mouse.mwigvag
1212
        dec     eax
1134
        dec     eax
1213
        call    edit_box.check_offset
1135
        call    edit_box.check_offset
1214
        push    eax
1136
        push    eax
1215
        mov     ebx,ed_shift_pos
1137
        mov     ebx,ed_shift_pos
1216
        mov     ebp,shift_color
1138
        mov     ebp,shift_color
1217
        call    edit_box_key.sh_cl_
1139
        call    edit_box_key.sh_cl_
1218
        pop     eax
1140
        pop     eax
1219
        jmp     edit_box_mouse.mdraw
1141
        jmp     edit_box_mouse.mdraw
1220
edit_box_mouse.mright:
1142
edit_box_mouse.mright:
1221
        mov     eax,ed_pos
1143
        mov     eax,ed_pos
1222
        mov     ebx,ed_size
1144
        mov     ebx,ed_size
1223
        cmp     eax,ebx
1145
        cmp     eax,ebx
1224
        jae     edit_box_mouse.mwigvag
1146
        jae     edit_box_mouse.mwigvag
1225
        inc     eax
1147
        inc     eax
1226
        call    edit_box.check_offset
1148
        call    edit_box.check_offset
1227
        mov     ebx,ed_shift_pos
1149
        mov     ebx,ed_shift_pos
1228
        mov     ebp,shift_color
1150
        mov     ebp,shift_color
1229
        push    eax
1151
        push    eax
1230
        call    edit_box_key.sh_cl_
1152
        call    edit_box_key.sh_cl_
1231
        pop     eax
1153
        pop     eax
1232
        jmp     edit_box_mouse.mdraw  
1154
        jmp     edit_box_mouse.mdraw  
1233
}
1155
}
1234
 
1156
 
1235
macro use_work_mouse
1157
macro use_work_mouse
1236
;----------------------------------------------------------
1158
;----------------------------------------------------------
1237
;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë?
1159
;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë?
1238
;----------------------------------------------------------
1160
;----------------------------------------------------------
1239
{
1161
{
1240
        test    word ed_flags,ed_mouse_on
1162
        test    word ed_flags,ed_mouse_on
1241
        jne     edit_box_mouse.mouse_wigwag
1163
        jne     edit_box_mouse.mouse_wigwag
1242
;----------------------------------------------------------
1164
;----------------------------------------------------------
1243
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
1165
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
1244
;----------------------------------------------------------
1166
;----------------------------------------------------------
1245
        mov     ebx,ed_top
1167
        mov     ebx,ed_top
1246
        cmp     ax,bx
1168
        cmp     ax,bx
1247
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1169
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1248
        
1170
        
1249
        add     ebx,ed_height
1171
        add     ebx,ed_height
1250
        cmp     ax,bx
1172
        cmp     ax,bx
1251
        jg      edit_box_mouse._blur;.mouse_end_no_focus
1173
        jg      edit_box_mouse._blur;.mouse_end_no_focus
1252
 
1174
 
1253
        shr     eax,16
1175
        shr     eax,16
1254
 
1176
 
1255
        mov     ebx,ed_left
1177
        mov     ebx,ed_left
1256
        cmp     ax,bx
1178
        cmp     ax,bx
1257
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1179
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1258
 
1180
 
1259
        add     ebx,ed_width
1181
        add     ebx,ed_width
1260
 
1182
 
1261
        cmp     ax,bx
1183
        cmp     ax,bx
1262
        jg      edit_box_mouse._blur;.mouse_end_no_focus        
1184
        jg      edit_box_mouse._blur;.mouse_end_no_focus        
1263
 
1185
 
1264
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
1186
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
1265
        push    eax
1187
        push    eax
1266
        mov     ebp,ed_color
1188
        mov     ebp,ed_color
1267
        call    edit_box.clear_cursor
1189
        call    edit_box.clear_cursor
1268
        pop     eax
1190
        pop     eax
1269
edit_box_mouse._mvpos:
1191
edit_box_mouse._mvpos:
1270
        xor     edx,edx
1192
        xor     edx,edx
1271
        sub     eax,ed_left
1193
        sub     eax,ed_left
1272
 
1194
 
1273
        mov     ebx,6
1195
        mov     ebx,6
1274
        div     bx
1196
        div     bx
1275
        add     eax,ed_offset
1197
        add     eax,ed_offset
1276
        cmp     eax,ed_size
1198
        cmp     eax,ed_size
1277
        jna     edit_box_mouse._mshift
1199
        jna     edit_box_mouse._mshift
1278
        mov     eax,ed_size
1200
        mov     eax,ed_size
1279
 
1201
 
1280
edit_box_mouse._mshift:
1202
edit_box_mouse._mshift:
1281
;;;;;;;
1203
;;;;;;;
1282
;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift
1204
;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift
1283
;;;;;;;
1205
;;;;;;;
1284
        test    word ed_flags,ed_shift_bac
1206
        test    word ed_flags,ed_shift_bac
1285
        je      @f
1207
        je      @f
1286
        mov     ebp,dword       ed_color
1208
        mov     ebp,dword       ed_color
1287
        mov     ebx,dword ed_shift_pos
1209
        mov     ebx,dword ed_shift_pos
1288
        push    eax
1210
        push    eax
1289
        call    edit_box_key.sh_cl_
1211
        call    edit_box_key.sh_cl_
1290
        and     word ed_flags,ed_shift_bac_cl
1212
        and     word ed_flags,ed_shift_bac_cl
1291
        pop     eax
1213
        pop     eax
1292
@@:     
1214
@@:     
1293
        test    word ed_flags,ed_mouse_on
1215
        test    word ed_flags,ed_mouse_on
1294
        jne     @f
1216
        jne     @f
1295
        
1217
        
1296
        mov     dword ed_shift_pos,eax
1218
        mov     dword ed_shift_pos,eax
1297
        or      word  ed_flags,ed_mouse_on
1219
        or      word  ed_flags,ed_mouse_on
1298
        mov     dword ed_pos,eax
1220
        mov     dword ed_pos,eax
1299
 
1221
 
1300
;        mov     dword [mouse_flag],edi          ;ãáâ ­®¢¨¬ ¨¤¥­â¨ä¨ª â®à
1222
;        mov     dword [mouse_flag],edi          ;ãáâ ­®¢¨¬ ¨¤¥­â¨ä¨ª â®à
1301
 
1223
 
1302
       	mov	ebx,dword ed_mouse_variable
1224
       	mov	ebx,dword ed_mouse_variable
1303
	push	edi
1225
	push	edi
1304
	pop	dword [ebx]
1226
	pop	dword [ebx]
1305
 
1227
 
1306
 
1228
 
1307
 
1229
 
1308
 
1230
 
1309
        bts     word ed_flags,1                 ;ãáâ ­®¢ª  䮪ãá 
1231
        bts     word ed_flags,1                 ;ãáâ ­®¢ª  䮪ãá 
1310
        jmp     edit_box_mouse.m_sh
1232
        jmp     edit_box_mouse.m_sh
1311
@@:             
1233
@@:             
1312
        cmp     eax,dword ed_shift_pos  ;¥á«¨ ¯®§¨æ¨¨ ­¥ ¨§¬¥­¨«¨áì
1234
        cmp     eax,dword ed_shift_pos  ;¥á«¨ ¯®§¨æ¨¨ ­¥ ¨§¬¥­¨«¨áì
1313
        je      edit_box.editbox_exit
1235
        je      edit_box.editbox_exit
1314
        mov     ed_pos,eax
1236
        mov     ed_pos,eax
1315
        mov     ebp,dword shift_color
1237
        mov     ebp,dword shift_color
1316
        mov     ebx,dword ed_shift_pos
1238
        mov     ebx,dword ed_shift_pos
1317
        call    edit_box_key.sh_cl_
1239
        call    edit_box_key.sh_cl_
1318
        or      word ed_flags,ed_mous_adn_b     ;ãáâ ­®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
1240
        or      word ed_flags,ed_mous_adn_b     ;ãáâ ­®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
1319
edit_box_mouse.m_sh:  
1241
edit_box_mouse.m_sh:  
1320
	call    edit_box.draw_text
1242
	call    edit_box.draw_text
1321
        call    edit_box.draw_cursor
1243
        call    edit_box.draw_cursor
1322
;----------------------------------------------------------
1244
;----------------------------------------------------------
1323
;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
1245
;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
1324
;----------------------------------------------------------
1246
;----------------------------------------------------------
1325
        jmp     edit_box_mouse.drc
1247
        jmp     edit_box_mouse.drc
1326
edit_box_mouse._blur:
1248
edit_box_mouse._blur:
1327
        test    word ed_flags,ed_always_focus
1249
        test    word ed_flags,ed_always_focus
1328
        jne     edit_box.editbox_exit
1250
        jne     edit_box.editbox_exit
1329
        btr     word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
1251
        btr     word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
1330
        jnc     edit_box.editbox_exit
1252
        jnc     edit_box.editbox_exit
1331
 
1253
 
1332
        mov     ebp,ed_color
1254
        mov     ebp,ed_color
1333
        call    edit_box.clear_cursor
1255
        call    edit_box.clear_cursor
1334
edit_box_mouse.drc:   call    edit_box.draw_border
1256
edit_box_mouse.drc:   call    edit_box.draw_border
1335
        jmp     edit_box.editbox_exit
1257
        jmp     edit_box.editbox_exit
1336
}
1258
}
1337
 
1259
 
1338
 
1260
 
1339
; Œ ªà®á ¢ë室 
1261
; Œ ªà®á ¢ë室 
1340
macro edit_ex
1262
macro edit_ex
1341
{
1263
{
1342
popad          
1264
popad          
1343
ret
1265
ret
1344
}
1266
}
1345
macro debug
1267
macro debug
1346
{
1268
{
1347
        ;-----------  ®â« ¤ª 
1269
        ;-----------  ®â« ¤ª 
1348
        pushad
1270
        pushad
1349
;        mov     dword [ed_buffer.2],0
1271
;        mov     dword [ed_buffer.2],0
1350
;        mov     eax,edi
1272
;        mov     eax,edi
1351
        mov eax,dword [ed_buffer.2]
1273
        mov eax,dword [ed_buffer.2]
1352
        mov edi,ed_buffer.3
1274
        mov edi,ed_buffer.3
1353
        call .str
1275
        call .str
1354
        ;à¨á®¢ ­¨¥ ä®­ 
1276
        ;à¨á®¢ ­¨¥ ä®­ 
1355
        mov eax,13
1277
        mov eax,13
1356
        mov ebx,178*65536+70
1278
        mov ebx,178*65536+70
1357
        mov ecx,28*65536+10
1279
        mov ecx,28*65536+10
1358
        xor edx,edx
1280
        xor edx,edx
1359
        int 0x40
1281
        int 0x40
1360
        ;¢ë¢®¤ §­ ç¥­¨ï ­  íªà ­
1282
        ;¢ë¢®¤ §­ ç¥­¨ï ­  íªà ­
1361
        mov eax,4
1283
        mov eax,4
1362
        mov ebx,180*65536+30
1284
        mov ebx,180*65536+30
1363
        mov ecx,0x10DDBBCC
1285
        mov ecx,0x10DDBBCC
1364
        mov edx,ed_buffer.3
1286
        mov edx,ed_buffer.3
1365
        mov esi,8
1287
        mov esi,8
1366
        int 0x40
1288
        int 0x40
1367
        popad
1289
        popad
1368
        ;----------- ®â« ¤ª 
1290
        ;----------- ®â« ¤ª 
1369
}
1291
}
1370
macro   debug_func
1292
macro   debug_func
1371
{
1293
{
1372
.str:
1294
.str:
1373
        mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1295
        mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1374
         ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1296
         ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1375
        cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1297
        cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1376
        jb @f
1298
        jb @f
1377
        xor edx,edx  ;®ç¨áâ¨âì edx
1299
        xor edx,edx  ;®ç¨áâ¨âì edx
1378
        div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1300
        div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1379
        push edx     ;¯®«®¦¨âì ¢ á⥪
1301
        push edx     ;¯®«®¦¨âì ¢ á⥪
1380
        ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1302
        ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1381
        call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1303
        call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1382
        pop eax
1304
        pop eax
1383
        @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1305
        @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1384
        ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
1306
        ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
1385
        ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
1307
        ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
1386
        or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥ 
1308
        or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥ 
1387
        stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1309
        stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1388
 
1310
 
1389
        ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1311
        ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1390
}
1312
}
1391
 
1313
 
1392
ed_struc_size=76
1314
ed_struc_size=76
1393
struc  edit_box width,left,top,color,shift_color,focus_border_color,\
1315
struc  edit_box width,left,top,color,shift_color,focus_border_color,\
1394
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
1316
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
1395
{
1317
{
1396
.width dd width
1318
.width dd width
1397
.left dd left
1319
.left dd left
1398
.top dd top
1320
.top dd top
1399
.color dd color
1321
.color dd color
1400
.shift_color dd shift_color
1322
.shift_color dd shift_color
1401
.focus_border_color dd focus_border_color
1323
.focus_border_color dd focus_border_color
1402
.blur_border_color dd blur_border_color
1324
.blur_border_color dd blur_border_color
1403
.text_color dd text_color
1325
.text_color dd text_color
1404
.max dd max
1326
.max dd max
1405
.text dd text
1327
.text dd text
1406
.mouse_variable dd mouse_variable
1328
.mouse_variable dd mouse_variable
1407
.flags dd flags+0
1329
.flags dd flags+0
1408
.size dd size+0
1330
.size dd size+0
1409
.pos dd pos+0
1331
.pos dd pos+0
1410
.offset dd 0
1332
.offset dd 0
1411
.cl_curs_x dd 0
1333
.cl_curs_x dd 0
1412
.cl_curs_y dd 0
1334
.cl_curs_y dd 0
1413
.shift   dd 0
1335
.shift   dd 0
1414
.shift_old   dd 0
1336
.shift_old   dd 0
1415
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1337
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1416
;Bit mask from editbox 
1338
;Bit mask from editbox 
1417
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1339
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1418
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë 
1340
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë 
1419
ed_always_focus= 100000000000000b
1341
ed_always_focus= 100000000000000b
1420
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
1342
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
1421
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
1343
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
1422
ed_shift_on_off=1111111111110111b
1344
ed_shift_on_off=1111111111110111b
1423
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
1345
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
1424
ed_shift_off=   1111111111111011b
1346
ed_shift_off=   1111111111111011b
1425
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
1347
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
1426
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
1348
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
1427
ed_shift_cl=    1111111111100011b
1349
ed_shift_cl=    1111111111100011b
1428
ed_shift_mcl=   1111111111111011b
1350
ed_shift_mcl=   1111111111111011b
1429
ed_left_fl=               100000b
1351
ed_left_fl=               100000b
1430
ed_right_fl=    1111111111011111b
1352
ed_right_fl=    1111111111011111b
1431
ed_offset_fl=            1000000b
1353
ed_offset_fl=            1000000b
1432
ed_offset_cl=   1111111110111111b
1354
ed_offset_cl=   1111111110111111b
1433
ed_insert=              10000000b
1355
ed_insert=              10000000b
1434
ed_insert_cl=   1111111101111111b
1356
ed_insert_cl=   1111111101111111b
1435
ed_mouse_on =          100000000b
1357
ed_mouse_on =          100000000b
1436
ed_mous_adn_b=         100011000b
1358
ed_mous_adn_b=         100011000b
1437
ed_mouse_on_off=1111111011111111b
1359
ed_mouse_on_off=1111111011111111b
1438
ed_height=14 ; ¢ëá®â 
1360
ed_height=14 ; ¢ëá®â 
1439
 
1361
 
1440
}
1362
}