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