--- a/src/video/ataricommon/SDL_ikbdinterrupt.S Fri Nov 06 21:17:16 2009 +0000
+++ b/src/video/ataricommon/SDL_ikbdinterrupt.S Fri Nov 06 22:32:16 2009 +0000
@@ -42,7 +42,12 @@
/*--- Install our IKBD vector ---*/
_SDL_AtariIkbdInstall:
+#if defined(__mcoldfire__)
+ lea sp@(-16),sp
+ moveml d0-d1/a0-a1,sp@
+#else
moveml d0-d1/a0-a1,sp@-
+#endif
| Disable interrupts
@@ -52,20 +57,42 @@
lea 0xfffffa00:w,a0
btst #6,a0@(0x09)
- sne ikbd_ierb
+#if defined(__mcoldfire__)
+ sne d0
+ move.b d0,ikbd_ierb
+#else
+ sne ikbd_ierb
+#endif
btst #6,a0@(0x15)
- sne ikbd_imrb
+#if defined(__mcoldfire__)
+ sne d0
+ move.b d0,ikbd_imrb
+#else
+ sne ikbd_imrb
+#endif
| Set our routine
+#if defined(__mcoldfire__)
+ movel 0x118:w,d0
+ movel d0,old_ikbd
+ lea ikbd,a0
+ movel a0,0x118:w
+#else
movel 0x118:w,old_ikbd
movel #ikbd,0x118:w
bset #6,0xfffffa09:w | IERB
bset #6,0xfffffa15:w | IMRB
+#endif
| Set mouse relative mode
+#if defined(__mcoldfire__)
+ moveql #8,d0
+ moveb d0,0xfffffc02:w
+#else
moveb #8,0xfffffc02:w
+#endif
| Reenable interrupts
@@ -73,9 +100,17 @@
| Interrupts done
+#if defined(__mcoldfire__)
+ movel #0xffff,d0
+ movew d0,_SDL_AtariIkbd_enabled
+
+ moveml sp@,d0-d1/a0-a1
+ lea sp@(16),sp
+#else
movew #0xffff,_SDL_AtariIkbd_enabled
moveml sp@+,d0-d1/a0-a1
+#endif
rts
/*--- Uninstall our IKBD vector ---*/
@@ -103,7 +138,12 @@
bset #6,a0@(0x15)
ikbd_restoreimrb:
+#if defined(__mcoldfire__)
+ movel old_ikbd,a0
+ movel a0,0x118:w
+#else
movel old_ikbd,0x118:w
+#endif
| Clear keyboard buffer
@@ -136,11 +176,22 @@
.ascii "LSDL"
.comm old_ikbd,4*1
ikbd:
+#if defined(__mcoldfire__)
+ lea sp@(-12),sp
+ moveml sp@,d0-d1/a0
+#else
+ moveml d0-d1/a0,sp@-
+#endif
+
| Check if source is IKBD or MIDI
+#if defined(__mcoldfire__)
+ moveql #0,d0
+ btst d0,0xfffffc00.w
+#else
btst #0,0xfffffc00.w
+#endif
beqs ikbd_oldmidi
- moveml d0-d1/a0,sp@-
moveb 0xfffffc02:w,d0
| Joystick packet ?
@@ -158,16 +209,30 @@
| Mouse packet, byte #1
ikbd_yes_mouse:
+#if defined(__mcoldfire__)
+ andl #3,d0
+#else
andw #3,d0
+#endif
movew d0,_SDL_AtariIkbd_mouseb
+#if defined(__mcoldfire__)
+ movel #ikbd_mousex,d0
+ movel d0,0x118:w
+#else
movel #ikbd_mousex,0x118:w
+#endif
bras ikbd_endit_stack
| Joystick packet, byte #1
ikbd_yes_joystick:
+#if defined(__mcoldfire__)
+ movel #ikbd_joystick,d0
+ movel d0,0x118:w
+#else
movel #ikbd_joystick,0x118:w
+#endif
bras ikbd_endit_stack
| Keyboard press/release
@@ -175,74 +240,150 @@
ikbd_no_mouse:
moveb d0,d1
lea _SDL_AtariIkbd_keyboard,a0
+#if defined(__mcoldfire__)
+ andl #0x7f,d1
+ btst #7,d0
+ spl d0
+ moveb d0,a0@(0,d1:l)
+#else
andw #0x7f,d1
- tas d0
- spl a0@(0,d1:w)
+ tas d0
+ spl a0@(0,d1:w)
+#endif
| End of interrupt
ikbd_endit_stack:
+#if defined(__mcoldfire__)
+ moveql #6,d0
+ bclr d0,0xfffffa11:w
+
+ moveml sp@,d0-d1/a0
+ lea sp@(12),sp
+#else
moveml sp@+,d0-d1/a0
-ikbd_endit:
+
bclr #6,0xfffffa11:w
+#endif
rte
| Call old MIDI interrupt
ikbd_oldmidi:
+#if defined(__mcoldfire__)
+ moveml sp@,d0-d1/a0
+ lea sp@(12),sp
+#else
+ moveml sp@+,d0-d1/a0
+#endif
+
movel old_ikbd,sp@-
rts
| Mouse packet, byte #2
ikbd_mousex:
+#if defined(__mcoldfire__)
+ lea sp@(-12),sp
+ moveml sp@,d0-d1/a0
+#else
+ moveml d0-d1/a0,sp@-
+#endif
| Check if source is IKBD or MIDI
+#if defined(__mcoldfire__)
+ moveql #0,d0
+ btst d0,0xfffffc00.w
+#else
btst #0,0xfffffc00.w
+#endif
beqs ikbd_oldmidi
- movew d0,sp@-
-
moveb 0xfffffc02:w,d0
extw d0
+#if defined(__mcoldfire__)
+ movew _SDL_AtariIkbd_mousex,d1
+ addl d1,d0
+ movew d0,_SDL_AtariIkbd_mousex
+
+ movel #ikbd_mousey,d0
+ movel d0,0x118:w
+#else
addw d0,_SDL_AtariIkbd_mousex
- movew sp@+,d0
-
movel #ikbd_mousey,0x118:w
- bras ikbd_endit
+#endif
+ bras ikbd_endit_stack
| Mouse packet, byte #3
ikbd_mousey:
+#if defined(__mcoldfire__)
+ lea sp@(-12),sp
+ moveml sp@,d0-d1/a0
+#else
+ moveml d0-d1/a0,sp@-
+#endif
| Check if source is IKBD or MIDI
+#if defined(__mcoldfire__)
+ moveql #0,d0
+ btst d0,0xfffffc00.w
+#else
btst #0,0xfffffc00.w
+#endif
beqs ikbd_oldmidi
- movew d0,sp@-
-
moveb 0xfffffc02:w,d0
extw d0
+#if defined(__mcoldfire__)
+ movew _SDL_AtariIkbd_mousey,d1
+ addl d1,d0
+ movew d0,_SDL_AtariIkbd_mousey
+
+ movel #ikbd,d0
+ movel d0,0x118:w
+#else
addw d0,_SDL_AtariIkbd_mousey
- movew sp@+,d0
-
movel #ikbd,0x118:w
- bras ikbd_endit
+#endif
+ bras ikbd_endit_stack
| Joystick packet, byte #2
ikbd_joystick:
+#if defined(__mcoldfire__)
+ lea sp@(-12),sp
+ moveml sp@,d0-d1/a0
+#else
+ moveml d0-d1/a0,sp@-
+#endif
| Check if source is IKBD or MIDI
+#if defined(__mcoldfire__)
+ moveql #0,d0
+ btst d0,0xfffffc00.w
+#else
btst #0,0xfffffc00.w
+#endif
beqs ikbd_oldmidi
+#if defined(__mcoldfire__)
+ moveb 0xfffffc02:w,d0
+ moveb d0,_SDL_AtariIkbd_joystick+1
+
+ movel #ikbd,d0
+ movel d0,0x118:w
+
+ bra ikbd_endit_stack
+#else
moveb 0xfffffc02:w,_SDL_AtariIkbd_joystick+1
movel #ikbd,0x118:w
- bras ikbd_endit
+
+ bras ikbd_endit_stack
+#endif
.data