⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdl_mintaudiointerrupt.s

📁 网络MPEG4IP流媒体开发源代码
💻 S
字号:
/* *	Audio interrupt routines * *	Patrice Mandin */	.text	.globl	_SDL_MintAudio_Callback	.globl	_SDL_MintAudio_IntDma	.globl	_SDL_MintAudio_IntXbios	.globl	_SDL_MintAudio_IntGsxb	.globl	_SDL_MintAudio_mutex	.globl	_SDL_MintAudio_audiobuf	.globl	_SDL_MintAudio_numbuf	.globl	_SDL_MintAudio_audiosize/*	How it works:	- Audio is playing buffer #0 (resp. #1)	- We must calculate a sample in buffer #1 (resp. #0)	  so we first call the callback to do it	- Then we swap the buffers*//*--- DMA 8 bits interrupt vector ---*/	.text_SDL_MintAudio_IntDma:	/* Reenable interrupts, so other interrupts can work */	movew	#0x2300,sr	/* Clear service bit, so other MFP interrupts can work */	bclr	#5,0xfffffa0f:w	/* Check if we are not already running */	tstw	_SDL_MintAudio_mutex	bnes	intdma_end	notw	_SDL_MintAudio_mutex		/* Swap buffers */	moveml	d0-d1/a0-a1,sp@-	movel	_SDL_MintAudio_numbuf,d0	movel	_SDL_MintAudio_audiobuf,d1	eorl	#1,d0	beqs	intdma_buffer0	movel	_SDL_MintAudio_audiobuf+4,d1intdma_buffer0:	movel	d0,_SDL_MintAudio_numbuf	/* Callback */	movel	d1,sp@-	jsr	_SDL_MintAudio_Callback	movel	sp@+,d1	/* Modify DMA addresses */	lea	0xffff8900:w,a0	moveb	d1,a0@(0x07)	/* Start address */	rorl	#8,d1	moveb	d1,a0@(0x05)	rorl	#8,d1	moveb	d1,a0@(0x03)	swap	d1	addl	_SDL_MintAudio_audiosize,d1	moveb	d1,a0@(0x13)	/* End address */	rorl	#8,d1	moveb	d1,a0@(0x11)	rorl	#8,d1	moveb	d1,a0@(0x0f)	moveml	sp@+,d0-d1/a0-a1	clrw	_SDL_MintAudio_mutexintdma_end:	rte/*--- Xbios interrupt vector ---*/	.text_SDL_MintAudio_IntXbios:	/* Reenable interrupts, so other interrupts can work */	movew	#0x2300,sr	/* Clear service bit, so other MFP interrupts can work */	bclr	#5,0xfffffa0f:w	/* Check if we are not already running */	tstw	_SDL_MintAudio_mutex	bnes	intxbios_end	notw	_SDL_MintAudio_mutex		/* Swap buffers */	moveml	d0-d2/a0-a2,sp@-	movel	_SDL_MintAudio_numbuf,d0	movel	_SDL_MintAudio_audiobuf,a0	eorl	#1,d0	beqs	intxbios_buffer0	movel	_SDL_MintAudio_audiobuf+4,a0intxbios_buffer0:	movel	d0,_SDL_MintAudio_numbuf	/* Callback */	moveml	a0,sp@-	jsr	_SDL_MintAudio_Callback	moveml	sp@+,a0	/* Setbuffer xbios function */	movel	_SDL_MintAudio_audiosize,d1	lea	a0@(0,d1:l),a1	movel	a1,sp@-	movel	a0,sp@-	clrw	sp@-	movew	#131,sp@-	trap	#14	lea	sp@(12),sp	moveml	sp@+,d0-d2/a0-a2	clrw	_SDL_MintAudio_mutexintxbios_end:	rte/*--- GSXB interrupt vector ---*/	.text_SDL_MintAudio_IntGsxb:	/* Check if we are not already running */	tstw	_SDL_MintAudio_mutex	bnes	intgsxb_end	notw	_SDL_MintAudio_mutex	/* Swap buffers */	moveml	d0-d2/a0-a2,sp@-	movel	_SDL_MintAudio_numbuf,d0	movel	_SDL_MintAudio_audiobuf,a0	eorl	#1,d0	beqs	intgsxb_buffer0	movel	_SDL_MintAudio_audiobuf+4,a0intgsxb_buffer0:	movel	d0,_SDL_MintAudio_numbuf	/* Callback */	moveml	a0,sp@-	jsr	_SDL_MintAudio_Callback	moveml	sp@+,a0	/* Setbuffer xbios function */	movel	_SDL_MintAudio_audiosize,d1	lea	a0@(0,d1:l),a1	movel	a1,sp@-	movel	a0,sp@-	clrw	sp@-	movew	#131,sp@-	trap	#14	lea	sp@(12),sp	moveml	sp@+,d0-d2/a0-a2	clrw	_SDL_MintAudio_mutexintgsxb_end:	rts/*--- Common variables ---*/	.data	.even	.comm	_SDL_MintAudio_mutex,4	.even	.comm	_SDL_MintAudio_audiobuf,8	.even	.comm	_SDL_MintAudio_numbuf,4	.even	.comm	_SDL_MintAudio_audiosize,4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -