Subversion Repositories Kolibri OS

Rev

Rev 205 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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