home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Enigma Amiga Life 113
/
EnigmaAmiga113CD.iso
/
software
/
sviluppo
/
glquake_src
/
in_amigamouse68k.s
< prev
next >
Wrap
Text File
|
2000-01-30
|
3KB
|
111 lines
*
* Copyright (C) 1996-1997 Id Software, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
**
** Input interrupt routine for mouse control
**
** used for M68k as well as for PowerPC
**
incdir "StormC:ASM-Include/"
include "exec/types.i"
include "devices/inputevent.i"
STRUCTURE InputIntDat,0
; must be the same as struct InputIntDat in in_amigamouse.c
ULONG iid_LeftButtonDown
ULONG iid_MidButtonDown
ULONG iid_RightButtonDown
ULONG iid_LeftButtonUp
ULONG iid_MidButtonUp
ULONG iid_RightButtonUp
ULONG iid_MouseX
ULONG iid_MouseY
ULONG iid_MouseSpeed
code
xdef _InputIntCode
xdef InputIntCode
_InputIntCode:
InputIntCode:
move.l a0,-(sp)
move.l iid_MouseSpeed(a1),d1
.loop:
cmp.b #IECLASS_RAWMOUSE,ie_Class(a0)
bne.b .next
move.w ie_Code(a0),d0
btst #7,d0
bne.b .up
cmp.w #IECODE_LBUTTON,d0
beq.b .lmb_down
cmp.w #IECODE_MBUTTON,d0
beq.b .mmb_down
cmp.w #IECODE_RBUTTON,d0
beq.b .rmb_down
bra.b .move
.up:
and.w #$007f,d0
cmp.w #IECODE_LBUTTON,d0
beq.b .lmb_up
cmp.w #IECODE_MBUTTON,d0
beq.b .mmb_up
cmp.w #IECODE_RBUTTON,d0
beq.b .rmb_up
bra.b .move
.lmb_down:
move.l #-1,iid_LeftButtonDown(a1)
clr.l iid_LeftButtonUp(a1)
bra.b .move
.mmb_down:
move.l #-1,iid_MidButtonDown(a1)
clr.l iid_MidButtonUp(a1)
bra.b .move
.rmb_down:
move.l #-1,iid_RightButtonDown(a1)
clr.l iid_RightButtonUp(a1)
bra.b .move
.lmb_up:
move.l #-1,iid_LeftButtonUp(a1)
clr.l iid_LeftButtonDown(a1)
bra.b .move
.mmb_up:
move.l #-1,iid_MidButtonUp(a1)
clr.l iid_MidButtonDown(a1)
bra.b .move
.rmb_up:
move.l #-1,iid_RightButtonUp(a1)
clr.l iid_RightButtonDown(a1)
.move:
move.w ie_X(a0),d0
muls d1,d0
move.l d0,iid_MouseX(a1)
move.w ie_Y(a0),d0
muls d1,d0
move.l d0,iid_MouseY(a1)
.next:
move.l ie_NextEvent(a0),d0
move.l d0,a0
bne.b .loop
move.l (sp)+,d0
rts