Rev 305 | Rev 309 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 305 | Rev 308 | ||
---|---|---|---|
- | 1 | ; 01.02.07 - ®¡®¢«ñ editbox |
|
- | 2 | ; 31.01.07 - ¨á¯à ¢«¥ ¥ª®à४â ï ®âà¨á®¢ª ¯à¨ ¡®«ì讬 § 票¨ ¢ëá®âë ᪨ |
|
- | 3 | ; ¢ëà ¢¨¢ ¨¥ ᨧ㠮â®á¨â¥«ì® à ¡®ç¥© ®¡« á⨠íªà |
|
1 | window_y=88 |
4 | window_y=67 |
2 | ;window_x=320 |
5 | ;window_x=320 |
3 | window_x=450 |
6 | window_x=640 |
4 | include 'macros.inc' |
7 | include 'macros.inc' |
5 | meos_header par |
8 | meos_header par |
6 | use_edit_box |
9 | use_edit_box |
7 | use_txt_button |
10 | use_txt_button |
8 | app_start |
11 | app_start |
9 | cmp [par],byte 0 |
12 | cmp [par],byte 0 |
10 | jne read_par |
13 | jne read_par |
11 | set_events_mask evm_mouse+evm_button+evm_key+evm_redraw |
14 | set_events_mask evm_mouse+evm_button+evm_key+evm_redraw |
12 | red: |
15 | red: |
13 | get_sys_colors sc |
16 | get_sys_colors sc |
14 | set_sys_colors_txt_button run_but,sc |
17 | set_sys_colors_txt_button run_but,sc |
15 | push dword [sc.work_graph] |
18 | push dword [sc.work_graph] |
16 | pop [input_fn.focus_border_color] |
19 | pop [input_fn.focus_border_color] |
17 | call draw_window |
20 | call draw_window |
18 | still: |
21 | still: |
19 | wait_event red,key,button,mouse,,still |
22 | wait_event red,key,button,mouse,,still |
20 | key: |
23 | key: |
21 | get_key |
24 | get_key |
22 | cmp ah,13 |
25 | cmp ah,13 |
23 | je run |
26 | je run |
24 | key_edit_box input_fn |
27 | key_edit_box input_fn |
25 | jmp still |
28 | jmp still |
26 | button: |
29 | button: |
27 | get_pressed_button |
30 | get_pressed_button |
28 | dec ah |
31 | dec ah |
29 | jz close |
32 | jz close |
30 | dec ah |
33 | dec ah |
31 | jz run |
34 | jz run |
32 | jmp still |
35 | jmp still |
33 | mouse: |
36 | mouse: |
34 | mouse_edit_box input_fn |
37 | mouse_edit_box input_fn |
35 | jmp still |
38 | jmp still |
36 | 39 | ||
37 | read_par: |
40 | read_par: |
38 | mov esi,par |
41 | mov esi,par |
39 | mov edi,fn |
42 | mov edi,fn |
40 | mov ecx,256 |
43 | mov ecx,256 |
41 | rep movsb |
44 | rep movsb |
42 | run: |
45 | run: |
43 | xor eax,eax |
46 | xor eax,eax |
44 | mov edi,file_info.name |
47 | mov edi,file_info.name |
45 | mov ecx,512 |
48 | mov ecx,512 |
46 | rep stosb |
49 | rep stosb |
47 | mov edi,run_par |
50 | mov edi,run_par |
48 | mov ecx,256 |
51 | mov ecx,256 |
49 | rep stosb |
52 | rep stosb |
50 | 53 | ||
51 | mov esi,fn |
54 | mov esi,fn |
52 | mov edi,file_info.name |
55 | mov edi,file_info.name |
53 | cmp [esi],byte '"' |
56 | cmp [esi],byte '"' |
54 | je copy_fn_with_spaces |
57 | je copy_fn_with_spaces |
55 | copy_fn: |
58 | copy_fn: |
56 | cmp [esi],byte ' ' |
59 | cmp [esi],byte ' ' |
57 | je .stop |
60 | je .stop |
58 | cmp [esi],byte 0 |
61 | cmp [esi],byte 0 |
59 | je .stop |
62 | je .stop |
60 | mov al,[esi] |
63 | mov al,[esi] |
61 | mov [edi],al |
64 | mov [edi],al |
62 | inc esi |
65 | inc esi |
63 | inc edi |
66 | inc edi |
64 | jmp copy_fn |
67 | jmp copy_fn |
65 | .stop: |
68 | .stop: |
66 | 69 | ||
67 | jmp copy_par |
70 | jmp copy_par |
68 | 71 | ||
69 | copy_fn_with_spaces: |
72 | copy_fn_with_spaces: |
70 | inc esi |
73 | inc esi |
71 | @@: |
74 | @@: |
72 | cmp [esi],byte '"' |
75 | cmp [esi],byte '"' |
73 | je .stop |
76 | je .stop |
74 | cmp [esi],byte 0 |
77 | cmp [esi],byte 0 |
75 | je .stop |
78 | je .stop |
76 | mov al,[esi] |
79 | mov al,[esi] |
77 | mov [edi],al |
80 | mov [edi],al |
78 | inc esi |
81 | inc esi |
79 | inc edi |
82 | inc edi |
80 | jmp @b |
83 | jmp @b |
81 | .stop: |
84 | .stop: |
82 | 85 | ||
83 | copy_par: |
86 | copy_par: |
84 | @@: |
87 | @@: |
85 | inc esi |
88 | inc esi |
86 | cmp [esi],byte ' ' |
89 | cmp [esi],byte ' ' |
87 | je @b |
90 | je @b |
88 | mov edi,run_par |
91 | mov edi,run_par |
89 | @@: |
92 | @@: |
90 | cmp [esi],byte 0 |
93 | cmp [esi],byte 0 |
91 | je .stop |
94 | je .stop |
92 | mov al,[esi] |
95 | mov al,[esi] |
93 | mov [edi],al |
96 | mov [edi],al |
94 | inc esi |
97 | inc esi |
95 | inc edi |
98 | inc edi |
96 | jmp @b |
99 | jmp @b |
97 | .stop: |
100 | .stop: |
98 | 101 | ||
99 | mov eax,70 |
102 | mov eax,70 |
100 | mov ebx,file_info |
103 | mov ebx,file_info |
101 | int 0x40 |
104 | int 0x40 |
102 | 105 | ||
103 | ;cmp eax,0 |
106 | cmp eax,0 |
104 | ;jg error |
107 | jl error |
105 | bt eax,31 |
108 | mov [status],run_ok |
106 | je error |
109 | call draw_status |
107 | jmp still |
110 | jmp still |
108 | close: |
111 | close: |
109 | app_close |
112 | app_close |
110 | 113 | ||
111 | error: |
114 | error: |
112 | 115 | ||
113 | macro cmp_err code,text_ptr |
116 | macro cmp_err code,text_ptr |
114 | { |
117 | { |
115 | cmp al,code |
118 | cmp al,code |
116 | jne @f |
119 | jne @f |
117 | mov [status],text_ptr |
120 | mov [status],text_ptr |
118 | ;jmp .draw_status |
- | |
119 | @@: |
121 | @@: |
120 | } |
122 | } |
121 | neg eax |
123 | neg eax |
122 | - | ||
123 | ;test al,al |
- | |
124 | ;jz close |
- | |
125 | 124 | ||
126 | cmp_err 3,bad_file_sys |
125 | cmp_err 3,bad_file_sys |
127 | 126 | ||
128 | cmp_err 5,file_not_find |
127 | cmp_err 5,file_not_find |
129 | 128 | ||
130 | cmp_err 9,bad_fat_table |
129 | cmp_err 9,bad_fat_table |
131 | 130 | ||
132 | cmp_err 10,acces_denyied |
131 | cmp_err 10,acces_denyied |
133 | 132 | ||
134 | cmp_err 11,device_error |
133 | cmp_err 11,device_error |
135 | 134 | ||
136 | cmp_err 30,out_of_memory |
135 | cmp_err 30,out_of_memory |
137 | 136 | ||
138 | cmp_err 31,file_not_executable |
137 | cmp_err 31,file_not_executable |
139 | 138 | ||
140 | cmp_err 32,many_processes |
139 | cmp_err 32,many_processes |
141 | 140 | ||
142 | .draw_status: |
141 | |
143 | call draw_status |
142 | call draw_status |
144 | jmp still |
143 | jmp still |
145 | 144 | ||
146 | draw_window: |
145 | draw_window: |
- | 146 | push 48 |
|
- | 147 | pop eax |
|
- | 148 | mov ebx,5 |
|
- | 149 | int 0x40 |
|
- | 150 | mov si,bx |
|
147 | start_draw_window |
151 | start_draw_window |
- | 152 | get_skin_height |
|
- | 153 | mov dx,ax |
|
148 | get_screen_size |
154 | get_screen_size |
149 | mov cx,ax |
155 | xor ecx,ecx |
150 | sub cx,window_y+20 |
156 | sub cx,window_y+2 |
- | 157 | sub cx,dx |
|
- | 158 | add cx,si |
|
151 | shl ecx,16 |
159 | shl ecx,16 |
- | 160 | mov cx,dx |
|
152 | mov cx,window_y |
161 | add cx,window_y |
153 | shr eax,16 |
162 | shr eax,16 |
154 | mov bx,ax |
163 | mov bx,ax |
155 | sub bx,window_x |
164 | sub bx,window_x |
156 | shl ebx,15 |
165 | shl ebx,15 |
157 | mov bx,window_x |
166 | mov bx,window_x |
158 | mov edx,[sc.work] |
167 | mov edx,[sc.work] |
159 | or edx,0xb3000000 |
168 | or edx,0x33000000 |
160 | xor eax,eax |
169 | xor eax,eax |
161 | mov esi,[sc.grab_text] |
170 | xor esi,esi |
162 | mov edi,hed |
171 | mov edi,grab_text |
163 | int 0x40 |
172 | int 0x40 |
164 | 173 | ||
165 | get_procinfo app |
174 | get_procinfo app |
166 | 175 | ||
167 | mov ax,[app.width] |
176 | mov eax,[app.width] |
168 | sub ax,20 |
177 | sub eax,20 |
169 | mov [input_fn.width],eax |
178 | mov [input_fn.width],eax |
170 | mov [run_but.width],ax |
179 | mov [run_but.width],ax |
- | 180 | ||
171 | 181 | xor bx,bx |
|
172 | mov ebx,10000 |
182 | shl ebx,16 |
173 | mov bx,ax |
183 | mov bx,ax |
174 | add bx,10 |
184 | add bx,10 |
175 | mov cx,47 |
185 | mov cx,45 |
176 | push cx |
186 | push cx |
177 | shl ecx,16 |
187 | shl ecx,16 |
178 | pop cx |
188 | pop cx |
179 | mov edx,[sc.work_graph] |
189 | mov edx,[sc.work_graph] |
180 | mov eax,38 |
190 | mov eax,38 |
181 | int 0x40 |
191 | int 0x40 |
182 | 192 | ||
183 | draw_edit_box input_fn |
193 | draw_edit_box input_fn |
184 | draw_txt_button run_but |
194 | draw_txt_button run_but |
185 | 195 | ||
186 | call draw_status_text |
196 | call draw_status_text |
187 | 197 | ||
188 | stop_draw_window |
198 | stop_draw_window |
189 | ret |
199 | ret |
190 | 200 | ||
191 | draw_status: |
201 | draw_status: |
192 | mov ebx,5*65536+(window_x-5-10) |
202 | mov ebx,[app.width] |
- | 203 | sub bx,10 |
|
193 | mov ecx,(window_y-39)*65536+12 |
204 | mov ecx,(50)*65536+12 |
194 | mov edx,[sc.work] |
205 | mov edx,[sc.work] |
195 | mov eax,13 |
206 | mov eax,13 |
196 | int 0x40 |
207 | int 0x40 |
197 | draw_status_text: |
208 | draw_status_text: |
198 | mov edx,[status] |
209 | mov edx,[status] |
199 | xor esi,esi |
210 | xor esi,esi |
200 | @@: |
211 | @@: |
201 | cmp [edx+esi],byte 0 |
212 | cmp [edx+esi],byte 0 |
202 | je @f |
213 | je @f |
203 | inc esi |
214 | inc esi |
204 | jmp @b |
215 | jmp @b |
205 | @@: |
216 | @@: |
206 | mov eax,4 |
- | |
207 | mov ebx,6*65536+(window_y-37) |
217 | mov ebx,5*65536+(50) |
208 | mov ecx,[sc.work_text] |
218 | mov ecx,[sc.work_text] |
- | 219 | mov eax,4 |
|
209 | int 0x40 |
220 | int 0x40 |
210 | ret |
221 | ret |
211 | 222 | ||
212 | run_but txt_button 0,5,15,30,2,0,0,run_but_text, |
- | |
213 | if lang eq ru |
223 | run_but txt_button 0,5,15,25,2,0,0,run_but_text, |
214 | run_but_text db '',0 |
- | |
215 | else |
- | |
216 | run_but_text db 'RUN',0 |
- | |
217 | end if |
224 | run_but_text db '',0 |
218 | input_fn edit_box 0,5,10,0xffffff,0,0xaaaaaa,0,511,fn,ed_focus+\ |
225 | input_fn edit_box 0,5,5,0xffffff,0,0xaaaaaa,0,511,fn,ed_focus+\ |
219 | ed_always_focus |
- | |
220 | 226 | ed_always_focus |
|
221 | if lang eq ru |
227 | |
222 | hello db '¢¥¤¨â¥ ¯®«ë© ¯ãâì ª ä ©«ã ¨ ¦¬¨â¥ Enter',0 |
228 | hello db '¢¥¤¨â¥ ¯®«ë© ¯ãâì ª ä ©«ã ¨ ¦¬¨â¥ Enter',0 |
223 | bad_file_sys db '¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3 |
229 | bad_file_sys db '¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3 |
224 | file_not_find db ' ©« ¥ ©¤¥',0 ; 5 |
230 | file_not_find db ' ©« ¥ ©¤¥',0 ; 5 |
225 | bad_fat_table db ' ¡«¨æ FAT à §àãè¥ ',0 ; 9 |
231 | bad_fat_table db ' ¡«¨æ FAT à §àãè¥ ',0 ; 9 |
226 | acces_denyied db '®áâ㯠§ ¯à¥é¥',0 ; 10 |
232 | acces_denyied db '®áâ㯠§ ¯à¥é¥',0 ; 10 |
227 | device_error db '訡ª ãáâனá⢠',0 ; 11 |
233 | device_error db '訡ª ãáâனá⢠',0 ; 11 |
228 | out_of_memory db '¥¤®áâ â®ç® ¯ ¬ïâ¨',0 ; 30 |
234 | out_of_memory db '¥¤®áâ â®ç® ¯ ¬ïâ¨',0 ; 30 |
229 | file_not_executable db ' ©« ¥ ï¥âáï ¨á¯®«ï¥¬ë¬',0 ; 31 |
235 | file_not_executable db ' ©« ¥ ï¥âáï ¨á¯®«ï¥¬ë¬',0 ; 31 |
230 | many_processes db '«¨èª®¬ ¬®£® ¯à®æ¥áᮢ',0 ; 32 |
236 | many_processes db '«¨èª®¬ ¬®£® ¯à®æ¥áᮢ',0 ; 32 |
231 | else |
- | |
232 | hello db 'Enter full path to file and press |
237 | run_ok db 'à®£à ¬¬ ãá¯¥è® § ¯ãé¥ ',0 |
233 | bad_file_sys db 'Unknown file system',0 ; 3 |
- | |
234 | file_not_find db 'File not found',0 ; 5 |
- | |
235 | bad_fat_table db 'FAT table corrupted',0 ; 9 |
- | |
236 | acces_denyied db 'Access denied',0 ; 10 |
- | |
237 | device_error db 'Device error',0 ; 11 |
- | |
238 | out_of_memory db 'Out of memory',0 ; 30 |
- | |
239 | file_not_executable db 'File is not executable',0 ; 31 |
238 | grab_text db ' ',0 |
240 | many_processes db 'Too many processes',0 ; 32 |
- | |
241 | end if |
- | |
242 | 239 | ||
243 | if lang eq ru |
- | |
244 | hed db 'RUN ®â ¯¥à¢®£® ¥¢à «ï 2007 £®¤ ',0 |
- | |
245 | else |
- | |
246 | hed db 'RUN of the first of FEBRUARY 2007 year',0 |
- | |
247 | end if |
- | |
248 | status dd hello |
240 | status dd hello |
249 | 241 | ||
250 | file_info: |
242 | file_info: |
251 | .mode dd 7 |
243 | .mode dd 7 |
252 | .flags dd 0 |
244 | .flags dd 0 |
253 | .par dd run_par |
245 | .par dd run_par |
254 | dd 0,0 |
246 | dd 0,0 |
255 | .name rb 512 |
247 | .name rb 512 |
256 | 248 | ||
257 | flags dw ? |
249 | flags dw ? |
258 | 250 | ||
259 | fn rb 512 |
251 | fn rb 512 |
260 | 252 | ||
261 | sc sys_color_table |
253 | sc sys_color_table |
262 | app procinfo |
254 | app procinfo |
263 | run_par rb 256 |
255 | run_par rb 256 |
264 | par rb 256 |
256 | par rb 256 |
265 | app_end |
257 | app_end |