Mercurial > sdl-ios-xcode
annotate src/audio/mint/SDL_mintaudio_it.S @ 4389:c6c3a6e7db46 SDL-1.2
Fixed bug #899
Jeremiah Morris 2009-12-09 16:23:50 PST
Re-enable mouseLocation workaround on 10.4, 10.5
OS X systems before 10.6 have a bug with [NSEvent mouseLocation] if the screen
resolution changes. SDL_QuartzVideo.m contains a workaround for this bug, but
it was placed inside an #ifdef in revision 4762. The comment reads, "I'm
gambling they fixed this by 10.4."
After seeing this bug on several Tiger and Leopard systems (both PPC and
Intel), I can confirm that it's not fixed until 10.6. The workaround doesn't
compile for x86_64/10.6, so I can understand why it was segregated, but it
needs to remain in place for the i386 and ppc versions. The workaround causes
no problems under 10.6, even though it's not necessary there.
Patch is attached with one method of keeping the workaround active on the
systems that need it.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 11 Dec 2009 15:11:49 +0000 |
parents | 66aea42c3541 |
children |
rev | line source |
---|---|
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1 /* |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
4159 | 3 Copyright (C) 1997-2009 Sam Lantinga |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
4 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Library General Public |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
8 version 2 of the License, or (at your option) any later version. |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
9 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
13 Library General Public License for more details. |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
14 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Library General Public |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
18 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
19 Sam Lantinga |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
20 slouken@libsdl.org |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
21 */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
22 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
23 /* |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
24 Audio interrupts |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
25 |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
26 Patrice Mandin, Didier Méquignon |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
27 */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
28 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
29 .text |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
30 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
31 .globl _SDL_MintAudio_Callback |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
32 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
33 .globl _SDL_MintAudio_XbiosInterrupt |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
34 .globl _SDL_MintAudio_XbiosInterruptMeasureClock |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
35 .globl _SDL_MintAudio_Dma8Interrupt |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
36 .globl _SDL_MintAudio_StfaInterrupt |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
37 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
38 .globl _SDL_MintAudio_mutex |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
39 .globl _SDL_MintAudio_audiobuf |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
40 .globl _SDL_MintAudio_numbuf |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
41 .globl _SDL_MintAudio_audiosize |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
42 .globl _SDL_MintAudio_clocktics |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
43 .globl _SDL_MintAudio_hasfpu |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
44 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
45 .globl _SDL_MintAudio_stfa |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
46 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
47 /* |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
48 How it works: |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
49 - Audio is playing buffer #0 (resp. #1) |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
50 - We must calculate a sample in buffer #1 (resp. #0) |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
51 so we first call the callback to do it |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
52 - Then we swap the buffers |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
53 */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
54 |
1096
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
55 #define savptr 0x4a2 |
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
56 #define savamt 0x46 |
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
57 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
58 /*--- Save/restore FPU context ---*/ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
59 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
60 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
61 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
62 #define SAVE_FPU_CONTEXT \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
63 lea sp@(-216),sp; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
64 fsave sp@; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
65 fmovel fpiar,sp@-; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
66 lea sp@(-64),sp; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
67 fmovemd fp0-fp7,sp@ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
68 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
69 #define RESTORE_FPU_CONTEXT \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
70 fmovemd sp@,fp0-fp7; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
71 lea sp@(64),sp; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
72 fmovel sp@+,fpiar; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
73 frestore sp@; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
74 lea sp@(216),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
75 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
76 #else |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
77 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
78 #define SAVE_FPU_CONTEXT \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
79 .chip 68k/68881; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
80 fsave sp@-; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
81 fmoveml fpcr/fpsr/fpiar,sp@-; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
82 fmovemx fp0-fp7,sp@-; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
83 .chip 68k |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
84 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
85 #define RESTORE_FPU_CONTEXT \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
86 .chip 68k/68881; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
87 fmovemx sp@+,fp0-fp7; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
88 fmoveml sp@+,fpcr/fpsr/fpiar; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
89 frestore sp@+; \ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
90 .chip 68k |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
91 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
92 #endif |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
93 |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
94 /*--- Xbios interrupt vector to measure Falcon external clock ---*/ |
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
95 |
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
96 _SDL_MintAudio_XbiosInterruptMeasureClock: /* 1 mS */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
97 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
98 movel d0,sp@- |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
99 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
100 moveql #0,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
101 btst d0,0xFFFF8901:w /* state DMA sound */ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
102 #else |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
103 btst #0,0xFFFF8901:w /* state DMA sound */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
104 #endif |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
105 beqs SDL_MintAudio_EndIntMeasure |
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
106 addql #1,_SDL_MintAudio_clocktics |
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
107 SDL_MintAudio_EndIntMeasure: |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
108 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
109 moveql #5,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
110 bclr d0,0xFFFFFA0F:w /* Clear service bit */ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
111 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
112 movel sp@+,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
113 #else |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
114 bclr #5,0xFFFFFA0F:w /* Clear service bit */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
115 #endif |
961
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
116 rte |
185acc07127a
Date: Fri, 29 Oct 2004 11:47:09 +0200
Patrice Mandin <patmandin@gmail.com>
parents:
704
diff
changeset
|
117 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
118 /*--- Xbios interrupt vector ---*/ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
119 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
120 _SDL_MintAudio_XbiosInterrupt: |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
121 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
122 lea sp@(-60),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
123 moveml d0-d7/a0-a6,sp@ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
124 #else |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
125 moveml d0-d7/a0-a6,sp@- |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
126 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
127 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
128 /* Reenable interrupts, so other interrupts can work */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
129 movew #0x2300,sr |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
130 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
131 /* Clear service bit, so other MFP interrupts can work */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
132 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
133 moveql #5,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
134 bclr d0,0xfffffa0f:w |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
135 #else |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
136 bclr #5,0xfffffa0f:w |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
137 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
138 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
139 /* Check if we are not already running */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
140 tstw _SDL_MintAudio_mutex |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
141 bne SDL_MintAudio_XbiosEnd |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
142 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
143 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
144 movew _SDL_MintAudio_mutex,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
145 notl d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
146 movew d0,_SDL_MintAudio_mutex |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
147 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
148 movew _SDL_MintAudio_numbuf,d1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
149 eorl #1,d1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
150 movew d1,_SDL_MintAudio_numbuf |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
151 #else |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
152 notw _SDL_MintAudio_mutex |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
153 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
154 /* Swap buffers */ |
704 | 155 eorw #1,_SDL_MintAudio_numbuf |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
156 #endif |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
157 |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
158 /* Save FPU if needed */ |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
159 tstw _SDL_MintAudio_hasfpu |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
160 beqs SDL_MintAudio_Xbios_nofpu1 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
161 SAVE_FPU_CONTEXT |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
162 SDL_MintAudio_Xbios_nofpu1: |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
163 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
164 /* Callback */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
165 jsr _SDL_MintAudio_Callback |
704 | 166 |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
167 /* Restore FPU if needed */ |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
168 tstw _SDL_MintAudio_hasfpu |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
169 beqs SDL_MintAudio_Xbios_nofpu2 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
170 RESTORE_FPU_CONTEXT |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
171 SDL_MintAudio_Xbios_nofpu2: |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
172 |
1096
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
173 /* Reserve space for registers */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
174 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
175 movel #savamt,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
176 subl d0,savptr |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
177 #else |
1096
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
178 subl #savamt,savptr |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
179 #endif |
1096
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
180 |
704 | 181 /* Set new buffer */ |
182 | |
183 moveq #0,d0 | |
184 movel _SDL_MintAudio_audiosize,d1 | |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
185 |
704 | 186 movew _SDL_MintAudio_numbuf,d0 |
187 lsll #2,d0 | |
188 lea _SDL_MintAudio_audiobuf,a0 | |
189 movel a0@(d0:l),a1 | |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
190 |
704 | 191 lea a1@(d1:l),a2 |
192 | |
193 movel a2,sp@- | |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
194 movel a1,sp@- |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
195 clrw sp@- |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
196 movew #131,sp@- |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
197 trap #14 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
198 lea sp@(12),sp |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
199 |
1096
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
200 /* Restore registers space */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
201 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
202 movel #savamt,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
203 addl d0,savptr |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
204 #else |
1096
37b766becf3b
Reserve space in system buffer to call XBIOS from interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
1093
diff
changeset
|
205 addl #savamt,savptr |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
206 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
207 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
208 clrw _SDL_MintAudio_mutex |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
209 SDL_MintAudio_XbiosEnd: |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
210 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
211 moveml sp@,d0-d7/a0-a6 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
212 lea sp@(60),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
213 #else |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
214 moveml sp@+,d0-d7/a0-a6 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
215 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
216 rte |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
217 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
218 /*--- DMA 8 bits interrupt vector ---*/ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
219 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
220 _SDL_MintAudio_Dma8Interrupt: |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
221 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
222 lea sp@(-16),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
223 moveml d0-d1/a0-a1,sp@ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
224 #else |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
225 moveml d0-d1/a0-a1,sp@- |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
226 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
227 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
228 /* Reenable interrupts, so other interrupts can work */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
229 movew #0x2300,sr |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
230 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
231 /* Clear service bit, so other MFP interrupts can work */ |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
232 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
233 moveql #5,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
234 bclr d0,0xfffffa0f:w |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
235 #else |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
236 bclr #5,0xfffffa0f:w |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
237 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
238 /* Check if we are not already running */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
239 tstw _SDL_MintAudio_mutex |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
240 bne SDL_MintAudio_Dma8End |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
241 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
242 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
243 movew _SDL_MintAudio_mutex,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
244 notl d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
245 movew d0,_SDL_MintAudio_mutex |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
246 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
247 movew _SDL_MintAudio_numbuf,d1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
248 eorl #1,d1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
249 movew d1,_SDL_MintAudio_numbuf |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
250 #else |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
251 notw _SDL_MintAudio_mutex |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
252 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
253 /* Swap buffers */ |
704 | 254 eorw #1,_SDL_MintAudio_numbuf |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
255 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
256 |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
257 /* Save FPU if needed */ |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
258 tstw _SDL_MintAudio_hasfpu |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
259 beqs SDL_MintAudio_Dma8_nofpu1 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
260 SAVE_FPU_CONTEXT |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
261 SDL_MintAudio_Dma8_nofpu1: |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
262 |
704 | 263 /* Callback */ |
264 jsr _SDL_MintAudio_Callback | |
265 | |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
266 /* Restore FPU if needed */ |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
267 tstw _SDL_MintAudio_hasfpu |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
268 beqs SDL_MintAudio_Dma8_nofpu2 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
269 RESTORE_FPU_CONTEXT |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
270 SDL_MintAudio_Dma8_nofpu2: |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
271 |
704 | 272 /* Set new buffer */ |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
273 |
704 | 274 moveq #0,d0 |
275 | |
276 movew _SDL_MintAudio_numbuf,d0 | |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
277 lsll #2,d0 |
704 | 278 lea _SDL_MintAudio_audiobuf,a0 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
279 movel a0@(d0:l),d1 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
280 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
281 /* Modify DMA addresses */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
282 lea 0xffff8900:w,a0 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
283 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
284 movel d1,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
285 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
286 moveb d0,a0@(0x07) /* Start address */ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
287 lsrl #8,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
288 moveb d0,a0@(0x05) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
289 lsrl #8,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
290 moveb d0,a0@(0x03) |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
291 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
292 addl _SDL_MintAudio_audiosize,d1 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
293 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
294 movel d1,d0 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
295 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
296 moveb d0,a0@(0x13) /* End address */ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
297 lsrl #8,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
298 moveb d0,a0@(0x11) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
299 lsrl #8,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
300 moveb d0,a0@(0x0f) |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
301 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
302 clrw _SDL_MintAudio_mutex |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
303 SDL_MintAudio_Dma8End: |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
304 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
305 moveml sp@,d0-d1/a0-a1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
306 lea sp@(16),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
307 #else |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
308 moveml sp@+,d0-d1/a0-a1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
309 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
310 rte |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
311 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
312 /*--- STFA interrupt vector ---*/ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
313 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
314 STFA_SOUND_START = 6 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
315 STFA_SOUND_END = STFA_SOUND_START+8 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
316 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
317 _SDL_MintAudio_StfaInterrupt: |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
318 /* Reenable interrupts, so other interrupts can work */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
319 movew #0x2300,sr |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
320 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
321 /* Check if we are not already running */ |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
322 tstw _SDL_MintAudio_mutex |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
323 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
324 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
325 bne SDL_MintAudio_StfaEnd |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
326 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
327 lea sp@(-60),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
328 moveml d0-d7/a0-a6,sp@ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
329 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
330 movew _SDL_MintAudio_mutex,d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
331 notl d0 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
332 movew d0,_SDL_MintAudio_mutex |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
333 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
334 movew _SDL_MintAudio_numbuf,d1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
335 eorl #1,d1 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
336 movew d1,_SDL_MintAudio_numbuf |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
337 #else |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
338 bnes SDL_MintAudio_StfaEnd |
704 | 339 |
1093
d00b4d8508ab
Save all registers on interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
961
diff
changeset
|
340 moveml d0-d7/a0-a6,sp@- |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
341 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
342 notw _SDL_MintAudio_mutex |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
343 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
344 /* Swap buffers */ |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
345 eorw #1,_SDL_MintAudio_numbuf |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
346 #endif |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
347 |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
348 /* Save FPU if needed */ |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
349 tstw _SDL_MintAudio_hasfpu |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
350 beqs SDL_MintAudio_Stfa_nofpu1 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
351 SAVE_FPU_CONTEXT |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
352 SDL_MintAudio_Stfa_nofpu1: |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
353 |
704 | 354 /* Callback */ |
355 jsr _SDL_MintAudio_Callback | |
356 | |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
357 /* Restore FPU if needed */ |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
358 tstw _SDL_MintAudio_hasfpu |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
359 beqs SDL_MintAudio_Stfa_nofpu2 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
360 RESTORE_FPU_CONTEXT |
3866
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
361 SDL_MintAudio_Stfa_nofpu2: |
afbcf97a5dd9
Save/restore fpu registers if needed
Patrice Mandin <patmandin@gmail.com>
parents:
3864
diff
changeset
|
362 |
704 | 363 /* Set new buffer */ |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
364 |
704 | 365 moveq #0,d0 |
366 movel _SDL_MintAudio_stfa,a1 | |
367 | |
368 movew _SDL_MintAudio_numbuf,d0 | |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
369 lsll #2,d0 |
704 | 370 lea _SDL_MintAudio_audiobuf,a0 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
371 movel a0@(d0:l),d1 |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
372 |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
373 /* Modify STFA replay buffers */ |
704 | 374 movel d1,a1@(STFA_SOUND_START) |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
375 addl _SDL_MintAudio_audiosize,d1 |
704 | 376 movel d1,a1@(STFA_SOUND_END) |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
377 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
378 #if defined(__mcoldfire__) |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
379 moveml sp@,d0-d7/a0-a6 |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
380 lea sp@(60),sp |
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
381 #else |
1093
d00b4d8508ab
Save all registers on interrupt
Patrice Mandin <patmandin@gmail.com>
parents:
961
diff
changeset
|
382 moveml sp@+,d0-d7/a0-a6 |
4380
66aea42c3541
Adapt audio interrupts for Coldfire
Patrice Mandin <patmandin@gmail.com>
parents:
4159
diff
changeset
|
383 #endif |
644
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
384 clrw _SDL_MintAudio_mutex |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
385 SDL_MintAudio_StfaEnd: |
594422ab8f9f
Atari MiNT: added more audio drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
386 rte |