Skip to content

Latest commit

 

History

History
170 lines (125 loc) · 3.13 KB

SDL_xbiosinterrupt.S

File metadata and controls

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