Skip to content

Latest commit

 

History

History
172 lines (127 loc) · 3.17 KB

SDL_xbiosinterrupt.S

File metadata and controls

172 lines (127 loc) · 3.17 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:
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
moveml d0/a1,sp@-
/* 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 */
Mar 10, 2002
Mar 10, 2002
134
movel oldmousevector,a1
135
136
137
138
139
140
141
142
143
144
145
146
147
jsr (a1)
moveml sp@+,d0/a1
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*--- Our joystick vector ---*/
.text
.even
.ascii "XBRA"
.ascii "LSDL"
.comm oldjoystickvector,4*1
_SDL_AtariXbios_JoystickVector:
moveml d0/a1,sp@-
/* New joystick state */
moveb a0@(1),d0
andw #0x8f,d0
movew d0,_SDL_AtariXbios_joystick
/* Jump through old vector */
movel oldjoystickvector,a1
jsr (a1)
moveml sp@+,d0/a1
rts
.data
.even
.comm _SDL_AtariXbios_joystick,2*1