Subversion Repositories Kolibri OS

Rev

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

Rev 661 Rev 1411
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,ebx        ; ¥á«¨ ­¥ ¯à ¢ ï, ¢®§¢à â
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
  test	eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2)
106
  test	eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2)
107
  jz	@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
 
-
 
178
        mcall   37, 0
-
 
179
        mov     esi, eax
-
 
180
        shr     esi, 16
-
 
181
        movzx   edi, ax
-
 
182
        mcall   9, procinfo2, -1
-
 
183
        mov     eax, [procinfo2.box.left]
-
 
184
        cmp     esi, eax
-
 
185
        jl      exit_menu
-
 
186
        add     eax, [procinfo2.box.width]
-
 
187
        cmp     esi, eax
-
 
188
        jge     exit_menu
-
 
189
        mov     eax, [procinfo2.box.top]
-
 
190
        cmp     edi, eax
-
 
191
        jl      exit_menu
-
 
192
        add     eax, [procinfo2.box.height]
-
 
193
        cmp     edi, eax
-
 
194
        jge     exit_menu
-
 
195
 
178
 
196
        jmp     still2
179
 
197
 
180
; €†€’€ ŠŽŠ€
198
; €†€’€ ŠŽŠ€
181
button:
199
button:
182
  mov	eax,17	      ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
200
  mov	eax,17	      ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
183
  mcall
201
  mcall
184
 
202
 
185
  sub	ah,10	      ; áà ¢­¨¢ ¥¬ á 10
203
  sub	ah,10	      ; áà ¢­¨¢ ¥¬ á 10
186
  jl	nofuncbtns    ; ¥á«¨ ¬¥­ìè¥ - § ªà뢠¥¬ ¬¥­î
204
  jl	nofuncbtns    ; ¥á«¨ ¬¥­ìè¥ - § ªà뢠¥¬ ¬¥­î
187
 
205
 
188
  movzx ebx,ah	      ; ¯®«ã稫¨ ­®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx
206
  movzx ebx,ah	      ; ¯®«ã稫¨ ­®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx
189
  mov	esi, [startapps + ebx*4]
207
  mov	esi, [startapps + ebx*4]
190
  mov	edi, start_info.path
208
  mov	edi, start_info.path
191
  cld
209
  cld
192
 @@:
210
 @@:
193
  lodsb
211
  lodsb
194
  stosb
212
  stosb
195
  test	al, al
213
  test	al, al
196
  jnz	@b
214
  jnz	@b
197
  mcall 70, start_info
215
  mcall 70, start_info
198
 
216
 
199
;  mov   eax,5         ; ¯®¤®¦¤ñ¬, ¯®ª  ¯à®£à ¬¬  § ¯ãáâ¨âìáï
217
;  mov   eax,5         ; ¯®¤®¦¤ñ¬, ¯®ª  ¯à®£à ¬¬  § ¯ãáâ¨âìáï
200
;  mov   ebx,1         ;   â® ¥ñ ®ª­® ­¥ ¡ã¤¥â ®âà¨á®¢ ­® (¡ £ ¢ ï¤à¥???)
218
;  mov   ebx,1         ;   â® ¥ñ ®ª­® ­¥ ¡ã¤¥â ®âà¨á®¢ ­® (¡ £ ¢ ï¤à¥???)
201
;  mcall          ; à áª®¬¬¥­â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë
219
;  mcall          ; à áª®¬¬¥­â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë
202
		       ; á ®âà¨á®¢ª®©
220
		       ; á ®âà¨á®¢ª®©
203
 
221
 
204
nofuncbtns:	      ; § ªà뢠¥¬ ¬¥­î
222
nofuncbtns:	      ; § ªà뢠¥¬ ¬¥­î
205
  jmp	exit_menu
223
  jmp	exit_menu
206
 
224
 
207
 
225
 
208
 
226
 
