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