Rev 7443 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7443 | Rev 7459 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
4 | ; Compile with FASM |
4 | ; Compile with FASM |
5 | ; Version 0.3.6: Oct 9, 2018 |
5 | ; Version 0.3.7: Oct 14, 2018 |
Line 6... | Line 6... | ||
6 | 6 | ||
7 | ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
7 | ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
8 | ; All rights reserved. |
8 | ; All rights reserved. |
9 | ; Redistribution and use in source and binary forms, with or without modification, |
9 | ; Redistribution and use in source and binary forms, with or without modification, |
Line 29... | Line 29... | ||
29 | use32 |
29 | use32 |
30 | org 0x0 ; áàçîâûé àäðåñ ðàçìåùåíèÿ êîäà, âñåãäà 0x0 |
30 | org 0x0 ; áàçîâûé àäðåñ ðàçìåùåíèÿ êîäà, âñåãäà 0x0 |
Line 31... | Line 31... | ||
31 | 31 | ||
32 | UNLOCKd = 0 |
32 | UNLOCKd = 0 |
- | 33 | LOCKd = 1 |
|
Line 33... | Line 34... | ||
33 | LOCKd = 1 |
34 | SUPERLOCKd = 2 |
34 | 35 | ||
35 | ; çàãîëîâîê |
36 | ; çàãîëîâîê |
36 | db 'MENUET01' ;ìàãè÷åñêèé èäåíòèôèêàòîð |
37 | db 'MENUET01' ;ìàãè÷åñêèé èäåíòèôèêàòîð |
Line 116... | Line 117... | ||
116 | jne hotkey.end |
117 | jne hotkey.end |
Line 117... | Line 118... | ||
117 | 118 | ||
118 | cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà |
119 | cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà |
Line -... | Line 120... | ||
- | 120 | jne @f |
|
- | 121 | ||
119 | jne @f |
122 | ;ïðîâåðêè äëÿ mode 3 |
120 | 123 | cmp byte[state], SUPERLOCKd |
|
121 | ;for mode 3 [ |
124 | je hotkey.end |
Line 122... | Line 125... | ||
122 | cmp byte[keyState], 1 |
125 | cmp byte[keyState], 1 |
123 | je hotkey.e |
126 | je hotkey.end |
124 | 127 | ||
125 | push eax ebx |
128 | push eax ebx |
Line 130... | Line 133... | ||
130 | mov word[o.x], ax |
133 | mov word[o.x], ax |
131 | pop ebx eax |
134 | pop ebx eax |
Line 132... | Line 135... | ||
132 | 135 | ||
133 | mov byte[keyState], 1 |
136 | mov byte[keyState], 1 |
134 | mov byte[state], UNLOCKd |
- | |
135 | .e: |
- | |
136 | ;] |
- | |
137 | ;mov byte[state], UNLOCKd |
137 | mov byte[state], UNLOCKd |
138 | jmp hotkey.end |
138 | jmp hotkey.end |
139 | @@: |
139 | @@: |
140 | push edx |
140 | push edx |
141 | xor edx, edx |
141 | xor edx, edx |
142 | mov dl, byte[keyActivate] |
142 | mov dl, byte[keyActivate] |
143 | add dl, 128 |
143 | add dl, 128 |
144 | cmp ah, dl ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà |
144 | cmp ah, dl ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà |
145 | jne @f ;hotkey.end |
- | |
146 | ;mov ecx, 0 ;ñòðîêè äëÿ îòëàäêè è òåñòà |
- | |
- | 145 | jne @f ;hotkey.end |
|
147 | ;call run_command |
146 | |
148 | mov byte[keyState], 0 |
147 | mov byte[keyState], 0 |
149 | mov byte[state], LOCKd |
148 | mov byte[state], LOCKd |
150 | @@: |
149 | @@: |
151 | pop edx |
150 | pop edx |
Line 245... | Line 244... | ||
245 | ;çàïóñê ïðèëîæåíèÿ: ecx - àêòèâíûé óãîë: lu=0, ld=1, ru=2, rd=3 |
244 | ;çàïóñê ïðèëîæåíèÿ: ecx - àêòèâíûé óãîë: lu=0, ld=1, ru=2, rd=3 |
246 | run_command: |
245 | run_command: |
247 | cmp byte[state], UNLOCKd |
246 | cmp byte[state], UNLOCKd |
248 | jne run_command.end |
247 | jne run_command.end |
Line 249... | Line -... | ||
249 | - | ||
250 | ; cmp byte[mode], 2 ;åñëè ðåæèì âòîðîé |
- | |
251 | ; jne @f |
- | |
252 | 248 | ||
Line 253... | Line 249... | ||
253 | push eax ebx ecx |
249 | push eax ebx ecx |
254 | 250 | ||
255 | cmp ecx, 0 |
251 | cmp ecx, 0 |
- | 252 | jne @f |
|
- | 253 | mov eax, apps.path1 ;dword[newData.lu] |
|
256 | jne @f |
254 | cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
- | 255 | je .set0 |
|
- | 256 | mov dword[struct70.path_adr], eax |
|
257 | mov eax, dword[newData.lu] |
257 | mov eax, apps.param1 |
258 | mov dword[struct70.path_adr], eax |
258 | mov dword[struct70.param_adr], eax |
259 | jmp .end_set_path |
259 | jmp .end_set_path |
260 | @@: |
260 | @@: |
261 | cmp ecx, 1 |
261 | cmp ecx, 1 |
- | 262 | jne @f |
|
- | 263 | mov eax, apps.path2 ;dword[newData.ld] |
|
262 | jne @f |
264 | cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
- | 265 | je .set0 |
|
- | 266 | mov dword[struct70.path_adr], eax |
|
263 | mov eax, dword[newData.ld] |
267 | mov eax, apps.param2 |
264 | mov dword[struct70.path_adr], eax |
268 | mov dword[struct70.param_adr], eax |
265 | jmp .end_set_path |
269 | jmp .end_set_path |
266 | @@: |
270 | @@: |
267 | cmp ecx, 2 |
271 | cmp ecx, 2 |
- | 272 | jne @f |
|
- | 273 | mov eax, apps.path3 ;dword[newData.ru] |
|
268 | jne @f |
274 | cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
- | 275 | je .set0 |
|
- | 276 | mov dword[struct70.path_adr], eax |
|
269 | mov eax, dword[newData.ru] |
277 | mov eax, apps.param3 |
270 | mov dword[struct70.path_adr], eax |
278 | mov dword[struct70.param_adr], eax |
271 | jmp .end_set_path |
279 | jmp .end_set_path |
272 | @@: |
280 | @@: |
273 | cmp ecx, 3 |
281 | cmp ecx, 3 |
- | 282 | jne .set0 ;.end_set_path |
|
- | 283 | mov eax, apps.path4 ;dword[newData.rd] |
|
274 | jne .end_set_path |
284 | cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
- | 285 | je .set0 |
|
- | 286 | mov dword[struct70.path_adr], eax |
|
275 | mov eax, dword[newData.rd] |
287 | mov eax, apps.param4 |
276 | mov dword[struct70.path_adr], eax |
288 | mov dword[struct70.param_adr], eax |
277 | jmp .end_set_path |
- | |
278 | .end_set_path: |
- | |
279 | - | ||
280 | ;ïàðàìåòðû |
- | |
281 | ;mov dword[struct.adr], |
- | |
282 | 289 | jmp .end_set_path |
|
283 | ;åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü |
- | |
284 | cmp dword[struct70.path_adr], 0 |
- | |
285 | jne .next |
290 | .set0: |
286 | ;mov eax, testData.ld |
291 | ;mov dword[struct70.path_adr], 0 |
287 | ;mov dword[struct70.path_adr], eax |
292 | ;mov dword[struct70.param_adr], 0 |
288 | jmp @f |
- | |
289 | .next: |
- | |
290 | ;êîíåö êîäà äëÿ çàìåíû |
293 | jmp @f |
291 | 294 | .end_set_path: |
|
292 | mcall 70, struct70 |
295 | mcall 70, struct70 |
293 | @@: |
296 | @@: |
294 | mov byte[state], LOCKd |
- | |
295 | ;mov byte[keyState], 0 |
297 | mov byte[state], LOCKd |
296 | 298 | ;mov byte[keyState], 0 |
|
297 | pop ecx ebx eax |
299 | pop ecx ebx eax |
Line 298... | Line 300... | ||
298 | .end: |
300 | .end: |
299 | ret |
301 | ret |
300 | 302 | ||
301 | struct70: ;Ôîðìàò èíôîðìàöèîííîé ñòðóêòóðû |
303 | struct70: ;Ôîðìàò èíôîðìàöèîííîé ñòðóêòóðû |
302 | .func dd 7 ; íîìåð ïîäôóíêöèè |
304 | .func dd 7 ; íîìåð ïîäôóíêöèè |
303 | .mask dd 0 |
305 | .mask dd 0 |
304 | .param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè |
306 | .param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè |
Line 305... | Line 307... | ||
305 | .other dd 0, 0 |
307 | .other dd 0, 0 |
306 | .path db 0 ; "/rd/1/TINYPAD",0 ; ïóòü |
308 | .path db 0 |
Line -... | Line 309... | ||
- | 309 | .path_adr dd 0 ; óêàçàòåëü íà ñòðîêó ñ ïóò¸ì |
|
- | 310 | ||
- | 311 | ;èìÿ êîíôèãóðàöèîííîãî ôàéëà |
|
- | 312 | fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
|
- | 313 | ||
- | 314 | ||
- | 315 | ;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè |
|
- | 316 | gotoEndString: |
|
- | 317 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
|
- | 318 | ja @f ;âûõîäèì |
|
- | 319 | cmp byte[eax], 10 |
|
- | 320 | je @f |
|
- | 321 | cmp byte[eax], 0 |
|
- | 322 | je @f |
|
- | 323 | cmp byte[eax], 13 |
|
- | 324 | je @f |
|
- | 325 | ;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
|
- | 326 | inc eax |
|
- | 327 | jmp gotoEndString |
|
- | 328 | @@: |
|
- | 329 | ret |
|
- | 330 | ||
- | 331 | ;ïðîïóñêàåì ïåðåíîñû â íà÷àëå ñòðîêè äî ïåðâîãî àäåêâàòíîãî ñèìâîëà |
|
- | 332 | gotoStartString: |
|
- | 333 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
|
- | 334 | ja @f ;âûõîäèì |
|
- | 335 | cmp byte[eax], 10 |
|
- | 336 | je .next |
|
- | 337 | cmp byte[eax], 0 |
|
- | 338 | je .next |
|
- | 339 | cmp byte[eax], 13 |
|
- | 340 | je .next |
|
- | 341 | jmp @f ;åñëè ýòî äðóãîé ñèìâîë, òî âûõîäèì |
|
- | 342 | .next: ;ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
|
- | 343 | inc eax |
|
- | 344 | jmp gotoStartString |
|
- | 345 | @@: |
|
- | 346 | ret |
|
- | 347 | ||
- | 348 | ||
- | 349 | sep: db '|' ;ñèìâîë ðàçäåëèòåëü ñòðîêè ïóòè + ïàðàìåòðû çàïóñêà |
|
- | 350 | readPath: |
|
- | 351 | push ebx esi edi |
|
- | 352 | mov bh, 0 ; 0 - çíàê òîãî, ÷òî ïàðàìåòðû åù¸ íå âñòðå÷àëèñü |
|
- | 353 | mov byte[esi], 0 ;ïðîèíèöèàëèçèðóåì áóôåðû-ñòðîêè ïóñòîòîé (íà âñÿêèé ñëó÷àé) |
|
- | 354 | mov byte[edi], 0 |
|
- | 355 | @@: |
|
- | 356 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
|
- | 357 | ja @f ;âûõîäèì |
|
- | 358 | mov bl, byte[eax] |
|
- | 359 | ;åñëè î÷åðåäíîé ñèìâîë íå êîíåö ñòðîêè |
|
- | 360 | cmp bl, 10 |
|
- | 361 | je @f ;èíà÷å âûõîä |
|
- | 362 | cmp bl, 0 |
|
- | 363 | je @f |
|
- | 364 | cmp bl, 13 |
|
- | 365 | je @f |
|
- | 366 | ;è íå íà÷àëî ïàðàìåòðîâ |
|
- | 367 | cmp bl, byte[sep] |
|
- | 368 | jne .read |
|
- | 369 | ;åñëè sep óæå âñòðå÷àëè ðàíåå, òî |
|
- | 370 | cmp bh, 0 |
|
- | 371 | jne .read ;ïðîñòî ïðîäîëæàåì ñ÷èòûâàòü ïàðàìåòðû äàëüøå (â íèõ ìîæåò áûòü ÷òî óãîäíî) |
|
- | 372 | ;èíà÷å êëàä¸ì çàâåðøàþùèé 0 è ïåðåõîäèì ê áóôåðó ñ ïàðàìåòðàìè |
|
- | 373 | mov byte[esi], 0 |
|
- | 374 | call trim ;åù¸ íå çàáóäåì óáðàòü ëèøíèå òàáóëÿöèè è ïðîáåëû íà êîíöå íàøåé ñòðîêè |
|
- | 375 | mov esi, edi |
|
- | 376 | mov bh, 1 |
|
- | 377 | inc eax |
|
- | 378 | jmp @b |
|
- | 379 | .read: ;òî çàïèñûâàåì ñèìâîë â íàø áóôåð è ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
|
- | 380 | mov byte[esi], bl |
|
- | 381 | inc esi |
|
- | 382 | inc eax |
|
- | 383 | jmp @b |
|
- | 384 | @@: |
|
- | 385 | mov byte[esi], 0 ;êëàä¸ì çàâåðøàþùèé íîëü |
|
- | 386 | pop edi esi ebx |
|
- | 387 | ret |
|
- | 388 | ||
- | 389 | trim: ;esi - ïîñëåäíèé íóëåâîé ñèìâîë ñòðîêè |
|
- | 390 | ;push esi |
|
- | 391 | mov byte[esi], 0 |
|
- | 392 | dec esi |
|
- | 393 | cmp byte[esi], 8 |
|
- | 394 | je trim |
|
- | 395 | cmp byte[esi], 32 |
|
- | 396 | je trim |
|
- | 397 | inc esi |
|
- | 398 | ;pop esi |
|
307 | .path_adr dd 0 ;testData.lu |
399 | ret |
308 | 400 | ||
309 | ;èìÿ êîíôèãóðàöèîííîãî ôàéëà |
401 | |
- | 402 | cfgFileAdr: dd 0 ;àäðåñ êîíôèãóðàöèîííîãî ôàéëà â ïàìÿòè |
|
310 | fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
403 | |
311 | 404 | loadConfig: |
|
312 | loadConfig: |
405 | push eax ebx ecx edx |
313 | push eax ebx ecx edx |
406 | mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
314 | mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
407 | mov dword[cfgFileAdr], eax |
Line 315... | Line 408... | ||
315 | cmp eax, 0 |
408 | cmp eax, 0 |
Line 316... | Line 409... | ||
316 | je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ |
409 | je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ |
317 | ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
410 | ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
318 | cmp edx, 0 ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî çàâåðøàåì ðàáîòó |
411 | cmp edx, 0 ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî çàâåðøàåì ðàáîòó |
319 | je loadConfig.exit |
412 | je loadConfig.exit |
320 | 413 | ||
Line 321... | Line 414... | ||
321 | add edx, eax ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà |
414 | add edx, eax ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà |
- | 415 | ||
- | 416 | mov byte[mode], 0 |
|
- | 417 | cmp byte[eax], '0' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî |
|
- | 418 | je loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ |
|
- | 419 | cmp byte[eax], 110 ;'n' |
|
- | 420 | je loadConfig.exit |
|
- | 421 | ||
- | 422 | ;èíà÷å âûñòàâëÿåì ðåæèì |
|
- | 423 | cmp byte[eax], 121 ;'y' ;êëàññè÷åñêèé ðåæèì |
|
- | 424 | jne @f |
|
322 | 425 | mov byte[mode], 1 |
|
323 | mov byte[mode], 0 |
426 | jmp loadConfig.modeEnd |
324 | cmp byte[eax], '0' ;121 ;'y' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî |
427 | @@: |
325 | je loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ |
428 | cmp byte[eax], '1' ;êëàññè÷åñêèé ðåæèì |
326 | cmp byte[eax], 110 ;'n' |
429 | jne @f |
327 | je loadConfig.exit |
430 | mov byte[mode], 1 |
328 | 431 | jmp loadConfig.modeEnd |
|
329 | ;èíà÷å âûñòàâëÿåì ðåæèì |
432 | @@: |
330 | cmp byte[eax], '2' ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå |
433 | cmp byte[eax], '2' ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå |
331 | jne @f |
434 | jne @f |
332 | mov byte[mode], 2 |
435 | mov byte[mode], 2 |
- | 436 | jmp loadConfig.modeEnd |
|
333 | jmp loadConfig.modeEnd |
437 | @@: |
Line -... | Line 438... | ||
- | 438 | cmp byte[eax], '3' ;ðåæèì æåñòà ïðè çàæàòîé êëàâèøå |
|
- | 439 | jne @f |
|
- | 440 | mov byte[mode], 3 |
|
- | 441 | jmp loadConfig.modeEnd |
|
- | 442 | @@: |
|
334 | @@: |
443 | mov byte[mode], 0 ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - îòêëþ÷åíî |
- | 444 | jmp loadConfig.exit |
|
- | 445 | .modeEnd: |
|
- | 446 | ||
- | 447 | ;èä¸ì äî êîíöà ýòîé ñòðîêè |
|
- | 448 | call gotoEndString |
|
- | 449 | ;íàõîäèì íà÷àëî ñëåäóþùåé ñòðîêè |
|
- | 450 | call gotoStartString |
|
- | 451 | ||
- | 452 | push esi edi |
|
- | 453 | ||
335 | cmp byte[eax], '3' ;ðåæèì æåñòà ïðè çàæàòîé êëàâèøå |
454 | ;ñ÷èòûâàåì ïóòü äëÿ ëåâîãî âåðõíåãî óãëà |
- | 455 | mov esi, apps.path1 |
|
- | 456 | mov edi, apps.param1 |
|
336 | jne @f |
457 | call readPath |
- | 458 | call gotoStartString ;íàõîäèì íà÷àëî ñëåäóþùåé ñòðîêè |
|
337 | mov byte[mode], 3 |
459 | |
- | 460 | ;ñ÷èòûâàåì ïóòü äëÿ ëåâîãî íèæíåãî óãëà |
|
- | 461 | mov esi, apps.path2 |
|
- | 462 | mov edi, apps.param2 |
|
338 | jmp loadConfig.modeEnd |
463 | call readPath |
339 | @@: |
464 | call gotoStartString |
- | 465 | ||
- | 466 | ;ñ÷èòûâàåì ïóòü äëÿ ïðàâîãî âåðõíåãî óãëà |
|
- | 467 | mov esi, apps.path3 |
|
- | 468 | mov edi, apps.param3 |
|
- | 469 | call readPath |
|
340 | mov byte[mode], 1 ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - êëàññè÷åñêèé ðåæèì |
470 | call gotoStartString |
- | 471 | ||
341 | .modeEnd: |
472 | ;ñ÷èòûâàåì ïóòü äëÿ ïðàâîãî íèæíåãî óãëà |
- | 473 | mov esi, apps.path4 |
|
342 | 474 | mov edi, apps.param4 |
|
- | 475 | call readPath |
|
- | 476 | call gotoStartString |
|
- | 477 | ||
343 | push edi |
478 | ;call checkAdr ;ïðîâåðèì ñòðîêè íà '-' è ïóñòîòó è âûñòàâèì áèòîâóþ ìàñêó |
- | 479 | call checkPathAdr |
|
- | 480 | ||
- | 481 | pop edi esi |
|
- | 482 | ||
- | 483 | ;ïðîïóñêàåì ñòðîêó ñ èìåíåì êëàâèøè |
|
- | 484 | call gotoEndString |
|
- | 485 | call gotoStartString |
|
- | 486 | ||
- | 487 | ;ñ÷èòûâàåì ñêàíêîä àêòèâàöèîííîé êëàâèøè |
|
344 | push esi |
488 | ;call readKey |
- | 489 | ;call gotoEndString |
|
345 | ; ñîõðàíÿåì â edi óêàçàòåëü íà íà÷àëî òàáëèöû àäðåñîâ íàøèõ êîìàíä |
490 | push esi edi ecx |
346 | mov edi, newData |
491 | mov esi, keystr |
- | 492 | mov edi, keystr |
|
- | 493 | call readPath |
|
- | 494 | ;ïðåîáðàçóåì ñòðîêó â ÷èñëî |
|
- | 495 | mov esi, keystr |
|
- | 496 | call strToInteger |
|
- | 497 | mov byte[keyActivate], cl |
|
- | 498 | pop ecx edi esi |
|
- | 499 | call gotoStartString |
|
- | 500 | ||
347 | ; ñîõðàíÿåì àäðåñà ñòðîê è äîáàâëÿåì 0 â êîíöå |
501 | ;ñ÷èòûâàåì ðàäèóñ |
- | 502 | push esi edi ecx |
|
- | 503 | mov esi, radstr |
|
- | 504 | mov edi, radstr |
|
- | 505 | call readPath |
|
348 | mov esi, eax |
506 | ;ïðåîáðàçóåì ñòðîêó â ÷èñëî |
349 | .block: |
507 | mov esi, radstr |
Line 350... | Line -... | ||
350 | inc esi |
- | |
351 | cmp byte[esi], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû |
- | |
352 | je loadConfig.propusk ;äî ïåðâîãî îòëè÷íîãî îò íèõ |
- | |
353 | cmp byte[esi], 13 |
- | |
354 | je loadConfig.propusk |
- | |
355 | - | ||
356 | ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - åñëè ýòî íà çíàê ìèíóñ, òî çàïîìèíàåì åãî |
- | |
357 | mov dword[edi], esi |
508 | call strToInteger |
358 | add edi, 4 |
- | |
359 | - | ||
360 | ;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end |
- | |
361 | .while: |
- | |
362 | inc esi |
- | |
Line -... | Line 509... | ||
- | 509 | ;òåïåðü ecx - çíà÷åíèå ðàäèóñà |
|
- | 510 | ;!!! äîáàâèòü ïðîâåðêó, ÷òîáû ÷èñëî íå áûëî áîëüøå îáëàñòè ýêðàíà |
|
- | 511 | ;íàñ èíòåðåñóåò êâàäðàò ÷èñëà |
|
- | 512 | push eax edx |
|
- | 513 | mov eax, ecx ;dword[radius2] |
|
- | 514 | mul ecx |
|
- | 515 | mov dword[radius2], eax |
|
- | 516 | pop edx eax |
|
- | 517 | ||
- | 518 | pop ecx edi esi |
|
- | 519 | ||
- | 520 | ;ñ÷èòûâàòü ðàçìåð ýëåìåíòîâ èíòåðôåéñà íàì íå íóæíî (ïîêà ÷òî ýòîò ïàðàìåòð òîëüêî äëÿ êîíôèãà) |
|
- | 521 | jmp .end |
|
- | 522 | .exit: |
|
- | 523 | pop edx ecx ebx eax |
|
- | 524 | mcall -1 ;çàêðûòü ýòó ïðîãðàììó |
|
- | 525 | .end: |
|
- | 526 | mov ecx, dword[cfgFileAdr] ;åñëè ôàéë áûë çàãðóæåí, òî |
|
- | 527 | cmp ecx, 0 |
|
- | 528 | je @f |
|
- | 529 | mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè |
|
- | 530 | @@: |
|
- | 531 | pop edx ecx ebx eax |
|
- | 532 | ret |
|
- | 533 | ||
- | 534 | ||
- | 535 | ;readKey: |
|
- | 536 | ;÷èòàåì êëàâèøó è âûõîäèì |
|
- | 537 | ; cmp dword[eax], 'Ctrl' |
|
- | 538 | ; jne .notCtrl |
|
- | 539 | ; mov byte[keyActivate], 3 |
|
- | 540 | ; jmp .end |
|
- | 541 | ;.notCtrl: |
|
- | 542 | ; cmp dword[eax], 'Shif' |
|
- | 543 | ; jne .notShift |
|
- | 544 | ; mov byte[keyActivate], 2 |
|
- | 545 | ; jmp .end |
|
- | 546 | ;.notShift: |
|
- | 547 | ; cmp dword[eax], 'Spac' |
|
- | 548 | ; jne .notSpace |
|
- | 549 | ; mov byte[keyActivate], 32 |
|
- | 550 | ; jmp .end |
|
- | 551 | ;.notSpace: |
|
- | 552 | ; cmp word[eax], 'Al' |
|
- | 553 | ; jne .notAlt |
|
- | 554 | ; mov byte[keyActivate], 1 |
|
- | 555 | ; jmp .end |
|
- | 556 | ;.notAlt: |
|
- | 557 | ;óáåäèìñÿ, ÷òî òàì 1 ñèìâîë, à íå ñòðîêà |
|
- | 558 | ; cmp byte[eax+1], 10 |
|
- | 559 | ; je .oneSymb |
|
- | 560 | ; cmp byte[eax+1], 0 |
|
- | 561 | ; je .oneSymb |
|
- | 562 | ; cmp byte[eax+1], 13 |
|
- | 563 | ; je .oneSymb |
|
- | 564 | ; jmp .default ;â ëþáîì äðóãîì ñëó÷àå îøèáêà êîíôèãà - âûõîä |
|
- | 565 | ;.oneSymb: |
|
- | 566 | ;ïðîâåðÿåì, ÷òî ñèìâîë ðàçðåø¸ííûé !!! äîäåëàòü |
|
- | 567 | ||
- | 568 | ;äîáàâëÿåì ñèìâîë êàê åñòü |
|
- | 569 | ; push ebx |
|
- | 570 | ; ;xor ebx, ebx |
|
- | 571 | ; mov bl, byte[eax] |
|
- | 572 | ; mov byte[keyActivate], bl |
|
- | 573 | ; pop ebx |
|
- | 574 | ||
- | 575 | ; jmp .end |
|
- | 576 | ;.default: |
|
- | 577 | ; mcall -1 |
|
- | 578 | ; ;mov byte[keyActivate], 2 |
|
- | 579 | ;.end: |
|
- | 580 | ; ret |
|
- | 581 | ||
- | 582 | ||
- | 583 | checkPathAdr: |
|
363 | cmp esi, edx ;òóò áóäåò ïðîáëåìà - òê ôàéë çàêîí÷èëñÿ, à íóëÿ íå áûëî !!! èñïðàâèòü |
584 | push eax ebx |
- | 585 | xor eax, eax |
|
- | 586 | ||
364 | jae loadConfig.fileend |
587 | mov ebx, apps.path1 |
365 | cmp byte[esi], 10 |
588 | cmp byte[ebx], '-' |
- | 589 | jne @f |
|
366 | je loadConfig.ura |
590 | ;cmp byte[ebx+1], 0 |
367 | cmp byte[esi], 0 |
591 | ;jne @f |
368 | je loadConfig.ura |
592 | mov byte[ebx], 0 |
369 | cmp byte[esi], 13 |
593 | @@: |
- | 594 | mov ebx, apps.path2 |
|
- | 595 | cmp byte[ebx], '-' |
|
- | 596 | jne @f |
|
- | 597 | ;cmp byte[ebx+1], 0 |
|
- | 598 | ;jne @f |
|
370 | jne loadConfig.while |
599 | mov byte[ebx], 0 |
- | 600 | @@: |
|
- | 601 | mov ebx, apps.path3 |
|
371 | .ura: |
602 | cmp byte[ebx], '-' |
372 | mov byte[esi], 0 |
603 | jne @f |
373 | 604 | ;cmp byte[ebx+1], 0 |
|
- | 605 | ;jne @f |
|
Line 374... | Line -... | ||
374 | ;cmp byte[esi-1], '-' |
- | |
375 | ;jne @f |
- | |
376 | push esi ;åñëè ýòî áûë çíàê ìèíóñ, òî ìåíÿåì àäðåñ íà íîëü |
- | |
Line -... | Line 606... | ||
- | 606 | mov byte[ebx], 0 |
|
377 | mov esi, dword[edi-4] |
607 | @@: |
378 | cmp byte[esi], '-' |
608 | mov ebx, apps.path4 |
Line -... | Line 609... | ||
- | 609 | cmp byte[ebx], '-' |
|
379 | jne @f |
610 | jne @f |
- | 611 | ;cmp byte[ebx+1], 0 |
|
- | 612 | ;jne @f |
|
- | 613 | mov byte[ebx], 0 |
|
- | 614 | @@: |
|
- | 615 | pop ebx eax |
|
- | 616 | ret |
|
- | 617 | ||
- | 618 | ||
- | 619 | checkAdr: |
|
- | 620 | push eax ebx |
|
- | 621 | xor eax, eax |
|
- | 622 | ||
- | 623 | mov ebx, apps.path1 |
|
- | 624 | cmp byte[ebx], '-' |
|
- | 625 | jne @f |
|
- | 626 | inc eax |
|
- | 627 | @@: |
|
- | 628 | mov ebx, apps.path2 |
|
Line -... | Line 629... | ||
- | 629 | cmp byte[ebx], '-' |
|
- | 630 | jne @f |
|
380 | cmp byte[esi+1], 0 |
631 | add eax, 2 |
- | 632 | @@: |
|
- | 633 | mov ebx, apps.path3 |
|
- | 634 | cmp byte[ebx], '-' |
|
381 | jne @f |
635 | jne @f |
- | 636 | add eax, 4 |
|
- | 637 | @@: |
|
- | 638 | mov ebx, apps.path4 |
|
- | 639 | cmp byte[ebx], '-' |
|
382 | mov dword[edi-4], 0 |
640 | jne @f |
- | 641 | add eax, 8 |
|
- | 642 | @@: |
|
383 | @@: |
643 | |
384 | pop esi |
644 | mov ebx, apps.param1 |
385 | 645 | cmp byte[ebx], '-' |
|
- | 646 | jne @f |
|
- | 647 | add eax, 16 |
|
386 | cmp edi, newDataEnd ;newData.end ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà |
648 | @@: |
- | 649 | mov ebx, apps.param2 |
|
- | 650 | cmp byte[ebx], '-' |
|
387 | jb loadConfig.block |
651 | jne @f |
388 | .fileend: |
652 | add eax, 32 |
Line -... | Line 653... | ||
- | 653 | @@: |
|
- | 654 | mov ebx, apps.param3 |
|
- | 655 | cmp byte[ebx], '-' |
|
- | 656 | jne @f |
|
- | 657 | add eax, 64 |
|
- | 658 | @@: |
|
- | 659 | mov ebx, apps.param4 |
|
- | 660 | cmp byte[ebx], '-' |
|
- | 661 | jne @f |
|
- | 662 | add eax, 128 |
|
- | 663 | @@: |
|
- | 664 | ||
- | 665 | mov byte[apps.bits], al |
|
- | 666 | pop ebx eax |
|
- | 667 | ret |
|
- | 668 | ||
- | 669 | ||
- | 670 | ||
- | 671 | ;ïðåîáðàçîâàíèå ñòðîêè â öåëîå ÷èñëî |
|
- | 672 | strToInteger: ;âõîä: esi - óêàçàòåëü íà ñòðîêó ñ äåñÿòè÷íîé çàïèñüþ ÷èñëà, âûõîä: eñx - ÷èñëî |
|
- | 673 | push eax ebx edx edi |
|
- | 674 | xor eax, eax ;îáíóëÿåì eax |
|
- | 675 | xor ecx, ecx |
|
- | 676 | mov edi, esi |
|
- | 677 | .get_last_symbol: |
|
- | 678 | ;÷èòàåì î÷åðåäíîé ñèìâîë |
|
- | 679 | mov al, byte[edi] |
|
- | 680 | ||
- | 681 | ;åñëè ýòî íîëü, òî ñòðîêà çàêîí÷èëàñü |
|
- | 682 | cmp al, 0 |
|
- | 683 | je @f |
|
- | 684 | ||
- | 685 | ;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
|
- | 686 | inc edi |
|
- | 687 | jmp .get_last_symbol |
|
- | 688 | @@: ;äîøëè äî ïîñëåäíåãî ñèìâîëà è êëàä¸ì àäðåñ íà íåãî â edi |
|
- | 689 | dec edi |
|
- | 690 | ||
- | 691 | cmp edi, esi ;àäðåñ ïîñëåäíåãî ñèìâîëà äîëæåí áûòü äàëüøå àäðåñà ïåðâîãî ñèìâîëà |
|
- | 692 | jae @f |
|
- | 693 | jmp .error ;èíà÷å îøèáêà |
|
- | 694 | @@: |
|
- | 695 | ;òåïåðü â edi ïîñëåäíèé ñèìâîë, à esi óêàçûâàåò íà íà÷àëî ñòðîêè (íà ïåðâé ñèìâîë ñòðîêè) |
|
- | 696 | mov cl, byte[edi] |
|
- | 697 | sub cl, 48 ;0x30 ;'0' |
|
- | 698 | dec edi ;ïåðåõîäèì íà ñëåä ñèìâîë îò êîíöà |
|
- | 699 | mov ebx, 10 ;ìíîæèòåëü ñòåïåíè |
|
- | 700 | .tranform_cicle: |
|
- | 701 | cmp edi, esi ;åñëè áîëüøå íåò ñèìâîëîâ ñòðîêå, òî ÷èñëî ïðåîáðàçîâàëè - âûõîäèì |
|
- | 702 | jb .end |
|
- | 703 | ||
- | 704 | mov eax, 0 |
|
- | 705 | mov al, byte[edi] |
|
- | 706 | sub al, 48 ;'0' |
|
- | 707 | cmp al, 9 ;0x39 ;åñëè ÷èñëî áîëüøå 9, òî âèäèìî â ñòðîêå áûëî ÷òî-òî íå òàê |
|
- | 708 | ja .error |
|
- | 709 | cmp al, 0 ;0x30 ;åñëè ÷èñëî ìåíüøå 0, òî âèäèìî â ñòðîêå áûëî ÷òî-òî íå òàê |
|
Line 389... | Line 710... | ||
389 | 710 | jb .error |
|
390 | pop esi |
711 | mov edx, 0 |
391 | pop edi |
712 | mul ebx |
392 | 713 | ||
Line 472... | Line 793... | ||
472 | ret |
793 | ret |
Line 473... | Line 794... | ||
473 | 794 | ||
474 | 795 | ||
475 | ;MODE 3 |
796 | ;MODE 3 |
476 | init03: |
797 | init03: |
477 | mov dword[radius2], 100; 10*10 |
798 | ;mov dword[radius2], 100; 10*10 |
478 | mov dword[backAdr], mode03 |
799 | mov dword[backAdr], mode03 |
479 | call setHotKey |
800 | call setHotKey |
480 | mode03: |
801 | mode03: |
Line 494... | Line 815... | ||
494 | je mouse03.updateCoord |
815 | je mouse03.updateCoord |
Line 495... | Line 816... | ||
495 | 816 | ||
496 | cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
817 | cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
Line -... | Line 818... | ||
- | 818 | je mouse03.updateCoord |
|
- | 819 | ||
- | 820 | cmp byte[state], SUPERLOCKd ;åñëè äåéñòâèå áûëî âûïîëíåíî è ïîëó÷èëè áëîêèðîâêó, òî æä¸ì îòïóñêàíèÿ êëàâèøè àêòèâàöèè |
|
497 | je mouse03.updateCoord |
821 | je @f |
498 | 822 | ||
499 | call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà |
823 | call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà |
500 | jmp @f |
824 | jmp @f |
501 | .updateCoord: |
825 | .updateCoord: |
Line 587... | Line 911... | ||
587 | 911 | ||
588 | ;èíà÷å ëåâûé íèæíèé óãîë |
912 | ;èíà÷å ëåâûé íèæíèé óãîë |
589 | mov ecx, 1 |
913 | mov ecx, 1 |
590 | call run_command |
914 | call run_command |
591 | mov byte[keyState], 0 |
915 | mov byte[keyState], 0 |
592 | mov byte[state], LOCKd |
916 | mov byte[state], SUPERLOCKd |
Line 593... | Line 917... | ||
593 | jmp activateCorner.end |
917 | jmp activateCorner.end |
594 | 918 | ||
595 | .leftup: |
919 | .leftup: |
596 | ;ëåâûé âåðõíèé óãîë |
920 | ;ëåâûé âåðõíèé óãîë |
597 | mov ecx, 0 |
921 | mov ecx, 0 |
598 | call run_command |
922 | call run_command |
599 | mov byte[keyState], 0 |
923 | mov byte[keyState], 0 |
Line 600... | Line 924... | ||
600 | mov byte[state], LOCKd |
924 | mov byte[state], SUPERLOCKd |
601 | jmp activateCorner.end |
925 | jmp activateCorner.end |
602 | 926 | ||
Line 608... | Line 932... | ||
608 | 932 | ||
609 | ;èíà÷å ïðàâûé íèæíèé óãîë |
933 | ;èíà÷å ïðàâûé íèæíèé óãîë |
610 | mov ecx, 3 |
934 | mov ecx, 3 |
611 | call run_command |
935 | call run_command |
612 | mov byte[keyState], 0 |
936 | mov byte[keyState], 0 |
613 | mov byte[state], LOCKd |
937 | mov byte[state], SUPERLOCKd |
Line 614... | Line 938... | ||
614 | jmp activateCorner.end |
938 | jmp activateCorner.end |
615 | 939 | ||
616 | .rightup: |
940 | .rightup: |
617 | ;ïðàâûé âåðõíèé óãîë |
941 | ;ïðàâûé âåðõíèé óãîë |
618 | mov ecx, 2 |
942 | mov ecx, 2 |
619 | call run_command |
943 | call run_command |
620 | mov byte[keyState], 0 |
944 | mov byte[keyState], 0 |
Line 621... | Line 945... | ||
621 | mov byte[state], LOCKd |
945 | mov byte[state], SUPERLOCKd |
622 | jmp activateCorner.end |
946 | jmp activateCorner.end |
623 | 947 | ||
Line 629... | Line 953... | ||
629 | 953 | ||
630 | keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè |
954 | keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè |
Line 631... | Line 955... | ||
631 | keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà |
955 | keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà |
632 | - | ||
633 | backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
- | |
634 | - | ||
635 | ;slotMax dd 0 |
- | |
636 | ;selfPID dd 0 |
956 | |
637 | ;buf db 1024 dup(0) |
957 | backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
638 | slotMax rd 1 |
958 | slotMax rd 1 |
Line 639... | Line 959... | ||
639 | selfPID rd 1 |
959 | selfPID rd 1 |
640 | buf rb 1024 |
960 | buf rb 1024 |
641 | 961 | ||
642 | ;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà |
962 | ;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà |
Line 643... | Line 963... | ||
643 | screen: |
963 | screen: |
644 | .width rw 1 |
964 | .width rw 1 |
Line -... | Line 965... | ||
- | 965 | .height rw 1 |
|
- | 966 | ||
645 | .height rw 1 |
967 | state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock, 2=superlock for mode 3 |
- | 968 | mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå |
|
646 | 969 | ||
- | 970 | ||
- | 971 | keystr: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè |
|
647 | state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock |
972 | radstr: rb 5 ;ñòðîêà ñî çíà÷åíèåì ðàäèóñà |
- | 973 | apps: |
|
- | 974 | .bits: rb 1 |
|
648 | mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå |
975 | .path1: rb 512 |
- | 976 | .path2: rb 512 |
|
649 | 977 | .path3: rb 512 |
|
650 | newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê |
978 | .path4: rb 512 |
- | 979 | .param1: rb 512 |
|
Line 651... | Line 980... | ||
651 | .lu rd 1 |
980 | .param2: rb 512 |