Mercurial > sdl-ios-xcode
diff src/video/ataricommon/SDL_ikbdinterrupt.S @ 4376:40e4536ad0c3 SDL-1.2
Adapt IKBD asm routine for Coldfire
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Fri, 06 Nov 2009 22:32:16 +0000 |
parents | a1b03ba2fcd0 |
children | c92927bd421a |
line wrap: on
line diff
--- 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