Subversion Repositories Kolibri OS

Rev

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: