• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2    SDL - Simple DirectMedia Layer
3    Copyright (C) 1997-2006 Sam Lantinga
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with this library; if not, write to the Free Software
17    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
19    Sam Lantinga
20    slouken@libsdl.org
21*/
22
23/*
24 *	XBIOS mouse & joystick vectors
25 *
26 *	Patrice Mandin
27 */
28
29	.text
30
31	.globl	_SDL_AtariXbios_Install
32	.globl	_SDL_AtariXbios_Restore
33	.globl	_SDL_AtariXbios_MouseVector
34	.globl	_SDL_AtariXbios_JoystickVector
35
36	.globl	_SDL_AtariXbios_mouselock
37	.globl	_SDL_AtariXbios_mouseb
38	.globl	_SDL_AtariXbios_mousex
39	.globl	_SDL_AtariXbios_mousey
40	.globl	_SDL_AtariXbios_joystick
41
42/*--- Vector installer ---*/
43
44_SDL_AtariXbios_Install:
45	movel	sp@(4),a0
46
47	/* Stop interrupts */
48
49	movew	#0x2700,sr
50
51	/* Save old mouse vector, set our routine */
52
53	clrl	oldmousevector
54	movel	sp@(8),d0
55	beqs	no_new_mouse_vector
56	movel	a0@(16),oldmousevector
57	movel	d0,a0@(16)
58no_new_mouse_vector:
59
60	/* Save old joystick vector, set our routine */
61
62	clrl	oldjoystickvector
63	movel	sp@(12),d0
64	beqs	no_new_joystick_vector
65	movel	a0@(24),oldjoystickvector
66	movel	d0,a0@(24)
67no_new_joystick_vector:
68
69	/* Restart interrupts */
70
71	movew	#0x2300,sr
72
73	rts
74
75/*--- Vector restorer ---*/
76
77_SDL_AtariXbios_Restore:
78	movel	sp@(4),a0
79
80	/* Stop interrupts */
81
82	movew	#0x2700,sr
83
84	/* Restore mouse vector */
85
86	movel	oldmousevector,d0
87	beqs	no_restore_mouse
88	movel	d0,a0@(16)
89no_restore_mouse:
90
91	/* Restore joystick vector */
92
93	movel	oldjoystickvector,d0
94	beqs	no_restore_joystick
95	movel	d0,a0@(24)
96no_restore_joystick:
97
98	/* Restart interrupts */
99
100	movew	#0x2300,sr
101
102	rts
103
104/*--- Our mouse vector ---*/
105
106	.text
107	.even
108	.ascii "XBRA"
109	.ascii "LSDL"
110	.comm	oldmousevector,4*1
111_SDL_AtariXbios_MouseVector:
112	movel	d0,sp@-
113
114	/* Mouse buttons */
115	moveb	(a0),d0
116	andw	#3,d0
117	movew	d0,_SDL_AtariXbios_mouseb
118
119	/* X movement */
120	moveb	a0@(1),d0
121	extw	d0
122	addw	d0,_SDL_AtariXbios_mousex
123
124	/* Y movement */
125	moveb	a0@(2),d0
126	extw	d0
127	addw	d0,_SDL_AtariXbios_mousey
128
129	/* Lock mouse position ? */
130	tstw	_SDL_AtariXbios_mouselock
131	beq.s	no_mouse_lock
132	clrb	a0@(1)
133	clrb	a0@(2)
134no_mouse_lock:
135
136	/* Jump through old vector */
137	movel	sp@+,d0
138
139	movel	oldmousevector,sp@-
140	rts
141
142	.data
143	.even
144	.comm	_SDL_AtariXbios_mouselock,2*1
145	.comm	_SDL_AtariXbios_mousex,2*1
146	.comm	_SDL_AtariXbios_mousey,2*1
147	.comm	_SDL_AtariXbios_mouseb,2*1
148
149/*--- Our joystick vector ---*/
150
151	.text
152	.even
153	.ascii "XBRA"
154	.ascii "LSDL"
155	.comm	oldjoystickvector,4*1
156_SDL_AtariXbios_JoystickVector:
157	movel	d0,sp@-
158
159	/* New joystick state */
160	moveb	a0@(2),d0
161	andw	#0x8f,d0
162	movew	d0,_SDL_AtariXbios_joystick
163
164	/* Jump through old vector */
165	movel	sp@+,d0
166
167	movel	oldjoystickvector,sp@-
168	rts
169
170	.data
171	.even
172	.comm	_SDL_AtariXbios_joystick,2*1
173