209
_BTNS_		  = 6	  ; ª®«¨ç¥á⢮ ª­®¯®ª ("¯ã­ªâ®¢ ¬¥­î")
227
_BTNS_		  = 6	  ; ª®«¨ç¥á⢮ ª­®¯®ª ("¯ã­ªâ®¢ ¬¥­î")
210
 
228
 
211
if lang eq ru
229
if lang eq ru
212
  font		  = 0x00000000
230
  font		  = 0x00000000
213
  string_length   = 20		; ¤«¨­  áâப¨
231
  string_length   = 20		; ¤«¨­  áâப¨
214
  wnd_x_size	  = 133 	; è¨à¨­  ®ª­ 
232
  wnd_x_size	  = 133 	; è¨à¨­  ®ª­ 
215
  title_pos	 = 36 shl 16 + 7
233
  title_pos	 = 36 shl 16 + 7
216
else
234
else
217
  font		  = 0x10000000
235
  font		  = 0x10000000
218
  string_length   = 12		; ¤«¨­  áâப¨
236
  string_length   = 12		; ¤«¨­  áâப¨
219
  wnd_x_size	  = 105 	; è¨à¨­  ®ª­ 
237
  wnd_x_size	  = 105 	; è¨à¨­  ®ª­ 
220
  title_pos	 = 23 shl 16 + 7
238
  title_pos	 = 23 shl 16 + 7
221
end if
239
end if
222
 
240
 
223
;*******************************
241
;*******************************
224
;********  ˆ‘“…Œ ŽŠŽ  ********
242
;********  ˆ‘“…Œ ŽŠŽ  ********
225
;*******************************
243
;*******************************
226
 
244
 
227
draw_window:
245
draw_window:
228
 
246
 
229
  mov	eax,12		 ; ­ ç¨­ ¥¬ "à¨á®¢ âì"
247
  mov	eax,12		 ; ­ ç¨­ ¥¬ "à¨á®¢ âì"
230
  mov	ebx,1
248
  mov	ebx,1
231
  mcall
249
  mcall
232
 
250
 
233
  mov	eax,[curx1]	 ; ⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
251
  mov	eax,[curx1]	 ; ⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
234
  mov	[curx],eax	 ; § ¯¨è¥¬ ¢ ª®®à¤¨­ âë ®ª­ 
252
  mov	[curx],eax	 ; § ¯¨è¥¬ ¢ ª®®à¤¨­ âë ®ª­ 
235
  mov	eax,[cury1]
253
  mov	eax,[cury1]
236
  mov	[cury],eax
254
  mov	[cury],eax
237
 
255
 
238
; ⥯¥àì ¡ã¤¥¬ áç¨â âì ª®®à¤¨­ âë ®ª­ , çâ®¡ë ®­® §  ªà © íªà ­  ­¥ ¢ë«¥§«®
256
; ⥯¥àì ¡ã¤¥¬ áç¨â âì ª®®à¤¨­ âë ®ª­ , çâ®¡ë ®­® §  ªà © íªà ­  ­¥ ¢ë«¥§«®
239
  mov	eax,14		      ; ¯®«ã稬 à §¬¥à íªà ­ 
257
  mov	eax,14		      ; ¯®«ã稬 à §¬¥à íªà ­ 
240
  mcall
258
  mcall
241
  mov	ebx,eax
259
  mov	ebx,eax
242
  shr	eax,16		      ; ¢ eax - x_screen
260
  shr	eax,16		      ; ¢ eax - x_screen
243
  and	ebx,0xffff	      ; ¢ ebx - y_screen
261
  and	ebx,0xffff	      ; ¢ ebx - y_screen
244
  add	eax,-wnd_x_size       ; eax = [x_screen - è¨à¨­  ®ª­ ]
262
  add	eax,-wnd_x_size       ; eax = [x_screen - è¨à¨­  ®ª­ ]
245
  add	ebx,-_BTNS_*15-21     ; ebx = [y_screen - ¢ëá®â  ®ª­ ]
263
  add	ebx,-_BTNS_*15-21     ; ebx = [y_screen - ¢ëá®â  ®ª­ ]
246
 
264
 
247
  cmp	eax,[curx]
265
  cmp	eax,[curx]
248
  jg	.okx		      ; ¥á«¨ ®ª­® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î,
266
  jg	.okx		      ; ¥á«¨ ®ª­® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î,
249
  add	[curx],-wnd_x_size    ; ᤢ¨­¥¬ ¥£® ¢«¥¢® ­  100
267
  add	[curx],-wnd_x_size    ; ᤢ¨­¥¬ ¥£® ¢«¥¢® ­  100
250
 .okx:
268
 .okx:
251
 
269
 
252
  cmp	ebx, [cury]
270
  cmp	ebx, [cury]
253
  jg	.oky		      ; ¯® ¢¥à⨪ «¨ â®ç­® â ª¦¥
271
  jg	.oky		      ; ¯® ¢¥à⨪ «¨ â®ç­® â ª¦¥
254
  add	[cury], -_BTNS_*15-21
272
  add	[cury], -_BTNS_*15-21
255
 .oky:
273
 .oky:
256
 
274
 
257
  xor	eax, eax	   ; äã­ªæ¨ï 0 - ᮧ¤ âì ®ª­®
275
  xor	eax, eax	   ; äã­ªæ¨ï 0 - ᮧ¤ âì ®ª­®
258
  mov	ebx, [curx]	   ;  ebx = [ª®®à¤¨­ â  ¯® x] shl 16 + [è¨à¨­ ]
276
  mov	ebx, [curx]	   ;  ebx = [ª®®à¤¨­ â  ¯® x] shl 16 + [è¨à¨­ ]
259
  shl	ebx, 16
277
  shl	ebx, 16
260
  add	ebx, wnd_x_size
278
  add	ebx, wnd_x_size
261
  mov	ecx, [cury]	   ;  ecx = [ª®®à¤¨­ â  ¯® y] shl 16 + [¢ëá®â ]
279
  mov	ecx, [cury]	   ;  ecx = [ª®®à¤¨­ â  ¯® y] shl 16 + [¢ëá®â ]
262
  shl	ecx, 16
280
  shl	ecx, 16
263
  add	ecx, _BTNS_*15+21
281
  add	ecx, _BTNS_*15+21
264
  mov	edx, [sc.work]	   ;  梥â à ¡®ç¥© ®¡« áâ¨
282
  mov	edx, [sc.work]	   ;  梥â à ¡®ç¥© ®¡« áâ¨
265
  mov	esi, [sc.grab]	   ;  梥⠧ £®«®¢ª 
283
  mov	esi, [sc.grab]	   ;  梥⠧ £®«®¢ª 
266
  or	esi, 0x81000000
284
  or	esi, 0x81000000
267
  mov	edi, [sc.frame]    ;  梥â à ¬ª¨
285
  mov	edi, [sc.frame]    ;  梥â à ¬ª¨
268
  mcall
286
  mcall
269
 
287
 
270
  mov	eax, 4		   ; § £®«®¢®ª
288
  mov	eax, 4		   ; § £®«®¢®ª
271
  mov	ebx, title_pos	  ;  [x] shl 16 + [y]
289
  mov	ebx, title_pos	  ;  [x] shl 16 + [y]
272
  mov	ecx, [sc.grab_text];  èà¨äâ ¨ 梥â (á¥àë©)
290
  mov	ecx, [sc.grab_text];  èà¨äâ ¨ 梥â (á¥àë©)
273
  or	ecx, 0x10000000
291
  or	ecx, 0x10000000
274
;  add   ecx, -0x333333
292
;  add   ecx, -0x333333
275
  push	ecx
293
  push	ecx
276
  push	ecx
294
  push	ecx
277
  xor	edx,edx
