Subversion Repositories Kolibri OS

Rev

Rev 2726 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2726 Rev 6331
1
;------------------------------------------------------------------------------
1
;------------------------------------------------------------------------------
2
;   Mad Mouse
2
;   Mad Mouse
3
;---------------------------------------------------------------------
3
;---------------------------------------------------------------------
4
; version:	0.2
4
; version:	0.2
5
; last update:  03/06/2012
5
; last update:	03/06/2012
6
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
6
; changed by:	Marat Zakiyanov aka Mario79, aka Mario
7
; changes:      Some optimizations.
7
; changes:	Some optimizations.
8
;---------------------------------------------------------------------
8
;---------------------------------------------------------------------
9
;   €¢â®à í⮣® 㦠᭮ áâ६­®£® ª®¤ : Sourcerer, 23.04.2010
9
;   €¢â®à í⮣® 㦠᭮ áâ६­®£® ª®¤ : Sourcerer, 23.04.2010
10
;   popovpa (29.05.2012)
10
;   popovpa (29.05.2012)
11
;   1. ˆ§¬¥­¥­¨¥ «®£¨ª¨ à ¡®âë ¯à®£à ¬¬ë.
11
;   1. ˆ§¬¥­¥­¨¥ «®£¨ª¨ à ¡®âë ¯à®£à ¬¬ë.
12
;   2. „®¡ ¢«¥­® "¯¥à¥áª ª¨¢ ­¨¥" ᢥàåã ¨ ­¨§ã :)
12
;   2. „®¡ ¢«¥­® "¯¥à¥áª ª¨¢ ­¨¥" ᢥàåã ¨ ­¨§ã :)
13
;   3. Ž¯â¨¬¨§ æ¨ï ª®¤ .
13
;   3. Ž¯â¨¬¨§ æ¨ï ª®¤ .
14
;------------------------------------------------------------------------------
14
;------------------------------------------------------------------------------
15
	use32		; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32-å à §àï¤­ë¥ ª®¬ ­¤ë
15
	use32		; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32-å à §àï¤­ë¥ ª®¬ ­¤ë
16
	org 0x0		; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
16
	org 0x0 	; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
17
 
17
 
18
	db 'MENUET01' 	; 1. ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
18
	db 'MENUET01'	; 1. ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
19
	dd 0x01		; 2. ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
19
	dd 0x01 	; 2. ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
20
	dd START	; 3.  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
20
	dd START	; 3.  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
21
			; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
21
			; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
22
	dd IM_END	; 4. à §¬¥à ¯à¨«®¦¥­¨ï
22
	dd IM_END	; 4. à §¬¥à ¯à¨«®¦¥­¨ï
23
	dd I_END	; 5. ®¡êñ¬ ­¥®¡å®¤¨¬®© ¯à¨«®¦¥­¨î ¯ ¬ïâ¨
23
	dd I_END	; 5. ®¡êñ¬ ­¥®¡å®¤¨¬®© ¯à¨«®¦¥­¨î ¯ ¬ïâ¨
24
			; ¬®¦­® ®¡à é âìáï ª ¯ ¬ï⨠¢ ¤¨ ¯ §®­¥ ®â 0x0
24
			; ¬®¦­® ®¡à é âìáï ª ¯ ¬ï⨠¢ ¤¨ ¯ §®­¥ ®â 0x0
25
			; ¤® §­ ç¥­¨ï, ®¯à¥¤¥«ñ­­®£® §¤¥áì
25
			; ¤® §­ ç¥­¨ï, ®¯à¥¤¥«ñ­­®£® §¤¥áì
26
	dd stack_area	; 6. ¢¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
26
	dd stack_area	; 6. ¢¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
27
	dd 0x0		; 7. 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
27
	dd 0x0		; 7. 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
28
			; ¥á«¨ ¯®á«¥ § ¯ã᪠ ­¥à ¢­® ­ã«î, ¯à¨«®¦¥­¨¥ ¡ë«®
28
			; ¥á«¨ ¯®á«¥ § ¯ã᪠ ­¥à ¢­® ­ã«î, ¯à¨«®¦¥­¨¥ ¡ë«®
29
			; § ¯ã饭® á ¯ à ¬¥âà ¬¨ ¨§ ª®¬ ­¤­®© áâப¨
29
			; § ¯ã饭® á ¯ à ¬¥âà ¬¨ ¨§ ª®¬ ­¤­®© áâப¨
30
	dd 0x0		; 8. 㪠§ â¥«ì ­  áâபã, ¢ ª®â®àãî § ¯¨á ­ ¯ãâì,
