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