Rev 461 | Rev 507 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 461 | Rev 483 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | ; ªà®á ¤«ï ¢ë¢®¤ ®á®¢ëå äãªæ¨© ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬ |
|
- | 2 | macro use_general_func |
|
- | 3 | { |
|
- | 4 | ;debug_func |
|
- | 5 | ;---------------------------------------------------------- |
|
- | 6 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ¢ë¤¥«¥®© ç á⨠----------------- |
|
- | 7 | ;---------------------------------------------------------- |
|
- | 8 | .draw_shift: |
|
- | 9 | test word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
|
- | 10 | jz @f |
|
- | 11 | mov ebp,shift_color |
|
- | 12 | mov ebx,dword ed_shift_pos |
|
- | 13 | call .sh_cl_ |
|
- | 14 | @@: ret |
|
- | 15 | ;---------------------------------------------------------- |
|
- | 16 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ -------------------------- |
|
- | 17 | ;---------------------------------------------------------- |
|
- | 18 | .draw_text: |
|
- | 19 | ;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ --- |
|
- | 20 | ;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì --- |
|
- | 21 | call .get_n |
|
- | 22 | mov esi,ed_size |
|
- | 23 | mov ebx,ed_offset |
|
- | 24 | sub esi,ebx |
|
- | 25 | cmp eax,esi |
|
- | 26 | jae @F |
|
- | 27 | mov esi,eax ;çâ®¡ë ¥ ¢ë室¨âì § ¯à¥¤¥«ë íªà |
|
- | 28 | ;--- à¨á㥬 ⥪áâ --- |
|
- | 29 | @@: mov eax,4 |
|
- | 30 | mov ebx,ed_left |
|
- | 31 | mov edx,ed_offset |
|
- | 32 | add ebx,2 |
|
- | 33 | shl ebx,16 |
|
- | 34 | mov bx,ed_top |
|
- | 35 | add ebx,4 |
|
- | 36 | mov ecx,ed_text_color |
|
- | 37 | add edx,ed_text |
|
- | 38 | mcall |
|
- | 39 | ret |
|
- | 40 | ;---------------------------------------------------------- |
|
- | 41 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ---------------------------- |
|
- | 42 | ;¢å®¤ë¥ ¤ ë¥ |
|
- | 43 | ;eax |
|
- | 44 | ;edx - color |
|
- | 45 | ;---------------------------------------------------------- |
|
- | 46 | ;¢å®¤ ⮫쪮 梥â edx |
|
- | 47 | .draw_bg: |
|
- | 48 | mov ebx,ed_left |
|
- | 49 | add ebx,1 |
|
- | 50 | shl ebx,16 |
|
- | 51 | mov bx,ed_width |
|
- | 52 | sub ebx,1 |
|
- | 53 | mov edx,ed_color |
|
- | 54 | .draw_bg_eax: |
|
- | 55 | mov ecx,ed_top |
|
- | 56 | mov eax,13 |
|
- | 57 | add ecx,1 |
|
- | 58 | shl ecx,16 |
|
- | 59 | mov cx,ed_height |
|
- | 60 | dec ecx |
|
- | 61 | mcall |
|
- | 62 | ret |
|
- | 63 | ||
- | 64 | ;---------------------------------------------------------- |
|
- | 65 | ;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨¥ ª®¬¯®¥â |
|
- | 66 | ;---------------------------------------------------------- |
|
- | 67 | .get_n: |
|
- | 68 | mov eax,ed_width ;¯®«ã祬 è¨à¨ã ª®¬¯®¥â |
|
- | 69 | xor edx,edx ;१ã«ìâ â à ᯮ«®£ ¥âáï ¢ ¯ ॠedx:eax ¢ eax - ®áâ ⮪ |
|
- | 70 | sub eax,4 ;¢ëç⨬ 4 |
|
- | 71 | mov ebx,6 ;§ £à㧬¨ ¤¥«¨â¥«ì |
|
- | 72 | div ebx ;à §¬¤¥«¨¬ 6 |
|
- | 73 | ret |
|
- | 74 | ;---------------------------------------------------------- |
|
- | 75 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à -------------------------- |
|
- | 76 | ;---------------------------------------------------------- |
|
- | 77 | ;¢å®¤ë¥ ebp- 梥â |
|
- | 78 | .clear_cursor: |
|
- | 79 | mov edx,ebp |
|
- | 80 | mov ebx,cl_curs_x |
|
- | 81 | mov ecx,cl_curs_y |
|
- | 82 | jmp .draw_curs |
|
- | 83 | .draw_cursor: |
|
- | 84 | mov edx,ed_text_color |
|
- | 85 | mov ebx,ed_pos |
|
- | 86 | mov ecx,ed_offset |
|
- | 87 | sub ebx,ecx |
|
- | 88 | ||
- | 89 | lea ebx,[ebx*2+ebx] |
|
- | 90 | shl ebx,1 |
|
- | 91 | ;imul ebx,6 |
|
- | 92 | add bx,ed_left |
|
- | 93 | mov ecx,ed_top |
|
- | 94 | inc ebx |
|
- | 95 | add ecx,2 |
|
- | 96 | mov ebp,ebx |
|
- | 97 | shl ebx,16 |
|
- | 98 | mov bx,bp |
|
- | 99 | mov ebp,ecx |
|
- | 100 | ||
- | 101 | shl ecx,16 |
|
- | 102 | mov cx,bp |
|
- | 103 | add cx,ed_height-4 |
|
- | 104 | ||
- | 105 | mov cl_curs_x,ebx |
|
- | 106 | mov cl_curs_y,ecx |
|
- | 107 | .draw_curs: |
|
- | 108 | mcall 38 |
|
- | 109 | ret |
|
- | 110 | ;---------------------------------------------------------- |
|
- | 111 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
|
- | 112 | ;---------------------------------------------------------- |
|
- | 113 | .draw_border: |
|
- | 114 | ;--- 梥â à ¬ª¨ --- |
|
- | 115 | test word ed_flags,ed_focus |
|
- | 116 | mov edx,ed_focus_border_color |
|
- | 117 | jne @f |
|
- | 118 | mov edx,ed_blur_border_color |
|
- | 119 | @@: |
|
- | 120 | ;--- ᢥàåã --- |
|
- | 121 | mov eax,38 |
|
- | 122 | mov ebx,ed_left |
|
- | 123 | mov ecx,ebx |
|
- | 124 | shl ebx,16 |
|
- | 125 | mov bx,cx |
|
- | 126 | add bx,ed_width |
|
- | 127 | mov ecx, ed_top |
|
- | 128 | mov esi,ecx |
|
- | 129 | shl ecx,16 |
|
- | 130 | mov cx,si |
|
- | 131 | mcall |
|
- | 132 | ;--- ᨧã --- |
|
- | 133 | mov esi,ecx |
|
- | 134 | add ecx,ed_height |
|
- | 135 | mov ebp,ecx |
|
- | 136 | shl ecx,16 |
|
- | 137 | mov cx,bp |
|
- | 138 | mcall |
|
- | 139 | ;--- á«¥¢ --- |
|
- | 140 | mov cx,si |
|
- | 141 | mov ebp,ebx |
|
- | 142 | sub bx,ed_width |
|
- | 143 | mcall |
|
- | 144 | ;--- á¯à ¢ --- |
|
- | 145 | mov ebx,ebp |
|
- | 146 | shl ebx,16 |
|
- | 147 | mov bx,bp |
|
- | 148 | mcall |
|
- | 149 | ret |
|
- | 150 | ;---------------------------------------------------------- |
|
- | 151 | ;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, --- |
|
- | 152 | ;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------ |
|
- | 153 | ;--- ¥á«¨ ᬥ饨¥ ¡ë«® ãáâ ®¢ª ä« £ ed_offset_cl ¨ ç¥ |
|
- | 154 | ; ¥á«¨ ¨ç¥£® ¥ ¨§¬¥¨«®áì â® ¢ëáâ ¢«¥¨¥ ed_offset_fl |
|
- | 155 | ; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï¨ï ª®¬¯®¥â®¢ word ed_flags |
|
- | 156 | ;---------------------------------------------------------- |
|
- | 157 | .check_offset: |
|
- | 158 | pusha |
|
- | 159 | mov ecx,ed_pos |
|
- | 160 | mov ebx,ed_offset |
|
- | 161 | cmp ebx,ecx |
|
- | 162 | ja .sub_8 |
|
- | 163 | ||
- | 164 | push ebx |
|
- | 165 | call .get_n ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ ॠॣ¨áâ஢ edx:eax |
|
- | 166 | pop ebx |
|
- | 167 | mov edx,ebx |
|
- | 168 | add edx,eax ;ed_offset+width editbox |
|
- | 169 | inc edx ;¥®¡å®¤¨¬® ¤«ï ®¬ «ì®£® ¯®«®¦¥¨ï ªãàá®à ¢ ªà ©¥© «¥¢®© ¯®§¨æ¨¨ |
|
- | 170 | cmp edx,ecx |
|
- | 171 | ja @f |
|
- | 172 | ||
- | 173 | mov edx,ed_size |
|
- | 174 | cmp edx,ecx |
|
- | 175 | je .add_end |
|
- | 176 | ||
- | 177 | sub edx,ecx |
|
- | 178 | cmp edx,8 |
|
- | 179 | jbe .add_8 |
|
- | 180 | add ebx,8 |
|
- | 181 | jmp .chk_d |
|
- | 182 | ||
- | 183 | .sub_8: cmp ecx,0 |
|
- | 184 | je .sub_min |
|
- | 185 | cmp ebx,8 |
|
- | 186 | jbe .sub_min |
|
- | 187 | sub ebx,8 ;ebx=ed_offset |
|
- | 188 | jmp .chk_d |
|
- | 189 | .sub_min: |
|
- | 190 | xor ebx,ebx |
|
- | 191 | jmp .chk_d |
|
- | 192 | ||
- | 193 | .add_end:sub edx,eax |
|
- | 194 | mov ebx,edx |
|
- | 195 | jmp .chk_d |
|
- | 196 | .add_8: add ebx,edx |
|
- | 197 | .chk_d: mov ed_offset,ebx |
|
- | 198 | call .draw_bg |
|
- | 199 | and word ed_flags,ed_offset_cl |
|
- | 200 | edit_ex |
|
- | 201 | @@: |
|
- | 202 | or word ed_flags,ed_offset_fl |
|
- | 203 | edit_ex |
|
- | 204 | } |
|
- | 205 | ||
- | 206 | macro use_key_func |
|
- | 207 | { |
|
- | 208 | ;¡à ¡®âª Shift ¤«ï áïâ¨ï ¢ë¤¥«¥¨ï ¥¨§¢¥á⮩ ®¡« á⨠|
|
- | 209 | .shift: ;;;;;;;SHIFT |
|
- | 210 | test word ed_flags,ed_shift |
|
- | 211 | je .f_exit |
|
- | 212 | ||
- | 213 | @@: mov ebp,shift_color |
|
- | 214 | or word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
|
- | 215 | mov ebx,dword ed_shift_pos |
|
- | 216 | call .sh_cl_ |
|
- | 217 | jmp .draw_cursor_text |
|
- | 218 | ;;;;;;;;;;;;;;;;;;;;; |
|
- | 219 | .f_exit:call .check_offset |
|
- | 220 | and word ed_flags,ed_shift_cl |
|
- | 221 | call .enable_null |
|
- | 222 | jmp .draw_cursor_text |
|
- | 223 | .sh_cl_: |
|
- | 224 | ;;;;;;SHIFT end |
|
- | 225 | ;®¡à ¡®âª ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥¨¨ ¢ë¤¥«¥¨ï |
|
- | 226 | ;¤«ï ®¡à ¡®âª¨ áïâ¨ï ¢ë¤¥«¥¨ï |
|
- | 227 | ;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
|
- | 228 | mov eax,dword ed_pos |
|
- | 229 | cmp eax,ebx |
|
- | 230 | ||
- | 231 | jae .sh_n |
|
- | 232 | push eax ;¬¥ì襥 ¢ eax |
|
- | 233 | push ebx ;¡®«ì襥 |
|
- | 234 | jmp .sh_n1 |
|
- | 235 | ;¥á«¨ ¨ ç¥ |
|
- | 236 | .sh_n: push ebx |
|
- | 237 | push eax |
|
- | 238 | .sh_n1: |
|
- | 239 | call .check_offset |
|
- | 240 | call .get_n |
|
- | 241 | mov edx,eax ;size of ed_box |
|
- | 242 | mov ecx,ed_offset |
|
- | 243 | add eax,ecx ;eax = w_off= ed_offset+width |
|
- | 244 | mov edx,eax ;save |
|
- | 245 | pop ebx ;¡®«ì襥 |
|
- | 246 | pop eax ;¬¥ì襥 |
|
- | 247 | ||
- | 248 | cmp eax,ecx ;áà ¢¥¨¥ á ¬¥ì襣® á offset. |
|
- | 249 | jae .f_f ;¥á«¨ ¡®«ìè¥ |
|
- | 250 | xor eax,eax |
|
- | 251 | cmp edx,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬 |
|
- | 252 | jb @f |
|
- | 253 | sub ebx,ecx |
|
- | 254 | jmp .nxt_f |
|
- | 255 | @@: mov ebx,edx |
|
- | 256 | sub ebx,ecx |
|
- | 257 | jmp .nxt_f |
|
- | 258 | .f_f: |
|
- | 259 | sub eax,ecx |
|
- | 260 | cmp edx,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬 |
|
- | 261 | jle @f |
|
- | 262 | sub ebx,ecx |
|
- | 263 | sub ebx,eax |
|
- | 264 | jmp .nxt_f |
|
- | 265 | @@: |
|
- | 266 | mov ebx,edx |
|
- | 267 | sub ebx,ecx |
|
- | 268 | sub ebx,eax |
|
- | 269 | .nxt_f: |
|
- | 270 | mov edx,ebx |
|
- | 271 | lea ebx,[eax*2+eax] |
|
- | 272 | shl ebx,1 |
|
- | 273 | add ebx,ed_left |
|
- | 274 | inc ebx |
|
- | 275 | shl ebx,16 |
|
- | 276 | lea ecx,[edx*2+edx] |
|
- | 277 | shl ecx,1 |
|
- | 278 | mov bx,cx |
|
- | 279 | inc ebx |
|
- | 280 | mov edx,ebp;shift_color |
|
- | 281 | ||
- | 282 | call .draw_bg_eax |
|
- | 283 | @@: call .enable_null |
|
- | 284 | ret |
|
- | 285 | ;;;;;;;;;;;;;;;;;;;;; |
|
- | 286 | ;áâ ®¢ª - áï⨥ ¢ë¤¥«¥¨ï ¢ ®¤¨ ᨬ¢®« |
|
- | 287 | ;;;;;;;;;;;;;;;;;;;;; |
|
- | 288 | .drw_sim: |
|
- | 289 | mov eax,dword ed_pos |
|
- | 290 | call .draw_rectangle ; à¨á®¢ âì ¯àאַ㣮«ì¨ª á § ¤ ë¬ æ¢¥â®¬ |
|
- | 291 | jmp @b |
|
- | 292 | ;;;;;;;;;;;;;;;;;;;;; |
|
- | 293 | ;ãªæ¨ï ãáâ ®¢ª¨ ¢ë¤¥«¥¨ï ¯à¨ ¤¢¨¦¥¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ¦ ⨨ shift |
|
- | 294 | ;®£¨ª : |
|
- | 295 | ;;;;;;;;;; |
|
- | 296 | .draw_wigwag: |
|
- | 297 | ;äãªæ¨ï ãáâ ®¢ª¨ ¯¥à¥¬¥ëå |
|
- | 298 | mov ebp,shift_color |
|
- | 299 | call .clear_cursor |
|
- | 300 | ||
- | 301 | or word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
|
- | 302 | mov ebp,shift_color |
|
- | 303 | mov eax,dword ed_pos |
|
- | 304 | test word ed_flags,ed_left_fl |
|
- | 305 | jz .low |
|
- | 306 | jmp @f |
|
- | 307 | ;;;;;;;;;; |
|
- | 308 | ;ãªæ¨ï 㤠«¥¨ï ¢ë¤¥«¥¨ï ¯à¨ ¤¢¨¦¥¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ¦ ⨨ shift |
|
- | 309 | ;®£¨ª : |
|
- | 310 | ;;;;;;;;;; |
|
- | 311 | .draw_wigwag_cl: |
|
- | 312 | ;äãªæ¨ï ãáâ ®¢ª¨ ¯¥à¥¬¥ëå |
|
- | 313 | mov ebp,ed_color |
|
- | 314 | call .clear_cursor |
|
- | 315 | ||
- | 316 | mov ebp,ed_color |
|
- | 317 | mov eax,dword ed_pos |
|
- | 318 | test word ed_flags,ed_left_fl |
|
- | 319 | jz .low |
|
- | 320 | @@: call .draw_rectangle ; à¨á®¢ âì ¯àאַ㣮«ì¨ª § ªà 訢 ¥¬®© ®¡« á⨠|
|
- | 321 | ret |
|
- | 322 | .low: dec eax |
|
- | 323 | jmp @b |
|
- | 324 | ;¢å®¤®© ¯ à ¬¥âà ebx - ed_pos |
|
- | 325 | .sh_first_sh: |
|
- | 326 | test word ed_flags,ed_shift |
|
- | 327 | je @f |
|
- | 328 | mov dword ed_shift_pos_old,ebx |
|
- | 329 | test word ed_flags,ed_shift_on |
|
- | 330 | jne @f |
|
- | 331 | mov dword ed_shift_pos,ebx |
|
- | 332 | or word ed_flags,ed_shift_on |
|
- | 333 | @@: ret |
|
- | 334 | ;¡à ¡®âª ªà ©¨å ¯®«®¦¥¨© ¢ editbox ¯à¨ ¦ ⮬ shift |
|
- | 335 | ;¯à®¨§¢®¤¨â áï⨥ ¢ë¤¥«¥¨¥, ¥á«¨ ¥â shift |
|
- | 336 | ;¨ ç¥ ¢®®¡é¥ ¢ë室¨â |
|
- | 337 | .sh_st_of: |
|
- | 338 | test word ed_flags,ed_shift |
|
- | 339 | jne @f |
|
- | 340 | test word ed_flags,ed_shift_bac |
|
- | 341 | je @f |
|
- | 342 | mov ebp,ed_color |
|
- | 343 | mov ebx,dword ed_shift_pos |
|
- | 344 | call .sh_cl_ ;®ç¨á⪠¢ë¤¥«¥®£® äà £¬¥â |
|
- | 345 | and word ed_flags,ed_shift_cl ; ®ç¨á⪠®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥¨¥ |
|
- | 346 | jmp .draw_cursor_text |
|
- | 347 | @@: |
|
- | 348 | and word ed_flags,ed_shift_off |
|
- | 349 | edit_ex |
|
- | 350 | ;¯à®¢¥àª á®áâ®ï¨ï shift ¡ë« «¨ ® ¦ â à ìè¥? |
|
- | 351 | .sh_enable: |
|
- | 352 | test word ed_flags,ed_shift |
|
- | 353 | jne .sh_ext_en ; à¨á®¢ âì § ªà è¥ë© ¯àאַ㣮«ì¨ª |
|
- | 354 | ||
- | 355 | test word ed_flags,ed_shift_bac |
|
- | 356 | je @f |
|
- | 357 | call .check_offset |
|
- | 358 | ||
- | 359 | mov ebp,ed_color |
|
- | 360 | mov ebx,dword ed_shift_pos |
|
- | 361 | call .sh_cl_ ;®ç¨á⪠¢ë¤¥«¥®£® äà £¬¥â |
|
- | 362 | call .draw_wigwag_cl |
|
- | 363 | and word ed_flags,ed_shift_cl ; 1¢ à ¥ 㦮 |
|
- | 364 | ret |
|
- | 365 | ||
- | 366 | @@: mov ebp,ed_color |
|
- | 367 | call .clear_cursor |
|
- | 368 | call .check_offset |
|
- | 369 | ret |
|
- | 370 | .sh_ext_en: |
|
- | 371 | call .check_offset |
|
- | 372 | test word ed_flags,ed_offset_fl |
|
- | 373 | je @f |
|
- | 374 | ;¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å |
|
- | 375 | mov eax,dword ed_shift_pos |
|
- | 376 | mov ebx,dword ed_pos |
|
- | 377 | mov ecx,dword ed_shift_pos_old |
|
- | 378 | ;¯à®¢¥àª ¨ à¨á®¢ ¨¥ § ªà è¥ëå ®¡« á⥩ |
|
- | 379 | cmp eax,ecx |
|
- | 380 | je .1_shem |
|
- | 381 | jb .smaller |
|
- | 382 | cmp ecx,ebx |
|
- | 383 | ja .1_shem |
|
- | 384 | call .draw_wigwag_cl ;clear |
|
- | 385 | jmp .sh_e_end |
|
- | 386 | .smaller: |
|
- | 387 | cmp ecx,ebx |
|
- | 388 | jb .1_shem |
|
- | 389 | call .draw_wigwag_cl ;clear |
|
- | 390 | jmp .sh_e_end |
|
- | 391 | ;alike = |
|
- | 392 | .1_shem: call .draw_wigwag |
|
- | 393 | .sh_e_end: and word ed_flags,ed_shift_off |
|
- | 394 | ret |
|
- | 395 | @@: mov ebp,shift_color |
|
- | 396 | mov ebx,dword ed_shift_pos |
|
- | 397 | call .sh_cl_ |
|
- | 398 | jmp .sh_e_end |
|
- | 399 | ;äãªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ¦ ⨨ home and end |
|
- | 400 | .sh_home_end: |
|
- | 401 | mov ebp,ed_color |
|
- | 402 | call .clear_cursor |
|
- | 403 | test word ed_flags,ed_shift_bac |
|
- | 404 | je @f |
|
- | 405 | mov ebp,ed_color |
|
- | 406 | mov ebx,dword ed_shift_pos_old |
|
- | 407 | call .sh_cl_ |
|
- | 408 | ||
- | 409 | @@: test word ed_flags,ed_shift |
|
- | 410 | je .sh_exit_ ;¢ë©â¨ |
|
- | 411 | mov ebp,shift_color |
|
- | 412 | mov ebx,dword ed_shift_pos |
|
- | 413 | call .sh_cl_ |
|
- | 414 | or word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
|
- | 415 | jmp .sh_e_end |
|
- | 416 | .sh_exit_: call .check_offset |
|
- | 417 | ret |
|
- | 418 | ;äãªæ¨ï ¢¥á¥¨ï 0 ¯® ¤à¥áã ed_size+1 |
|
- | 419 | .enable_null: |
|
- | 420 | pusha |
|
- | 421 | mov eax,ed_size |
|
- | 422 | mov ebx,ed_text |
|
- | 423 | test eax,eax |
|
- | 424 | add eax,ebx |
|
- | 425 | jne @f |
|
- | 426 | inc eax |
|
- | 427 | @@: xor ebx,ebx |
|
- | 428 | mov [eax],bl |
|
- | 429 | edit_ex |
|
- | 430 | ;- 㤠«¥¨¥ ᨬ¢®« |
|
- | 431 | ;å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos |
|
- | 432 | .del_char: |
|
- | 433 | mov esi,ed_text |
|
- | 434 | test word ed_flags,ed_shift_on |
|
- | 435 | je @f |
|
- | 436 | mov eax,dword ed_shift_pos |
|
- | 437 | mov ebx,esi |
|
- | 438 | cmp eax,ecx |
|
- | 439 | jae .dh_n |
|
- | 440 | ||
- | 441 | mov ed_pos,eax ;çâ® ¡ë ¥ ¡ë«® ã¡¥£ ¨ï ªãàá®à |
|
- | 442 | mov ebp,ecx |
|
- | 443 | sub ebp,eax |
|
- | 444 | add ebx,eax ;eax ¬¥ìè¥ |
|
- | 445 | sub edx,ecx |
|
- | 446 | add esi,ecx |
|
- | 447 | ||
- | 448 | mov dword ed_shift_pos,ebp |
|
- | 449 | jmp .del_ch_sh |
|
- | 450 | ;¥á«¨ ¨ ç¥ |
|
- | 451 | .dh_n: |
|
- | 452 | mov ebp,eax |
|
- | 453 | sub ebp,ecx |
|
- | 454 | add ebx,ecx |
|
- | 455 | sub edx,eax |
|
- | 456 | add esi,eax |
|
- | 457 | mov dword ed_shift_pos,ebp |
|
- | 458 | jmp .del_ch_sh |
|
- | 459 | ||
- | 460 | @@: add esi,ecx ;㪠§ ⥫ì + ᬥ饨¥ ª ॠ«ì®¬ã ¡ãää¥àã |
|
- | 461 | mov ebx,esi |
|
- | 462 | inc esi |
|
- | 463 | cld |
|
- | 464 | ||
- | 465 | sub edx,ecx |
|
- | 466 | .del_ch_sh: |
|
- | 467 | ||
- | 468 | push edi |
|
- | 469 | mov edi,ebx |
|
- | 470 | @@: |
|
- | 471 | lodsb |
|
- | 472 | stosb |
|
- | 473 | dec edx |
|
- | 474 | jns @b |
|
- | 475 | ||
- | 476 | pop edi |
|
- | 477 | ret |
|
- | 478 | ;¢ëç¨á«¨âì § ªà 訢 ¥¬ãî ®¡« áâì |
|
- | 479 | ;ᮣ« 襨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size |
|
- | 480 | .clear_bg: |
|
- | 481 | call .get_n ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨ë ª®¬¯®¥â |
|
- | 482 | push eax |
|
- | 483 | mov ebx,ed_offset |
|
- | 484 | add eax,ebx ;eax = w_off= ed_offset+width |
|
- | 485 | mov ebx,ebp ;ed_size |
|
- | 486 | ||
- | 487 | cmp eax,ebx |
|
- | 488 | jb @f |
|
- | 489 | mov eax,ed_pos |
|
- | 490 | sub ebx,eax |
|
- | 491 | mov ecx,ed_offset |
|
- | 492 | sub eax,ecx |
|
- | 493 | jmp .nxt |
|
- | 494 | @@: mov ebx,ed_pos |
|
- | 495 | push ebx |
|
- | 496 | sub eax,ebx |
|
- | 497 | mov ebx,eax ;It is don't optimal |
|
- | 498 | ||
- | 499 | pop eax ;ed_pos |
|
- | 500 | mov ecx,ed_offset |
|
- | 501 | sub eax,ecx |
|
- | 502 | .nxt: |
|
- | 503 | mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë |
|
- | 504 | add ebp,ebx |
|
- | 505 | pop edx |
|
- | 506 | cmp ebp,edx |
|
- | 507 | je @f |
|
- | 508 | inc ebx |
|
- | 509 | ||
- | 510 | @@: mov edx,ebx |
|
- | 511 | lea ebx,[eax*2+eax] |
|
- | 512 | shl ebx,1 |
|
- | 513 | add ebx,ed_left |
|
- | 514 | inc ebx |
|
- | 515 | shl ebx,16 |
|
- | 516 | lea ecx,[edx*2+edx] |
|
- | 517 | shl ecx,1 |
|
- | 518 | mov bx,cx |
|
- | 519 | mov edx,ed_color |
|
- | 520 | call .draw_bg_eax |
|
- | 521 | ret |
|
- | 522 | ;;;;;;;;;;;;;;;;;;; |
|
- | 523 | ;;; ¡à ¡®âª ¯à¨¬¨â¨¢®¢ |
|
- | 524 | ;;;;;;;;;;;;;;;;;;;; |
|
- | 525 | ; à¨á®¢ âì ¯àאַ㣮«ì¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp |
|
- | 526 | ;¢å®¤ë¥ ¯ à ¬¥âàë: |
|
- | 527 | ;eax=dword ed_pos |
|
- | 528 | ;ebp=-梥â ed_color or shift_color |
|
- | 529 | .draw_rectangle: |
|
- | 530 | mov ecx,dword ed_offset |
|
- | 531 | sub eax,ecx |
|
- | 532 | lea ebx,[eax*2+eax] |
|
- | 533 | shl ebx,1 |
|
- | 534 | inc ebx |
|
- | 535 | add ebx,ed_left |
|
- | 536 | shl ebx,16 |
|
- | 537 | mov bx,6 |
|
- | 538 | mov edx,ebp |
|
- | 539 | call .draw_bg_eax |
|
- | 540 | ret |
|
- | 541 | ;;;;;;;;;;;;;;;;;; |
|
- | 542 | ;;஢¥àª ¦ â «¨ shift |
|
- | 543 | ;;;;;;;;;;;;;;;;;; |
|
- | 544 | .check_shift: |
|
- | 545 | pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë |
|
- | 546 | mcall 66,3,1 |
|
- | 547 | test al,0x03 |
|
- | 548 | je @f |
|
- | 549 | or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ |
|
- | 550 | @@:edit_ex |
|
- | 551 | } |
|
- | 552 | ;¬ ªà®á ª« ¢¨è ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï |
|
- | 553 | macro use_key_process backspase,delete,left,right,home,end,insert |
|
- | 554 | { |
|
- | 555 | if backspase eq |
|
- | 556 | else |
|
- | 557 | cmp ah,8 |
|
- | 558 | jz .backspace |
|
- | 559 | end if |
|
- | 560 | if delete eq |
|
- | 561 | else |
|
- | 562 | cmp ah,0xb6 |
|
- | 563 | jz .delete |
|
- | 564 | end if |
|
- | 565 | if left eq |
|
- | 566 | else |
|
- | 567 | cmp ah,176 |
|
- | 568 | jz .left |
|
- | 569 | end if |
|
- | 570 | if right eq |
|
- | 571 | else |
|
- | 572 | cmp ah,179 |
|
- | 573 | jz .right |
|
- | 574 | end if |
|
- | 575 | if home eq |
|
- | 576 | else |
|
- | 577 | cmp ah,180 |
|
- | 578 | jz .home |
|
- | 579 | end if |
|
- | 580 | if home eq |
|
- | 581 | else |
|
- | 582 | cmp ah,181 |
|
- | 583 | jz .end |
|
- | 584 | end if |
|
- | 585 | if insert eq |
|
- | 586 | else |
|
- | 587 | cmp ah,185 ;insert |
|
- | 588 | jz .insert |
|
- | 589 | end if |
|
- | 590 | } |
|
- | 591 | macro use_key_no_process up,down,esc |
|
- | 592 | { |
|
- | 593 | if up eq |
|
- | 594 | else |
|
- | 595 | cmp ah,177 |
|
- | 596 | jz .no_figure |
|
- | 597 | end if |
|
- | 598 | if down eq |
|
- | 599 | else |
|
- | 600 | cmp ah,178 |
|
- | 601 | jz .no_figure |
|
- | 602 | end if |
|
- | 603 | if esc eq |
|
- | 604 | else |
|
- | 605 | cmp ah,27 ;ESC - ª« ¢¨è )) |
|
- | 606 | jz .no_figure |
|
- | 607 | end if |
|
- | 608 | } |
|
- | 609 | ||
- | 610 | macro use_key_figures_only |
|
- | 611 | { |
|
- | 612 | test word ed_flags,ed_figure_only ; ⮫쪮 æ¨äàë ? |
|
- | 613 | jz @f |
|
- | 614 | cmp ah,'0' |
|
- | 615 | jb .no_figure |
|
- | 616 | cmp ah,'9' |
|
- | 617 | ja .no_figure |
|
- | 618 | } |
|
- | 619 | ||
- | 620 | ||
- | 621 | ||
- | 622 | ||
- | 623 | ||
- | 624 | ||
- | 625 | ||
1 | ; ªà®á ¢ë室 |
626 | ; ªà®á ¢ë室 |
2 | macro edit_ex |
627 | macro edit_ex |
3 | { |
628 | { |
4 | popa |
629 | popa |
5 | ret |
630 | ret |