Subversion Repositories Kolibri OS

Rev

Rev 2533 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2533 Rev 3927
1
;
1
;
2
;   DESKTOP CONTEXT MENU
2
;   DESKTOP CONTEXT MENU
3
;   written by Ivan Poddubny
3
;   written by Ivan Poddubny
4
;
4
;
5
;   €¢â®à - ˆ¢ ­ ®¤¤ã¡­ë©
5
;   €¢â®à - ˆ¢ ­ ®¤¤ã¡­ë©
6
;   e-mail: ivan-yar@bk.ru
6
;   e-mail: ivan-yar@bk.ru
7
;
7
;
8
;   Compile with flat assembler
8
;   Compile with flat assembler
9
;
9
;
10
;------------------------------------------------------------------------------
10
;------------------------------------------------------------------------------
11
; version:	1.1
11
; version:	1.1
12
; last update:  27/03/2012
12
; last update:  27/03/2012
13
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
13
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
14
; changes:      The program uses only 3404 bytes memory is now.
14
; changes:      The program uses only 3404 bytes memory is now.
15
;               Optimisations and code refactoring.
15
;               Optimisations and code refactoring.
16
;------------------------------------------------------------------------------
16
;------------------------------------------------------------------------------
17
include 'lang.inc'
17
include 'lang.inc'
18
include '..\..\..\macros.inc'
18
include '..\..\..\macros.inc'
19
;------------------------------------------------------------------------------
19
;------------------------------------------------------------------------------
20
	use32
20
	use32
21
	org 0x0
21
	org 0x0
22
	db 'MENUET01'	; 8 byte id
22
	db 'MENUET01'	; 8 byte id
23
	dd 0x01		; header version
23
	dd 0x01		; header version
24
	dd START	; start of code
24
	dd START	; start of code
25
	dd IM_END	; size of image
25
	dd IM_END	; size of image
26
	dd I_END	; memory for app
26
	dd I_END	; memory for app
27
	dd stack_area	; esp
27
	dd stack_area	; esp
28
	dd 0		; boot parameters
28
	dd 0		; boot parameters
29
	dd 0		; path
29
	dd 0		; path
30
;------------------------------------------------------------------------------
30
;------------------------------------------------------------------------------
31
START:
31
START:
32
; ¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
32
; ¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
33
	mcall	48,3,sc,sizeof.system_colors
33
	mcall	48,3,sc,sizeof.system_colors
34
; ãáâ ­®¢¨¬ ¬ áªã ᮡë⨩ - ­ á ¨­â¥à¥áã¥â ⮫쪮 ¬ëèì
34
; ãáâ ­®¢¨¬ ¬ áªã ᮡë⨩ - ­ á ¨­â¥à¥áã¥â ⮫쪮 ¬ëèì
35
	mcall	40,100000b
35
	mcall	40,100000b
36
;------------------------------------------------------------------------------
36
;------------------------------------------------------------------------------
37
align 4
37
align 4
38
still:		     ; £« ¢­ë© 横« ®á­®¢­®£® ¯à®æ¥áá 
38
still:		     ; £« ¢­ë© 横« ®á­®¢­®£® ¯à®æ¥áá 
39
	mcall	10	; ¦¤ñ¬ ᮡëâ¨ï
39
	mcall	10	; ¦¤ñ¬ ᮡëâ¨ï
40
 
40
 
41
	mcall	37,2	; ª ª¨¥ ­ ¦ âë ª¯®¯ª¨?
41
	mcall	37,2	; ª ª¨¥ ­ ¦ âë ª¯®¯ª¨?
42
	cmp	eax,ebx	; ¥á«¨ ­¥ ¯à ¢ ï, ¢®§¢à â
42
	cmp	eax,ebx	; ¥á«¨ ­¥ ¯à ¢ ï, ¢®§¢à â
43
	jne	still
43
	jne	still
44
;--------------------------------------
44
;--------------------------------------
45
; íâ® ¤«ï ®â« ¤ª¨ - ¥á«¨ ¬ëèì ¢ â®çª¥ (0;0), § ªà®¥¬áï
45
; íâ® ¤«ï ®â« ¤ª¨ - ¥á«¨ ¬ëèì ¢ â®çª¥ (0;0), § ªà®¥¬áï
46
;	xor	ebx,ebx
46
;	xor	ebx,ebx
47
;	mcall	37
47
;	mcall	37
48
;	test	eax,eax	; ªãàá®à ¢ â®çª¥ (0;0), â.¥. eax = 0
48
;	test	eax,eax	; ªãàá®à ¢ â®çª¥ (0;0), â.¥. eax = 0
49
;	je	exit
49
;	je	exit
50
;--------------------------------------
50
;--------------------------------------
51
; ª®®à¤¨­ âë ªãàá®à 
51
; ª®®à¤¨­ âë ªãàá®à 
52
	xor	ebx,ebx
52
	xor	ebx,ebx
53
	mcall	37
53
	mcall	37
54
 
54
 
55
	mov	ebx,eax		; eax = cursor_x
55
	mov	ebx,eax		; eax = cursor_x
56
	shr	eax,16		; ebx = cursor_y
56
	shr	eax,16		; ebx = cursor_y
57
	and	ebx,0xffff
57
	and	ebx,0xffff
58
	mov	[curx1],eax	; curx1 = cursor_x
58
	mov	[curx1],eax	; curx1 = cursor_x
59
	mov	[cury1],ebx	; cury1 = cursor_y
59
	mov	[cury1],ebx	; cury1 = cursor_y
60
; ª®¬ã ¯à¨­ ¤«¥¦¨â â®çª ?
60
; ª®¬ã ¯à¨­ ¤«¥¦¨â â®çª ?
61
	mcall	34,[curx1],[cury1]
61
	mcall	34,[curx1],[cury1]
62
	cmp	al,1 ; 1 - ï¤à®
62
	cmp	al,1 ; 1 - ï¤à®
63
	jne	still
63
	jne	still
64
;--------------------------------------
64
;--------------------------------------
65
align 4
65
align 4
66
@@:		; ¯®¤®¦¤ñ¬, ¯®ª  ¯®«ì§®¢ â¥«ì ­¥ ®â¯ãá⨫ ¯à ¢ãî ª­®¯ªã ¬ëè¨
66
@@:		; ¯®¤®¦¤ñ¬, ¯®ª  ¯®«ì§®¢ â¥«ì ­¥ ®â¯ãá⨫ ¯à ¢ãî ª­®¯ªã ¬ëè¨
67
	mcall	37,2    ;   ­ ¦ âë «¨ ª­®¯ª¨ ¬ëè¨?
67
	mcall	37,2    ;   ­ ¦ âë «¨ ª­®¯ª¨ ¬ëè¨?
68
	test	eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2)
68
	test	eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2)
69
	jz	@f	;   ¨¤ñ¬ ¢ ­ ç «® £« ¢­®£® 横« 
69
	jz	@f	;   ¨¤ñ¬ ¢ ­ ç «® £« ¢­®£® 横« 
70
 
70
 
71
	mcall	68,1	; ¨­ ç¥ ¯¥à¥ª«î稬áï ­  á«¥¤ãî騩 ¯®â®ª á¨áâ¥¬ë ¨ ª®£¤ 
71
	mcall	68,1	; ¨­ ç¥ ¯¥à¥ª«î稬áï ­  á«¥¤ãî騩 ¯®â®ª á¨áâ¥¬ë ¨ ª®£¤ 
72
	jmp	@b	; ¢ë¯®«­¥­¨¥ ¢¥à­¥âáï í⮬㠯®â®ªã, ¯à®¢¥à¨¬ ¬ëèì ®¯ïâì
72
	jmp	@b	; ¢ë¯®«­¥­¨¥ ¢¥à­¥âáï í⮬㠯®â®ªã, ¯à®¢¥à¨¬ ¬ëèì ®¯ïâì
73
;--------------------------------------
73
;--------------------------------------
74
align 4	
74
align 4	
75
@@:
75
@@:
76
; ¥á«¨ 㦥 ¡ë«® ®âªàëâ® ¬¥­î, ­ã¦­® ¯®¤®¦¤ âì, ¯®ª  ®­® § ªà®¥âáï:
76
; ¥á«¨ 㦥 ¡ë«® ®âªàëâ® ¬¥­î, ­ã¦­® ¯®¤®¦¤ âì, ¯®ª  ®­® § ªà®¥âáï:
77
	cmp	[menu_opened],0
77
	cmp	[menu_opened],0
78
	je	@f
78
	je	@f
79
 
79
 
80
	mcall	68,1	; ¯¥à¥ª«î稬áï ­  á«¥¤ãî騩 ¯®â®ª á¨á⥬ë 
80
	mcall	68,1	; ¯¥à¥ª«î稬áï ­  á«¥¤ãî騩 ¯®â®ª á¨á⥬ë 
81
			; ¡®«¥¥ íä䥪⨢­ë© ᯮᮡ § ¤¥à¦ª¨ 祬 mcall 5
81
			; ¡®«¥¥ íä䥪⨢­ë© ᯮᮡ § ¤¥à¦ª¨ 祬 mcall 5
82
	jmp	@b
82
	jmp	@b
83
;--------------------------------------
83
;--------------------------------------
84
align 4
84
align 4
85
@@:
85
@@:
86
;   ⥯¥àì ¬®¦­® ᬥ«® § ¯ã᪠âì ¯à®æ¥áá (¯®â®ª) ¬¥­î
86
;   ⥯¥àì ¬®¦­® ᬥ«® § ¯ã᪠âì ¯à®æ¥áá (¯®â®ª) ¬¥­î
87
	mcall	51,1,start_wnd,stack_wnd
87
	mcall	51,1,start_wnd,stack_wnd
88
	jmp	still
88
	jmp	still
89
;------------------------------------------------------------------------------	
89
;------------------------------------------------------------------------------	
90
align 4
90
align 4
91
exit_menu:	      ; ¥á«¨ ¢ë室¨¬ ¨§ ¬¥­î, ­ ¤® § ¯¨á âì ¢ [menu_opened] 0
91
exit_menu:	      ; ¥á«¨ ¢ë室¨¬ ¨§ ¬¥­î, ­ ¤® § ¯¨á âì ¢ [menu_opened] 0
92
	mov	[menu_opened],0
92
	mov	[menu_opened],0
93
;--------------------------------------
93
;--------------------------------------
94
align 4
94
align 4
95
exit:		      ; á ¬ë ¨¤ñ¬, ª®£¤  ¢ë室¨¬ ¨§ ®á­®¢­®£® ¯à®æ¥áá 
95
exit:		      ; á ¬ë ¨¤ñ¬, ª®£¤  ¢ë室¨¬ ¨§ ®á­®¢­®£® ¯à®æ¥áá 
96
	or	eax,-1	      ; eax = -1
96
	or	eax,-1	      ; eax = -1
97
	mcall
97
	mcall
98
;------------------------------------------------------------------------------	
98
;------------------------------------------------------------------------------	
99
; §¤¥áì áâ àâã¥â ¯à®æ¥áá ¬¥­î
99
; §¤¥áì áâ àâã¥â ¯à®æ¥áá ¬¥­î
100
;------------------------------------------------------------------------------	
100
;------------------------------------------------------------------------------	
101
align 4
101
align 4
102
start_wnd:
102
start_wnd:
103
	mov	[menu_opened],1
103
	mov	[menu_opened],1
104
; ãáâ ­®¢¨¬ ¬ áªã ¦¥« ¥¬ëå ᮡë⨩: ¬¥­î + ª­®¯ª¨ + ¯¥à¥à¨á®¢ª 
104
; ãáâ ­®¢¨¬ ¬ áªã ¦¥« ¥¬ëå ᮡë⨩: ¬¥­î + ª­®¯ª¨ + ¯¥à¥à¨á®¢ª 
105
	mcall	40,100101b
105
	mcall	40,100101b
106
;------------------------------------------------------------------------------	
106
;------------------------------------------------------------------------------	
107
align 4
107
align 4
108
red:
108
red:
109
	call	draw_window
109
	call	draw_window
110
;------------------------------------------------------------------------------	
110
;------------------------------------------------------------------------------	
111
align 4
111
align 4
112
still2: 	    ; £« ¢­ë© 横« ¯à®æ¥áá  ¬¥­î
112
still2: 	    ; £« ¢­ë© 横« ¯à®æ¥áá  ¬¥­î
113
	mcall	10	; ¦¤ñ¬ ᮡëâ¨ï
113
	mcall	10	; ¦¤ñ¬ ᮡëâ¨ï
114
 
114
 
115
	cmp	eax,1	    ; ¯¥à¥à¨á®¢ª ?
115
	cmp	eax,1	    ; ¯¥à¥à¨á®¢ª ?
116
	je	red
116
	je	red
117
	
117
	
118
	cmp	eax,3	    ; ª­®¯ª ?
118
	cmp	eax,3	    ; ª­®¯ª ?
119
	je	button
119
	je	button
120
	
120
	
121
	cmp	eax,6	    ; ¬ëèì?
121
	cmp	eax,6	    ; ¬ëèì?
122
	je	mouse
122
	je	mouse
123
 
123
 
124
	jmp	still2	    ; ¢¥à­ñ¬áï ¢ ­ ç «® £« ¢­®£® 横« 
124
	jmp	still2	    ; ¢¥à­ñ¬áï ¢ ­ ç «® £« ¢­®£® 横« 
125
;------------------------------------------------------------------------------	
125
;------------------------------------------------------------------------------	
126
align 4
126
align 4
127
; Ž€Ž’—ˆŠ Œ›˜ˆ
127
; Ž€Ž’—ˆŠ Œ›˜ˆ
128
mouse:		  ; ª®£¤  ¯®«ì§®¢ â¥«ì ­ ¦¬ñâ ª­®¯ªã ¬ëè¨, § ªà®¥¬áï
128
mouse:		  ; ª®£¤  ¯®«ì§®¢ â¥«ì ­ ¦¬ñâ ª­®¯ªã ¬ëè¨, § ªà®¥¬áï
129
	mcall	37,2	; ª ª¨¥ ª­®¯ª¨ ­ ¦ âë?
129
	mcall	37,2	; ª ª¨¥ ª­®¯ª¨ ­ ¦ âë?
130
	test	eax,eax   ; ­¨ª ª¨¥? - ⮣¤  ¯à¥ªà á­®! ¢¥à­ñ¬áï ¢ £« ¢­ë© 横«
