Rev 205 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 205 | Rev 305 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | ; |
|
- | 2 | ; |
|
- | 3 | ; |
|
- | 4 | ; |
|
- | 5 | ; |
|
- | 6 | ; |
|
- | 7 | ; |
|
- | 8 | ; |
|
- | 9 | ; |
|
1 | ; |
10 | ; |
2 | ; ¢â®à: ¢â¨å®¢ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru |
11 | ; ¢â®à: ¢â¨å®¢ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru |
3 | ; â ¯®á«¥¤¨å ¨§¬¥¥¨©: 13.07.06 10:40 |
12 | ; â ¯®á«¥¤¨å ¨§¬¥¥¨©: 13.06.06 10:40 |
4 | ; ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box, |
13 | ; ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box, |
5 | ; íâ® ¢áâ ¢¨â ¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ 襩 ¯à®£à ¬¬ë. |
14 | ; íâ® ¢áâ ¢¨â ¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ 襩 ¯à®£à ¬¬ë. |
6 | ; à®æ¥¤ãàë: |
15 | ; à®æ¥¤ãàë: |
7 | ; edit_box.draw - ¯®« ï ¯¥à¥à¨á®¢ª ; |
16 | ; edit_box.draw - ¯®« ï ¯¥à¥à¨á®¢ª ; |
8 | ; edit_box.key - ®¡à ¡®âª ª« ¢¨ âãàë; |
17 | ; edit_box.key - ®¡à ¡®âª ª« ¢¨ âãàë; |
Line 12... | Line 21... | ||
12 | ; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢. |
21 | ; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢. |
13 | ; ਠ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â |
22 | ; ਠ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â |
14 | ; ®áâ ¢¨âì 㪠§ ⥫ì áâàãªâãàã. |
23 | ; ®áâ ¢¨âì 㪠§ ⥫ì áâàãªâãàã. |
15 | ; ਬ¥à áâàãªâãàë: |
24 | ; ਬ¥à áâàãªâãàë: |
16 | ; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text |
25 | ; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text |
17 | ; ¤«¨ , «¥¢®, ¢¥àå, 梥â ä® , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à , |
26 | ; ¤«¨ , ¢ëá®â , ¢¥àå, 梥â ä® , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à , |
18 | ; 梥â à ¬ª¨, ¥á«¨ ¥ ¢ë¡à , ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢, |
27 | ; 梥â à ¬ª¨, ¥á«¨ ¥ ¢ë¡à , ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢, |
19 | ; 㪠§ â¥«ì ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ¨âáï ᨬ¢®«ë. ãä¥à ¤®«¦¥ |
28 | ; 㪠§ â¥«ì ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ¨âáï ᨬ¢®«ë. ãä¥à ¤®«¦¥ |
20 | ; ®ª 稢 âìáï ã«¥¬, ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 255: |
29 | ; ®ª 稢 âìáï ã«¥¬, ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 255: |
21 | ; some_edit_text: |
30 | ; some_edit_text: |
22 | ; rb 256 ;255+1 |
31 | ; rb 256 ;255+1 |
Line 39... | Line 48... | ||
39 | ; ᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥ § ¯à¥¤¥« ¬¨ edit box |
48 | ; ᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥ § ¯à¥¤¥« ¬¨ edit box |
40 | ; 䮪ãá â¥àï¥âáï. |
49 | ; 䮪ãá â¥àï¥âáï. |
41 | macro use_edit_box |
50 | macro use_edit_box |
42 | { |
51 | { |
43 | edit_box: |
52 | edit_box: |
44 | ed_width equ [edi] |
53 | ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â |
45 | ed_left equ [edi+2] |
54 | ed_left equ [edi+4] ;¯®«®¦¥¨¥ ¯® ®á¨ å |
46 | ed_top equ [edi+4] |
55 | ed_top equ [edi+8] ;¯®«®¦¥¨¥ ¯® ®á¨ ã |
47 | ed_color equ [edi+6] |
56 | ed_color equ [edi+12] ;梥â ä® ª®¬¯®¥â |
48 | ed_focus_border_color equ [edi+10] |
57 | ed_focus_border_color equ [edi+16] ;梥â à ¬ª¨ ª®¬¯®¥â |
49 | ed_blur_border_color equ [edi+14] |
58 | ed_blur_border_color equ [edi+20] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â |
50 | ed_text_color equ [edi+18] |
59 | ed_text_color equ [edi+24] ;梥â ⥪áâ |
- | 60 | ed_max equ [edi+28] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥á⨠|
|
51 | ed_flags equ [edi+22] |
61 | ed_text equ [edi+32] ;㪠§ â¥«ì ¡ãä¥à |
52 | ed_max equ [edi+24] |
62 | ed_flags equ [edi+36] ;ä« £¨ |
53 | ed_size equ [edi+26] |
63 | ed_size equ [edi+38] ;ª®«-¢® ᨬ¢®«®¢ |
54 | ed_pos equ [edi+28] |
64 | ed_pos equ [edi+42] ;¯®§¨æ¨ï ªãàá®à |
55 | ed_offset equ [edi+30] |
65 | ed_offset equ [edi+46] ;ᬥ饨¥ |
- | 66 | cl_curs_x equ [edi+50] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å |
|
- | 67 | cl_curs_y equ [edi+54] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã |
|
56 | ed_text equ [edi+32] |
68 | ed_shift_pos equ [edi+58] |
57 | ed_height=14 ; ¢ëá®â |
69 | ed_height=14 ; ¢ëá®â |
- | 70 | shift_color=0x6a9480 |
|
- | 71 | ed_insert=10000b |
|
- | 72 | ed_insert_cl=1111111111101111b |
|
58 | ;========================================================== |
73 | ;========================================================== |
59 | ;=== ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ================================= |
74 | ;=== ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ================================= |
60 | ;========================================================== |
75 | ;========================================================== |
61 | .draw: |
76 | .draw: |
62 | pusha |
77 | pusha |
63 | ;--- à¨á㥬 à ¬ªã --- |
78 | ;--- à¨á㥬 à ¬ªã --- |
64 | call .draw_border |
79 | call .draw_border ; ãªæ¨ï áâ ¡¨«ì |
65 | - | ||
66 | .draw_bg_cursor_text: |
80 | .draw_bg_cursor_text: |
67 | ;--- ¨§¬¥ï¥¬ ᬥ饨¥, ¥á«¨ ¤® --- |
81 | ;--- ¨§¬¥ï¥¬ ᬥ饨¥, ¥á«¨ ¤® --- |
68 | call .check_offset |
82 | call .check_offset ;¢ëç¨á«¥¨¥ ¯®§¨æ¨¨ ªãàá®à áâ ¡¨«ì |
69 | ;--- à¨á㥬 ¢ãâà¥îî ®¡« áâì --- |
83 | ;--- à¨á㥬 ¢ãâà¥îî ®¡« áâì --- |
70 | call .draw_bg |
84 | call .draw_bg ; à¨á®¢ âì ¯àאַ㣮«ì¨ª à ¡®ç¥© ®¡« á⨠|
71 | .draw_cursor_text: |
85 | .draw_cursor_text: |
72 | ;--- à¨á㥬 ªãàá®à --- |
86 | ;--- à¨á㥬 ªãàá®à --- |
73 | ;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ---- |
87 | ;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ---- |
74 | bt word ed_flags,1 |
88 | test word ed_flags,ed_focus |
75 | jnc @f |
89 | je @f |
76 | call .draw_cursor |
90 | call .draw_cursor |
77 | @@: |
91 | @@: |
78 | call .draw_text |
92 | call .draw_text |
79 | popa |
93 | popa |
80 | ret |
94 | ret |
Line -... | Line 95... | ||
- | 95 | ||
- | 96 | ;.str: |
|
- | 97 | ; mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
|
- | 98 | ; ;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
|
- | 99 | ; cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
|
- | 100 | ; jb @f |
|
- | 101 | ; xor edx,edx ;®ç¨áâ¨âì edx |
|
- | 102 | ; div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
|
- | 103 | ; push edx ;¯®«®¦¨âì ¢ á⥪ |
|
- | 104 | ; ;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
|
- | 105 | ; call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
|
- | 106 | ; pop eax |
|
- | 107 | ; @@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
|
- | 108 | ; ;sbb al,$69 ;- ç¥áâ® ¤ ï ¨áâàãªæ¨ï ¬¥ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ¥ § î ª ª íâ® à ¡®â ¥â |
|
- | 109 | ; ;das ;¯®á«¥ ¤ ®© ª®¬ ¤ë ª ª ¡ë ¯à®¨á室¨â 㬥ì襨¥ al 66h (¢ ª¨£¥ ¯¨á ® ¤à㣮¥) |
|
- | 110 | ; or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
|
- | 111 | ; stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
|
- | 112 | ; |
|
- | 113 | ; ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
|
81 | 114 | ||
82 | ;---------------------------------------------------------- |
115 | ;---------------------------------------------------------- |
83 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ -------------------------- |
116 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ -------------------------- |
84 | ;---------------------------------------------------------- |
117 | ;---------------------------------------------------------- |
85 | .draw_text: |
118 | .draw_text: |
86 | ;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ --- |
- | |
87 | call .get_n |
119 | ;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ --- |
- | 120 | ;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì --- |
|
88 | ;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì --- |
121 | call .get_n |
89 | movsx esi,word ed_size |
122 | mov esi,ed_size |
90 | sub si,ed_offset |
- | |
91 | cmp ax,si |
123 | mov ebx,ed_offset |
92 | ja @f |
124 | sub esi,ebx |
93 | mov si,ax |
125 | cmp eax,esi |
94 | @@: |
- | |
- | 126 | jae @F |
|
95 | 127 | mov esi,eax ;çâ®¡ë ¥ ¢ë室¨âì § ¯à¥¤¥«ë íªà |
|
96 | ;--- à¨á㥬 ⥪áâ --- |
128 | ;--- à¨á㥬 ⥪áâ --- |
97 | mov eax,4 |
129 | @@: mov eax,4 |
- | 130 | mov ebx,ed_left |
|
98 | mov bx,ed_left |
131 | mov edx,ed_offset |
99 | add bx,2 |
132 | add ebx,2 |
100 | shl ebx,16 |
133 | shl ebx,16 |
101 | mov bx,ed_top |
134 | mov bx,ed_top |
102 | add bx,4 |
135 | add ebx,4 |
103 | mov ecx,ed_text_color |
- | |
104 | movsx edx,word ed_offset |
136 | mov ecx,ed_text_color |
105 | add edx,ed_text |
137 | add edx,ed_text |
106 | int 0x40 |
138 | int 0x40 |
107 | ret |
- | |
108 | 139 | ret |
|
109 | ;---------------------------------------------------------- |
140 | ;---------------------------------------------------------- |
- | 141 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ---------------------------- |
|
- | 142 | ;¢å®¤ë¥ ¤ ë¥ |
|
- | 143 | ;eax |
|
110 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ---------------------------- |
144 | ;edx - color |
111 | ;---------------------------------------------------------- |
145 | ;---------------------------------------------------------- |
112 | .draw_bg_eax: |
- | |
113 | pusha |
146 | .draw_bg_eax: |
114 | movsx ebx,ax |
- | |
115 | lea ebx,[ebx*2+ebx] |
147 | mov ecx,ed_top |
116 | shl bx,1 |
148 | add ecx,1 |
117 | shl ebx,16 |
149 | shl ecx,16 |
118 | shr eax,16 |
- | |
119 | lea eax,[eax*2+eax] |
150 | mov cx,13 |
120 | shl ax,1 |
- | |
121 | add ax,ed_left |
151 | mov eax,13 |
122 | add ax,2 |
- | |
123 | mov bx,ax |
152 | int 0x40 |
- | 153 | ret |
|
124 | ror ebx,16 |
154 | |
125 | jmp @f |
155 | jmp @f |
126 | .draw_bg: |
- | |
127 | pusha |
156 | .draw_bg: |
128 | mov bx,ed_left |
157 | mov ebx,ed_left |
129 | inc bx |
158 | add ebx,1 |
130 | shl ebx,16 |
159 | shl ebx,16 |
131 | mov bx,ed_width |
160 | mov bx,ed_width |
Line 132... | Line 161... | ||
132 | dec bx |
161 | sub ebx,1 |
133 | 162 | ||
- | 163 | @@: |
|
134 | @@: |
164 | mov ecx,ed_top |
135 | mov cx,ed_top |
165 | mov eax,13 |
136 | inc cx |
- | |
137 | shl ecx,16 |
- | |
138 | mov cx,ed_height |
- | |
139 | dec cx |
166 | add ecx,1 |
140 | 167 | shl ecx,16 |
|
- | 168 | mov edx,ed_color |
|
141 | mov edx,ed_color |
169 | mov cx,ed_height |
142 | mov eax,13 |
- | |
143 | int 0x40 |
170 | sub ecx,1 |
Line 144... | Line 171... | ||
144 | popa |
171 | int 0x40 |
145 | ret |
172 | ret |
146 | 173 | ||
147 | ;---------------------------------------------------------- |
174 | ;---------------------------------------------------------- |
148 | ;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ -------------- |
175 | ;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨¥ ª®¬¯®¥â -------------- |
149 | ;---------------------------------------------------------- |
176 | ;---------------------------------------------------------- |
150 | .get_n: |
177 | .get_n: |
151 | xor edx,edx |
178 | mov eax,ed_width ;¯®«ã祬 è¨à¨ã ª®¬¯®¥â |
152 | movsx eax,word ed_width |
179 | xor edx,edx ;१ã«ìâ â à ᯮ«®£ ¥âáï ¢ ¯ ॠedx:eax ¢ eax - ®áâ ⮪ |
153 | sub ax,4 |
180 | sub eax,4 ;¢ëç⨬ 4 |
Line 154... | Line 181... | ||
154 | mov bx,6 |
181 | mov ebx,6 ;§ £à㧬¨ ¤¥«¨â¥«ì |
155 | div bx |
182 | div ebx ;à §¬¤¥«¨¬ 6 |
156 | ret |
183 | ret |
157 | 184 | ||
158 | ;---------------------------------------------------------- |
185 | ;---------------------------------------------------------- |
- | 186 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à -------------------------- |
|
- | 187 | ;---------------------------------------------------------- |
|
159 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à -------------------------- |
188 | .clear_cursor: |
- | 189 | mov edx,ed_color |
|
- | 190 | test word ed_flags,ed_shift |
|
- | 191 | je @f |
|
- | 192 | mov edx,shift_color |
|
160 | ;---------------------------------------------------------- |
193 | @@: |
- | 194 | mov ebx,cl_curs_x |
|
161 | .clear_cursor: |
195 | mov ecx,cl_curs_y |
162 | mov edx,ed_color |
196 | jmp .draw_curs |
163 | jmp @f |
197 | .draw_cursor: |
164 | .draw_cursor: |
198 | |
- | 199 | mov edx,ed_text_color |
|
- | 200 | @@: |
|
165 | mov edx,ed_text_color |
201 | mov ebx,ed_pos |
166 | @@: |
202 | mov ecx,ed_offset |
167 | movsx ebx,word ed_pos |
203 | sub ebx,ecx |
168 | sub bx,ed_offset |
204 | |
- | 205 | lea ebx,[ebx*2+ebx] |
|
169 | ;lea ebx,[ebx*2+ebx] |
206 | shl ebx,1 |
- | 207 | ;imul ebx,6 |
|
170 | ;shl ebx,1 |
208 | add bx,ed_left |
171 | imul ebx,6 |
209 | mov ecx,ed_top |
172 | add bx,ed_left |
- | |
173 | inc bx |
210 | inc ebx |
174 | push bx |
- | |
175 | shl ebx,16 |
211 | add ecx,2 |
- | 212 | mov ebp,ebx |
|
176 | pop bx |
213 | shl ebx,16 |
177 | mov cx,ed_top |
214 | mov bx,bp |
178 | add cx,2 |
215 | mov ebp,ecx |
- | 216 | ||
- | 217 | shl ecx,16 |
|
- | 218 | mov cx,bp |
|
- | 219 | add cx,ed_height-4 |
|
179 | push cx |
220 | |
180 | shl ecx,16 |
221 | mov cl_curs_x,ebx |
181 | pop cx |
222 | mov cl_curs_y,ecx |
Line 182... | Line 223... | ||
182 | add cx,ed_height-4 |
223 | .draw_curs: |
183 | mov eax,38 |
224 | mov eax,38 |
184 | int 0x40 |
225 | int 0x40 |
185 | ret |
226 | ret |
186 | 227 | ||
187 | ;---------------------------------------------------------- |
228 | ;---------------------------------------------------------- |
188 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
229 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
189 | ;---------------------------------------------------------- |
230 | ;---------------------------------------------------------- |
190 | .draw_border: |
231 | .draw_border: |
191 | ;--- 梥â à ¬ª¨ --- |
232 | ;--- 梥â à ¬ª¨ --- |
192 | bt word ed_flags,1 |
233 | test dword ed_flags,ed_focus |
- | 234 | mov edx,ed_focus_border_color |
|
193 | mov edx,ed_focus_border_color |
235 | jne @f |
194 | jc @f |
236 | mov edx,ed_blur_border_color |
195 | mov edx,ed_blur_border_color |
237 | @@: |
196 | @@: |
238 | ;--- ᢥàåã --- |
197 | ;--- ᢥàåã --- |
239 | mov eax,38 |
198 | mov bx,ed_left |
240 | mov ebx,ed_left |
199 | push bx |
241 | mov ecx,ebx |
200 | shl ebx,16 |
242 | shl ebx,16 |
201 | pop bx |
- | |
202 | add bx,ed_width |
243 | mov bx,cx |
203 | mov cx,ed_top |
244 | add bx,ed_width |
Line 204... | Line 245... | ||
204 | push cx |
245 | mov ecx, ed_top |
205 | shl ecx,16 |
246 | mov esi,ecx |
206 | pop cx |
247 | shl ecx,16 |
207 | mov eax,38 |
248 | mov cx,si |
208 | int 0x40 |
249 | int 0x40 |
209 | 250 | ||
210 | ;--- ᨧã --- |
251 | ;--- ᨧã --- |
Line 211... | Line 252... | ||
211 | push cx |
252 | mov esi,ecx |
212 | add cx,ed_height |
253 | add ecx,ed_height |
213 | push cx |
254 | mov ebp,ecx |
214 | shl ecx,16 |
255 | shl ecx,16 |
215 | pop cx |
256 | mov cx,bp |
Line 216... | Line 257... | ||
216 | int 0x40 |
257 | int 0x40 |
217 | - | ||
218 | ;--- á«¥¢ --- |
258 | |
219 | pop cx |
259 | ;--- á«¥¢ --- |
220 | push bx |
260 | mov cx,si |
221 | sub bx,ed_width |
261 | mov ebp,ebx |
222 | int 0x40 |
262 | sub bx,ed_width |
223 | - | ||
224 | ;--- á¯à ¢ --- |
263 | int 0x40 |
225 | pop bx |
264 | |
226 | push bx |
265 | ;--- á¯à ¢ --- |
227 | shl ebx,16 |
266 | mov ebx,ebp |
228 | pop bx |
267 | shl ebx,16 |
229 | int 0x40 |
268 | mov bx,bp |
230 | ret |
269 | int 0x40 |
- | 270 | ret |
|
- | 271 | ;---------------------------------------------------------- |
|
231 | 272 | ;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, --- |
|
232 | ;---------------------------------------------------------- |
273 | ;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------ |
233 | ;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, --- |
274 | ;--- eax = -1, ¥á«¨ ¥ ¨§¬¥¨«®áì ¨«¨ eax = 0, ¥á«¨ |
- | 275 | ; ¨§¬¥¨«®áì |
|
- | 276 | ;---------------------------------------------------------- |
|
- | 277 | .check_offset: |
|
- | 278 | pushad |
|
234 | ;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------ |
279 | mov ecx,ed_pos |
235 | ;--- eax = 1, ¥á«¨ ¥ ¨§¬¥¨«®áì ¨«¨ eax = 0, ¥á«¨ |
280 | mov ebx,ed_offset |
236 | ; ¨§¬¥¨«®áì |
281 | cmp ebx,ecx |
237 | ;---------------------------------------------------------- |
282 | ja .sub_8 |
- | 283 | ||
238 | .check_offset: |
284 | push ebx |
239 | push word ed_offset |
285 | call .get_n ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ ॠॣ¨áâ஢ edx:eax |
240 | call .get_n |
286 | pop ebx |
- | 287 | mov edx,ebx |
|
241 | ;--- ¯à ¢¥¥ --- |
288 | add edx,eax ;ed_offset+width editbox |
- | 289 | cmp edx,ecx |
|
- | 290 | ja @f |
|
- | 291 | ||
- | 292 | mov edx,ed_size |
|
- | 293 | cmp edx,ecx |
|
242 | mov bx,ed_offset |
294 | je .add_end |
- | 295 | ||
- | 296 | sub edx,ecx |
|
243 | add bx,ax |
297 | cmp edx,8 |
- | 298 | jbe .add_8 |
|
- | 299 | add ebx,8 |
|
- | 300 | jmp .chk_d |
|
244 | cmp bx,ed_pos |
301 | |
- | 302 | .sub_8: cmp ecx,0 |
|
- | 303 | je .sub_min |
|
245 | ja @f |
304 | cmp ebx,8 |
- | 305 | jbe .sub_min |
|
- | 306 | sub ebx,8 ;ebx=ed_offset |
|
- | 307 | jmp .chk_d |
|
246 | mov bx,ed_pos |
308 | .sub_min: |
247 | mov cx,ax |
309 | xor ebx,ebx |
- | 310 | jmp .chk_d |
|
- | 311 | ||
248 | shr cx,2 |
312 | .add_end:sub edx,eax |
249 | sub bx,cx |
313 | mov ebx,edx |
250 | mov cx,ax |
314 | jmp .chk_d |
251 | shr cx,1 |
315 | .add_8: add ebx,edx |
252 | sub bx,cx |
316 | |
253 | mov ed_offset,bx |
317 | ; ;----------- ®â« ¤ª |
254 | @@: |
318 | ; pushad |
- | 319 | ; mov [data_of_code],0 |
|
- | 320 | ; mov eax,ebx;ed_offset |
|
- | 321 | ; mov edi,data_of_code |
|
- | 322 | ; call .str |
|
255 | ;--- «¥¢¥¥ --- |
323 | ; ;à¨á®¢ ¨¥ ä® |
256 | mov bx,ed_offset |
324 | ; mov eax,13 |
257 | cmp bx,ed_pos |
325 | ; mov ebx,178*65536+36 |
258 | jb @f |
326 | ; mov ecx,28*65536+10 |
259 | mov bx,ed_pos |
327 | ; xor edx,edx |
260 | mov cx,ax |
328 | ; int 0x40 |
- | 329 | ; ;¢ë¢®¤ § 票ï íªà |
|
- | 330 | ; mov eax,4 |
|
261 | shr cx,2 |
331 | ; mov ebx,180*65536+30 |
- | 332 | ; mov ecx,0x10DDBBCC |
|
262 | sub bx,cx |
333 | ; mov edx,data_of_code |
263 | jnc $+5 |
334 | ; mov esi,4 |
- | 335 | ; int 0x40 |
|
- | 336 | ; popad |
|
- | 337 | ; ;----------- ®â« ¤ª |
|
264 | xor bx,bx |
338 | |
- | 339 | .chk_d: mov ed_offset,ebx |
|
- | 340 | ||
265 | mov ed_offset,bx |
341 | call .draw_bg |
Line -... | Line 342... | ||
- | 342 | mov dword [esp+28],-1 |
|
- | 343 | popad |
|
- | 344 | ret |
|
- | 345 | ||
- | 346 | @@: |
|
- | 347 | mov dword [esp+28],0 |
|
- | 348 | popad |
|
- | 349 | ret |
|
- | 350 | ||
- | 351 | ||
- | 352 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
- | 353 | ; mov ebx,eax |
|
- | 354 | ; mov eax,ed_pos |
|
- | 355 | ; xor edx,edx |
|
- | 356 | ; idiv ebx |
|
- | 357 | ; xor edx,edx |
|
- | 358 | ; imul eax,ebx |
|
- | 359 | ; mov ed_offset,eax |
|
- | 360 | ; pop ebx |
|
- | 361 | ; cmp ax,bx |
|
- | 362 | ; je @f |
|
- | 363 | ;;;;;;;; ¤ ë¥ ¤«ï § ªà 訢 ¨ï ¢á¥© ¯®«®áë ¯àאַ㣮«ì¨ª |
|
- | 364 | ; mov ebx,ed_left |
|
266 | @@: |
365 | ; inc ebx |
267 | xor eax,eax |
366 | ; shl ebx,16 |
268 | pop bx |
367 | ; mov bx,ed_width |
269 | cmp bx,ed_offset |
368 | ; dec ebx |
270 | jne @f |
369 | ; mov edx,ed_color |
271 | inc eax |
370 | ; call .draw_bg_eax |
272 | @@: |
371 | ; mov dword [esp+28],0 |
- | 372 | ;@@: popad |
|
273 | ret |
373 | ; ret |
- | 374 | ;========================================================== |
|
- | 375 | ;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
|
274 | 376 | ;========================================================== |
|
- | 377 | .key: |
|
- | 378 | pusha |
|
- | 379 | test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
|
275 | ;========================================================== |
380 | je .no_figure ;@f |
- | 381 | ||
Line -... | Line 382... | ||
- | 382 | xor ecx,ecx |
|
276 | ;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
383 | push eax |
277 | ;========================================================== |
384 | inc ecx |
278 | .key: |
385 | mov eax,66 |
279 | pusha |
386 | mov ebx,3 |
280 | bt word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
387 | int 0x40 |
281 | jc @f |
388 | test al,0x03 |
282 | popa |
389 | je @f |
283 | ret |
390 | or word ed_flags,ed_shift |
284 | @@: |
391 | |
285 | 392 | @@: pop eax |
|
286 | ;---------------------------------------------------------- |
393 | ;---------------------------------------------------------- |
287 | ;--- ¯à®¢¥à塞, çâ® ¦ â® -------------------------------- |
394 | ;--- ¯à®¢¥à塞, çâ® ¦ â® -------------------------------- |
288 | ;---------------------------------------------------------- |
395 | ;---------------------------------------------------------- |
289 | cmp ah,8 |
396 | cmp ah,8 |
- | 397 | jz .backspace |
|
- | 398 | cmp ah,0xb6 |
|
- | 399 | jz .delete |
|
- | 400 | cmp ah,176 |
|
- | 401 | jz .left |
|
- | 402 | cmp ah,179 |
|
- | 403 | jz .right |
|
290 | je .backspace |
404 | cmp ah,180 |
291 | cmp ah,0xb6 |
405 | jz .home |
- | 406 | cmp ah,181 |
|
- | 407 | jz .end |
|
- | 408 | cmp ah,185 ;insert |
|
292 | je .delete |
409 | jz .insert |
293 | cmp ah,176 |
410 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
294 | je .left |
411 | ; £«ãèª ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢¨§ |
295 | cmp ah,179 |
412 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
296 | je .right |
413 | cmp ah,177 |
297 | cmp ah,180 |
414 | jz .no_figure |
298 | je .home |
415 | cmp ah,178 |
- | 416 | jz .no_figure |
|
- | 417 | cmp ah,27 ;ESC - ª« ¢¨è )) |
|
- | 418 | jz .no_figure |
|
- | 419 | ;--- ¦ â ¤àã£ ï ª« ¢¨è --- |
|
- | 420 | test word ed_flags,ed_figure_only ; ⮫쪮 æ¨äàë ? |
|
- | 421 | jz @f |
|
- | 422 | cmp ah,'0' |
|
299 | cmp ah,181 |
423 | jb .no_figure |
300 | je .end |
424 | cmp ah,'9' |
301 | 425 | ja .no_figure |
|
- | 426 | ||
- | 427 | ||
302 | ;--- ¦ â ¤àã£ ï ª« ¢¨è --- |
428 | ;¯à®¢¥àª shift |
- | 429 | @@: test word ed_flags,ed_shift_on |
|
- | 430 | je @f |
|
- | 431 | ;å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos |
|
303 | bt word ed_flags,15 ; ⮫쪮 æ¨äàë ? |
432 | push eax |
304 | jnc @f |
433 | mov edx,ed_size |
- | 434 | mov ecx,ed_pos |
|
305 | cmp ah,'0' |
435 | call .del_char |
- | 436 | ;;;; |
|
- | 437 | mov eax,ed_shift_pos |
|
306 | jb .no_figure |
438 | mov ebx,ed_size |
- | 439 | sub ebx,eax |
|
307 | cmp ah,'9' |
440 | mov ed_size,ebx |
- | 441 | pop eax |
|
308 | ja .no_figure |
442 | |
309 | jmp @f |
443 | ; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ |
310 | .no_figure: |
- | |
311 | popa |
444 | @@: mov ecx,ed_size |
312 | ret |
445 | mov edx, ed_max |
313 | @@: |
446 | cmp ecx,edx |
314 | ; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ |
447 | jae .no_figure |
- | 448 | mov ebx, ed_pos |
|
315 | mov bx,ed_max |
449 | cmp ebx,edx |
316 | cmp bx,ed_pos |
450 | jl @f ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢® |
- | 451 | .no_figure: |
|
- | 452 | popa |
|
317 | jne @f ; ¥á«¨ ¤ , ¢ ª®¥æ ¯à®æ¥¤ãàë |
453 | ret |
318 | popa |
454 | .insert: test word ed_flags,ed_insert ;not word ed_insert |
319 | ret |
455 | je .insert_1 |
- | 456 | and word ed_flags,ed_insert_cl |
|
- | 457 | jmp .no_figure |
|
320 | @@: |
458 | .insert_1: |
321 | ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢® |
459 | or word ed_flags,ed_insert |
322 | mov edx,ed_text |
460 | jmp .no_figure |
- | 461 | .ins_v: |
|
- | 462 | dec dword [ebp+38];ed_size ;processing is insert |
|
323 | dec edx |
463 | sub esi,ecx |
- | 464 | add esi,ebx |
|
324 | xor ecx,ecx |
465 | mov edi,esi |
- | 466 | jmp .In_k |
|
- | 467 | @@: ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢® |
|
325 | mov cx,ed_size |
468 | mov ecx,ed_size |
- | 469 | push edi eax |
|
- | 470 | mov ebp,edi |
|
326 | cmp cx,ed_pos |
471 | mov esi,ed_text ; ª § â¥«ì ¡ãä¥à |
- | 472 | ;㤥¬ à ¡®â âì á® áâப®© |
|
- | 473 | add esi,ecx ;add ed_size ¤®¡ ¢¨¬ max size |
|
- | 474 | mov edi,esi |
|
- | 475 | ||
- | 476 | cmp ecx,ebx ; ᫨ ã á ¯®§¨æ¨ï ªãàá®à = ⥪ã饬ã à §¬¥àã ¯¥ç â ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®æ¥ |
|
- | 477 | je .In_k |
|
- | 478 | ||
- | 479 | test word [ebp+36],ed_insert ;IF insert is enable â.ª. edi ¨§¬¥¥ ¤à¥á㥬 ç¥à¥§ ebp |
|
- | 480 | jne .ins_v |
|
- | 481 | ||
- | 482 | sub ecx,ebx ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥¨ï. |
|
- | 483 | inc edi ;¬¥á⨬ è¨ á¨¬¢®«ë ¢ ¯à ¢® |
|
- | 484 | std |
|
- | 485 | inc ecx |
|
- | 486 | @@: |
|
327 | je @f |
487 | ;-------- |
328 | .mov_right_next: |
- | |
329 | mov bh,[edx+ecx] |
- | |
330 | mov [edx+ecx+1],bh |
- | |
331 | dec cx |
- | |
332 | cmp cx,ed_pos |
- | |
333 | jne .mov_right_next |
488 | lodsb |
334 | @@: |
- | |
335 | - | ||
336 | - | ||
337 | ; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à |
- | |
338 | mov edx,ed_text |
489 | stosb |
339 | movsx ebx,word ed_pos |
- | |
340 | mov [ebx+edx],ah |
- | |
341 | - | ||
342 | call .clear_cursor |
- | |
343 | ; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨ |
- | |
344 | inc word ed_pos |
- | |
345 | mov bx,ed_size |
- | |
346 | cmp bx,ed_max |
- | |
347 | je .draw_bg_cursor_text;.key_end_draw |
- | |
348 | inc word ed_size |
- | |
349 | - | ||
350 | ;push word ed_offset |
- | |
351 | call .check_offset |
- | |
352 | ;pop ax |
- | |
353 | ;cmp ax,ed_offset |
490 | ;-------- |
354 | ;jne .draw_bg_cursor_text |
- | |
355 | test eax,eax |
- | |
356 | jz .draw_bg_cursor_text |
- | |
357 | 491 | loop @b |
|
358 | call .get_n |
- | |
359 | sub ax,ed_pos |
492 | .In_k: cld |
360 | add ax,ed_offset |
- | |
361 | inc ax |
- | |
362 | shl eax,16 |
- | |
363 | mov ax,ed_pos |
493 | pop eax |
364 | sub ax,ed_offset |
494 | mov al,ah |
365 | dec ax |
495 | stosb |
366 | ror eax,16 |
- | |
367 | call .draw_bg_eax |
- | |
368 | - | ||
369 | jmp .draw_cursor_text |
496 | pop edi |
370 | 497 | ; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à |
|
371 | ;jmp .draw_cursor_text;.key_end_draw |
- | |
372 | - | ||
373 | .delete: |
- | |
374 | mov dx,ed_size |
- | |
375 | mov cx,ed_pos |
- | |
376 | ;inc edx |
- | |
377 | ;add ecx,900 |
- | |
378 | ;sub ecx,1 |
- | |
379 | cmp dx,cx |
- | |
380 | jg @f |
- | |
381 | popa |
- | |
382 | ret |
- | |
383 | - | ||
384 | @@: |
- | |
385 | mov edx,ed_text |
- | |
386 | ;dec edx |
- | |
387 | .mov_stop_next: |
- | |
388 | mov bh,[edx+ecx+1] |
- | |
389 | mov [edx+ecx],bh |
498 | ; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨ |
390 | inc cx |
- | |
391 | mov bx,ed_size |
- | |
392 | ;dec bx |
- | |
393 | ;dec bx |
- | |
394 | cmp cx,bx |
- | |
395 | jne .mov_stop_next |
- | |
396 | - | ||
397 | ; 㬥ìè ¥¬ § 票¥ ¯®§¨æ¨¨ ¨ à §¬¥à |
- | |
398 | ;dec word ed_pos |
499 | inc dword ed_size |
399 | dec word ed_size |
- | |
400 | ;push word ed_offset |
- | |
401 | call .check_offset |
- | |
402 | ;pop ax |
- | |
403 | ;cmp ax,ed_offset |
- | |
404 | ;jne .draw_bg_cursor_text |
- | |
405 | test eax,eax |
- | |
406 | jz .draw_bg_cursor_text |
- | |
407 | - | ||
408 | call .get_n |
500 | inc dword ed_pos |
409 | sub ax,ed_pos |
501 | call .draw_all2 |
- | 502 | jmp .shift;.draw_cursor_text |
|
- | 503 | .delete: |
|
- | 504 | mov edx,ed_size |
|
Line 410... | Line 505... | ||
410 | add ax,ed_offset |
505 | mov ecx,ed_pos |
411 | shl eax,16 |
506 | cmp edx,ecx |
412 | mov ax,ed_pos |
507 | jg .bac_del |
- | 508 | test word ed_flags,ed_shift_on |
|
413 | sub ax,ed_offset |
509 | jne .del_bac |
414 | ror eax,16 |
510 | popa |
415 | call .draw_bg_eax |
511 | ret |
416 | 512 | .bac_del: |
|
417 | jmp .draw_cursor_text |
513 | call .del_char |
418 | popa |
514 | jmp .draw_all |
419 | ret |
515 | |
- | 516 | ;--- ¦ â ª« ¢¨è backspace --- |
|
- | 517 | .backspace: |
|
420 | 518 | ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ? |
|
- | 519 | mov edx,ed_size |
|
- | 520 | mov ecx,ed_pos |
|
- | 521 | test ecx,ecx |
|
- | 522 | jnz .del_bac |
|
- | 523 | test word ed_flags,ed_shift_on |
|
Line -... | Line 524... | ||
- | 524 | jne .bac_del |
|
421 | ;--- ¦ â ª« ¢¨è backspace --- |
525 | popa |
- | 526 | ret |
|
422 | .backspace: |
527 | .del_bac: |
423 | ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ? |
528 | cmp edx,ecx ;if ed_pos=ed_size |
424 | mov bx,ed_pos |
529 | je @f |
- | 530 | dec ecx |
|
- | 531 | call .del_char |
|
- | 532 | @@: test word ed_flags,ed_shift_on |
|
- | 533 | jne .bac_del |
|
Line 425... | Line -... | ||
425 | ;cmp bx,0 |
- | |
426 | ;jne @f; .key_end ; ¥á«¨ ¤ , ¢ ª®¥æ |
- | |
427 | test bx,bx |
- | |
428 | jnz @f |
- | |
429 | popa |
- | |
430 | ret |
- | |
431 | @@: |
- | |
432 | - | ||
433 | ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢«¥¢® |
- | |
434 | mov edx,ed_text |
- | |
435 | dec edx |
- | |
436 | movsx ecx,word ed_pos |
534 | dec dword ed_pos |
Line -... | Line 535... | ||
- | 535 | ||
437 | 536 | .draw_all: |
|
- | 537 | push .shift;.draw_cursor_text;eax |
|
438 | .mov_left_next: |
538 | |
439 | mov bh,[edx+ecx+1] |
539 | test word ed_flags,ed_shift_on |
440 | mov [edx+ecx],bh |
- | |
441 | inc cx |
- | |
442 | mov bx,ed_size |
540 | je @f |
- | 541 | mov eax,ed_shift_pos |
|
- | 542 | mov ebx,ed_size |
|
- | 543 | sub ebx,eax |
|
- | 544 | mov ed_size,ebx |
|
- | 545 | jmp .draw_all2 |
|
- | 546 | ||
- | 547 | @@: dec dword ed_size |
|
443 | inc bx |
548 | |
- | 549 | .draw_all2: |
|
Line 444... | Line 550... | ||
444 | cmp cx,bx |
550 | and word ed_flags,ed_shift_cl |
- | 551 | call .clear_cursor |
|
445 | jne .mov_left_next |
552 | call .check_offset |
- | 553 | ;;;;;;;;;;;;;;; |
|
446 | 554 | test eax,eax |
|
447 | ; 㬥ìè ¥¬ § 票¥ ¯®§¨æ¨¨ ¨ à §¬¥à |
555 | jne @f |
- | 556 | call .draw_bg |
|
448 | dec word ed_pos |
557 | ret |
- | 558 | ;;;;;;;;;;;;;;; |
|
- | 559 | @@: call .get_n |
|
- | 560 | push eax |
|
- | 561 | mov ebx,ed_offset |
|
- | 562 | add eax,ebx ;eax = w_off= ed_offset+width |
|
449 | dec word ed_size |
563 | mov ebx,ed_size |
450 | 564 | ||
- | 565 | cmp eax,ebx |
|
- | 566 | jb @f |
|
- | 567 | mov eax,ed_pos |
|
451 | ;push word ed_offset |
568 | sub ebx,eax |
- | 569 | mov ecx,ed_offset |
|
- | 570 | sub eax,ecx |
|
- | 571 | jmp .nxt |
|
- | 572 | @@: mov ebx,ed_pos |
|
Line 452... | Line 573... | ||
452 | call .check_offset |
573 | push ebx |
- | 574 | sub eax,ebx |
|
- | 575 | mov ebx,eax ;It is don't optimal |
|
- | 576 | ||
453 | ;pop ax |
577 | pop eax ;ed_pos |
- | 578 | mov ecx,ed_offset |
|
- | 579 | sub eax,ecx |
|
- | 580 | ||
- | 581 | .nxt: |
|
- | 582 | mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë |
|
- | 583 | add ebp,ebx |
|
454 | ;cmp ax,ed_offset |
584 | pop edx |
455 | ;jne .draw_bg_cursor_text |
585 | cmp ebp,edx |
456 | test eax,eax |
586 | je @f |
457 | jz .draw_bg_cursor_text |
587 | inc ebx |
458 | 588 | ||
459 | call .get_n |
- | |
460 | sub ax,ed_pos |
- | |
461 | add ax,ed_offset |
589 | @@: mov edx,ebx |
462 | shl eax,16 |
590 | lea ebx,[eax*2+eax] |
463 | mov ax,ed_pos |
591 | shl ebx,1 |
464 | sub ax,ed_offset |
592 | add ebx,ed_left |
465 | ror eax,16 |
- | |
466 | call .draw_bg_eax |
- | |
467 | - | ||
468 | jmp .draw_cursor_text |
- | |
469 | popa |
- | |
470 | ret |
593 | inc ebx |
471 | - | ||
472 | ;--- ¦ â ª« ¢¨è left --- |
- | |
473 | .left: |
594 | shl ebx,16 |
474 | mov bx,ed_pos |
595 | lea ecx,[edx*2+edx] |
475 | ;cmp bx,0 |
596 | shl ecx,1 |
476 | ;je @f |
597 | mov bx,cx |
477 | test bx,bx |
598 | mov edx,ed_color |
478 | jz @f |
599 | call .draw_bg_eax |
479 | call .clear_cursor |
600 | ret |
480 | dec word ed_pos |
- | |
481 | call .check_offset |
601 | ; jmp .shift |
482 | test eax,eax |
- | |
483 | jz .draw_bg_cursor_text |
602 | ;--- ¦ â ª« ¢¨è left --- |
484 | call .draw_cursor |
- | |
485 | @@: |
- | |
486 | popa |
- | |
487 | ret |
- | |
488 | - | ||
489 | ;--- ¦ â ª« ¢¨è right --- |
603 | .left: call .sh_enable |
490 | .right: |
604 | mov ebx,ed_pos |
491 | mov bx,ed_pos |
605 | test ebx,ebx |
492 | cmp bx,ed_size |
606 | jz .nd_k |
493 | je @f |
607 | call .clear_cursor |
494 | call .clear_cursor |
608 | dec dword ed_pos |
495 | inc word ed_pos |
- | |
496 | call .check_offset |
- | |
497 | test eax,eax |
- | |
498 | jz .draw_bg_cursor_text |
- | |
499 | call .draw_cursor |
- | |
500 | @@: |
609 | jmp .nd_k |
501 | popa |
- | |
Line 502... | Line 610... | ||
502 | ret |
610 | ;--- ¦ â ª« ¢¨è right --- |
503 | 611 | .right: call .sh_enable |
|
504 | .home: |
612 | mov ebx,ed_pos |
505 | mov bx,ed_pos |
613 | cmp ebx,ed_size |
506 | test bx,bx |
614 | je .nd_k |
507 | jz @f |
615 | call .clear_cursor |
508 | call .clear_cursor |
616 | inc dword ed_pos |
509 | xor eax,eax |
617 | jmp .nd_k |
510 | mov ed_pos,ax |
618 | .home: call .sh_enable |
511 | call .check_offset |
619 | mov ebx,ed_pos |
512 | test eax,eax |
620 | test ebx,ebx |
- | 621 | jz .nd_k |
|
- | 622 | call .clear_cursor |
|
- | 623 | xor eax,eax |
|
- | 624 | mov ed_pos,eax |
|
- | 625 | jmp .nd_k |
|
- | 626 | ||
- | 627 | .end: call .sh_enable |
|
- | 628 | mov ebx,ed_pos |
|
- | 629 | cmp ebx,dword ed_size |
|
- | 630 | je .nd_k |
|
- | 631 | call .clear_cursor |
|
- | 632 | mov eax,ed_size |
|
- | 633 | mov ed_pos,eax |
|
- | 634 | .nd_k: call .check_offset |
|
- | 635 | ;test eax,eax |
|
- | 636 | ;jz .draw_bg_cursor_text |
|
- | 637 | call .draw_cursor |
|
- | 638 | ||
- | 639 | .shift: ;;;;;;;SHIFT |
|
- | 640 | ||
- | 641 | call .draw_bg ;¥ ®¯â¨¬ «ì® |
|
- | 642 | test word ed_flags,ed_shift |
|
- | 643 | je .f_exit |
|
- | 644 | ;;;;;;SHIFT end |
|
- | 645 | mov eax,dword ed_pos |
|
- | 646 | mov ebx,dword ed_shift_pos |
|
- | 647 | cmp eax,ebx |
|
- | 648 | jae .sh_n |
|
- | 649 | push eax ;¬¥ì襥 ¢ eax |
|
- | 650 | push ebx ;¡®«ì襥 |
|
- | 651 | jmp .sh_n1 |
|
- | 652 | ;¥á«¨ ¨ ç¥ |
|
- | 653 | .sh_n: push ebx |
|
- | 654 | push eax |
|
- | 655 | .sh_n1: |
|
- | 656 | ; jmp .draw_all2 |
|
- | 657 | ;;;;;;;;;;;;;;;;;;;;;;;;; |
|
- | 658 | ;call .clear_cursor |
|
- | 659 | call .check_offset |
|
- | 660 | call .get_n |
|
- | 661 | mov edx,eax ;size of ed_box |
|
- | 662 | ; push eax |
|
- | 663 | mov ecx,ed_offset |
|
- | 664 | add eax,ecx ;eax = w_off= ed_offset+width |
|
- | 665 | mov ebp,eax ;save |
|
- | 666 | pop ebx ;¡®«ì襥 |
|
- | 667 | pop eax ;¬¥ì襥 |
|
- | 668 | ||
- | 669 | ||
- | 670 | cmp eax,ecx ;áà ¢¥¨¥ á ¬¥ì襣® á offset. |
|
513 | jz .draw_bg_cursor_text |
671 | jae .f_f ;¥á«¨ ¡®«ìè¥ |
- | 672 | xor eax,eax |
|
- | 673 | cmp ebp,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬 |
|
- | 674 | jb @f |
|
- | 675 | sub ebx,ecx |
|
- | 676 | jmp .nxt_f |
|
- | 677 | @@: mov ebx,ebp |
|
- | 678 | sub ebx,ecx |
|
- | 679 | jmp .nxt_f |
|
- | 680 | ||
- | 681 | .f_f: |
|
- | 682 | sub eax,ecx |
|
- | 683 | cmp ebp,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬 |
|
- | 684 | jle @f |
|
- | 685 | sub ebx,ecx |
|
- | 686 | sub ebx,eax |
|
- | 687 | jmp .nxt_f |
|
- | 688 | @@: |
|
- | 689 | mov ebx,ebp |
|
- | 690 | sub ebx,ecx |
|
- | 691 | sub ebx,eax |
|
- | 692 | .nxt_f: |
|
- | 693 | mov edx,ebx |
|
- | 694 | lea ebx,[eax*2+eax] |
|
- | 695 | shl ebx,1 |
|
- | 696 | add ebx,ed_left |
|
514 | call .draw_cursor |
697 | inc ebx |
- | 698 | shl ebx,16 |
|
- | 699 | lea ecx,[edx*2+edx] |
|
- | 700 | shl ecx,1 |
|
- | 701 | mov bx,cx |
|
- | 702 | mov edx,shift_color |
|
515 | @@: |
703 | call .draw_bg_eax |
Line -... | Line 704... | ||
- | 704 | and word ed_flags,1111111111111011b |
|
- | 705 | jmp .draw_cursor_text |
|
- | 706 | ;;;;;;;;;;;;;;;;;;;;; |
|
- | 707 | ||
- | 708 | .f_exit: and word ed_flags,ed_shift_cl |
|
- | 709 | jmp .draw_cursor_text |
|
- | 710 | ||
- | 711 | ;¯à®¢¥àª á®áâ®ï¨ï shift ¡ë« «¨ ® ¦ â à ìè¥? |
|
- | 712 | .sh_enable: |
|
- | 713 | test word ed_flags,ed_shift |
|
- | 714 | je @f |
|
- | 715 | test word ed_flags,ed_shift_on |
|
- | 716 | jne .sh_ext_en |
|
- | 717 | push dword ed_pos |
|
- | 718 | pop dword ed_shift_pos |
|
- | 719 | or word ed_flags,ed_shift_on |
|
- | 720 | ret |
|
- | 721 | ||
- | 722 | @@: and word ed_flags,ed_shift_cl |
|
- | 723 | .sh_ext_en: ret |
|
- | 724 | ||
- | 725 | ;- 㤠«¥¨¥ ᨬ¢®« |
|
- | 726 | ;å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos |
|
- | 727 | .del_char: |
|
- | 728 | mov esi,ed_text |
|
- | 729 | test word ed_flags,ed_shift_on |
|
- | 730 | je @f |
|
- | 731 | mov eax,dword ed_shift_pos |
|
- | 732 | mov ebx,esi |
|
- | 733 | cmp eax,ecx |
|
- | 734 | jae .dh_n |
|
- | 735 | ||
- | 736 | mov ed_pos,eax ;çâ® ¡ë ¥ ¡ë«® ã¡¥£ ¨ï ªãàá®à |
|
- | 737 | mov ebp,ecx |
|
- | 738 | sub ebp,eax |
|
- | 739 | add ebx,eax ;eax ¬¥ìè¥ |
|
- | 740 | sub edx,ecx |
|
- | 741 | add esi,ecx |
|
- | 742 | ||
- | 743 | ||
- | 744 | mov ed_shift_pos,ebp |
|
Line -... | Line 745... | ||
- | 745 | jmp .del_ch_sh |
|
- | 746 | ;¥á«¨ ¨ ç¥ |
|
- | 747 | .dh_n: |
|
- | 748 | mov ebp,eax |
|
- | 749 | sub ebp,ecx |
|
- | 750 | add ebx,ecx |
|
- | 751 | sub edx,eax |
|
- | 752 | add esi,eax |
|
- | 753 | mov ed_shift_pos,ebp |
|
- | 754 | jmp .del_ch_sh |
|
516 | popa |
755 | |
517 | ret |
756 | @@: add esi,ecx ;㪠§ ⥫ì + ᬥ饨¥ ª ॠ«ì®¬ã ¡ãää¥àã |
518 | 757 | mov ebx,esi |
|
519 | .end: |
758 | inc esi |
520 | mov bx,ed_pos |
759 | cld |
Line 544... | Line 783... | ||
544 | mov ebx,2 |
783 | mov ebx,2 |
545 | int 0x40 |
784 | int 0x40 |
546 | ;---------------------------------------------------------- |
785 | ;---------------------------------------------------------- |
547 | ;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ---------------------------------- |
786 | ;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ---------------------------------- |
548 | ;---------------------------------------------------------- |
787 | ;---------------------------------------------------------- |
549 | bt eax,0 |
788 | test eax,1 |
550 | jc .mouse_left_button |
789 | jnz .mouse_left_button |
551 | - | ||
552 | bt eax,1 |
- | |
553 | jc @f |
- | |
554 | btr word ed_flags,2 |
- | |
555 | @@: |
- | |
556 | - | ||
557 | popa |
790 | @@: popa |
558 | ret |
791 | ret |
Line 559... | Line 792... | ||
559 | 792 | ||
560 | .mouse_left_button: |
793 | .mouse_left_button: |
561 | ;---------------------------------------------------------- |
794 | ;---------------------------------------------------------- |
562 | ;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ----------------------------- |
795 | ;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ----------------------------- |
563 | ;---------------------------------------------------------- |
- | |
564 | bts word ed_flags,2 |
- | |
565 | jc .mouse_pressed |
796 | ;---------------------------------------------------------- |
566 | mov eax,37 |
- | |
567 | ;mov ebx,1 |
797 | mov eax,37 |
568 | xor ebx,ebx |
798 | xor ebx,ebx |
569 | inc ebx |
799 | inc ebx |
570 | int 0x40 |
800 | int 0x40 |
571 | ;---------------------------------------------------------- |
801 | ;---------------------------------------------------------- |
572 | ;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box ------------- |
802 | ;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box ------------- |
573 | ;---------------------------------------------------------- |
803 | ;---------------------------------------------------------- |
574 | mov bx,ed_top |
804 | mov ebx,ed_top |
575 | cmp ax,bx |
805 | cmp ax,bx |
Line 576... | Line 806... | ||
576 | jl ._blur;.mouse_end_no_focus |
806 | jl ._blur;.mouse_end_no_focus |
577 | 807 | ||
Line 586... | Line 816... | ||
586 | jl ._blur;.mouse_end_no_focus |
816 | jl ._blur;.mouse_end_no_focus |
Line 587... | Line 817... | ||
587 | 817 | ||
588 | add bx,ed_width |
818 | add bx,ed_width |
589 | cmp ax,bx |
819 | cmp ax,bx |
590 | jg ._blur;.mouse_end_no_focus |
- | |
591 | 820 | jg ._blur;.mouse_end_no_focus |
|
592 | ;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à --- |
821 | ;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à --- |
593 | push eax |
822 | push eax |
594 | call .clear_cursor |
823 | call .clear_cursor |
595 | pop eax |
824 | pop eax |
Line 603... | Line 832... | ||
603 | jna @f |
832 | jna @f |
604 | mov ax,ed_size |
833 | mov ax,ed_size |
605 | @@: |
834 | @@: |
606 | mov ed_pos,ax |
835 | mov ed_pos,ax |
607 | call .check_offset |
836 | call .check_offset |
608 | test eax,eax |
- | |
609 | jz .draw_bg_cursor_text |
- | |
610 | call .draw_cursor |
837 | call .draw_cursor |
611 | - | ||
- | 838 | ;---------------------------------------------------------- |
|
- | 839 | ;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá --------------------------- |
|
- | 840 | ;---------------------------------------------------------- |
|
- | 841 | bts word ed_flags,1 |
|
- | 842 | jc .mouse_pressed |
|
612 | call .focus |
843 | call .draw_cursor |
613 | - | ||
- | 844 | call .draw_border |
|
614 | .mouse_pressed: |
845 | .mouse_pressed: |
615 | popa |
846 | popa |
616 | ret |
847 | ret |
617 | - | ||
618 | ;.mouse_end_no_focus: |
848 | ;.mouse_end_no_focus: |
619 | ; call .blur |
849 | ; call .blur |
620 | ;popa |
850 | ;popa |
621 | ;ret |
851 | ;ret |
622 | - | ||
623 | - | ||
624 | ;---------------------------------------------------------- |
- | |
625 | ;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá --------------------------- |
- | |
626 | ;---------------------------------------------------------- |
- | |
627 | .blur: |
852 | ;.blur: |
628 | pusha |
853 | ;pusha |
629 | ._blur: |
854 | ._blur: |
630 | bt word ed_flags,14 |
855 | test word ed_flags,ed_always_focus |
631 | jc @f |
856 | jne @f |
632 | btr word ed_flags,1 |
857 | btr word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
633 | jnc @f |
858 | jnc @f |
634 | call .clear_cursor |
859 | call .clear_cursor |
635 | jmp .blur_end |
- | |
636 | .focus: |
- | |
637 | pusha |
- | |
638 | bts word ed_flags,1 |
- | |
639 | jc @f |
- | |
640 | call .draw_cursor |
- | |
641 | .blur_end: |
- | |
642 | call .draw_border |
860 | call .draw_border |
643 | @@: |
861 | @@: |
644 | popa |
862 | popa |
645 | ret |
863 | ret |
Line 648... | Line 866... | ||
648 | ;--- ¯à®æ¥¤ãà à §¬ë¢ ¨ï 䮪ãá -------------------------- |
866 | ;--- ¯à®æ¥¤ãà à §¬ë¢ ¨ï 䮪ãá -------------------------- |
649 | ;---------------------------------------------------------- |
867 | ;---------------------------------------------------------- |
650 | ;.blur: |
868 | ;.blur: |
651 | ;pusha |
869 | ;pusha |
652 | ;._blur: |
870 | ;._blur: |
653 | ;btr word ed_flags,1 |
871 | ;btr ed_flags,1 |
654 | ;jnc @f |
872 | ;jnc @f |
655 | ;call .draw_border |
873 | ;call .draw_border |
656 | ;call .clear_cursor |
874 | ;call .clear_cursor |
657 | ;@@: |
875 | ;@@: |
658 | ;popa |
876 | ;popa |
659 | ;ret |
877 | ;ret |
660 | } |
878 | } |
661 | ed_figure_only=1000000000000000b |
879 | ed_figure_only=1000000000000000b |
662 | ed_always_focus=100000000000000b |
880 | ed_always_focus=100000000000000b |
663 | ed_focus=10b |
881 | ed_focus=10b |
664 | ed_struc_size=36 |
882 | ed_shift_on=1000b |
- | 883 | ed_shift=100b |
|
- | 884 | ed_shift_cl=1111111111110011b |
|
665 | macro draw_edit_boxes start,end |
885 | macro draw_edit_boxes start,end |
666 | { |
886 | { |
667 | mov edi,start |
887 | mov edi,start |
668 | mov ecx,((end-start)/ed_struc_size) |
888 | mov ecx,((end-start)/ed_struc_size) |
669 | @@: |
889 | @@: |
Line 689... | Line 909... | ||
689 | @@: |
909 | @@: |
690 | call edit_box.key |
910 | call edit_box.key |
691 | add edi,ed_struc_size |
911 | add edi,ed_struc_size |
692 | loop @b |
912 | loop @b |
693 | } |
913 | } |
694 | - | ||
- | 914 | ed_struc_size=62 |
|
695 | struc edit_box width,left,top,color,focus_border_color,\ |
915 | struc edit_box width,left,top,color,focus_border_color,\ |
696 | blur_border_color,text_color,max,text,flags,size |
916 | blur_border_color,text_color,max,text,flags,size |
697 | { |
917 | { |
698 | .width dw width |
918 | .width dd width |
699 | .left dw left |
919 | .left dd left |
700 | .top dw top |
920 | .top dd top |
701 | .color dd color |
921 | .color dd color |
702 | .focus_border_color dd focus_border_color |
922 | .focus_border_color dd focus_border_color |
703 | .blur_border_color dd blur_border_color |
923 | .blur_border_color dd blur_border_color |
704 | .text_color dd text_color |
924 | .text_color dd text_color |
705 | .flags dw flags+0 |
- | |
706 | .max dw max |
925 | .max dd max |
707 | .size dw size+0 |
- | |
708 | .pos dw 0 |
- | |
709 | .offset dw 0 |
- | |
710 | .text dd text |
926 | .text dd text |
- | 927 | .flags dw flags+0 |
|
- | 928 | .size dd size+0 |
|
- | 929 | .pos dd 0 |
|
- | 930 | .offset dd 0 |
|
- | 931 | .cl_curs_x dd 0 |
|
- | 932 | .cl_curs_y dd 0 |
|
- | 933 | .shift dd 0 |
|
711 | } |
934 | } |
Line 712... | Line 935... | ||
712 | 935 | ||
713 | macro edit_boxes_set_sys_color start,end,color_table |
936 | macro edit_boxes_set_sys_color start,end,color_table |
714 | { |
937 | { |