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

📄 sdl_ikbdinterrupt.s

📁 Simple DirectMedia Layer - Simple DirectMedia Layer 是一个跨平台的多媒体库设计用来提供快速图形framebuffer和音频驱动。应用MPEG为软件
💻 S
字号:
/*    SDL - Simple DirectMedia Layer    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Sam Lantinga    slouken@libsdl.org*/#ifdef SAVE_RCSIDstatic char rcsid = "@(#) $Id: SDL_ikbdinterrupt.S,v 1.4 2002/03/10 03:33:58 slouken Exp $";#endif/* *	IKBD 6301 interrupt routine * *	Patrice Mandin */	.text	.globl	_SDL_AtariIkbdInstall	.globl	_SDL_AtariIkbdUninstall	.globl	_SDL_AtariIkbd_keyboard	.globl	_SDL_AtariIkbd_mouseb	.globl	_SDL_AtariIkbd_mousex	.globl	_SDL_AtariIkbd_mousey	.globl	_SDL_AtariIkbd_joystick	.globl	_SDL_AtariIkbd_enabled/*--- Install our IKBD vector ---*/_SDL_AtariIkbdInstall:	moveml	d0-d1/a0-a1,sp@-	| Init interrupts	movew	#0x2700,sr	| Save MFP registers used for keyboard	lea	0xfffffa00:w,a0	btst	#6,a0@(0x09)	sne	ikbd_ierb	btst	#6,a0@(0x15)	sne	ikbd_imrb	| Set our routine	movel	0x118:w,old_ikbd	movel	#ikbd,0x118:w	bset	#6,0xfffffa09:w	| IERB	bset	#6,0xfffffa15:w	| IMRB	moveb	#8,0xfffffc02:w	movew	#0x2300,sr	| Interrupts done	movew	#0xffff,_SDL_AtariIkbd_enabled	moveml	sp@+,d0-d1/a0-a1	rts/*--- Uninstall our IKBD vector ---*/_SDL_AtariIkbdUninstall:	movel	a0,sp@-	| Stop interrupt	movew	#0x2700,sr	| Restore previous MFP registers	lea	0xfffffa00:w,a0	bclr	#6,a0@(0x09)	tstb	ikbd_ierb	beq	ikbd_restoreierb	bset	#6,a0@(0x09)ikbd_restoreierb:	bclr	#6,a0@(0x15)	tstb	ikbd_imrb	beq	ikbd_restoreimrb	bset	#6,a0@(0x15)ikbd_restoreimrb:	movel	old_ikbd,0x118:w	| Clear keyboard buffer	lea	0xfffffc00:w,a0ikbd_videbuffer:	btst	#0,a0@	beq	ikbd_finbuffer	tstb	a0@(0x02)	bra	ikbd_videbufferikbd_finbuffer:	movew	#0x2300,sr	movel	sp@+,a0	rts	.data	.even	.comm	ikbd_ierb,4*1	.even	.comm	ikbd_imrb,4*1/*--- Our custom IKBD vector ---*/	.text	.even	.ascii	"XBRA"	.ascii	"LSDL"	.comm	old_ikbd,4*1ikbd:	moveml	d0-d1/a0,sp@-	moveb	0xfffffc02:w,d0	| paquet joystick ?		cmpb	#0xff,d0	beq	ikbd_yes_joystick	| paquet souris ?	cmpb	#0xf8,d0	bmi	ikbd_no_mouse	cmpb	#0xfc,d0	bpl	ikbd_no_mouseikbd_yes_mouse:	andw	#3,d0	movew	d0,_SDL_AtariIkbd_mouseb	movel	#ikbd_mousex,0x118:w	bra	ikbd_enditikbd_yes_joystick:	movel	#ikbd_joystick,0x118:w	bra	ikbd_enditikbd_no_mouse:	moveb	d0,d1	lea	_SDL_AtariIkbd_keyboard,a0	andl	#0x7f,d1	tas	d0	spl	a0@(0,d1:w)ikbd_fin:	| Fin interruptionikbd_endit:	moveml	sp@+,d0-d1/a0	bclr	#6,0xfffffa11:w	rteikbd_mousex:	movel	d0,sp@-	moveb	0xfffffc02:w,d0	extw	d0	addw	d0,_SDL_AtariIkbd_mousex	movel	sp@+,d0	movel	#ikbd_mousey,0x118:w	bclr	#6,0xfffffa11:w	rteikbd_mousey:	movel	d0,sp@-	moveb	0xfffffc02:w,d0	extw	d0	addw	d0,_SDL_AtariIkbd_mousey	movel	sp@+,d0	movel	#ikbd,0x118:w	bclr	#6,0xfffffa11:w	rteikbd_joystick:	moveb	0xfffffc02:w,_SDL_AtariIkbd_joystick+1	movel	#ikbd,0x118:w	bclr	#6,0xfffffa11:w	rte	.data		.even_SDL_AtariIkbd_enabled:	.word	0	.even	.comm	_SDL_AtariIkbd_keyboard,128	.even	.comm	_SDL_AtariIkbd_mousex,2*1	.even	.comm	_SDL_AtariIkbd_mousey,2*1	.even	.comm	_SDL_AtariIkbd_mouseb,2*1	.even	.comm	_SDL_AtariIkbd_joystick,2*1

⌨️ 快捷键说明

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