Subversion Repositories Kolibri OS

Rev

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

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