Rev 2135 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2135 | Rev 2510 | ||
---|---|---|---|
Line 5... | Line 5... | ||
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 ; ¦¤ñ¬ ᮡëâ¨ï |
|
Line 27... | Line -... | ||
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 |
Line 50... | Line 53... | ||
50 | mcall |
53 | mcall 9,procinfo |
51 | 54 | ||
52 | inc eax ; ⥯¥àì ¢ eax ᮤ¥à¦¨âáï ç¨á«® ¯à®æ¥áᮢ + 1 |
55 | inc eax ; ⥯¥àì ¢ eax ᮤ¥à¦¨âáï ç¨á«® ¯à®æ¥áᮢ + 1 |
- | 56 | mov [processes],eax |
|
53 | mov [processes],eax |
57 | mov ecx,1 |
54 | mov ecx,1 |
58 | ;-------------------------------------- |
55 | 59 | align 4 |
|
56 | new_process: |
60 | new_process: |
57 | pushad |
61 | pushad |
58 | mov eax,9 ; ¯®«ã稬 ¨ä®à¬ æ¨î ® ¯à®æ¥áá¥; ®¬¥à - ¢ ecx |
- | |
59 | mov ebx,procinfo |
62 | ; ¯®«ã稬 ¨ä®à¬ æ¨î ® ¯à®æ¥áá¥; ®¬¥à - ¢ ecx |
60 | mcall |
63 | mcall 9,procinfo |
61 | mov eax,37 ; ª®®à¤¨ âë ªãàá®à |
64 | ; ª®®à¤¨ âë ªãàá®à |
- | 65 | xor ebx,ebx |
|
62 | xor ebx,ebx |
66 | mcall 37 |
63 | mcall |
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 |
Line 79... | Line 83... | ||
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 |
Line 81... | Line 85... | ||
81 | 85 | ||
82 | cmp eax,[curx1] ; wnd_x_start > cursor_x => ªãàá®à «¥¢¥¥ ®ª |
86 | cmp eax,[curx1] ; wnd_x_start > cursor_x => ªãàá®à «¥¢¥¥ ®ª |
- | 87 | jg ne_goden |
|
83 | jg ne_goden |
88 | |
84 | cmp ecx,[curx1] ; wnd_x_end < cursor_x => ªãàá®à ¯à ¢¥¥ ®ª |
89 | cmp ecx,[curx1] ; wnd_x_end < cursor_x => ªãàá®à ¯à ¢¥¥ ®ª |
- | 90 | jl ne_goden |
|
85 | jl ne_goden |
91 | |
86 | cmp ebx,[cury1] ; wnd_y_start > cursor_y => ªãàá®à ¢ëè¥ ®ª |
92 | cmp ebx,[cury1] ; wnd_y_start > cursor_y => ªãàá®à ¢ëè¥ ®ª |
- | 93 | jg ne_goden |
|
87 | jg ne_goden |
94 | |
88 | cmp edx,[cury1] ; wnd_y_end < cursor_y => ªãàá®à ¨¦¥ ®ª |
95 | cmp edx,[cury1] ; wnd_y_end < cursor_y => ªãàá®à ¨¦¥ ®ª |
- | 96 | jl ne_goden |
|
89 | jl ne_goden |
97 | ;-------------------------------------- |
90 | 98 | align 4 |
|
91 | goden: ; ª«¨ª ¡ë« ¢ãâਠª ª®£®-â® ®ª , ¯®í⮬㠨祣® ¥ ¤¥« ¥¬ |
99 | goden: ; ª«¨ª ¡ë« ¢ãâਠª ª®£®-â® ®ª , ¯®í⮬㠨祣® ¥ ¤¥« ¥¬ |
92 | popad |
100 | popad |
- | 101 | jmp still |
|
93 | 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 | @@: ; ¯®¤®¦¤ñ¬, ¯®ª ¯®«ì§®¢ â¥«ì ¥ ®â¯ãá⨫ ¯à ¢ãî ª®¯ªã ¬ëè¨ |
- | |
103 | mov eax,37 |
- | |
104 | mov ebx,2 ; äãªæ¨ï 37-2: |
111 | @@: ; ¯®¤®¦¤ñ¬, ¯®ª ¯®«ì§®¢ â¥«ì ¥ ®â¯ãá⨫ ¯à ¢ãî ª®¯ªã ¬ëè¨ |
105 | mcall ; ¦ âë «¨ ª®¯ª¨ ¬ëè¨? |
112 | mcall 37,2 ; ¦ âë «¨ ª®¯ª¨ ¬ëè¨? |
106 | test eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2) |
113 | test eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2) |
Line 107... | Line 114... | ||
107 | jz @f ; ¨¤ñ¬ ¢ ç «® £« ¢®£® 横« |
114 | jz @f ; ¨¤ñ¬ ¢ ç «® £« ¢®£® 横« |
- | 115 | ||
108 | 116 | mcall 68,1 ; ¨ ç¥ ¯¥à¥ª«î稬áï á«¥¤ãî騩 ¯®â®ª á¨áâ¥¬ë ¨ ª®£¤ |
|
109 | mov eax,5 ; ¨ ç¥ |
117 | jmp @b ; ¢ë¯®«¥¨¥ ¢¥à¥âáï í⮬㠯®â®ªã, ¯à®¢¥à¨¬ ¬ëèì ®¯ïâì |
110 | ;mov ebx,2 ; ¯®¤®¦¤ñ¬ 2 ¬á |
- | |
111 | mcall |
- | |
112 | 118 | ;-------------------------------------- |
|
113 | jmp @b ; ¨ ¯à®¢¥à¨¬ ¬ëèì ®¯ïâì |
- | |
114 | @@: |
119 | align 4 |
115 | - | ||
116 | ; ¥á«¨ 㦥 ¡ë«® ®âªàëâ® ¬¥î, 㦮 ¯®¤®¦¤ âì, ¯®ª ®® § ªà®¥âáï: |
120 | @@: |
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 ; ¯¥à¥ª«î稬áï á«¥¤ãî騩 ¯®â®ª á¨á⥬ë |
- | 126 | ; ¡®«¥¥ íää¥ªâ¨¢ë© á¯®á®¡ § ¤¥à¦ª¨ 祬 mcall 5 |
|
- | 127 | jmp @b |
|
122 | mcall |
128 | ;-------------------------------------- |
123 | jmp @b |
- | |
124 | @@: |
129 | align 4 |
125 | - | ||
126 | mov eax,51 ; ⥯¥àì ¬®¦® ᬥ«® § ¯ã᪠âì ¯à®æ¥áá (¯®â®ª) ¬¥î |
130 | @@: |
127 | mov ebx,1 ; ᮧ¤ ñ¬ ¯®â®ª (thread) |
- | |
128 | mov ecx,start_wnd ; â®çª ¢å®¤ ¯®â®ª |
- | |
129 | mov edx,stack_wnd ; ¢¥àè¨ áâíª ¤«ï ¯®â®ª |
- | |
130 | mcall |
131 | ; ⥯¥àì ¬®¦® ᬥ«® § ¯ã᪠âì ¯à®æ¥áá (¯®â®ª) ¬¥î |
131 | - | ||
132 | jmp still |
- | |
- | 132 | mcall 51,1,start_wnd,stack_wnd |
|
133 | 133 | jmp still |
|
134 | 134 | ;------------------------------------------------------------------------------ |
|
135 | 135 | align 4 |
|
- | 136 | exit_menu: ; ¥á«¨ ¢ë室¨¬ ¨§ ¬¥î, ¤® § ¯¨á âì ¢ [menu_opened] 0 |
|
- | 137 | mov [menu_opened],0 |
|
136 | exit_menu: ; ¥á«¨ ¢ë室¨¬ ¨§ ¬¥î, ¤® § ¯¨á âì ¢ [menu_opened] 0 |
138 | ;-------------------------------------- |
137 | mov [menu_opened],0 |
139 | align 4 |
138 | exit: ; áî¤ ¬ë ¨¤ñ¬, ª®£¤ ¢ë室¨¬ ¨§ ®á®¢®£® ¯à®æ¥áá |
140 | exit: ; áî¤ ¬ë ¨¤ñ¬, ª®£¤ ¢ë室¨¬ ¨§ ®á®¢®£® ¯à®æ¥áá |
139 | or eax,-1 ; eax = -1 |
- | |
140 | mcall |
- | |
141 | - | ||
142 | - | ||
- | 141 | or eax,-1 ; eax = -1 |
|
143 | 142 | mcall |
|
- | 143 | ;------------------------------------------------------------------------------ |
|
- | 144 | ; §¤¥áì áâ àâã¥â ¯à®æ¥áá ¬¥î |
|
144 | 145 | ;------------------------------------------------------------------------------ |
|
145 | ; §¤¥áì áâ àâã¥â ¯à®æ¥áá ¬¥î |
146 | align 4 |
146 | start_wnd: |
147 | start_wnd: |
- | 148 | mov [menu_opened],1 |
|
147 | mov [menu_opened],1 |
149 | ; ãáâ ®¢¨¬ ¬ áªã ¦¥« ¥¬ëå ᮡë⨩: ¬¥î + ª®¯ª¨ + ¯¥à¥à¨á®¢ª |
148 | mov eax,40 ; ãáâ ®¢¨¬ ¬ áªã ¦¥« ¥¬ëå ᮡë⨩ ¤«ï í⮣® ¯à®æ¥áá |
150 | mcall 40,100101b |
149 | mov ebx,100101b ; ¬¥î + ª®¯ª¨ + ¯¥à¥à¨á®¢ª |
- | |
150 | mcall |
151 | ;------------------------------------------------------------------------------ |
151 | 152 | align 4 |
|
- | 153 | red: |
|
152 | red: |
154 | call draw_window |
153 | call draw_window |
155 | ;------------------------------------------------------------------------------ |
154 | - | ||
155 | still2: ; £« ¢ë© 横« ¯à®æ¥áá ¬¥î |
156 | align 4 |
156 | - | ||
Line 157... | Line 157... | ||
157 | mov eax,10 ; ¦¤ñ¬ ᮡëâ¨ï |
157 | still2: ; £« ¢ë© 横« ¯à®æ¥áá ¬¥î |
158 | mcall |
158 | mcall 10 ; ¦¤ñ¬ ᮡëâ¨ï |
- | 159 | ||
159 | 160 | cmp eax,1 ; ¯¥à¥à¨á®¢ª ? |
|
160 | cmp eax,1 ; ¯¥à¥à¨á®¢ª ? |
161 | je red |
- | 162 | ||
161 | je red |
163 | cmp eax,3 ; ª®¯ª ? |
162 | cmp eax,3 ; ª®¯ª ? |
164 | je button |
Line 163... | Line 165... | ||
163 | 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 | - | ||
169 | 170 | ;------------------------------------------------------------------------------ |
|
170 | ; |
- | |
171 | mouse: ; ª®£¤ ¯®«ì§®¢ â¥«ì ¦¬ñâ ª®¯ªã ¬ëè¨, § ªà®¥¬áï |
171 | align 4 |
172 | mov eax,37 |
172 | ; |
Line 173... | Line 173... | ||
173 | mov ebx,2 ; ª ª¨¥ ª®¯ª¨ ¦ âë? |
173 | mouse: ; ª®£¤ ¯®«ì§®¢ â¥«ì ¦¬ñâ ª®¯ªã ¬ëè¨, § ªà®¥¬áï |
- | 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 |
|
- | 179 | ||
178 | mcall 37, 0 |
180 | mov esi, eax |
179 | mov esi, eax |
181 | shr esi, 16 |
180 | shr esi, 16 |
182 | movzx edi, ax |
- | 183 | mcall 9, procinfo, -1 |
|
181 | movzx edi, ax |
184 | |
182 | mcall 9, procinfo2, -1 |
185 | mov eax, [procinfo.box.left] |
183 | mov eax, [procinfo2.box.left] |
186 | cmp esi, eax |
- | 187 | jl exit_menu |
|
184 | cmp esi, eax |
188 | |
185 | jl exit_menu |
189 | add eax, [procinfo.box.width] |
186 | add eax, [procinfo2.box.width] |
190 | cmp esi, eax |
- | 191 | jge exit_menu |
|
187 | cmp esi, eax |
192 | |
188 | jge exit_menu |
193 | mov eax, [procinfo.box.top] |
189 | mov eax, [procinfo2.box.top] |
194 | cmp edi, eax |
Line 190... | Line 195... | ||
190 | cmp edi, eax |
195 | jl exit_menu |
- | 196 | ||
191 | jl exit_menu |
197 | add eax, [procinfo.box.height] |
192 | add eax, [procinfo2.box.height] |
198 | cmp edi, eax |
193 | cmp edi, eax |
199 | jge exit_menu |
194 | jge exit_menu |
200 | |
195 | - | ||
Line 196... | Line 201... | ||
196 | jmp still2 |
201 | jmp still2 |
197 | 202 | ;------------------------------------------------------------------------------ |
|
Line 198... | Line 203... | ||
198 | ; |
203 | align 4 |
199 | button: |
204 | ; |
200 | mov eax,17 ; ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ |
205 | button: |
201 | mcall |
206 | mcall 17 ; ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ |
- | 207 | ||
- | 208 | sub ah,10 ; áà ¢¨¢ ¥¬ á 10 |
|
202 | 209 | jl nofuncbtns ; ¥á«¨ ¬¥ìè¥ - § ªàë¢ ¥¬ ¬¥î |
|
203 | sub ah,10 ; áà ¢¨¢ ¥¬ á 10 |
210 | |
204 | jl nofuncbtns ; ¥á«¨ ¬¥ìè¥ - § ªàë¢ ¥¬ ¬¥î |
211 | movzx ebx,ah ; ¯®«ã稫¨ ®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx |
205 | 212 | mov esi,[startapps + ebx*4] |
|
206 | movzx ebx,ah ; ¯®«ã稫¨ ®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx |
213 | mov edi,start_info.path |
Line 216... | Line 223... | ||
216 | 223 | ||
217 | ; mov eax,5 ; ¯®¤®¦¤ñ¬, ¯®ª ¯à®£à ¬¬ § ¯ãáâ¨âìáï |
224 | ; mov eax,5 ; ¯®¤®¦¤ñ¬, ¯®ª ¯à®£à ¬¬ § ¯ãáâ¨âìáï |
218 | ; mov ebx,1 ; â® ¥ñ ®ª® ¥ ¡ã¤¥â ®âà¨á®¢ ® (¡ £ ¢ ï¤à¥???) |
225 | ; mov ebx,1 ; â® ¥ñ ®ª® ¥ ¡ã¤¥â ®âà¨á®¢ ® (¡ £ ¢ ï¤à¥???) |
219 | ; mcall ; à ᪮¬¬¥â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë |
226 | ; mcall ; à ᪮¬¬¥â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë |
- | 227 | ; á ®âà¨á®¢ª®© |
|
220 | ; á ®âà¨á®¢ª®© |
228 | ;-------------------------------------- |
221 | 229 | align 4 |
|
222 | nofuncbtns: ; § ªàë¢ ¥¬ ¬¥î |
230 | nofuncbtns: ; § ªàë¢ ¥¬ ¬¥î |
223 | jmp exit_menu |
- | |
224 | - | ||
225 | - | ||
- | 231 | jmp exit_menu |
|
226 | 232 | ;------------------------------------------------------------------------------ |
|
Line 227... | Line 233... | ||
227 | _BTNS_ = 6 ; ª®«¨ç¥á⢮ ª®¯®ª ("¯ãªâ®¢ ¬¥î") |
233 | _BTNS_ = 6 ; ª®«¨ç¥á⢮ ª®¯®ª ("¯ãªâ®¢ ¬¥î") |
228 | 234 | ||
229 | if lang eq ru |
235 | if lang eq ru |
Line 235... | Line 241... | ||
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 |
- | |
Line 250... | Line 252... | ||
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 |
- | |
255 | 256 | mov [cury],eax |
|
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 - è¨à¨ ®ª ] |
Line 263... | Line 264... | ||
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] |
- | 267 | jg .okx ; ¥á«¨ ®ª® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î, |
|
- | 268 | add [curx],-wnd_x_size ; ᤢ¨¥¬ ¥£® ¢«¥¢® 100 |
|
266 | jg .okx ; ¥á«¨ ®ª® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î, |
269 | ;-------------------------------------- |
267 | add [curx],-wnd_x_size ; ᤢ¨¥¬ ¥£® ¢«¥¢® 100 |
- | |
268 | .okx: |
270 | align 4 |
269 | 271 | .okx: |
|
270 | cmp ebx, [cury] |
272 | cmp ebx, [cury] |
- | 273 | jg .oky ; ¯® ¢¥à⨪ «¨ â®ç® â ª¦¥ |
|
- | 274 | add [cury], -_BTNS_*15-21 |
|
271 | jg .oky ; ¯® ¢¥à⨪ «¨ â®ç® â ª¦¥ |
275 | ;-------------------------------------- |
272 | add [cury], -_BTNS_*15-21 |
- | |
273 | .oky: |
276 | align 4 |
274 | 277 | .oky: |
|
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 |
Line 287... | Line 290... | ||
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 |
- | 298 | xor edx,edx |
|
- | 299 | ;-------------------------------------- |
|
295 | xor edx,edx |
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 |
- | 304 | mov byte [esp+edx], 0 |
|
- | 305 | ;-------------------------------------- |
|
299 | mov byte [esp+edx], 0 |
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 |
Line 311... | Line 318... | ||
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 ãáâ ®¢«¥ => ª®¯ª ¥ à¨áã¥âáï |
Line 314... | Line 321... | ||
314 | 321 | ||
- | 322 | mov edi,_BTNS_ ; ª®«¨ç¥á⢮ ª®¯®ª (áçñâ稪) |
|
315 | mov edi,_BTNS_ ; ª®«¨ç¥á⢮ ª®¯®ª (áçñâ稪) |
323 | ;-------------------------------------- |
316 | 324 | align 4 |
|
317 | newbtn: ; ç «® 横« |
325 | newbtn: ; ç «® 横« |
318 | mov eax,8 ; ᮧ¤ ñ¬ ª®¯ªã |
- | |
Line 319... | Line 326... | ||
319 | mcall |
326 | mcall 8 ; ᮧ¤ ñ¬ ª®¯ªã |
320 | 327 | ||
321 | ; ¯¨è¥¬ ⥪áâ ª®¯ª¥ |
328 | ; ¯¨è¥¬ ⥪áâ ª®¯ª¥ |
322 | pushad ; á¯ á ¥¬ ॣ¨áâàë |
329 | pushad ; á¯ á ¥¬ ॣ¨áâàë |
Line 328... | Line 335... | ||
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 |
Line 336... | Line 342... | ||
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 ; 㬥ì訬 áçñâ稪 |
Line 340... | Line 346... | ||
340 | jnz newbtn ; ¥á«¨ ¥ ®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à § |
346 | jnz newbtn ; ¥á«¨ ¥ ®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à § |
341 | - | ||
342 | mov eax,12 ; § ª®ç¨«¨ "à¨á®¢ âì" |
- | |
343 | mov ebx,2 |
- | |
344 | mcall |
347 | |
345 | - | ||
346 | ret ; ¢®§¢à â |
- | |
- | 348 | mcall 12,2 ; § ª®ç¨«¨ "à¨á®¢ âì" |
|
347 | 349 | ret ; ¢®§¢à â |
|
348 | 350 | ;------------------------------------------------------------------------------ |
|
349 | - | ||
Line 350... | Line 351... | ||
350 | ; |
351 | align 4 |
351 | DATA |
352 | ; |
352 | 353 | ||
353 | macro strtbl name, [string] |
354 | macro strtbl name, [string] |
Line 383... | Line 384... | ||
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 ? |
Line 405... | Line 408... | ||
405 | 408 | ||
406 | menu_opened db ? ; ®âªàëâ® ¬¥î ¨«¨ ¥â? (1-¤ , 0-¥â) |
- | |
- | 409 | menu_opened db ? ; ®âªàëâ® ¬¥î ¨«¨ ¥â? (1-¤ , 0-¥â) |
|
407 | 410 | ;------------------------------------------------------------------------------ |
|
408 | align 4 |
411 | align 4 |
- | 412 | start_info.path rb 256 |
|
409 | start_info.path rb 256 |
413 | ;------------------------------------------------------------------------------ |
410 | 414 | align 4 |
|
- | 415 | sc system_colors ; á¨áâ¥¬ë¥ æ¢¥â |
|
- | 416 | ;------------------------------------------------------------------------------ |
|
411 | sc system_colors ; á¨áâ¥¬ë¥ æ¢¥â |
417 | align 4 |
412 | procinfo process_information ; ¨ä®à¬ æ¨ï ® ¯à®æ¥áᥠ|
418 | procinfo process_information ; ¨ä®à¬ æ¨ï ® ¯à®æ¥áᥠ|
413 | procinfo2 process_information |
419 | ;------------------------------------------------------------------------------ |
414 | 420 | align 4 |
|
415 | rb 1024 ; áâíª ¤«ï ®ª ¬¥î - å¢ â¨â ¨ 1 ¡ |
- | |
416 | align 32 |
421 | rb 512 ; áâíª ¤«ï ®ª ¬¥î - å¢ â¨â ¨ 1 ¡ |
- | 422 | stack_wnd: |
|
417 | stack_wnd: |
423 | ;------------------------------------------------------------------------------ |
418 | 424 | align 4 |
|
- | 425 | rb 512 |
|
- | 426 | stack_area: |
|
419 | 427 | ;------------------------------------------------------------------------------ |
|
- | 428 | I_END: |
|
420 | MEOS_APP_END |
429 | ;------------------------------------------------------------------------------ |
- | 430 | ; |