295
  xor	edx,edx
278
.dec_color:
296
.dec_color:
279
  sub	byte [esp+edx], 0x33
297
  sub	byte [esp+edx], 0x33
280
  jae	@f
298
  jae	@f
281
  mov	byte [esp+edx], 0
299
  mov	byte [esp+edx], 0
282
@@:
300
@@:
283
  inc	edx
301
  inc	edx
284
  jnp	.dec_color
302
  jnp	.dec_color
285
  pop	ecx
303
  pop	ecx
286
  mov	edx, title	  ;   ¤à¥á § £®«®¢ª 
304
  mov	edx, title	  ;   ¤à¥á § £®«®¢ª 
287
  mov	esi, title.size   ;  ¤«¨­  § £®«®¢ª  ("M E N U")
305
  mov	esi, title.size   ;  ¤«¨­  § £®«®¢ª  ("M E N U")
288
  mcall
306
  mcall
289
  pop	ecx
307
  pop	ecx
290
  add	ebx, 1 shl 16	   ;  ᤢ¨­¥¬ ¢¯à ¢® ­  1
308
  add	ebx, 1 shl 16	   ;  ᤢ¨­¥¬ ¢¯à ¢® ­  1
291
  mcall
309
  mcall
292
 
310
 
293
  mov	ebx, 1*65536+wnd_x_size-2  ; ­ ç¨­ ¥¬ ¤¥« âì ª­®¯ª¨
311
  mov	ebx, 1*65536+wnd_x_size-2  ; ­ ç¨­ ¥¬ ¤¥« âì ª­®¯ª¨
294
  mov	ecx, 20*65536+15
312
  mov	ecx, 20*65536+15
295
  mov	edx, 10 or 0x40000000 ; ¡¨â 30 ãáâ ­®¢«¥­ => ª­®¯ª  ­¥ à¨áã¥âáï
313
  mov	edx, 10 or 0x40000000 ; ¡¨â 30 ãáâ ­®¢«¥­ => ª­®¯ª  ­¥ à¨áã¥âáï
296
 
314
 
297
  mov	edi,_BTNS_	     ; ª®«¨ç¥á⢮ ª­®¯®ª (áçñâ稪)
315
  mov	edi,_BTNS_	     ; ª®«¨ç¥á⢮ ª­®¯®ª (áçñâ稪)
298
 
316
 
299
 newbtn:		     ; ­ ç «® 横« 
317
 newbtn:		     ; ­ ç «® 横« 
300
  mov	eax,8		     ;  ᮧ¤ ñ¬ ª­®¯ªã
318
  mov	eax,8		     ;  ᮧ¤ ñ¬ ª­®¯ªã
301
  mcall
319
  mcall
302
 
320
 
303
			     ;  ¯¨è¥¬ ⥪áâ ­  ª­®¯ª¥
321
			     ;  ¯¨è¥¬ ⥪áâ ­  ª­®¯ª¥
304
  pushad		     ;   ᯠᠥ¬ ॣ¨áâàë
322
  pushad		     ;   ᯠᠥ¬ ॣ¨áâàë
305
  shr	ecx, 16
323
  shr	ecx, 16
306
  and	ebx, 0xffff0000
324
  and	ebx, 0xffff0000
307
  add	ebx, ecx	     ;   ebx = [x] shl 16 + [y];
325
  add	ebx, ecx	     ;   ebx = [x] shl 16 + [y];
308
  add	ebx, 10*65536+4      ;   ebx += ᬥ饭¨¥ ®â­®á¨â¥«ì­® ªà ï ª­®¯ª¨;
326
  add	ebx, 10*65536+4      ;   ebx += ᬥ饭¨¥ ®â­®á¨â¥«ì­® ªà ï ª­®¯ª¨;
309
  mov	ecx, [sc.work_text]  ;   èà¨äâ ¨ 梥â
327
  mov	ecx, [sc.work_text]  ;   èà¨äâ ¨ 梥â
