1/* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2006 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 * XBIOS mouse & joystick vectors 25 * 26 * Patrice Mandin 27 */ 28 29 .text 30 31 .globl _SDL_AtariXbios_Install 32 .globl _SDL_AtariXbios_Restore 33 .globl _SDL_AtariXbios_MouseVector 34 .globl _SDL_AtariXbios_JoystickVector 35 36 .globl _SDL_AtariXbios_mouselock 37 .globl _SDL_AtariXbios_mouseb 38 .globl _SDL_AtariXbios_mousex 39 .globl _SDL_AtariXbios_mousey 40 .globl _SDL_AtariXbios_joystick 41 42/*--- Vector installer ---*/ 43 44_SDL_AtariXbios_Install: 45 movel sp@(4),a0 46 47 /* Stop interrupts */ 48 49 movew #0x2700,sr 50 51 /* Save old mouse vector, set our routine */ 52 53 clrl oldmousevector 54 movel sp@(8),d0 55 beqs no_new_mouse_vector 56 movel a0@(16),oldmousevector 57 movel d0,a0@(16) 58no_new_mouse_vector: 59 60 /* Save old joystick vector, set our routine */ 61 62 clrl oldjoystickvector 63 movel sp@(12),d0 64 beqs no_new_joystick_vector 65 movel a0@(24),oldjoystickvector 66 movel d0,a0@(24) 67no_new_joystick_vector: 68 69 /* Restart interrupts */ 70 71 movew #0x2300,sr 72 73 rts 74 75/*--- Vector restorer ---*/ 76 77_SDL_AtariXbios_Restore: 78 movel sp@(4),a0 79 80 /* Stop interrupts */ 81 82 movew #0x2700,sr 83 84 /* Restore mouse vector */ 85 86 movel oldmousevector,d0 87 beqs no_restore_mouse 88 movel d0,a0@(16) 89no_restore_mouse: 90 91 /* Restore joystick vector */ 92 93 movel oldjoystickvector,d0 94 beqs no_restore_joystick 95 movel d0,a0@(24) 96no_restore_joystick: 97 98 /* Restart interrupts */ 99 100 movew #0x2300,sr 101 102 rts 103 104/*--- Our mouse vector ---*/ 105 106 .text 107 .even 108 .ascii "XBRA" 109 .ascii "LSDL" 110 .comm oldmousevector,4*1 111_SDL_AtariXbios_MouseVector: 112 movel d0,sp@- 113 114 /* Mouse buttons */ 115 moveb (a0),d0 116 andw #3,d0 117 movew d0,_SDL_AtariXbios_mouseb 118 119 /* X movement */ 120 moveb a0@(1),d0 121 extw d0 122 addw d0,_SDL_AtariXbios_mousex 123 124 /* Y movement */ 125 moveb a0@(2),d0 126 extw d0 127 addw d0,_SDL_AtariXbios_mousey 128 129 /* Lock mouse position ? */ 130 tstw _SDL_AtariXbios_mouselock 131 beq.s no_mouse_lock 132 clrb a0@(1) 133 clrb a0@(2) 134no_mouse_lock: 135 136 /* Jump through old vector */ 137 movel sp@+,d0 138 139 movel oldmousevector,sp@- 140 rts 141 142 .data 143 .even 144 .comm _SDL_AtariXbios_mouselock,2*1 145 .comm _SDL_AtariXbios_mousex,2*1 146 .comm _SDL_AtariXbios_mousey,2*1 147 .comm _SDL_AtariXbios_mouseb,2*1 148 149/*--- Our joystick vector ---*/ 150 151 .text 152 .even 153 .ascii "XBRA" 154 .ascii "LSDL" 155 .comm oldjoystickvector,4*1 156_SDL_AtariXbios_JoystickVector: 157 movel d0,sp@- 158 159 /* New joystick state */ 160 moveb a0@(2),d0 161 andw #0x8f,d0 162 movew d0,_SDL_AtariXbios_joystick 163 164 /* Jump through old vector */ 165 movel sp@+,d0 166 167 movel oldjoystickvector,sp@- 168 rts 169 170 .data 171 .even 172 .comm _SDL_AtariXbios_joystick,2*1 173