30
	dd 0x0		; 8. 㪠§ â¥«ì ­  áâபã, ¢ ª®â®àãî § ¯¨á ­ ¯ãâì,
31
			; ®âªã¤  § ¯ã饭® ¯à¨«®¦¥­¨¥
31
			; ®âªã¤  § ¯ã饭® ¯à¨«®¦¥­¨¥
32
;------------------------------------------------------------------------------
32
;------------------------------------------------------------------------------
33
; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì ¯à®£à ¬¬¨áâ 
-
 
34
include '../../macros.inc'
-
 
35
;------------------------------------------------------------------------------
-
 
36
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
33
;---  €—€‹Ž Žƒ€ŒŒ›	----------------------------------------------
37
;------------------------------------------------------------------------------
34
;------------------------------------------------------------------------------
38
START:				; ¤à¥á ­ ç «  ¯à®£à ¬¬ë
35
START:				; ¤à¥á ­ ç «  ¯à®£à ¬¬ë
39
	mov	eax,40		;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩.
36
	mov	eax,40		;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩.
40
	mov	ebx,100000b	;­ã¦­® ⮫쪮 ᮡë⨥ ¬ëè¨
37
	mov	ebx,100000b	;­ã¦­® ⮫쪮 ᮡë⨥ ¬ëè¨
41
	int	0x40
38
	int	0x40
42
;------------------------------------------------------------------------------
39
;------------------------------------------------------------------------------
43
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
40
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
44
;------------------------------------------------------------------------------
41
;------------------------------------------------------------------------------
45
align 4	
42
align 4 
46
still:
43
still:
47
	mov	eax,10		;®¦¨¤ âì ᮡë⨩
44
	mov	eax,10		;®¦¨¤ âì ᮡë⨩
48
	int	0x40
45
	int	0x40
49
	
46
	
50
	mov	eax,14		;äã­ªæ¨ï 14 - ¯®«ãç¨âì à §¬¥à íªà ­ 
47
	mov	eax,14		;äã­ªæ¨ï 14 - ¯®«ãç¨âì à §¬¥à íªà ­ 
51
	int	0x40		;¢ë§®¢ ä.14 ¢ 横«¥ ¯®â®¬ã çâ® ¬®¦¥â
48
	int	0x40		;¢ë§®¢ ä.14 ¢ 横«¥ ¯®â®¬ã çâ® ¬®¦¥â
52
				;¯®¬¥­ïâìáï à §à¥è¥­¨¥ íªà ­ 
49
				;¯®¬¥­ïâìáï à §à¥è¥­¨¥ íªà ­ 
53
	mov	ebx,eax
50
	mov	ebx,eax
54
	shl	ebx,16
51
	shl	ebx,16
55
	shr	ebx,16
52
	shr	ebx,16
56
	mov	edi,ebx		;á®åà ­¨¬ ã
53
	mov	edi,ebx 	;á®åà ­¨¬ ã
57
	shr	eax,16		;ᤢ¨£ ¥¬ eax ¢¯à ¢® ­  16 - ¯®«ãç ¥¬ x
54
	shr	eax,16		;ᤢ¨£ ¥¬ eax ¢¯à ¢® ­  16 - ¯®«ãç ¥¬ x
58
	mov	esi,eax		;á®åà ­¨¬ x
55
	mov	esi,eax 	;á®åà ­¨¬ x
59
;¯®«ãç ¥¬ ª®®à¤¨­ âë ªãàá®à 
56
;¯®«ãç ¥¬ ª®®à¤¨­ âë ªãàá®à 
60
	mov	eax,37		;äã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
57
	mov	eax,37		;äã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
61
	xor	ebx,ebx		;¯®¤äãªæ¨ï 0 - ª®®à¤¨­ âë ¬ëè¨
58
	xor	ebx,ebx 	;¯®¤äãªæ¨ï 0 - ª®®à¤¨­ âë ¬ëè¨
62
				;®â­®á¨â¥«ì­® íªà ­ 
59
				;®â­®á¨â¥«ì­® íªà ­ 
63
	int	0x40
60
	int	0x40
64
 
61
 
65
	mov	ebx,eax		;§ ¯®¬¨­ ¥¬ ª®®à¤¨­ âë
62
	mov	ebx,eax 	;§ ¯®¬¨­ ¥¬ ª®®à¤¨­ âë
66
	shr	eax,16		;⥯¥àì ã ­ á ⮫쪮 x. ­ã¦¥­ ¨ y
