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