310
  or	ecx, font
328
  or	ecx, font
311
  add	edx, -10	     ;   edx = ­®¬¥à ª­®¯ª¨;
329
  add	edx, -10	     ;   edx = ­®¬¥à ª­®¯ª¨;
312
  imul	edx, string_length   ;   edx *= ¤«¨­  áâப¨;
330
  imul	edx, string_length   ;   edx *= ¤«¨­  áâப¨;
313
  add	edx, text	     ;   edx += text;  ⥯¥àì ¢ edx  ¤à¥á áâப¨
331
  add	edx, text	     ;   edx += text;  ⥯¥àì ¢ edx  ¤à¥á áâப¨
314
  mov	esi, string_length   ;   ¢ esi - ¤«¨­  áâப¨
332
  mov	esi, string_length   ;   ¢ esi - ¤«¨­  áâப¨
315
  mov	eax, 4		     ;   äã­ªæ¨ï 4 - ¢ë¢®¤ ⥪áâ 
333
  mov	eax, 4		     ;   äã­ªæ¨ï 4 - ¢ë¢®¤ ⥪áâ 
316
  mcall
334
  mcall
317
  popad
335
  popad
318
 
336
 
319
  inc	edx		     ;  ­®¬¥à ª­®¯ª¨++;
337
  inc	edx		     ;  ­®¬¥à ª­®¯ª¨++;
320
  add	ecx,15*65536	     ;  㢥«¨ç¨¬ ᬥ饭¨¥ ¯® y
338
  add	ecx,15*65536	     ;  㢥«¨ç¨¬ ᬥ饭¨¥ ¯® y
321
  dec	edi		     ;  㬥­ì訬 áçñâ稪
339
  dec	edi		     ;  㬥­ì訬 áçñâ稪
322
  jnz	newbtn		     ; ¥á«¨ ­¥ ­®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à §
340
  jnz	newbtn		     ; ¥á«¨ ­¥ ­®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à §
323
 
341
 
324
  mov	eax,12		     ; § ª®­ç¨«¨ "à¨á®¢ âì"
342
  mov	eax,12		     ; § ª®­ç¨«¨ "à¨á®¢ âì"
325
  mov	ebx,2
343
  mov	ebx,2
326
  mcall
344
  mcall
327
 
345
 
328
ret			     ; ¢®§¢à â
346
ret			     ; ¢®§¢à â
329
 
347
 
330
 
348
 
331
 
349
 
332
; „€›… Žƒ€ŒŒ›
350
; „€›… Žƒ€ŒŒ›
333
DATA
351
DATA
334
 
352
 
335
  macro strtbl name, [string]
353
  macro strtbl name, [string]
336
  {
354
  {
337
   common
355
   common
338
     label name dword
356
     label name dword
339
   forward
357
   forward
340
     local str
358
     local str
341
     dd str
359
     dd str
342
   forward
360
   forward
343
     str db string
361
     str db string
344
  }
362
  }
345
 
363
 
346
  strtbl startapps	 ,\
364
  strtbl startapps	 ,\
347
    <"/sys/PIC4",0>	,\
365
    <"/sys/PIC4",0>	,\
348
    <"/sys/DESKTOP",0>	,\
366
    <"/sys/DESKTOP",0>	,\
349
    <"/sys/ICONMNGR",0>,\
367
    <"/sys/ICONMNGR",0>,\
350
    <"/sys/SETUP",0>	,\
368
    <"/sys/SETUP",0>	,\
351
    <"/sys/VRR",0> ,\
369
    <"/sys/VRR",0> ,\
352
    <"/sys/CPU",0> 
370
    <"/sys/CPU",0> 
353
    
371
    
354
  sz title, "KolibriOS"
372
  sz title, "KolibriOS"
355
 
373
 
356
  lsz text,\
374
  lsz text,\
357
    en, 'Background  ',\