63
	shr	eax,16		;⥯¥àì ã ­ á ⮫쪮 x. ­ã¦¥­ ¨ y
67
	mov	ecx,eax		;§ ¯®¬¨­ ¥¬ x
64
	mov	ecx,eax 	;§ ¯®¬¨­ ¥¬ x
68
	shl	ebx,16		;ᤢ¨­¥¬ ¢«¥® ­  16
65
	shl	ebx,16		;ᤢ¨­¥¬ ¢«¥® ­  16
69
	shr	ebx,16		;ᤢ¨­¥¬¢ ¯à ¢® ­  16, ã ­ á ¥áâì ã
66
	shr	ebx,16		;ᤢ¨­¥¬¢ ¯à ¢® ­  16, ã ­ á ¥áâì ã
70
;------------------------------------------------------------------------------
67
;------------------------------------------------------------------------------
71
;¢ esi ¨ edi ª®®à¤¨­ âë à §¬¥à  íªà ­  X ¨ Y ᮮ⢥âᢥ­­®
68
;¢ esi ¨ edi ª®®à¤¨­ âë à §¬¥à  íªà ­  X ¨ Y ᮮ⢥âᢥ­­®
72
;¢ ecx ¨ ebx ª®®à¤¨­ âë ªãàá®à  X ¨ Y ᮮ⢥⢥­­®
69
;¢ ecx ¨ ebx ª®®à¤¨­ âë ªãàá®à  X ¨ Y ᮮ⢥⢥­­®
73
;------------------------------------------------------------------------------
70
;------------------------------------------------------------------------------
74
;áà ¢­¥­¨¥ ª®®à¤¨­ â x
71
;áà ¢­¥­¨¥ ª®®à¤¨­ â x
75
	test	ecx,ecx		;à ¢­  0?
72
	test	ecx,ecx 	;à ¢­  0?
76
	jz	left_border	;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã «¥¢®£® ªà ï
73
	jz	left_border	;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã «¥¢®£® ªà ï
77
 
74
 
78
	cmp	ecx,esi		;à ¢­  è¨à¨­¥ íªà ­ ?
75
	cmp	ecx,esi 	;à ¢­  è¨à¨­¥ íªà ­ ?
79
	jz	right_border 	;¯¥à¥å®¤¨¬ ª ®¡à ¡®âª¥ 㠯ࠢ®£® ªà ï
76
	jz	right_border	;¯¥à¥å®¤¨¬ ª ®¡à ¡®âª¥ 㠯ࠢ®£® ªà ï
80
;áà ¢­¥­¨¥ ª®®à¤¨­ â y
77
;áà ¢­¥­¨¥ ª®®à¤¨­ â y
81
	test	ebx,ebx		;à ¢­  0?
78
	test	ebx,ebx 	;à ¢­  0?
82
	jz	top_border	;¥á«¨ ¤  §­ ç¨â ªãàá®à ¢¢¥àåã
79
	jz	top_border	;¥á«¨ ¤  §­ ç¨â ªãàá®à ¢¢¥àåã
83
 
80
 
84
	cmp	ebx,edi		;à ¢­  ¢ëá®â¥ íªà ­ ?
81
	cmp	ebx,edi 	;à ¢­  ¢ëá®â¥ íªà ­ ?
85
	jz	bottom_border	;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã ­¨¦­¥£® ªà ï
82
	jz	bottom_border	;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã ­¨¦­¥£® ªà ï
86
 
83
 
87
	jmp	still		;¨­ ç¥ ­¨ç¥£® ¤¥« âì ­¥ ­ã¦­®
84
	jmp	still		;¨­ ç¥ ­¨ç¥£® ¤¥« âì ­¥ ­ã¦­®
88
;------------------------------------------------------------------------------
85
;------------------------------------------------------------------------------
89
align 4	
86
align 4 
90
left_border:
87
left_border:
91
	mov	edx,esi		;¢ edx ¨¬¥¥¬ è¨à¨­ã íªà ­ 
88
	mov	edx,esi 	;¢ edx ¨¬¥¥¬ è¨à¨­ã íªà ­ 
92
	dec	edx		;㬥­ì訬 ­  1
89
	dec	edx		;㬥­ì訬 ­  1
93
	shl	edx,16		;⥯¥àì edx=(x-1)*65536
90
	shl	edx,16		;⥯¥àì edx=(x-1)*65536
94
	add	edx,ebx		;  ⥯¥àì edx=(x-1)*65536+y
91
	add	edx,ebx 	;  ⥯¥àì edx=(x-1)*65536+y
