Mercurial > sdl-ios-xcode
comparison src/video/ataricommon/SDL_ikbdinterrupt.S @ 1081:369dcdb52d70
Call old interrupt when receiving MIDI stuff
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Wed, 29 Jun 2005 16:18:46 +0000 |
parents | 9c6613983e85 |
children | 48436ffdf677 |
comparison
equal
deleted
inserted
replaced
1080:1988b04af19b | 1081:369dcdb52d70 |
---|---|
119 movew #0x2300,sr | 119 movew #0x2300,sr |
120 | 120 |
121 movel sp@+,a0 | 121 movel sp@+,a0 |
122 rts | 122 rts |
123 | 123 |
124 .data | 124 .bss |
125 .even | 125 |
126 .comm ikbd_ierb,4*1 | 126 .even |
127 .even | 127 .comm ikbd_ierb,1 |
128 .comm ikbd_imrb,4*1 | 128 .comm ikbd_imrb,1 |
129 | 129 |
130 /*--- Our custom IKBD vector ---*/ | 130 /*--- Our custom IKBD vector ---*/ |
131 | 131 |
132 .text | 132 .text |
133 .even | 133 .even |
134 .ascii "XBRA" | 134 .ascii "XBRA" |
135 .ascii "LSDL" | 135 .ascii "LSDL" |
136 .comm old_ikbd,4*1 | 136 .comm old_ikbd,4*1 |
137 ikbd: | 137 ikbd: |
138 | Check if source is IKBD or MIDI | |
139 | |
140 btst #0,0xfffffc00.w | |
141 beqs ikbd_oldmidi | |
142 | |
138 moveml d0-d1/a0,sp@- | 143 moveml d0-d1/a0,sp@- |
139 moveb 0xfffffc02:w,d0 | 144 moveb 0xfffffc02:w,d0 |
140 | 145 |
141 | paquet joystick ? | 146 | Joystick packet ? |
142 | 147 |
143 cmpb #0xff,d0 | 148 cmpb #0xff,d0 |
144 beq ikbd_yes_joystick | 149 beqs ikbd_yes_joystick |
145 | 150 |
146 | paquet souris ? | 151 | Mouse packet ? |
147 | 152 |
148 cmpb #0xf8,d0 | 153 cmpb #0xf8,d0 |
149 bmi ikbd_no_mouse | 154 bmis ikbd_no_mouse |
150 cmpb #0xfc,d0 | 155 cmpb #0xfc,d0 |
151 bpl ikbd_no_mouse | 156 bpls ikbd_no_mouse |
152 | 157 |
153 ikbd_yes_mouse: | 158 ikbd_yes_mouse: |
154 andw #3,d0 | 159 andw #3,d0 |
155 movew d0,_SDL_AtariIkbd_mouseb | 160 movew d0,_SDL_AtariIkbd_mouseb |
156 | 161 |
157 movel #ikbd_mousex,0x118:w | 162 movel #ikbd_mousex,0x118:w |
158 bra ikbd_endit | 163 bras ikbd_endit_stack |
159 | 164 |
160 ikbd_yes_joystick: | 165 ikbd_yes_joystick: |
161 movel #ikbd_joystick,0x118:w | 166 movel #ikbd_joystick,0x118:w |
162 bra ikbd_endit | 167 bras ikbd_endit_stack |
163 | 168 |
164 ikbd_no_mouse: | 169 ikbd_no_mouse: |
165 moveb d0,d1 | 170 moveb d0,d1 |
166 lea _SDL_AtariIkbd_keyboard,a0 | 171 lea _SDL_AtariIkbd_keyboard,a0 |
167 andl #0x7f,d1 | 172 andl #0x7f,d1 |
168 tas d0 | 173 tas d0 |
169 spl a0@(0,d1:w) | 174 spl a0@(0,d1:w) |
170 ikbd_fin: | 175 |
171 | 176 | End of interrupt |
172 | Fin interruption | 177 |
173 | 178 ikbd_endit_stack: |
179 moveml sp@+,d0-d1/a0 | |
174 ikbd_endit: | 180 ikbd_endit: |
175 moveml sp@+,d0-d1/a0 | |
176 bclr #6,0xfffffa11:w | 181 bclr #6,0xfffffa11:w |
177 rte | 182 rte |
178 | 183 |
184 | Call old MIDI interrupt | |
185 | |
186 ikbd_oldmidi: | |
187 movel old_ikbd,sp@- | |
188 rts | |
189 | |
179 ikbd_mousex: | 190 ikbd_mousex: |
180 movel d0,sp@- | 191 | Check if source is IKBD or MIDI |
192 | |
193 btst #0,0xfffffc00.w | |
194 beqs ikbd_oldmidi | |
195 | |
196 movew d0,sp@- | |
181 | 197 |
182 moveb 0xfffffc02:w,d0 | 198 moveb 0xfffffc02:w,d0 |
183 extw d0 | 199 extw d0 |
184 addw d0,_SDL_AtariIkbd_mousex | 200 addw d0,_SDL_AtariIkbd_mousex |
185 | 201 |
186 movel sp@+,d0 | 202 movew sp@+,d0 |
187 | 203 |
188 movel #ikbd_mousey,0x118:w | 204 movel #ikbd_mousey,0x118:w |
189 bclr #6,0xfffffa11:w | 205 bras ikbd_endit |
190 rte | |
191 | 206 |
192 ikbd_mousey: | 207 ikbd_mousey: |
193 movel d0,sp@- | 208 | Check if source is IKBD or MIDI |
209 | |
210 btst #0,0xfffffc00.w | |
211 beqs ikbd_oldmidi | |
212 | |
213 movew d0,sp@- | |
194 | 214 |
195 moveb 0xfffffc02:w,d0 | 215 moveb 0xfffffc02:w,d0 |
196 extw d0 | 216 extw d0 |
197 addw d0,_SDL_AtariIkbd_mousey | 217 addw d0,_SDL_AtariIkbd_mousey |
198 | 218 |
199 movel sp@+,d0 | 219 movew sp@+,d0 |
200 | 220 |
201 movel #ikbd,0x118:w | 221 movel #ikbd,0x118:w |
202 bclr #6,0xfffffa11:w | 222 bras ikbd_endit |
203 rte | |
204 | 223 |
205 ikbd_joystick: | 224 ikbd_joystick: |
225 | Check if source is IKBD or MIDI | |
226 | |
227 btst #0,0xfffffc00.w | |
228 beqs ikbd_oldmidi | |
229 | |
206 moveb 0xfffffc02:w,_SDL_AtariIkbd_joystick+1 | 230 moveb 0xfffffc02:w,_SDL_AtariIkbd_joystick+1 |
207 | 231 |
208 movel #ikbd,0x118:w | 232 movel #ikbd,0x118:w |
209 bclr #6,0xfffffa11:w | 233 bras ikbd_endit |
210 rte | |
211 | 234 |
212 .data | 235 .data |
213 | 236 |
214 .even | 237 .even |
215 _SDL_AtariIkbd_enabled: | 238 _SDL_AtariIkbd_enabled: |
216 .word 0 | 239 .word 0 |
240 | |
241 .bss | |
242 | |
217 .even | 243 .even |
218 .comm _SDL_AtariIkbd_keyboard,128 | 244 .comm _SDL_AtariIkbd_keyboard,128 |
219 .even | 245 .comm _SDL_AtariIkbd_mousex,2 |
220 .comm _SDL_AtariIkbd_mousex,2*1 | 246 .comm _SDL_AtariIkbd_mousey,2 |
221 .even | 247 .comm _SDL_AtariIkbd_mouseb,2 |
222 .comm _SDL_AtariIkbd_mousey,2*1 | 248 .comm _SDL_AtariIkbd_joystick,2 |
223 .even | |
224 .comm _SDL_AtariIkbd_mouseb,2*1 | |
225 .even | |
226 .comm _SDL_AtariIkbd_joystick,2*1 |