375
    en, 'Background  ',\
358
    en, 'Desktop     ',\
376
    en, 'Desktop     ',\
359
    en, 'Icon manager',\
377
    en, 'Icon manager',\
360
    en, 'Device setup',\
378
    en, 'Device setup',\
361
    en, 'VRR         ',\
379
    en, 'VRR         ',\
362
    en, 'Processes   ',\
380
    en, 'Processes   ',\
363
    \
381
    \
364
    ru, 'ƒ¥­¥à â®à ®¡®¥¢     ',\
382
    ru, 'ƒ¥­¥à â®à ®¡®¥¢     ',\
365
    ru, ' áâனª  ®ª®­      ',\
383
    ru, ' áâனª  ®ª®­      ',\
366
    ru, '“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ',\
384
    ru, '“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ',\
367
    ru, ' áâனª  ãáâனá⢠',\
385
    ru, ' áâனª  ãáâனá⢠',\
368
    ru, ' áâனª  ¬®­¨â®à   ',\
386
    ru, ' áâனª  ¬®­¨â®à   ',\
369
    ru, 'à®æ¥ááë            '
387
    ru, 'à®æ¥ááë            '
370
 
388
 
371
start_info:
389
start_info:
372
	.mode	dd	7
390
	.mode	dd	7
373
		dd	0
391
		dd	0
374
	.params dd	0
392
	.params dd	0
375
		dd	0
393
		dd	0
376
		dd	0
394
		dd	0
377
		db	0
395
		db	0
378
		dd	start_info.path
396
		dd	start_info.path
379
 
397
 
380
; …ˆˆ–ˆ€‹ˆ‡ˆŽ‚€›… „€›…
398
; …ˆˆ–ˆ€‹ˆ‡ˆŽ‚€›… „€›…
381
UDATA
399
UDATA
382
  processes   dd ?		; ª®«¨ç¥á⢮ ¯à®æ¥áᮢ ¢ á¨á⥬¥
400
  processes   dd ?		; ª®«¨ç¥á⢮ ¯à®æ¥áᮢ ¢ á¨á⥬¥
383
  curx1       dd ?		; ª®®à¤¨­ âë ªãàá®à 
401
  curx1       dd ?		; ª®®à¤¨­ âë ªãàá®à 
384
  cury1       dd ?
402
  cury1       dd ?
385
  curx	      dd ?		; ª®®à¤¨­ âë ®ª­  ¬¥­î
403
  curx	      dd ?		; ª®®à¤¨­ âë ®ª­  ¬¥­î
386
  cury	      dd ?
404
  cury	      dd ?
387
 
405
 
388
  menu_opened db ?		; ®âªàëâ® ¬¥­î ¨«¨ ­¥â? (1-¤ , 0-­¥â)
406
  menu_opened db ?		; ®âªàëâ® ¬¥­î ¨«¨ ­¥â? (1-¤ , 0-­¥â)
389
 
407
 
390
align 4
408
align 4
391
start_info.path rb 256
409
start_info.path rb 256
392
 
410
 
393
  sc	   system_colors	; á¨á⥬­ë¥ 梥â 
411
  sc	   system_colors	; á¨á⥬­ë¥ 梥â 
394
  procinfo process_information	; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
412
  procinfo process_information	; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
-
 
413
  procinfo2 process_information
395
 
414
 
396
  rb 1024			; áâíª ¤«ï ®ª­  ¬¥­î - 墠â¨â ¨ 1 Š¡
415
  rb 1024			; áâíª ¤«ï ®ª­  ¬¥­î - 墠â¨â ¨ 1 Š¡
397
  align 32
416
  align 32
398
  stack_wnd:
417
  stack_wnd:
399
 
418
 
400
 
419
 
401
MEOS_APP_END
420
MEOS_APP_END
402
; ŠŽ…– Žƒ€ŒŒ›
421
; ŠŽ…– Žƒ€ŒŒ›