130
	test	eax,eax   ; ­¨ª ª¨¥? - ⮣¤  ¯à¥ªà á­®! ¢¥à­ñ¬áï ¢ £« ¢­ë© 横«
131
	jz	still2
131
	jz	still2
132
 
132
 
133
        mcall   37,0
133
        mcall   37,0
134
 
134
 
135
        mov     esi, eax
135
        mov     esi, eax
136
        shr     esi, 16
136
        shr     esi, 16
137
        movzx   edi, ax
137
        movzx   edi, ax
138
        mcall   9, procinfo, -1
138
        mcall   9, procinfo, -1
139
	
139
	
140
        mov     eax, [procinfo.box.left]
140
        mov     eax, [procinfo.box.left]
141
        cmp     esi, eax
141
        cmp     esi, eax
142
        jl      exit_menu
142
        jl      exit_menu
143
 
143
 
144
        add     eax, [procinfo.box.width]
144
        add     eax, [procinfo.box.width]
145
        cmp     esi, eax
145
        cmp     esi, eax
146
        jge     exit_menu
146
        jge     exit_menu
147
 
147
 
148
        mov     eax, [procinfo.box.top]
148
        mov     eax, [procinfo.box.top]
149
        cmp     edi, eax
149
        cmp     edi, eax
150
        jl      exit_menu
150
        jl      exit_menu
151
 
151
 
152
        add     eax, [procinfo.box.height]
152
        add     eax, [procinfo.box.height]
153
        cmp     edi, eax
153
        cmp     edi, eax
154
        jge     exit_menu
154
        jge     exit_menu
155
 
155
 
156
        jmp     still2
156
        jmp     still2
157
;------------------------------------------------------------------------------	
157
;------------------------------------------------------------------------------	
158
align 4
158
align 4
159
; €†€’€ ŠŽŠ€
159
; €†€’€ ŠŽŠ€
160
button:
160
button:
161
	mcall	17	; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
161
	mcall	17	; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
162
 
162
 
163
	sub	ah,10	      ; áà ¢­¨¢ ¥¬ á 10
163
	sub	ah,10	      ; áà ¢­¨¢ ¥¬ á 10
164
	jl	nofuncbtns    ; ¥á«¨ ¬¥­ìè¥ - § ªà뢠¥¬ ¬¥­î
164
	jl	nofuncbtns    ; ¥á«¨ ¬¥­ìè¥ - § ªà뢠¥¬ ¬¥­î
165
 
165
 
166
	movzx	ebx,ah	      ; ¯®«ã稫¨ ­®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx
166
	movzx	ebx,ah	      ; ¯®«ã稫¨ ­®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx
167
	mov	esi,[startapps + ebx*4]
167
	mov	esi,[startapps + ebx*4]
168
	mov	edi,start_info.path
168
	mov	edi,start_info.path
169
	cld
169
	cld
170
;--------------------------------------
170
;--------------------------------------
171
align 4
171
align 4
172
@@:
172
@@:
173
	lodsb
173
	lodsb
174
	stosb
174
	stosb
175
	test	al,al
175
	test	al,al
176
	jnz	@b
176
	jnz	@b
177
	mcall	70, start_info
177
	mcall	70, start_info
178
 
178
 
179
;	mov	eax,5         ; ¯®¤®¦¤ñ¬, ¯®ª  ¯à®£à ¬¬  § ¯ãáâ¨âìáï
179
;	mov	eax,5         ; ¯®¤®¦¤ñ¬, ¯®ª  ¯à®£à ¬¬  § ¯ãáâ¨âìáï
180
;	mov	ebx,1         ;   â® ¥ñ ®ª­® ­¥ ¡ã¤¥â ®âà¨á®¢ ­® (¡ £ ¢ ï¤à¥???)
180
;	mov	ebx,1         ;   â® ¥ñ ®ª­® ­¥ ¡ã¤¥â ®âà¨á®¢ ­® (¡ £ ¢ ï¤à¥???)
181
;	mcall          ; à áª®¬¬¥­â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë
181
;	mcall          ; à áª®¬¬¥­â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë
182
		       ; á ®âà¨á®¢ª®©
182
		       ; á ®âà¨á®¢ª®©
183
;--------------------------------------
183
;--------------------------------------
184
align 4
184
align 4
185
nofuncbtns:	      ; § ªà뢠¥¬ ¬¥­î
185
nofuncbtns:	      ; § ªà뢠¥¬ ¬¥­î
186
	jmp	exit_menu
186
	jmp	exit_menu
187
;------------------------------------------------------------------------------	
187
;------------------------------------------------------------------------------	
188
_BTNS_		  = 6	  ; ª®«¨ç¥á⢮ ª­®¯®ª ("¯ã­ªâ®¢ ¬¥­î")
188
_BTNS_		  = 6	  ; ª®«¨ç¥á⢮ ª­®¯®ª ("¯ã­ªâ®¢ ¬¥­î")
189
 
189
 
190
if lang eq ru
190
if lang eq ru
191
  font		  = 0x00000000
191
  font		  = 0x00000000
192
  string_length   = 20		; ¤«¨­  áâப¨
192
  string_length   = 20		; ¤«¨­  áâப¨
193
  wnd_x_size	  = 133 	; è¨à¨­  ®ª­ 
193
  wnd_x_size	  = 133 	; è¨à¨­  ®ª­ 
194
  title_pos	 = 36 shl 16 + 7
194
  title_pos	 = 36 shl 16 + 7
195
else
195
else
196
  font		  = 0x10000000
196
  font		  = 0x10000000
197
  string_length   = 12		; ¤«¨­  áâப¨
197
  string_length   = 12		; ¤«¨­  áâப¨
198
  wnd_x_size	  = 105 	; è¨à¨­  ®ª­ 
198
  wnd_x_size	  = 105 	; è¨à¨­  ®ª­ 
199
  title_pos	 = 23 shl 16 + 7
199
  title_pos	 = 23 shl 16 + 7
200
end if
200
end if
201
;------------------------------------------------------------------------------	
201
;------------------------------------------------------------------------------	
202
;*******************************
202
;*******************************
203
;********  ˆ‘“…Œ ŽŠŽ  ********
203
;********  ˆ‘“…Œ ŽŠŽ  ********
204
;*******************************
204
;*******************************
205
draw_window:
205
draw_window:
206
	mcall	12,1	; ­ ç¨­ ¥¬ "à¨á®¢ âì"
206
	mcall	12,1	; ­ ç¨­ ¥¬ "à¨á®¢ âì"
207
 
207
 
208
	mov	eax,[curx1]	 ; ⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
208
	mov	eax,[curx1]	 ; ⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
209
	mov	[curx],eax	 ; § ¯¨è¥¬ ¢ ª®®à¤¨­ âë ®ª­ 
209
	mov	[curx],eax	 ; § ¯¨è¥¬ ¢ ª®®à¤¨­ âë ®ª­ 
210
	mov	eax,[cury1]
210
	mov	eax,[cury1]
211
	mov	[cury],eax
211
	mov	[cury],eax
212
; ⥯¥àì ¡ã¤¥¬ áç¨â âì ª®®à¤¨­ âë ®ª­ , çâ®¡ë ®­® §  ªà © íªà ­  ­¥ ¢ë«¥§«®
212
; ⥯¥àì ¡ã¤¥¬ áç¨â âì ª®®à¤¨­ âë ®ª­ , çâ®¡ë ®­® §  ªà © íªà ­  ­¥ ¢ë«¥§«®
213
	mcall	14		; ¯®«ã稬 à §¬¥à íªà ­ 
213
	mcall	14		; ¯®«ã稬 à §¬¥à íªà ­ 
214
 
214
 
215
	mov	ebx,eax
215
	mov	ebx,eax
216
	shr	eax,16			; ¢ eax - x_screen
216
	shr	eax,16			; ¢ eax - x_screen
217
	and	ebx,0xffff		; ¢ ebx - y_screen
217
	and	ebx,0xffff		; ¢ ebx - y_screen
218
	add	eax,-wnd_x_size		; eax = [x_screen - è¨à¨­  ®ª­ ]
218
	add	eax,-wnd_x_size		; eax = [x_screen - è¨à¨­  ®ª­ ]
219
	add	ebx,-_BTNS_*15-21	; ebx = [y_screen - ¢ëá®â  ®ª­ ]
219
	add	ebx,-_BTNS_*15-21	; ebx = [y_screen - ¢ëá®â  ®ª­ ]
220
 
220
 
221
	cmp	eax,[curx]
221
	cmp	eax,[curx]
222
	jg	.okx			; ¥á«¨ ®ª­® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î,
222
	jg	.okx			; ¥á«¨ ®ª­® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î,
223
	add	[curx],-wnd_x_size	; ᤢ¨­¥¬ ¥£® ¢«¥¢® ­  100
223
	add	[curx],-wnd_x_size	; ᤢ¨­¥¬ ¥£® ¢«¥¢® ­  100
224
;--------------------------------------
224
;--------------------------------------
225
align 4
225
align 4
226
.okx:
226
.okx:
227
	cmp	ebx, [cury]
227
	cmp	ebx, [cury]
228
	jg	.oky			; ¯® ¢¥à⨪ «¨ â®ç­® â ª¦¥
228
	jg	.oky			; ¯® ¢¥à⨪ «¨ â®ç­® â ª¦¥
229
	add	[cury], -_BTNS_*15-21
229
	add	[cury], -_BTNS_*15-21
230
;--------------------------------------
230
;--------------------------------------
231
align 4
231
align 4
232
.oky:
232
.oky:
233
	xor	eax, eax	   ; äã­ªæ¨ï 0 - ᮧ¤ âì ®ª­®
233
	xor	eax, eax	   ; äã­ªæ¨ï 0 - ᮧ¤ âì ®ª­®
234
	mov	ebx, [curx]	   ;  ebx = [ª®®à¤¨­ â  ¯® x] shl 16 + [è¨à¨­ ]
234
	mov	ebx, [curx]	   ;  ebx = [ª®®à¤¨­ â  ¯® x] shl 16 + [è¨à¨­ ]
235
	shl	ebx, 16
235
	shl	ebx, 16
236
	add	ebx, wnd_x_size
236
	add	ebx, wnd_x_size
237
	mov	ecx, [cury]	   ;  ecx = [ª®®à¤¨­ â  ¯® y] shl 16 + [¢ëá®â ]
237
	mov	ecx, [cury]	   ;  ecx = [ª®®à¤¨­ â  ¯® y] shl 16 + [¢ëá®â ]
238
	shl	ecx, 16
238
	shl	ecx, 16
239
	add	ecx, _BTNS_*15+21
239
	add	ecx, _BTNS_*15+21
240
	mov	edx, [sc.work]	   ;  梥â à ¡®ç¥© ®¡« áâ¨
240
	mov	edx, [sc.work]	   ;  梥â à ¡®ç¥© ®¡« áâ¨
241
	mov	esi, [sc.grab]	   ;  梥⠧ £®«®¢ª 
241
	mov	esi, [sc.grab]	   ;  梥⠧ £®«®¢ª 
242
	or	esi, 0x81000000
242
	or	esi, 0x81000000
243
	mov	edi, [sc.frame]    ;  梥â à ¬ª¨
243
	mov	edi, [sc.frame]    ;  梥â à ¬ª¨
244
	mcall
244
	mcall
245
 
245
 
246
	mov	eax, 4		   ; § £®«®¢®ª
246
	mov	eax, 4		   ; § £®«®¢®ª
247
	mov	ebx, title_pos	  ;  [x] shl 16 + [y]
247
	mov	ebx, title_pos	  ;  [x] shl 16 + [y]
248
	mov	ecx, [sc.grab_text];  èà¨äâ ¨ 梥â (á¥àë©)
248
	mov	ecx, [sc.grab_text];  èà¨äâ ¨ 梥â (á¥àë©)
249
	or	ecx, 0x10000000
249
	or	ecx, 0x10000000
250
 
250
 
251
	push	ecx
251
	push	ecx
252
	push	ecx
252
	push	ecx
253
	xor	edx,edx
253
	xor	edx,edx
254
;--------------------------------------
254
;--------------------------------------
255
align 4
255
align 4
256
.dec_color:
256
.dec_color:
257
	sub	byte [esp+edx], 0x33
257
	sub	byte [esp+edx], 0x33
258
	jae	@f
258
	jae	@f
259
	mov	byte [esp+edx], 0
259
	mov	byte [esp+edx], 0
260
;--------------------------------------
260
;--------------------------------------
261
align 4
261
align 4
262
@@:
262
@@:
263
	inc	edx
263
	inc	edx
264
	jnp	.dec_color
264
	jnp	.dec_color
265
	pop	ecx
265
	pop	ecx
266
	mov	edx, title	  ;   ¤à¥á § £®«®¢ª 
266
	mov	edx, title	  ;   ¤à¥á § £®«®¢ª 
267
	mov	esi, title.size   ;  ¤«¨­  § £®«®¢ª  ("M E N U")
267
	mov	esi, title.size   ;  ¤«¨­  § £®«®¢ª  ("M E N U")
268
	mcall
268
	mcall
269
	pop	ecx
269
	pop	ecx
270
	add	ebx, 1 shl 16	   ;  ᤢ¨­¥¬ ¢¯à ¢® ­  1
270
	add	ebx, 1 shl 16	   ;  ᤢ¨­¥¬ ¢¯à ¢® ­  1
271
	mcall
271
	mcall
272
 
272
 
273
	mov	ebx, 1*65536+wnd_x_size-2  ; ­ ç¨­ ¥¬ ¤¥« âì ª­®¯ª¨
273
	mov	ebx, 1*65536+wnd_x_size-2  ; ­ ç¨­ ¥¬ ¤¥« âì ª­®¯ª¨
274
	mov	ecx, 20*65536+15
274
	mov	ecx, 20*65536+15
275
	mov	edx, 10 or 0x40000000 ; ¡¨â 30 ãáâ ­®¢«¥­ => ª­®¯ª  ­¥ à¨áã¥âáï
275
	mov	edx, 10 or 0x40000000 ; ¡¨â 30 ãáâ ­®¢«¥­ => ª­®¯ª  ­¥ à¨áã¥âáï
276
 
276
 
277
	mov	edi,_BTNS_	     ; ª®«¨ç¥á⢮ ª­®¯®ª (áçñâ稪)
277
	mov	edi,_BTNS_	     ; ª®«¨ç¥á⢮ ª­®¯®ª (áçñâ稪)
