Rev 7436 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7436 | Rev 7443 | ||
---|---|---|---|
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.5: Oct 5, 2018 |
5 | ; Version 0.3.6: Oct 9, 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 51... | Line 51... | ||
51 | 51 | ||
52 | cmp byte[mode], 0 ;ôóíêöèÿ îòêëþ÷åíà - âûõîä |
52 | cmp byte[mode], 0 ;ôóíêöèÿ îòêëþ÷åíà - âûõîä |
53 | jne @f |
53 | jne @f |
54 | mcall -1 |
54 | mcall -1 |
- | 55 | @@: |
|
- | 56 | ;ðåæèì æåñòà ïî ãîðÿ÷åé êëàâèøå? |
|
- | 57 | cmp byte[mode], 3 ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ â çàâèñèìîñòè îò ðåæèìà ðàáîòû |
|
- | 58 | jne @f |
|
- | 59 | mov ebx, 00000100000000000000000000100010b ;åñëè äà, òî ïîäïèñûâàåìñÿ íà êëàâèøè |
|
- | 60 | mcall 40 |
|
- | 61 | jmp init03 |
|
55 | @@: |
62 | @@: |
56 | ;ðåæèì àêòèâàöèè ãîðÿ÷åé êëàâèøåé? |
63 | ;ðåæèì àêòèâàöèè ãîðÿ÷åé êëàâèøåé? |
57 | cmp byte[mode], 2 ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ â çàâèñèìîñòè îò ðåæèìà ðàáîòû |
64 | cmp byte[mode], 2 ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ â çàâèñèìîñòè îò ðåæèìà ðàáîòû |
58 | jne @f |
65 | jne @f |
59 | mov ebx, 00000100000000000000000000100010b ;åñëè äà, òî ïîäïèñûâàåìñÿ íà êëàâèøè |
66 | mov ebx, 00000100000000000000000000100010b ;åñëè äà, òî ïîäïèñûâàåìñÿ íà êëàâèøè |
Line 108... | Line 115... | ||
108 | cmp al, 2 ;íàñ èíòåðåñóåò òîëüêî ñêàí êîä ãîðÿ÷åé êëàâèøè, èíà÷å âûõîäèì |
115 | cmp al, 2 ;íàñ èíòåðåñóåò òîëüêî ñêàí êîä ãîðÿ÷åé êëàâèøè, èíà÷å âûõîäèì |
109 | jne hotkey.end |
116 | jne hotkey.end |
Line 110... | Line 117... | ||
110 | 117 | ||
111 | cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà |
118 | cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà |
- | 119 | jne @f |
|
- | 120 | ||
- | 121 | ;for mode 3 [ |
|
- | 122 | cmp byte[keyState], 1 |
|
- | 123 | je hotkey.e |
|
- | 124 | ||
- | 125 | push eax ebx |
|
- | 126 | mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè |
|
- | 127 | ;mov dword[o.x], eax |
|
- | 128 | mov word[o.y], ax |
|
- | 129 | shr eax, 16 |
|
- | 130 | mov word[o.x], ax |
|
- | 131 | pop ebx eax |
|
112 | jne @f |
132 | |
113 | mov byte[keyState], 1 |
133 | mov byte[keyState], 1 |
- | 134 | mov byte[state], UNLOCKd |
|
- | 135 | .e: |
|
- | 136 | ;] |
|
114 | mov byte[state], UNLOCKd |
137 | ;mov byte[state], UNLOCKd |
115 | jmp hotkey.end |
138 | jmp hotkey.end |
116 | @@: |
139 | @@: |
117 | push edx |
140 | push edx |
118 | xor edx, edx |
141 | xor edx, edx |
Line 125... | Line 148... | ||
125 | mov byte[keyState], 0 |
148 | mov byte[keyState], 0 |
126 | mov byte[state], LOCKd |
149 | mov byte[state], LOCKd |
127 | @@: |
150 | @@: |
128 | pop edx |
151 | pop edx |
129 | .end: |
152 | .end: |
130 | jmp mode02 |
153 | jmp dword[backAdr] |
Line 131... | Line 154... | ||
131 | 154 | ||
132 | 155 | ||
133 | init01: |
156 | init01: |
Line 447... | Line 470... | ||
447 | @@: |
470 | @@: |
448 | pop edi esi ecx ebx eax |
471 | pop edi esi ecx ebx eax |
449 | ret |
472 | ret |
Line -... | Line 473... | ||
- | 473 | ||
- | 474 | ||
- | 475 | ;MODE 3 |
|
- | 476 | init03: |
|
- | 477 | mov dword[radius2], 100; 10*10 |
|
- | 478 | mov dword[backAdr], mode03 |
|
- | 479 | call setHotKey |
|
- | 480 | mode03: |
|
- | 481 | mcall 10 |
|
- | 482 | cmp eax, 2 ;îáðàáîòêà íàæàòèÿ êëàâèøè |
|
- | 483 | je hotkey |
|
- | 484 | ||
- | 485 | ;cmp byte[keyState], 0 |
|
- | 486 | ;je mode03 |
|
- | 487 | cmp eax, 6 ;îáðàáîòêà ïåðåìåùåíèé è íàæàòèÿ ìûøè |
|
- | 488 | je mouse03 |
|
- | 489 | ||
- | 490 | jmp mode03 |
|
- | 491 | ||
- | 492 | mouse03: |
|
- | 493 | cmp byte[keyState], 0 ;åñëè êëàâèøà íå çàæàòà, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
|
- | 494 | je mouse03.updateCoord |
|
- | 495 | ||
- | 496 | cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
|
- | 497 | je mouse03.updateCoord |
|
- | 498 | ||
- | 499 | call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà |
|
- | 500 | jmp @f |
|
- | 501 | .updateCoord: |
|
- | 502 | push eax ebx |
|
- | 503 | mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè |
|
- | 504 | ;mov dword[o.x], eax |
|
- | 505 | mov word[o.y], ax |
|
- | 506 | shr eax, 16 |
|
- | 507 | mov word[o.x], ax |
|
- | 508 | pop ebx eax |
|
- | 509 | @@: |
|
- | 510 | jmp dword[backAdr] |
|
- | 511 | ||
- | 512 | ||
- | 513 | radius2 dd 0 ;êâàäðàò ðàäèóñà äëÿ mode 3 |
|
- | 514 | o: ;êîîðäèíàòû íà÷àëüíîé è òåêóùåé òî÷êè |
|
- | 515 | .x: dw 0 |
|
- | 516 | .y: dw 0 |
|
- | 517 | .cx: dw 0 |
|
- | 518 | .cy: dw 0 |
|
- | 519 | ||
- | 520 | ;ïðîâåðêà âûõîäà çà ïðåäåëû êðóãà |
|
- | 521 | ; sqrt( (x2-x1)^2 + (y2-y1)^2 ) <= radius |
|
- | 522 | ; (x2-x1)^2 + (y2-y1)^2 <= radius^2 |
|
- | 523 | checkPointInCircle: |
|
- | 524 | push eax ebx ecx edx |
|
- | 525 | mcall 37, 0 ;ïîëó÷àåì òåêóùèå êîîðäèíàòû ìûøè |
|
- | 526 | ;mov dword[o.cx], eax |
|
- | 527 | mov word[o.cy], ax |
|
- | 528 | shr eax, 16 |
|
- | 529 | mov word[o.cx], ax |
|
- | 530 | ||
- | 531 | xor eax, eax |
|
- | 532 | xor edx, edx |
|
- | 533 | mov ax, word[o.x] |
|
- | 534 | mov dx, word[o.cx] |
|
- | 535 | cmp dx, ax |
|
- | 536 | jae @f |
|
- | 537 | sub ax, dx |
|
- | 538 | mov dx, ax |
|
- | 539 | jmp .xend |
|
- | 540 | @@: |
|
- | 541 | sub dx, ax |
|
- | 542 | .xend: |
|
- | 543 | mov eax, edx |
|
- | 544 | mul dx |
|
- | 545 | ||
- | 546 | mov ebx, eax |
|
- | 547 | ||
- | 548 | xor eax, eax |
|
- | 549 | xor edx, edx |
|
- | 550 | mov ax, word[o.y] |
|
- | 551 | mov dx, word[o.cy] |
|
- | 552 | cmp dx, ax |
|
- | 553 | jae @f |
|
- | 554 | sub ax, dx |
|
- | 555 | mov dx, ax |
|
- | 556 | jmp .yend |
|
- | 557 | @@: |
|
- | 558 | sub dx, ax |
|
- | 559 | .yend: |
|
- | 560 | mov eax, edx |
|
- | 561 | mul dx |
|
- | 562 | ||
- | 563 | add ebx, eax |
|
- | 564 | ||
- | 565 | cmp ebx, dword[radius2] |
|
- | 566 | jbe @f |
|
- | 567 | call activateCorner ;èíà÷å àêòèâèðóåì íóæíûé óãîë |
|
- | 568 | @@: |
|
- | 569 | pop edx ecx ebx eax |
|
- | 570 | ret |
|
- | 571 | ||
- | 572 | ;âûÿñíèòü â ñòîðîíó êàêîãî óãëà óøëè è àêòèâèðîâàòü åãî |
|
- | 573 | activateCorner: |
|
- | 574 | push eax ecx |
|
- | 575 | xor eax, eax |
|
- | 576 | ||
- | 577 | mov ax, word[o.cx] |
|
- | 578 | cmp ax, word[o.x] |
|
- | 579 | je activateCorner.end ;åñëè êîîðäèíàòà ðàâíà, òî âûõîäèì (òàêîãî áûòü íå äîëæíî) |
|
- | 580 | ja activateCorner.right |
|
- | 581 | ||
- | 582 | ;èíà÷å ëåâàÿ ñòîðîíà |
|
- | 583 | mov ax, word[o.cy] |
|
- | 584 | cmp ax, word[o.y] |
|
- | 585 | je activateCorner.end ;åñëè êîîðäèíàòà ðàâíà, òî âûõîäèì (òàêîãî áûòü íå äîëæíî) |
|
- | 586 | jb activateCorner.leftup |
|
- | 587 | ||
- | 588 | ;èíà÷å ëåâûé íèæíèé óãîë |
|
- | 589 | mov ecx, 1 |
|
- | 590 | call run_command |
|
- | 591 | mov byte[keyState], 0 |
|
- | 592 | mov byte[state], LOCKd |
|
- | 593 | jmp activateCorner.end |
|
- | 594 | ||
- | 595 | .leftup: |
|
- | 596 | ;ëåâûé âåðõíèé óãîë |
|
- | 597 | mov ecx, 0 |
|
- | 598 | call run_command |
|
- | 599 | mov byte[keyState], 0 |
|
- | 600 | mov byte[state], LOCKd |
|
- | 601 | jmp activateCorner.end |
|
- | 602 | ||
- | 603 | .right: ;ïðàâàÿ ñòîðîíà ýêðàíà |
|
- | 604 | mov ax, word[o.cy] |
|
- | 605 | cmp ax, word[o.y] |
|
- | 606 | je activateCorner.end ;åñëè êîîðäèíàòà ðàâíà, òî âûõîäèì (òàêîãî áûòü íå äîëæíî) |
|
- | 607 | jb activateCorner.rightup |
|
- | 608 | ||
- | 609 | ;èíà÷å ïðàâûé íèæíèé óãîë |
|
- | 610 | mov ecx, 3 |
|
- | 611 | call run_command |
|
- | 612 | mov byte[keyState], 0 |
|
- | 613 | mov byte[state], LOCKd |
|
- | 614 | jmp activateCorner.end |
|
- | 615 | ||
- | 616 | .rightup: |
|
- | 617 | ;ïðàâûé âåðõíèé óãîë |
|
- | 618 | mov ecx, 2 |
|
- | 619 | call run_command |
|
- | 620 | mov byte[keyState], 0 |
|
- | 621 | mov byte[state], LOCKd |
|
- | 622 | jmp activateCorner.end |
|
- | 623 | ||
- | 624 | .end: |
|
- | 625 | pop ecx eax |
|
- | 626 | ret |
|
- | 627 | ||
450 | 628 | ||
451 | 629 | ||
Line 452... | Line 630... | ||
452 | keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè |
630 | keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè |
Line 453... | Line 631... | ||
453 | keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà |
631 | keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà |
454 | 632 | ||
455 | backAdr rd 1 ;dd 0 ; àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
633 | backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
456 | 634 | ||
457 | ;slotMax dd 0 |
635 | ;slotMax dd 0 |
458 | ;selfPID dd 0 |
636 | ;selfPID dd 0 |
Line 459... | Line 637... | ||
459 | ;buf db 1024 dup(0) |
637 | ;buf db 1024 dup(0) |
460 | slotMax rd 1 |
638 | slotMax rd 1 |
461 | selfPID rd 1 |
639 | selfPID rd 1 |
462 | buf rb 1024 |
640 | buf rb 1024 |
Line 463... | Line 641... | ||
463 | 641 | ||
464 | ;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà |
642 | ;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà |
Line 465... | Line 643... | ||
465 | screen: |
643 | screen: |