95
;------------------------------------------------------------------------------
92
;------------------------------------------------------------------------------
96
align 4	
93
align 4 
97
set_mouse_position:
94
set_mouse_position:
98
	mov	eax,18		;äã­ªæ¨ï 18: ãáâ ­®¢¨âì ­ áâனª¨ ¬ëè¨
95
	mov	eax,18		;äã­ªæ¨ï 18: ãáâ ­®¢¨âì ­ áâனª¨ ¬ëè¨
99
	mov	ebx,19		;¯®¤äã­ªæ¨ï 19
96
	mov	ebx,19		;¯®¤äã­ªæ¨ï 19
100
	mov	ecx,4		;¯®¤¯®¤äã­ªæ¨ï 4: ãáâ ­®¢¨âì ¯®«®¦¥­¨¥
97
	mov	ecx,4		;¯®¤¯®¤äã­ªæ¨ï 4: ãáâ ­®¢¨âì ¯®«®¦¥­¨¥
101
				;ªãàá®à 
98
				;ªãàá®à 
102
	int	0x40
99
	int	0x40
103
	jmp	still		;®â¤ëå ¥¬
100
	jmp	still		;®â¤ëå ¥¬
104
;------------------------------------------------------------------------------
101
;------------------------------------------------------------------------------
105
align 4	
102
align 4 
106
right_border:			;ªãàá®à 㠯ࠢ®£® ªà ï
103
right_border:			;ªãàá®à 㠯ࠢ®£® ªà ï
107
 
104
 
108
	xor	edx,edx
105
	xor	edx,edx
109
	inc	edx		;edx=1
106
	inc	edx		;edx=1
110
	shl	edx,16		;edx = 1*65536
107
	shl	edx,16		;edx = 1*65536
111
	add	edx,ebx		;edx=1*65536+y
108
	add	edx,ebx 	;edx=1*65536+y
112
	jmp	set_mouse_position
109
	jmp	set_mouse_position
113
;------------------------------------------------------------------------------
110
;------------------------------------------------------------------------------
114
align 4	
111
align 4 
115
top_border:			;ªãàá®à ã ¢¥àå­¥£® ªà ï
112
top_border:			;ªãàá®à ã ¢¥àå­¥£® ªà ï
116
 
113
 
117
	mov	edx,ecx		;• ª®®à¤¨­ â  ªãàá®à 
114
	mov	edx,ecx 	;• ª®®à¤¨­ â  ªãàá®à 
118
	shl	edx,16		;⥯¥àì edx=(x)*65536
115
	shl	edx,16		;⥯¥àì edx=(x)*65536
119
	add	edx,edi		;  ⥯¥àì edx=(x)*65536+y
116
	add	edx,edi 	;  ⥯¥àì edx=(x)*65536+y
120
	dec	edx		;  ⥯¥àì edx=(x)*65536+(ã-1)
117
	dec	edx		;  ⥯¥àì edx=(x)*65536+(ã-1)
121
	jmp	set_mouse_position
118
	jmp	set_mouse_position
122
;------------------------------------------------------------------------------
119
;------------------------------------------------------------------------------
123
align 4	
120
align 4 
124
bottom_border:			;ªãàá®à ã ­¨¦­¥£® ªà ï
121
bottom_border:			;ªãàá®à ã ­¨¦­¥£® ªà ï
125
	mov	edx,ecx		;edx=ecx x ª®®à¤¨­ â  ªãàá®à 
122
	mov	edx,ecx 	;edx=ecx x ª®®à¤¨­ â  ªãàá®à 
126
	shl	edx,16		;edx = å*65536
123
	shl	edx,16		;edx = å*65536
127
				;ã ª®®à¤¨­ â  à ¢­  0
124
	inc	edx		;ã ª®®à¤¨­ â  à ¢­  1
128
	jmp	set_mouse_position
125
	jmp	set_mouse_position
129
;------------------------------------------------------------------------------
126
;------------------------------------------------------------------------------
130
IM_END:				; ¬¥âª  ª®­æ  ª®¤ 
127
IM_END: 			; ¬¥âª  ª®­æ  ª®¤ 
131
;------------------------------------------------------------------------------
128
;------------------------------------------------------------------------------
132
align 4
129
align 4
133
	rb 1024
130
	rb 1024
134
stack_area:
131
stack_area:
135
;------------------------------------------------------------------------------
132
;------------------------------------------------------------------------------
136
I_END:				; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
133
I_END:				; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
137
;------------------------------------------------------------------------------
134
;------------------------------------------------------------------------------