278
;--------------------------------------
278
;--------------------------------------
279
align 4
279
align 4
280
newbtn:		     ; ­ ç «® 横« 
280
newbtn:		     ; ­ ç «® 横« 
281
	mcall	8		;  ᮧ¤ ñ¬ ª­®¯ªã
281
	mcall	8		;  ᮧ¤ ñ¬ ª­®¯ªã
282
 
282
 
283
			     ;  ¯¨è¥¬ ⥪áâ ­  ª­®¯ª¥
283
			     ;  ¯¨è¥¬ ⥪áâ ­  ª­®¯ª¥
284
	pushad		     ;   ᯠᠥ¬ ॣ¨áâàë
284
	pushad		     ;   ᯠᠥ¬ ॣ¨áâàë
285
	shr	ecx, 16
285
	shr	ecx, 16
286
	and	ebx, 0xffff0000
286
	and	ebx, 0xffff0000
287
	add	ebx, ecx	     ;   ebx = [x] shl 16 + [y];
287
	add	ebx, ecx	     ;   ebx = [x] shl 16 + [y];
288
	add	ebx, 10*65536+4      ;   ebx += ᬥ饭¨¥ ®â­®á¨â¥«ì­® ªà ï ª­®¯ª¨;
288
	add	ebx, 10*65536+4      ;   ebx += ᬥ饭¨¥ ®â­®á¨â¥«ì­® ªà ï ª­®¯ª¨;
289
	mov	ecx, [sc.work_text]  ;   èà¨äâ ¨ 梥â
289
	mov	ecx, [sc.work_text]  ;   èà¨äâ ¨ 梥â
290
	or	ecx, font
290
	or	ecx, font
291
	add	edx, -10	     ;   edx = ­®¬¥à ª­®¯ª¨;
291
	add	edx, -10	     ;   edx = ­®¬¥à ª­®¯ª¨;
292
	imul	edx, string_length   ;   edx *= ¤«¨­  áâப¨;
292
	imul	edx, string_length   ;   edx *= ¤«¨­  áâப¨;
293
	add	edx, text	     ;   edx += text;  ⥯¥àì ¢ edx  ¤à¥á áâப¨
293
	add	edx, text	     ;   edx += text;  ⥯¥àì ¢ edx  ¤à¥á áâப¨
294
	mov	esi, string_length   ;   ¢ esi - ¤«¨­  áâப¨
294
	mov	esi, string_length   ;   ¢ esi - ¤«¨­  áâப¨
295
	mcall	4
295
	mcall	4
296
	popad
296
	popad
297
 
297
 
298
	inc	edx		     ;  ­®¬¥à ª­®¯ª¨++;
298
	inc	edx		     ;  ­®¬¥à ª­®¯ª¨++;
299
	add	ecx,15*65536	     ;  㢥«¨ç¨¬ ᬥ饭¨¥ ¯® y
299
	add	ecx,15*65536	     ;  㢥«¨ç¨¬ ᬥ饭¨¥ ¯® y
300
	dec	edi		     ;  㬥­ì訬 áçñâ稪
300
	dec	edi		     ;  㬥­ì訬 áçñâ稪
301
	jnz	newbtn		     ; ¥á«¨ ­¥ ­®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à §
301
	jnz	newbtn		     ; ¥á«¨ ­¥ ­®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à §
302
 
302
 
303
	mcall	12,2	; § ª®­ç¨«¨ "à¨á®¢ âì"
303
	mcall	12,2	; § ª®­ç¨«¨ "à¨á®¢ âì"
304
	ret			     ; ¢®§¢à â
304
	ret			     ; ¢®§¢à â
305
;------------------------------------------------------------------------------	
305
;------------------------------------------------------------------------------	
306
align 4
306
align 4
307
; „€›… Žƒ€ŒŒ›
307
; „€›… Žƒ€ŒŒ›
308
 
308
 
309
  macro strtbl name, [string]
309
  macro strtbl name, [string]
310
  {
310
  {
311
   common
311
   common
312
     label name dword
312
     label name dword
313
   forward
313
   forward
314
     local str
314
     local str
315
     dd str
315
     dd str
316
   forward
316
   forward
317
     str db string
317
     str db string
318
  }
318
  }
319
 
319
 
320
  strtbl startapps	 ,\
320
  strtbl startapps	 ,\
321
    <"/sys/PIC4",0>	,\
321
    <"/sys/PIC4",0>	,\
322
    <"/sys/DESKTOP",0>	,\
322
    <"/sys/DESKTOP",0>	,\
323
    <"/sys/ICON",0>,\
323
    <"/sys/ICON",0>,\
324
    <"/sys/SETUP",0>	,\
324
    <"/sys/SETUP",0>	,\
325
    <"/sys/DEVELOP/BOARD",0> ,\
325
    <"/sys/DEVELOP/BOARD",0> ,\
326
    <"/sys/CPU",0> 
326
    <"/sys/CPU",0> 
327
    
327
    
328
  sz title, "KolibriOS"
328
  sz title, "KolibriOS"
329
 
329
 
330
  lsz text,\
330
  lsz text,\
331
    en, 'Background  ',\
331
    en, 'Background  ',\
332
    en, 'Desktop     ',\
332
    en, 'Desktop     ',\
333
    en, 'Icon manager',\
333
    en, 'Icon manager',\
334
    en, 'Device setup',\
334
    en, 'Device setup',\
335
    en, 'Debug board ',\
335
    en, 'Debug board ',\
336
    en, 'Processes   ',\
336
    en, 'Processes   ',\
337
    \
337
    \
338
    ru, 'ƒ¥­¥à â®à ®¡®¥¢     ',\
338
    ru, 'ƒ¥­¥à â®à ®¡®¥¢     ',\
339
    ru, ' áâனª  ®ª®­      ',\
339
    ru, ' áâனª  ®ª®­      ',\
340
    ru, '“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ',\
340
    ru, '“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ',\
341
    ru, ' áâனª  ãáâனá⢠',\
341
    ru, ' áâனª  ãáâனá⢠',\
342
    ru, ' ­¥«ì ®â« ¤ª¨      ',\
342
    ru, ' ­¥«ì ®â« ¤ª¨      ',\
343
    ru, 'à®æ¥ááë            '
343
    ru, 'à®æ¥ááë            ',\
-
 
344
    \
-
 
345
    et, 'Taust       ',\
-
 
346
    et, 'Töölaud     ',\
-
 
347
    et, 'Ikooni hald.',\
-
 
348
    et, 'Seadme hald.',\
-
 
349
    et, 'Silumis aken',\
-
 
350
    et, 'Protsessid  '
-
 
351
 
344
;------------------------------------------------------------------------------	
352
;------------------------------------------------------------------------------	
345
align 4
353
align 4
346
start_info:
354
start_info:
347
	.mode	dd 7
355
	.mode	dd 7
348
		dd 0
356
		dd 0
349
	.params dd 0
357
	.params dd 0
350
		dd 0
358
		dd 0
351
		dd 0
359
		dd 0
352
		db 0
360
		db 0
353
		dd start_info.path
361
		dd start_info.path
354
;------------------------------------------------------------------------------
362
;------------------------------------------------------------------------------
355
IM_END:	
363
IM_END:	
356
align 4
364
align 4
357
; …ˆˆ–ˆ€‹ˆ‡ˆŽ‚€›… „€›…
365
; …ˆˆ–ˆ€‹ˆ‡ˆŽ‚€›… „€›…
358
  curx1		dd ?	; ª®®à¤¨­ âë ªãàá®à 
366
  curx1		dd ?	; ª®®à¤¨­ âë ªãàá®à 
359
  cury1		dd ?
367
  cury1		dd ?
360
  curx		dd ?	; ª®®à¤¨­ âë ®ª­  ¬¥­î
368
  curx		dd ?	; ª®®à¤¨­ âë ®ª­  ¬¥­î
361
  cury		dd ?
369
  cury		dd ?
362
 
370
 
363
  menu_opened	db ?	; ®âªàëâ® ¬¥­î ¨«¨ ­¥â? (1-¤ , 0-­¥â)
371
  menu_opened	db ?	; ®âªàëâ® ¬¥­î ¨«¨ ­¥â? (1-¤ , 0-­¥â)
364
;------------------------------------------------------------------------------	
372
;------------------------------------------------------------------------------	
365
align 4
373
align 4
366
start_info.path	rb 256
374
start_info.path	rb 256
367
;------------------------------------------------------------------------------	
375
;------------------------------------------------------------------------------	
368
align 4
376
align 4
369
sc	system_colors	; á¨á⥬­ë¥ 梥â 
377
sc	system_colors	; á¨á⥬­ë¥ 梥â 
370
;------------------------------------------------------------------------------	
378
;------------------------------------------------------------------------------	
371
align 4
379
align 4
372
procinfo process_information	; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
380
procinfo process_information	; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
373
;------------------------------------------------------------------------------	
381
;------------------------------------------------------------------------------	
374
align 4
382
align 4
375
	rb 512			; áâíª ¤«ï ®ª­  ¬¥­î - 墠â¨â ¨ 1 Š¡
383
	rb 512			; áâíª ¤«ï ®ª­  ¬¥­î - 墠â¨â ¨ 1 Š¡
376
stack_wnd:
384
stack_wnd:
377
;------------------------------------------------------------------------------	
385
;------------------------------------------------------------------------------	
378
align 4
386
align 4
379
	rb 512
387
	rb 512
380
stack_area:
388
stack_area:
381
;------------------------------------------------------------------------------	
389
;------------------------------------------------------------------------------	
382
I_END:
390
I_END:
383
;------------------------------------------------------------------------------	
391
;------------------------------------------------------------------------------	
384
; ŠŽ…– Žƒ€ŒŒ›
392
; ŠŽ…– Žƒ€ŒŒ›
385
;------------------------------------------------------------------------------
393
;------------------------------------------------------------------------------