Subversion Repositories Kolibri OS

Rev

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
;  26.01.2007 ­®à¬ «ì­ ï à ¡®â  ª®¬¯ ­¥­â  ¨á¯à ¢¨« äãªæ¨î .check_offset
1
;  23.01.2007 ¯®ä¨ªá¥« ¡ £¨ ¢ë§¢ ­ë¥ ­¥ ¯à ¢¨«ì­ë¬ ª®¤®¬ )).
2
;  24.01.2007 ¯®ä¨ªá¥« ¡ £¨ ¢ë§¢ ­ë¥ ­¥ ¯à ¢¨«ì­ë¬ ª®¤®¬ )).
2
;  22.01.2007 ¨§¡ ¢¨«áï ®â £«îª®¢ ¯à¨ à ¡®â¥ á ¢ë¤¥«¥­¨¥¬ ¨ 㤠«¥­¨¥, ª®à४⭠ï à ¡®â  ª« ¢¨è¥© del & backspase
3
;  22.01.2007 ¨§¡ ¢¨«áï ®â £«îª®¢ ¯à¨ à ¡®â¥ á ¢ë¤¥«¥­¨¥¬ ¨ 㤠«¥­¨¥, ª®à४⭠ï à ¡®â  ª« ¢¨è¥© del & backspase
3
;  20.01.2007 ॠ«¨§®¢ « ¢ë¤¥«¥­¨¥ ⥪áâ  ¯® shift
4
;  20.01.2007 ॠ«¨§®¢ « ¢ë¤¥«¥­¨¥ ⥪áâ  ¯® shift
4
;  12.12.2006 ॠ«¨§®¢ « ¯®¤¤¥à¦ªã ª­®¯ª¨ insert ¨ ᥣ®¤ï ª®¬¯®­¥­â ¯®ç⨠ࠡ®â ¥â!!!!
5
;  12.12.2006 ॠ«¨§®¢ « ¯®¤¤¥à¦ªã ª­®¯ª¨ insert ¨ ᥣ®¤ï ª®¬¯®­¥­â ¯®ç⨠ࠡ®â ¥â!!!!
5
;  07.12.2006 ¯à®¤®«¦ ¥âáï à ¡®â  ­ ¤ ¯¥à¥à ¡®âª®© ª®¬¯®­¥­â ,¨§¬¥­¥­¨ï¬ ¯®¤¢¥à£«¨áì ¬­®£¨¥ ä㭪樨, ¯¥à¥à ¡®â ­ ¢ë¢®¤ ⥪áâ ,   â ª  ¦¥  «£®à¨â¬ ¢­¥á¥­¨ï ᨬ¢®«®¢.
6
;  07.12.2006 ¯à®¤®«¦ ¥âáï à ¡®â  ­ ¤ ¯¥à¥à ¡®âª®© ª®¬¯®­¥­â ,¨§¬¥­¥­¨ï¬ ¯®¤¢¥à£«¨áì ¬­®£¨¥ ä㭪樨, ¯¥à¥à ¡®â ­ ¢ë¢®¤ ⥪áâ ,   â ª  ¦¥  «£®à¨â¬ ¢­¥á¥­¨ï ᨬ¢®«®¢.
6
;  03.09.2006 ¯® ¢®§¬®¦­®á⨠®âª § «áï ®â 16 ¡¨â­®©  à¨ä¬¥â¨ª¨, ¤®¡ ¢¨« ­®¢ë¥ ¡ £¨
7
;  03.09.2006 ¯® ¢®§¬®¦­®á⨠®âª § «áï ®â 16 ¡¨â­®©  à¨ä¬¥â¨ª¨, ¤®¡ ¢¨« ­®¢ë¥ ¡ £¨
7
;  09.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï à ¡®âë ª®­¯®ª DEL ¨ Backspace, 㬥­ì襭 à §¬¥à ¢ë¯®«­ï¥¬®£® ª®¤ .
8
;  09.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï à ¡®âë ª®­¯®ª DEL ¨ Backspace, 㬥­ì襭 à §¬¥à ¢ë¯®«­ï¥¬®£® ª®¤ .
8
;  21.07.2006 ¤®¡ ¢«¥­  äã­ªæ¨ï ª­®¯ª¨ Del, ⥯¥àì ¬®¦­® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ­­®© ª« ¢¨è¨
9
;  21.07.2006 ¤®¡ ¢«¥­  äã­ªæ¨ï ª­®¯ª¨ Del, ⥯¥àì ¬®¦­® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ­­®© ª« ¢¨è¨
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
}