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 | ; "/sys/CPU",0>"/sys/VRR",0>"/sys/SETUP",0>"/sys/ICON",0>"/sys/DESKTOP",0>"/sys/PIC4",0>>> |
430 | ; |
- | 431 | ;------------------------------------------------------------------------------"/sys/CPU",0>"/sys/VRR",0>"/sys/SETUP",0>"/sys/ICON",0>"/sys/DESKTOP",0>"/sys/PIC4",0>>> |