Subversion Repositories Kolibri OS

Rev

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

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