Skip to content

Latest commit

 

History

History
147 lines (114 loc) · 3.22 KB

SDL_xbiosevents.c

File metadata and controls

147 lines (114 loc) · 3.22 KB
 
1
2
/*
SDL - Simple DirectMedia Layer
Feb 1, 2006
Feb 1, 2006
3
Copyright (C) 1997-2006 Sam Lantinga
4
5
This library is free software; you can redistribute it and/or
Feb 1, 2006
Feb 1, 2006
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation; either
Feb 1, 2006
Feb 1, 2006
8
version 2.1 of the License, or (at your option) any later version.
9
10
11
12
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
Feb 1, 2006
Feb 1, 2006
13
Lesser General Public License for more details.
Feb 1, 2006
Feb 1, 2006
15
16
17
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
20
21
22
23
Sam Lantinga
slouken@libsdl.org
*/
/*
Mar 10, 2002
Mar 10, 2002
24
* XBIOS mouse & joystick vectors
25
26
27
28
29
30
31
*
* Patrice Mandin
*/
#include <mint/osbind.h>
#include "SDL_events_c.h"
Mar 10, 2002
Mar 10, 2002
32
33
#include "SDL_xbiosevents_c.h"
#include "SDL_xbiosinterrupt_s.h"
34
35
36
/* Variables */
Mar 10, 2002
Mar 10, 2002
37
38
int SDL_AtariXbios_enabled=0;
Feb 14, 2004
Feb 14, 2004
39
40
41
/* Local variables */
static _KBDVECS *kbdvecs; /* Pointer to access system vectors */
42
43
static Uint16 atari_prevmouseb; /* buttons */
Feb 14, 2004
Feb 14, 2004
44
45
/* Functions */
Mar 10, 2002
Mar 10, 2002
46
void SDL_AtariXbios_InstallVectors(int vectors_mask)
47
48
49
{
void *oldpile;
Mar 10, 2002
Mar 10, 2002
50
51
52
53
54
55
56
/* Clear variables */
SDL_AtariXbios_mouseb =
SDL_AtariXbios_mousex =
SDL_AtariXbios_mousey =
SDL_AtariXbios_joystick =
atari_prevmouseb = 0;
Jan 6, 2006
Jan 6, 2006
57
58
59
60
61
if (vectors_mask==0) {
SDL_AtariXbios_enabled=0;
return;
}
62
63
64
65
66
67
/* Read IKBD vectors base */
kbdvecs=Kbdvbase();
/* Go to supervisor mode */
oldpile=(void *)Super(0);
Feb 14, 2004
Feb 14, 2004
68
/* Install our vectors */
Mar 10, 2002
Mar 10, 2002
69
70
71
72
73
SDL_AtariXbios_Install(
kbdvecs,
(vectors_mask & ATARI_XBIOS_MOUSEEVENTS) ? SDL_AtariXbios_MouseVector : NULL,
(vectors_mask & ATARI_XBIOS_JOYSTICKEVENTS) ? SDL_AtariXbios_JoystickVector : NULL
);
74
75
76
77
/* Back to user mode */
Super(oldpile);
Mar 10, 2002
Mar 10, 2002
78
SDL_AtariXbios_enabled=1;
Mar 10, 2002
Mar 10, 2002
81
void SDL_AtariXbios_RestoreVectors(void)
82
83
84
{
void *oldpile;
Jan 6, 2006
Jan 6, 2006
85
86
87
88
if (SDL_AtariXbios_enabled==0) {
return;
}
Feb 14, 2004
Feb 14, 2004
89
90
91
/* Read IKBD vectors base */
kbdvecs=Kbdvbase();
92
93
94
95
/* Go to supervisor mode */
oldpile=(void *)Super(NULL);
/* Reinstall system vector */
Feb 14, 2004
Feb 14, 2004
96
SDL_AtariXbios_Restore(kbdvecs);
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/* Back to user mode */
Super(oldpile);
}
static int atari_GetButton(int button)
{
switch(button)
{
case 0:
return SDL_BUTTON_RIGHT;
break;
case 1:
default:
return SDL_BUTTON_LEFT;
break;
}
}
Jan 31, 2006
Jan 31, 2006
116
void SDL_AtariXbios_PostMouseEvents(_THIS, SDL_bool buttonEvents)
Jan 6, 2006
Jan 6, 2006
118
119
120
121
if (SDL_AtariXbios_enabled==0) {
return;
}
122
123
124
125
126
127
128
/* Mouse motion ? */
if (SDL_AtariXbios_mousex || SDL_AtariXbios_mousey) {
SDL_PrivateMouseMotion(0, 1, SDL_AtariXbios_mousex, SDL_AtariXbios_mousey);
SDL_AtariXbios_mousex = SDL_AtariXbios_mousey = 0;
}
/* Mouse button ? */
Jan 31, 2006
Jan 31, 2006
129
if (buttonEvents && (SDL_AtariXbios_mouseb != atari_prevmouseb)) {
130
131
132
133
134
135
136
137
int i;
for (i=0;i<2;i++) {
int curbutton, prevbutton;
curbutton = SDL_AtariXbios_mouseb & (1<<i);
prevbutton = atari_prevmouseb & (1<<i);
Apr 4, 2002
Apr 4, 2002
138
if (curbutton && !prevbutton) {
139
140
SDL_PrivateMouseButton(SDL_PRESSED, atari_GetButton(i), 0, 0);
}
Apr 4, 2002
Apr 4, 2002
141
if (!curbutton && prevbutton) {
142
143
144
145
146
147
SDL_PrivateMouseButton(SDL_RELEASED, atari_GetButton(i), 0, 0);
}
}
atari_prevmouseb = SDL_AtariXbios_mouseb;
}
}