diff options
Diffstat (limited to 'apps/plugins/sdl/src/video/ataricommon/SDL_ikbdinterrupt.S')
-rw-r--r-- | apps/plugins/sdl/src/video/ataricommon/SDL_ikbdinterrupt.S | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/apps/plugins/sdl/src/video/ataricommon/SDL_ikbdinterrupt.S b/apps/plugins/sdl/src/video/ataricommon/SDL_ikbdinterrupt.S deleted file mode 100644 index 21facc80a2..0000000000 --- a/apps/plugins/sdl/src/video/ataricommon/SDL_ikbdinterrupt.S +++ /dev/null | |||
@@ -1,404 +0,0 @@ | |||
1 | /* | ||
2 | SDL - Simple DirectMedia Layer | ||
3 | Copyright (C) 1997-2012 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 | * IKBD 6301 interrupt routine | ||
25 | * | ||
26 | * Patrice Mandin | ||
27 | */ | ||
28 | |||
29 | .text | ||
30 | |||
31 | .globl _SDL_AtariIkbdInstall | ||
32 | .globl _SDL_AtariIkbdUninstall | ||
33 | |||
34 | .globl _SDL_AtariIkbd_keyboard | ||
35 | .globl _SDL_AtariIkbd_mouseb | ||
36 | .globl _SDL_AtariIkbd_mousex | ||
37 | .globl _SDL_AtariIkbd_mousey | ||
38 | .globl _SDL_AtariIkbd_joystick | ||
39 | |||
40 | .globl _SDL_AtariIkbd_enabled | ||
41 | |||
42 | /*--- Install our IKBD vector ---*/ | ||
43 | |||
44 | _SDL_AtariIkbdInstall: | ||
45 | #if defined(__mcoldfire__) | ||
46 | lea sp@(-16),sp | ||
47 | moveml d0-d1/a0-a1,sp@ | ||
48 | #else | ||
49 | moveml d0-d1/a0-a1,sp@- | ||
50 | #endif | ||
51 | |||
52 | | Disable interrupts | ||
53 | |||
54 | movew #0x2700,sr | ||
55 | |||
56 | | Save MFP registers used for keyboard | ||
57 | |||
58 | lea 0xfffffa00:w,a0 | ||
59 | btst #6,a0@(0x09) | ||
60 | #if defined(__mcoldfire__) | ||
61 | sne d0 | ||
62 | move.b d0,ikbd_ierb | ||
63 | #else | ||
64 | sne ikbd_ierb | ||
65 | #endif | ||
66 | btst #6,a0@(0x15) | ||
67 | #if defined(__mcoldfire__) | ||
68 | sne d0 | ||
69 | move.b d0,ikbd_imrb | ||
70 | #else | ||
71 | sne ikbd_imrb | ||
72 | #endif | ||
73 | |||
74 | | Set our routine | ||
75 | |||
76 | #if defined(__mcoldfire__) | ||
77 | movel 0x118:w,d0 | ||
78 | movel d0,old_ikbd | ||
79 | lea ikbd,a0 | ||
80 | movel a0,0x118:w | ||
81 | moveql #6,d0 | ||
82 | bset d0,0xfffffa09:w | IERB | ||
83 | bset d0,0xfffffa15:w | IMRB | ||
84 | #else | ||
85 | movel 0x118:w,old_ikbd | ||
86 | movel #ikbd,0x118:w | ||
87 | bset #6,0xfffffa09:w | IERB | ||
88 | bset #6,0xfffffa15:w | IMRB | ||
89 | #endif | ||
90 | |||
91 | | Set mouse relative mode | ||
92 | |||
93 | #if defined(__mcoldfire__) | ||
94 | moveql #8,d0 | ||
95 | moveb d0,0xfffffc02:w | ||
96 | #else | ||
97 | moveb #8,0xfffffc02:w | ||
98 | #endif | ||
99 | |||
100 | | Reenable interrupts | ||
101 | |||
102 | movew #0x2300,sr | ||
103 | |||
104 | | Interrupts done | ||
105 | |||
106 | #if defined(__mcoldfire__) | ||
107 | movel #0xffff,d0 | ||
108 | movew d0,_SDL_AtariIkbd_enabled | ||
109 | |||
110 | moveml sp@,d0-d1/a0-a1 | ||
111 | lea sp@(16),sp | ||
112 | #else | ||
113 | movew #0xffff,_SDL_AtariIkbd_enabled | ||
114 | |||
115 | moveml sp@+,d0-d1/a0-a1 | ||
116 | #endif | ||
117 | rts | ||
118 | |||
119 | /*--- Uninstall our IKBD vector ---*/ | ||
120 | |||
121 | _SDL_AtariIkbdUninstall: | ||
122 | movel a0,sp@- | ||
123 | |||
124 | | Disable interrupts | ||
125 | |||
126 | movew #0x2700,sr | ||
127 | |||
128 | | Restore previous MFP registers | ||
129 | |||
130 | lea 0xfffffa00:w,a0 | ||
131 | |||
132 | bclr #6,a0@(0x09) | ||
133 | tstb ikbd_ierb | ||
134 | beqs ikbd_restoreierb | ||
135 | bset #6,a0@(0x09) | ||
136 | ikbd_restoreierb: | ||
137 | |||
138 | bclr #6,a0@(0x15) | ||
139 | tstb ikbd_imrb | ||
140 | beqs ikbd_restoreimrb | ||
141 | bset #6,a0@(0x15) | ||
142 | ikbd_restoreimrb: | ||
143 | |||
144 | #if defined(__mcoldfire__) | ||
145 | movel old_ikbd,a0 | ||
146 | movel a0,0x118:w | ||
147 | #else | ||
148 | movel old_ikbd,0x118:w | ||
149 | #endif | ||
150 | |||
151 | | Clear keyboard buffer | ||
152 | |||
153 | lea 0xfffffc00:w,a0 | ||
154 | ikbd_videbuffer: | ||
155 | btst #0,a0@ | ||
156 | beqs ikbd_finbuffer | ||
157 | tstb a0@(0x02) | ||
158 | bras ikbd_videbuffer | ||
159 | ikbd_finbuffer: | ||
160 | |||
161 | | Reenable interrupts | ||
162 | |||
163 | movew #0x2300,sr | ||
164 | |||
165 | movel sp@+,a0 | ||
166 | rts | ||
167 | |||
168 | .bss | ||
169 | |||
170 | .even | ||
171 | .comm ikbd_ierb,1 | ||
172 | .comm ikbd_imrb,1 | ||
173 | |||
174 | /*--- Our custom IKBD vector ---*/ | ||
175 | |||
176 | .text | ||
177 | .even | ||
178 | .ascii "XBRA" | ||
179 | .ascii "LSDL" | ||
180 | .comm old_ikbd,4*1 | ||
181 | ikbd: | ||
182 | #if defined(__mcoldfire__) | ||
183 | lea sp@(-12),sp | ||
184 | moveml d0-d1/a0,sp@ | ||
185 | #else | ||
186 | moveml d0-d1/a0,sp@- | ||
187 | #endif | ||
188 | |||
189 | | Check if source is IKBD or MIDI | ||
190 | #if defined(__mcoldfire__) | ||
191 | moveql #0,d0 | ||
192 | btst d0,0xfffffc00.w | ||
193 | #else | ||
194 | btst #0,0xfffffc00.w | ||
195 | #endif | ||
196 | beqs ikbd_oldmidi | ||
197 | |||
198 | moveb 0xfffffc02:w,d0 | ||
199 | |||
200 | | Joystick packet ? | ||
201 | |||
202 | cmpb #0xff,d0 | ||
203 | beqs ikbd_yes_joystick | ||
204 | |||
205 | | Mouse packet ? | ||
206 | |||
207 | cmpb #0xf8,d0 | ||
208 | bmis ikbd_no_mouse | ||
209 | cmpb #0xfc,d0 | ||
210 | bpls ikbd_no_mouse | ||
211 | |||
212 | | Mouse packet, byte #1 | ||
213 | |||
214 | ikbd_yes_mouse: | ||
215 | #if defined(__mcoldfire__) | ||
216 | andl #3,d0 | ||
217 | #else | ||
218 | andw #3,d0 | ||
219 | #endif | ||
220 | movew d0,_SDL_AtariIkbd_mouseb | ||
221 | |||
222 | #if defined(__mcoldfire__) | ||
223 | movel #ikbd_mousex,d0 | ||
224 | movel d0,0x118:w | ||
225 | #else | ||
226 | movel #ikbd_mousex,0x118:w | ||
227 | #endif | ||
228 | bras ikbd_endit_stack | ||
229 | |||
230 | | Joystick packet, byte #1 | ||
231 | |||
232 | ikbd_yes_joystick: | ||
233 | #if defined(__mcoldfire__) | ||
234 | movel #ikbd_joystick,d0 | ||
235 | movel d0,0x118:w | ||
236 | #else | ||
237 | movel #ikbd_joystick,0x118:w | ||
238 | #endif | ||
239 | bras ikbd_endit_stack | ||
240 | |||
241 | | Keyboard press/release | ||
242 | |||
243 | ikbd_no_mouse: | ||
244 | moveb d0,d1 | ||
245 | lea _SDL_AtariIkbd_keyboard,a0 | ||
246 | #if defined(__mcoldfire__) | ||
247 | andl #0x7f,d1 | ||
248 | btst #7,d0 | ||
249 | spl d0 | ||
250 | moveb d0,a0@(0,d1:l) | ||
251 | #else | ||
252 | andw #0x7f,d1 | ||
253 | tas d0 | ||
254 | spl a0@(0,d1:w) | ||
255 | #endif | ||
256 | |||
257 | | End of interrupt | ||
258 | |||
259 | ikbd_endit_stack: | ||
260 | #if defined(__mcoldfire__) | ||
261 | moveql #6,d0 | ||
262 | bclr d0,0xfffffa11:w | ||
263 | |||
264 | moveml sp@,d0-d1/a0 | ||
265 | lea sp@(12),sp | ||
266 | #else | ||
267 | moveml sp@+,d0-d1/a0 | ||
268 | |||
269 | bclr #6,0xfffffa11:w | ||
270 | #endif | ||
271 | rte | ||
272 | |||
273 | | Call old MIDI interrupt | ||
274 | |||
275 | ikbd_oldmidi: | ||
276 | #if defined(__mcoldfire__) | ||
277 | moveml sp@,d0-d1/a0 | ||
278 | lea sp@(12),sp | ||
279 | #else | ||
280 | moveml sp@+,d0-d1/a0 | ||
281 | #endif | ||
282 | |||
283 | movel old_ikbd,sp@- | ||
284 | rts | ||
285 | |||
286 | | Mouse packet, byte #2 | ||
287 | |||
288 | ikbd_mousex: | ||
289 | #if defined(__mcoldfire__) | ||
290 | lea sp@(-12),sp | ||
291 | moveml d0-d1/a0,sp@ | ||
292 | #else | ||
293 | moveml d0-d1/a0,sp@- | ||
294 | #endif | ||
295 | |||
296 | | Check if source is IKBD or MIDI | ||
297 | #if defined(__mcoldfire__) | ||
298 | moveql #0,d0 | ||
299 | btst d0,0xfffffc00.w | ||
300 | #else | ||
301 | btst #0,0xfffffc00.w | ||
302 | #endif | ||
303 | beqs ikbd_oldmidi | ||
304 | |||
305 | moveb 0xfffffc02:w,d0 | ||
306 | extw d0 | ||
307 | #if defined(__mcoldfire__) | ||
308 | movew _SDL_AtariIkbd_mousex,d1 | ||
309 | addl d1,d0 | ||
310 | movew d0,_SDL_AtariIkbd_mousex | ||
311 | |||
312 | movel #ikbd_mousey,d0 | ||
313 | movel d0,0x118:w | ||
314 | #else | ||
315 | addw d0,_SDL_AtariIkbd_mousex | ||
316 | |||
317 | movel #ikbd_mousey,0x118:w | ||
318 | #endif | ||
319 | bras ikbd_endit_stack | ||
320 | |||
321 | | Mouse packet, byte #3 | ||
322 | |||
323 | ikbd_mousey: | ||
324 | #if defined(__mcoldfire__) | ||
325 | lea sp@(-12),sp | ||
326 | moveml d0-d1/a0,sp@ | ||
327 | #else | ||
328 | moveml d0-d1/a0,sp@- | ||
329 | #endif | ||
330 | |||
331 | | Check if source is IKBD or MIDI | ||
332 | #if defined(__mcoldfire__) | ||
333 | moveql #0,d0 | ||
334 | btst d0,0xfffffc00.w | ||
335 | #else | ||
336 | btst #0,0xfffffc00.w | ||
337 | #endif | ||
338 | beqs ikbd_oldmidi | ||
339 | |||
340 | moveb 0xfffffc02:w,d0 | ||
341 | extw d0 | ||
342 | #if defined(__mcoldfire__) | ||
343 | movew _SDL_AtariIkbd_mousey,d1 | ||
344 | addl d1,d0 | ||
345 | movew d0,_SDL_AtariIkbd_mousey | ||
346 | |||
347 | movel #ikbd,d0 | ||
348 | movel d0,0x118:w | ||
349 | #else | ||
350 | addw d0,_SDL_AtariIkbd_mousey | ||
351 | |||
352 | movel #ikbd,0x118:w | ||
353 | #endif | ||
354 | bras ikbd_endit_stack | ||
355 | |||
356 | | Joystick packet, byte #2 | ||
357 | |||
358 | ikbd_joystick: | ||
359 | #if defined(__mcoldfire__) | ||
360 | lea sp@(-12),sp | ||
361 | moveml d0-d1/a0,sp@ | ||
362 | #else | ||
363 | moveml d0-d1/a0,sp@- | ||
364 | #endif | ||
365 | |||
366 | | Check if source is IKBD or MIDI | ||
367 | #if defined(__mcoldfire__) | ||
368 | moveql #0,d0 | ||
369 | btst d0,0xfffffc00.w | ||
370 | #else | ||
371 | btst #0,0xfffffc00.w | ||
372 | #endif | ||
373 | beqs ikbd_oldmidi | ||
374 | |||
375 | #if defined(__mcoldfire__) | ||
376 | moveb 0xfffffc02:w,d0 | ||
377 | moveb d0,_SDL_AtariIkbd_joystick+1 | ||
378 | |||
379 | movel #ikbd,d0 | ||
380 | movel d0,0x118:w | ||
381 | |||
382 | bra ikbd_endit_stack | ||
383 | #else | ||
384 | moveb 0xfffffc02:w,_SDL_AtariIkbd_joystick+1 | ||
385 | |||
386 | movel #ikbd,0x118:w | ||
387 | |||
388 | bras ikbd_endit_stack | ||
389 | #endif | ||
390 | |||
391 | .data | ||
392 | |||
393 | .even | ||
394 | _SDL_AtariIkbd_enabled: | ||
395 | .word 0 | ||
396 | |||
397 | .bss | ||
398 | |||
399 | .even | ||
400 | .comm _SDL_AtariIkbd_keyboard,128 | ||
401 | .comm _SDL_AtariIkbd_mousex,2 | ||
402 | .comm _SDL_AtariIkbd_mousey,2 | ||
403 | .comm _SDL_AtariIkbd_mouseb,2 | ||
404 | .comm _SDL_AtariIkbd_joystick,2 | ||