--- a/CREDITS Sun Sep 20 04:13:23 2009 +0000
+++ b/CREDITS Sun Sep 20 04:15:19 2009 +0000
@@ -46,8 +46,6 @@
* David Carré, for the Pandora port
-* Patrice Mandin, for the Atari port
-
* Couriersud for the DirectFB driver
* Jon Atkins for SDL_image, SDL_mixer and SDL_net documentation
--- a/README Sun Sep 20 04:13:23 2009 +0000
+++ b/README Sun Sep 20 04:15:19 2009 +0000
@@ -14,8 +14,8 @@
The current version supports Linux, Windows, Windows CE, BeOS, MacOS,
Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.
-The code contains support for Atari, AIX, OSF/Tru64, RISC OS, and
-SymbianOS, but these are not officially supported.
+The code contains support for AIX, OSF/Tru64, RISC OS, and SymbianOS,
+but these are not officially supported.
SDL is written in C, but works with C++ natively, and has bindings to
several other languages, including Ada, C#, Eiffel, Erlang, Euphoria,
--- a/README.MiNT Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-==============================================================================
-Using the Simple DirectMedia Layer on Atari
-==============================================================================
-
-
- If you want to build SDL from sources to create SDL programs on Atari:
- see sections I - II.
-
- If you want to create SDL programs on Atari using SDL binary build,
- download it from my web site (URL at end of this file).
-
- If you want to configure a program using SDL on Atari,
- see sections IV - VI.
-
-
-==============================================================================
-I. Building the Simple DirectMedia Layer libraries:
- (This step isn't necessary if you have the SDL binary distribution)
-
- Do the classic configure, with --disable-shared --enable-static and:
-
- Tos version (should run everywhere):
- --disable-threads
- Tos does not support threads.
-
- MiNT version (maybe Magic, only for multitasking OS):
- --disable-pthreads --enable-pth
- Mint and Magic may supports threads, so audio can be used with current
- devices, like Sun audio, or disk-writing support. Like Tos, interrupt
- audio without threads is more suited for Atari machines.
-
- Then you can make ; make install it.
-
-==============================================================================
-II. Building the Simple DirectMedia Layer test programs:
-
- Do the classic configure, then make.
-
- Run them !
-
-==============================================================================
-III. Enjoy! :)
-
- If you have a project you'd like me to know about, or want to ask questions,
- go ahead and join the SDL developer's mailing list by sending e-mail to:
-
- sdl-request@libsdl.org
-
- and put "subscribe" into the subject of the message. Or alternatively you
- can use the web interface:
-
- http://www.libsdl.org/mailman/listinfo/sdl
-
-==============================================================================
-IV. What is supported:
-
-Keyboard (GEMDOS, BIOS, GEM, Ikbd)
-Mouse (XBIOS, GEM, Ikbd, /dev/mouse (non working atm, disabled))
-Video (XBIOS (Fullscreen), GEM (Windowed and Fullscreen))
-Timer (VBL vector, GNU pth library)
-Joysticks and joypads (Ikbd, Hardware)
-Audio (Hardware, XBIOS, GSXB, MCSN, STFA, /dev/audio if threads enabled)
-Threads (Multitasking OS only via GNU pth library)
-Shared object loader (using LDG library from http://ldg.atari.org/)
-Audio CD (MetaDOS)
-OpenGL (using Mesa offscreen rendering driver)
-
-- Dependent driver combinations:
-Video Kbd Mouse Timer Joysticks
-xbios ikbd ikbd vbl(2) ikbd
-xbios gemdos xbios vbl(2) xbios
-xbios bios xbios vbl(2) xbios
-gem gem gem(1) vbl(2) xbios
-
-Audio O/S Misc
-dma8 All Uses MFP Timer A interrupt
-xbios TOS Uses MFP Timer A interrupt
-xbios MiNT Uses MFP Timer A interrupt
-xbios Magic Disabled
-stfa All Uses MFP interrupt
-mcsn TOS Uses MFP Timer A interrupt
-mcsn MiNT Uses MiNT thread
-mcsn Magic Disabled
-gsxb All Uses GSXB callback
-
-Joypad driver always uses hardware access.
-OpenGL driver always uses OSMesa.
-
-(1) GEM does not report relative mouse motion, so xbios mouse driver is used
-to report this type event.
-A preliminary driver for /dev/mouse device driver is present, but is disabled
-till it can be used with other applications simultaneously.
-
-(2) If you build SDL with threads using the GNU pth library, timers are
-supported via the pth library.
-
-==============================================================================
-V. Environment variables:
-
-SDL_VIDEODRIVER:
- Set to 'xbios' to force xbios video driver
- Set to 'gem' to force gem video driver
-
-SDL_VIDEO_GL_DRIVER:
- Set to filename to load as OpenGL library, if you use SDL_GL_LoadLibrary()
-
-SDL_AUDIODRIVER:
- Set to 'mint_gsxb' to force Atari GSXB audio driver
- Set to 'mint_mcsn' to force Atari MCSN audio driver
- Set to 'mint_stfa' to force Atari STFA audio driver
- Set to 'mint_xbios' to force Atari Xbios audio driver
- Set to 'mint_dma8' to force Atari 8 bits DMA audio driver
- Set to 'audio' to force Sun /dev/audio audio driver
- Set to 'disk' to force disk-writing audio driver
-
-SDL_ATARI_EVENTSDRIVER
- Set to 'ikbd' to force IKBD 6301 keyboard driver
- Set to 'gemdos' to force gemdos keyboard driver
- Set to 'bios' to force bios keyboard driver
-
-SDL_JOYSTICK_ATARI:
- Use any of these strings in the environment variable to enable or
- disable a joystick:
-
- 'ikbd-joy1-[on|off]' for IKBD joystick on port 1 (hardware access)
- 'xbios-joy1-[on|off]' for IKBD joystick on port 1 (xbios access)
- 'porta-pad-[on|off]' for joypad and/or teamtap on port A
- 'porta-joy0-[on|off]' for joystick 0 on port A
- 'porta-joy1-[on|off]' for joystick 1 on port A
- 'porta-lp-[on|off]' for lightpen on port A
- 'porta-anpad-[on|off]' for analog paddle on port A
- 'portb-pad-[on|off]' for joypad and/or teamtap on port B
- 'portb-joy0-[on|off]' for joystick 0 on port B
- 'portb-joy1-[on|off]' for joystick 1 on port B
- 'portb-anpad-[on|off]' for analog paddle on port B
-
- Default configuration is:
- 'ikbd-joy1-on' (if IKBD events driver enabled)
- 'xbios-joy1-on' (if gemdos/bios/gem events driver enabled)
- 'porta-pad-on portb-pad-on' (if available on the machine)
-
- port[a|b]-[pad|joy?|lp|anpad]-* strings are mutually exclusives.
- On such a port, you can only use a joypad OR 1 or 2 joysticks OR
- a lightpen OR an analog paddle. You must disable joypad before
- setting another controller.
-
- The second joystick port on IKBD is used by the mouse, so not usable.
- Another problem with the IKBD: mouse buttons and joystick fire buttons
- are wired together at the hardware level, it means:
- port 0 port 0 port 1
- mouse left button = joystick fire 0 = joystick fire 1
- mouse right button = joystick fire 1 = joystick fire 0
-
- Descriptions of joysticks/joypads:
- - Joypads: 1 hat, 17 buttons (Atari Jaguar console-like).
- - Joysticks: 1 hat, 1 button.
- - Lightpen, analog paddles: 2 axis, 2 buttons. The 2 buttons are those
- affected to 1 button joysticks on the same port.
-
-==============================================================================
-VI. More informations about drivers:
-
-OpenGL:
- The default is to use the Mesa offscreen driver (osmesa.ldg). If you want
- to use an older OpenGL implementation, like mesa_gl.ldg or tiny_gl.ldg,
- your program must use SDL_GL_LoadLibrary() to do so, and retrieve the
- needed function pointers with SDL_LoadFunction(). In all cases, the OpenGL
- context is taken care of by SDL itself, you just have to use gl* functions.
-
- However, there is one OpenGL call that has a different prototype in the old
- implementations: glOrtho(). In the old implementations, it has 6 float as
- parameters, in the standard one, it has 6 double parameters. If you want
- to compile testdyngl, or any other SDL program that loads its OpenGL
- library, you must change the glOrtho() prototype used in this program. In
- osmesa.ldg, you can retrieve a glOrtho() with double parameters, by
- searching for the function "glOrtho6d".
-
-Xbios video:
- Video chip is detected using the _VDO cookie.
- Screen enhancers are not supported, but could be if you know how to
- use them.
-
- ST, STE, Mega ST, Mega STE:
- 320x200x4 bits, shades of grey, available only for the purpose
- of testing SDL.
- TT:
- 320x480x8 and 320x240x8 (software double-lined mode).
- Falcon:
- All modes supported by the current monitor (RVB or VGA).
- BlowUp and Centscreen extended modes, ScreenBlaster 3 current mode.
- Clones and any machine with monochrome monitor:
- Not supported.
-
-Gem video:
- Automatically used if xbios not available.
-
- All machines:
- Only the current resolution, if 8 bits or higher depth.
-
-IKBD keyboard, mouse and joystick driver:
- Available if _MCH cookie is ST, Mega ST, STE, Mega STE, TT or Falcon.
-
- Hades has an IKBD, but xbios is not available for video, so IKBD
- driver is disabled.
-
-Gemdos and bios keyboard driver:
- Available on all machines.
-
-Mouse and joystick xbios driver:
- Available on all machines (I think).
-
-Joypad driver:
- Available if _MCH cookie is STE or Falcon.
-
-PTH timer driver:
- Available with multitasking OS.
-
-VBL timer driver:
- Available on all machines (I think).
-
-Audio drivers:
- Cookies _SND, MCSN, STFA and GSXB used to detect supported audio
- capabilities.
-
- STE, Mega STE, TT:
- 8 bits DMA (hardware access)
- STFA, MCSN or GSXB driver if installed
- Falcon:
- 8 bits DMA (hardware access)
- Xbios functions
- STFA, MCSN or GSXB driver if installed
- Other machines:
- STFA, MCSN or GSXB driver if installed
-
- STFA driver:
- http://removers.free.fr/softs/stfa.html
- GSXB driver:
- http://assemsoft.atari.org/gsxb/
- MacSound driver:
- http://jf.omnis.ch/software/tos/
- MagicSound driver (MCSN,GSXB compatible):
- http://perso.wanadoo.fr/didierm/
- X-Sound driver (GSXB compatible):
- http://www.uni-ulm.de/~s_thuth/atari/xsound_e.html
-
---
-Patrice Mandin <pmandin@caramail.com>
-http://pmandin.atari.org/
--- a/configure.in Sun Sep 20 04:13:23 2009 +0000
+++ b/configure.in Sun Sep 20 04:15:19 2009 +0000
@@ -897,25 +897,6 @@
fi
}
-dnl Set up the Atari Audio driver
-CheckAtariAudio()
-{
- AC_ARG_ENABLE(mintaudio,
-AC_HELP_STRING([--enable-mintaudio], [support Atari audio driver [[default=yes]]]),
- , enable_mintaudio=yes)
- if test x$enable_audio = xyes -a x$enable_mintaudio = xyes; then
- mintaudio=no
- AC_CHECK_HEADER(mint/falcon.h, have_mint_falcon_hdr=yes)
- if test x$have_mint_falcon_hdr = xyes; then
- mintaudio=yes
- AC_DEFINE(SDL_AUDIO_DRIVER_MINT)
- SOURCES="$SOURCES $srcdir/src/audio/mint/*.c"
- SOURCES="$SOURCES $srcdir/src/audio/mint/*.S"
- have_audio=yes
- fi
- fi
-}
-
dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
dnl Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
CheckVisibilityHidden()
@@ -1529,48 +1510,6 @@
fi
}
-dnl Set up the Atari Bios keyboard driver
-CheckAtariBiosEvent()
-{
- SOURCES="$SOURCES $srcdir/src/video/ataricommon/*.c"
- SOURCES="$SOURCES $srcdir/src/video/ataricommon/*.S"
-}
-
-dnl Set up the Atari Xbios driver
-CheckAtariXbiosVideo()
-{
- AC_ARG_ENABLE(video-xbios,
-AC_HELP_STRING([--enable-video-xbios], [use Atari Xbios video driver [[default=yes]]]),
- , enable_video_xbios=yes)
- video_xbios=no
- if test x$enable_video = xyes -a x$enable_video_xbios = xyes; then
- video_xbios=yes
- AC_DEFINE(SDL_VIDEO_DRIVER_XBIOS)
- SOURCES="$SOURCES $srcdir/src/video/xbios/*.c"
- have_video=yes
- fi
-}
-
-dnl Set up the Atari Gem driver
-CheckAtariGemVideo()
-{
- AC_ARG_ENABLE(video-gem,
-AC_HELP_STRING([--enable-video-gem], [use Atari Gem video driver [[default=yes]]]),
- , enable_video_gem=yes)
- if test x$enable_video = xyes -a x$enable_video_gem = xyes; then
- video_gem=no
- AC_CHECK_HEADER(gem.h, have_gem_hdr=yes)
- AC_CHECK_LIB(gem, appl_init, have_gem_lib=yes)
- if test x$have_gem_hdr = xyes -a x$have_gem_lib = xyes; then
- video_gem=yes
- AC_DEFINE(SDL_VIDEO_DRIVER_GEM)
- SOURCES="$SOURCES $srcdir/src/video/gem/*.c"
- SDL_LIBS="$SDL_LIBS -lgem"
- have_video=yes
- fi
- fi
-}
-
dnl rcg04172001 Set up the Null video driver.
CheckDummyVideo()
{
@@ -1708,43 +1647,6 @@
fi
}
-dnl Check for Mesa offscreen rendering
-CheckAtariOSMesa()
-{
- if test "x$enable_video" = "xyes" -a "x$enable_video_opengl" = "xyes"; then
- AC_CHECK_HEADER(GL/osmesa.h, have_osmesa_hdr=yes)
- AC_CHECK_LIB(OSMesa, OSMesaCreateContext, have_osmesa_lib=yes, have_osmesa_lib=no, -lm)
-
- # Static linking to -lOSMesa
- AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no)
- if test "x$OSMESA_CONFIG" = "xno" -o "x$enable_atari_ldg" = "xno"; then
- # -lOSMesa is really the static library
- if test "x$have_osmesa_hdr" = "xyes" -a "x$have_osmesa_lib" = "xyes"; then
- OSMESA_LIBS="-lOSMesa"
- fi
- else
- # -lOSMesa is a loader for OSMesa.ldg
- OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags`
- OSMESA_LIBS=`$OSMESA_CONFIG --libs`
- fi
- AC_DEFINE(SDL_VIDEO_OPENGL)
- AC_DEFINE(SDL_VIDEO_OPENGL_OSMESA)
- AC_DEFINE(SDL_VIDEO_RENDER_OGL)
- SDL_CFLAGS="$SDL_CFLAGS $OSMESA_CFLAGS"
- SDL_LIBS="$SDL_LIBS $OSMESA_LIBS"
-
- AC_ARG_ENABLE(osmesa-shared,
-AC_HELP_STRING([--enable-osmesa-shared], [dynamically load OSMesa OpenGL support [[default=yes]]]),
- , enable_osmesa_shared=yes)
- if test "x$enable_osmesa_shared" = "xyes" -a "x$enable_atari_ldg" = "xyes"; then
- # Dynamic linking
- if test "x$have_osmesa_hdr" = "xyes"; then
- AC_DEFINE(SDL_VIDEO_OPENGL_OSMESA_DYNAMIC)
- fi
- fi
- fi
-}
-
dnl See if we can use the new unified event interface in Linux 2.4
CheckInputEvents()
{
@@ -2086,24 +1988,6 @@
fi
}
-dnl Set up the Atari LDG (shared object loader)
-CheckAtariLdg()
-{
- AC_ARG_ENABLE(atari-ldg,
-AC_HELP_STRING([--enable-atari-ldg], [use Atari LDG for shared object loading [[default=yes]]]),
- , enable_atari_ldg=yes)
- if test x$video_gem = xyes -a x$enable_atari_ldg = xyes; then
- AC_CHECK_HEADER(ldg.h, have_ldg_hdr=yes)
- AC_CHECK_LIB(ldg, ldg_open, have_ldg_lib=yes, have_ldg_lib=no, -lgem)
- if test x$have_ldg_hdr = xyes -a x$have_ldg_lib = xyes; then
- AC_DEFINE(SDL_LOADSO_LDG)
- SOURCES="$SOURCES $srcdir/src/loadso/mint/*.c"
- SDL_LIBS="$SDL_LIBS -lldg -lgem"
- have_loadso=yes
- fi
- fi
-}
-
dnl Check for the usbhid(3) library on *BSD
CheckUSBHID()
{
@@ -2795,45 +2679,6 @@
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit"
fi
;;
- *-*-mint*)
- ARCH=mint
- CheckDummyVideo
- CheckDiskAudio
- CheckDummyAudio
- CheckAtariBiosEvent
- CheckAtariXbiosVideo
- CheckAtariGemVideo
- CheckAtariAudio
- CheckAtariLdg
- CheckAtariOSMesa
- CheckPTH
- # Set up files for the audio library
- if test x$enable_threads = xyes -a x$enable_pth = xyes; then
- if test x$enable_audio = xyes; then
- AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO)
- SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
- have_audio=yes
- fi
- fi
- # Set up files for the joystick library
- if test x$enable_joystick = xyes; then
- AC_DEFINE(SDL_JOYSTICK_MINT)
- SOURCES="$SOURCES $srcdir/src/joystick/mint/*.c"
- have_joystick=yes
- fi
- # Set up files for the timer library
- if test x$enable_timers = xyes; then
- if test x$enable_threads = xyes -a x$enable_pth = xyes; then
- AC_DEFINE(SDL_TIMER_UNIX)
- SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
- else
- AC_DEFINE(SDL_TIMER_MINT)
- SOURCES="$SOURCES $srcdir/src/timer/mint/*.c"
- SOURCES="$SOURCES $srcdir/src/timer/mint/*.S"
- fi
- have_timers=yes
- fi
- ;;
*-riscos)
ARCH=riscos
CheckOSS
--- a/include/SDL.h Sun Sep 20 04:13:23 2009 +0000
+++ b/include/SDL.h Sun Sep 20 04:15:19 2009 +0000
@@ -38,8 +38,8 @@
The current version supports Linux, Windows, Windows CE, BeOS, MacOS,
Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.
-The code contains support for Atari, AIX, OSF/Tru64, RISC OS, and
-SymbianOS, but these are not officially supported.
+The code contains support for AIX, OSF/Tru64, RISC OS, and SymbianOS,
+but these are not officially supported.
SDL is written in C, but works with C++ natively, and has bindings to
several other languages, including Ada, C#, Eiffel, Erlang, Euphoria,
--- a/include/SDL_config.h.in Sun Sep 20 04:13:23 2009 +0000
+++ b/include/SDL_config.h.in Sun Sep 20 04:15:19 2009 +0000
@@ -187,7 +187,6 @@
#undef SDL_AUDIO_DRIVER_DSOUND
#undef SDL_AUDIO_DRIVER_ESD
#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC
-#undef SDL_AUDIO_DRIVER_MINT
#undef SDL_AUDIO_DRIVER_MMEAUDIO
#undef SDL_AUDIO_DRIVER_NAS
#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC
@@ -209,7 +208,6 @@
#undef SDL_JOYSTICK_DUMMY
#undef SDL_JOYSTICK_IOKIT
#undef SDL_JOYSTICK_LINUX
-#undef SDL_JOYSTICK_MINT
#undef SDL_JOYSTICK_NDS
#undef SDL_JOYSTICK_RISCOS
#undef SDL_JOYSTICK_WINMM
@@ -241,7 +239,6 @@
/* Enable various timer systems */
#undef SDL_TIMER_BEOS
#undef SDL_TIMER_DUMMY
-#undef SDL_TIMER_MINT
#undef SDL_TIMER_NDS
#undef SDL_TIMER_RISCOS
#undef SDL_TIMER_UNIX
@@ -255,7 +252,6 @@
#undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC
#undef SDL_VIDEO_DRIVER_DUMMY
#undef SDL_VIDEO_DRIVER_FBCON
-#undef SDL_VIDEO_DRIVER_GEM
#undef SDL_VIDEO_DRIVER_NDS
#undef SDL_VIDEO_DRIVER_PHOTON
#undef SDL_VIDEO_DRIVER_QNXGF
@@ -277,7 +273,6 @@
#undef SDL_VIDEO_DRIVER_X11_XINPUT
#undef SDL_VIDEO_DRIVER_X11_SCRNSAVER
#undef SDL_VIDEO_DRIVER_X11_XV
-#undef SDL_VIDEO_DRIVER_XBIOS
#undef SDL_VIDEO_RENDER_D3D
#undef SDL_VIDEO_RENDER_GDI
--- a/src/audio/SDL_audio.c Sun Sep 20 04:13:23 2009 +0000
+++ b/src/audio/SDL_audio.c Sun Sep 20 04:15:19 2009 +0000
@@ -62,11 +62,6 @@
extern AudioBootStrap COREAUDIO_bootstrap;
extern AudioBootStrap COREAUDIOIPHONE_bootstrap;
extern AudioBootStrap SNDMGR_bootstrap;
-extern AudioBootStrap MINTAUDIO_GSXB_bootstrap;
-extern AudioBootStrap MINTAUDIO_MCSN_bootstrap;
-extern AudioBootStrap MINTAUDIO_STFA_bootstrap;
-extern AudioBootStrap MINTAUDIO_XBIOS_bootstrap;
-extern AudioBootStrap MINTAUDIO_DMA8_bootstrap;
extern AudioBootStrap DISKAUD_bootstrap;
extern AudioBootStrap DUMMYAUD_bootstrap;
extern AudioBootStrap DCAUD_bootstrap;
@@ -127,13 +122,6 @@
#if SDL_AUDIO_DRIVER_COREAUDIOIPHONE
&COREAUDIOIPHONE_bootstrap,
#endif
-#if SDL_AUDIO_DRIVER_MINT
- &MINTAUDIO_GSXB_bootstrap,
- &MINTAUDIO_MCSN_bootstrap,
- &MINTAUDIO_STFA_bootstrap,
- &MINTAUDIO_XBIOS_bootstrap,
- &MINTAUDIO_DMA8_bootstrap,
-#endif
#if SDL_AUDIO_DRIVER_DISK
&DISKAUD_bootstrap,
#endif
--- a/src/audio/mint/SDL_mintaudio.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- Audio interrupt variables and callback function
-
- Patrice Mandin
-*/
-
-#include <unistd.h>
-
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-#include <mint/mintbind.h>
-#include <mint/cookie.h>
-
-#include "SDL_audio.h"
-#include "SDL_mintaudio.h"
-#include "SDL_mintaudio_stfa.h"
-
-/* The audio device */
-
-SDL_AudioDevice *SDL_MintAudio_device;
-Uint8 *SDL_MintAudio_audiobuf[2]; /* Pointers to buffers */
-unsigned long SDL_MintAudio_audiosize; /* Length of audio buffer=spec->size */
-volatile unsigned short SDL_MintAudio_numbuf; /* Buffer to play */
-volatile unsigned short SDL_MintAudio_mutex;
-volatile unsigned long SDL_MintAudio_clocktics;
-cookie_stfa_t *SDL_MintAudio_stfa;
-
-/* MiNT thread variables */
-SDL_bool SDL_MintAudio_mint_present;
-SDL_bool SDL_MintAudio_quit_thread;
-SDL_bool SDL_MintAudio_thread_finished;
-long SDL_MintAudio_thread_pid;
-
-/* The callback function, called by each driver whenever needed */
-
-void
-SDL_MintAudio_Callback(void)
-{
- Uint8 *buffer;
- SDL_AudioDevice *audio = SDL_MintAudio_device;
-
- buffer = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- SDL_memset(buffer, audio->spec.silence, audio->spec.size);
-
- if (audio->paused)
- return;
-
- if (audio->convert.needed) {
- int silence;
-
- if (audio->convert.src_format == AUDIO_U8) {
- silence = 0x80;
- } else {
- silence = 0;
- }
- SDL_memset(audio->convert.buf, silence, audio->convert.len);
- audio->spec.callback(audio->spec.userdata,
- (Uint8 *) audio->convert.buf,
- audio->convert.len);
- SDL_ConvertAudio(&audio->convert);
- SDL_memcpy(buffer, audio->convert.buf, audio->convert.len_cvt);
- } else {
- audio->spec.callback(audio->spec.userdata, buffer, audio->spec.size);
- }
-}
-
-/* Add a new frequency/clock/predivisor to the current list */
-void
-SDL_MintAudio_AddFrequency(_THIS, Uint32 frequency, Uint32 clock,
- Uint32 prediv, int gpio_bits)
-{
- int i, p;
-
- if (MINTAUDIO_freqcount == MINTAUDIO_maxfreqs) {
- return;
- }
-
- /* Search where to insert the frequency (highest first) */
- for (p = 0; p < MINTAUDIO_freqcount; p++) {
- if (frequency > MINTAUDIO_frequencies[p].frequency) {
- break;
- }
- }
-
- /* Put all following ones farer */
- if (MINTAUDIO_freqcount > 0) {
- for (i = MINTAUDIO_freqcount; i > p; i--) {
- SDL_memcpy(&MINTAUDIO_frequencies[i],
- &MINTAUDIO_frequencies[i - 1],
- sizeof(mint_frequency_t));
- }
- }
-
- /* And insert new one */
- MINTAUDIO_frequencies[p].frequency = frequency;
- MINTAUDIO_frequencies[p].masterclock = clock;
- MINTAUDIO_frequencies[p].predivisor = prediv;
- MINTAUDIO_frequencies[p].gpio_bits = gpio_bits;
-
- MINTAUDIO_freqcount++;
-}
-
-/* Search for the nearest frequency */
-int
-SDL_MintAudio_SearchFrequency(_THIS, int desired_freq)
-{
- int i;
-
- /* Only 1 freq ? */
- if (MINTAUDIO_freqcount == 1) {
- return 0;
- }
-
- /* Check the array */
- for (i = 0; i < MINTAUDIO_freqcount; i++) {
- if (desired_freq >= ((MINTAUDIO_frequencies[i].frequency +
- MINTAUDIO_frequencies[i + 1].frequency) >> 1)) {
- return i;
- }
- }
-
- /* Not in the array, give the latest */
- return MINTAUDIO_freqcount - 1;
-}
-
-/* Check if FPU is present */
-void
-SDL_MintAudio_CheckFpu(void)
-{
- unsigned long cookie_fpu;
-
- SDL_MintAudio_hasfpu = 0;
- if (Getcookie(C__FPU, &cookie_fpu) != C_FOUND) {
- return;
- }
- switch ((cookie_fpu >> 16) & 0xfffe) {
- case 2:
- case 4:
- case 6:
- case 8:
- case 16:
- SDL_MintAudio_hasfpu = 1;
- break;
- }
-}
-
-/* The thread function, used under MiNT with xbios */
-int
-SDL_MintAudio_Thread(long param)
-{
- SndBufPtr pointers;
- SDL_bool buffers_filled[2] = { SDL_FALSE, SDL_FALSE };
-
- SDL_MintAudio_thread_finished = SDL_FALSE;
- while (!SDL_MintAudio_quit_thread) {
- if (Buffptr(&pointers) != 0)
- continue;
-
- if (((unsigned long) pointers.play >=
- (unsigned long) SDL_MintAudio_audiobuf[0])
- && ((unsigned long) pointers.play <=
- (unsigned long) SDL_MintAudio_audiobuf[1])) {
- /* DMA is reading buffer #0, setup buffer #1 if not already done */
- if (!buffers_filled[1]) {
- SDL_MintAudio_numbuf = 1;
- SDL_MintAudio_Callback();
- Setbuffer(0, SDL_MintAudio_audiobuf[1],
- SDL_MintAudio_audiobuf[1] +
- SDL_MintAudio_audiosize);
- buffers_filled[1] = SDL_TRUE;
- buffers_filled[0] = SDL_FALSE;
- }
- } else {
- /* DMA is reading buffer #1, setup buffer #0 if not already done */
- if (!buffers_filled[0]) {
- SDL_MintAudio_numbuf = 0;
- SDL_MintAudio_Callback();
- Setbuffer(0, SDL_MintAudio_audiobuf[0],
- SDL_MintAudio_audiobuf[0] +
- SDL_MintAudio_audiosize);
- buffers_filled[0] = SDL_TRUE;
- buffers_filled[1] = SDL_FALSE;
- }
- }
-
- usleep(100);
- }
- SDL_MintAudio_thread_finished = SDL_TRUE;
- return 0;
-}
-
-void
-SDL_MintAudio_WaitThread(void)
-{
- if (!SDL_MintAudio_mint_present)
- return;
-
- if (SDL_MintAudio_thread_finished)
- return;
-
- SDL_MintAudio_quit_thread = SDL_TRUE;
- while (!SDL_MintAudio_thread_finished) {
- Syield();
- }
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MiNT audio driver
-
- Patrice Mandin
-*/
-
-#ifndef _SDL_mintaudio_h
-#define _SDL_mintaudio_h
-
-#include "../SDL_sysaudio.h"
-#include "SDL_mintaudio_stfa.h"
-
-/* Hidden "this" pointer for the audio functions */
-#define _THIS SDL_AudioDevice *this
-
-/* 16 predivisors with 3 clocks max. */
-#define MINTAUDIO_maxfreqs (16*3)
-
-typedef struct
-{
- Uint32 frequency;
- Uint32 masterclock;
- Uint32 predivisor;
- int gpio_bits; /* in case of external clock */
-} mint_frequency_t;
-
-struct SDL_PrivateAudioData
-{
- mint_frequency_t frequencies[MINTAUDIO_maxfreqs];
- int freq_count; /* Number of frequencies in the array */
- int numfreq; /* Number of selected frequency */
-};
-
-/* Old variable names */
-
-#define MINTAUDIO_frequencies (this->hidden->frequencies)
-#define MINTAUDIO_freqcount (this->hidden->freq_count)
-#define MINTAUDIO_numfreq (this->hidden->numfreq)
-
-/* _MCH cookie (values>>16) */
-enum
-{
- MCH_ST = 0,
- MCH_STE,
- MCH_TT,
- MCH_F30,
- MCH_CLONE,
- MCH_ARANYM
-};
-
-/* Master clocks for replay frequencies */
-#define MASTERCLOCK_STE 8010666 /* Not sure of this one */
-#define MASTERCLOCK_TT 16107953 /* Not sure of this one */
-#define MASTERCLOCK_FALCON1 25175000
-#define MASTERCLOCK_FALCON2 32000000 /* Only usable for DSP56K */
-#define MASTERCLOCK_FALCONEXT -1 /* Clock on DSP56K port, unknown */
-#define MASTERCLOCK_44K 22579200 /* Standard clock for 44.1 Khz */
-#define MASTERCLOCK_48K 24576000 /* Standard clock for 48 Khz */
-
-/* Master clock predivisors */
-#define MASTERPREDIV_STE 160
-#define MASTERPREDIV_TT 320
-#define MASTERPREDIV_FALCON 256
-#define MASTERPREDIV_MILAN 256
-
-/* MFP 68901 interrupt sources */
-enum
-{
- MFP_PARALLEL = 0,
- MFP_DCD,
- MFP_CTS,
- MFP_BITBLT,
- MFP_TIMERD,
- MFP_BAUDRATE = MFP_TIMERD,
- MFP_TIMERC,
- MFP_200HZ = MFP_TIMERC,
- MFP_ACIA,
- MFP_DISK,
- MFP_TIMERB,
- MFP_HBLANK = MFP_TIMERB,
- MFP_TERR,
- MFP_TBE,
- MFP_RERR,
- MFP_RBF,
- MFP_TIMERA,
- MFP_DMASOUND = MFP_TIMERA,
- MFP_RING,
- MFP_MONODETECT
-};
-
-/* Xbtimer() timers */
-enum
-{
- XB_TIMERA = 0,
- XB_TIMERB,
- XB_TIMERC,
- XB_TIMERD
-};
-
-/* Variables */
-extern SDL_AudioDevice *SDL_MintAudio_device;
-extern Uint8 *SDL_MintAudio_audiobuf[2]; /* Pointers to buffers */
-extern unsigned long SDL_MintAudio_audiosize; /* Length of audio buffer=spec->size */
-extern volatile unsigned short SDL_MintAudio_numbuf; /* Buffer to play */
-extern volatile unsigned short SDL_MintAudio_mutex;
-extern cookie_stfa_t *SDL_MintAudio_stfa;
-extern volatile unsigned long SDL_MintAudio_clocktics;
-extern unsigned short SDL_MintAudio_hasfpu; /* To preserve fpu registers if needed */
-
-/* MiNT thread variables */
-extern SDL_bool SDL_MintAudio_mint_present;
-extern SDL_bool SDL_MintAudio_quit_thread;
-extern SDL_bool SDL_MintAudio_thread_finished;
-extern long SDL_MintAudio_thread_pid;
-
-/* Functions */
-void SDL_MintAudio_Callback(void);
-void SDL_MintAudio_AddFrequency(_THIS, Uint32 frequency, Uint32 clock,
- Uint32 prediv, int gpio_bits);
-int SDL_MintAudio_SearchFrequency(_THIS, int desired_freq);
-void SDL_MintAudio_CheckFpu(void);
-
-/* MiNT thread functions */
-int SDL_MintAudio_Thread(long param);
-void SDL_MintAudio_WaitThread(void);
-
-/* ASM interrupt functions */
-void SDL_MintAudio_GsxbInterrupt(void);
-void SDL_MintAudio_EmptyGsxbInterrupt(void);
-void SDL_MintAudio_XbiosInterruptMeasureClock(void);
-void SDL_MintAudio_XbiosInterrupt(void);
-void SDL_MintAudio_Dma8Interrupt(void);
-void SDL_MintAudio_StfaInterrupt(void);
-
-#endif /* _SDL_mintaudio_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_dma8.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MiNT audio driver
- using DMA 8bits (hardware access)
-
- Patrice Mandin
-*/
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-#include <mint/cookie.h>
-
-#include "SDL_audio.h"
-#include "../SDL_audio_c.h"
-#include "../SDL_sysaudio.h"
-
-#include "../../video/ataricommon/SDL_atarimxalloc_c.h"
-
-#include "SDL_mintaudio.h"
-#include "SDL_mintaudio_dma8.h"
-
-/*--- Defines ---*/
-
-#define MINT_AUDIO_DRIVER_NAME "mint_dma8"
-
-/* Debug print info */
-#define DEBUG_NAME "audio:dma8: "
-#if 0
-#define DEBUG_PRINT(what) \
- { \
- printf what; \
- }
-#else
-#define DEBUG_PRINT(what)
-#endif
-
-/*--- Static variables ---*/
-
-static unsigned long cookie_snd, cookie_mch;
-
-static void
-MINTDMA8_LockDevice(_THIS)
-{
- void *oldpile;
-
- /* Stop replay */
- oldpile = (void *) Super(0);
- DMAAUDIO_IO.control = 0;
- Super(oldpile);
-}
-
-static void
-MINTDMA8_UnlockDevice(_THIS)
-{
- void *oldpile;
-
- /* Restart replay */
- oldpile = (void *) Super(0);
- DMAAUDIO_IO.control = 3;
- Super(oldpile);
-}
-
-static void
-MINTDMA8_CloseDevice(_THIS)
-{
- if (this->hidden != NULL) {
- /* Stop replay */
- void *oldpile = (void *) Super(0);
-
- DMAAUDIO_IO.control = 0;
- Super(oldpile);
-
- DEBUG_PRINT((DEBUG_NAME "closeaudio: replay stopped\n"));
-
- /* Disable interrupt */
- Jdisint(MFP_DMASOUND);
-
- DEBUG_PRINT((DEBUG_NAME "closeaudio: interrupt disabled\n"));
-
- /* Wait if currently playing sound */
- while (SDL_MintAudio_mutex != 0) {
- }
-
- DEBUG_PRINT((DEBUG_NAME "closeaudio: no more interrupt running\n"));
-
- /* Clear buffers */
- if (SDL_MintAudio_audiobuf[0]) {
- Mfree(SDL_MintAudio_audiobuf[0]);
- SDL_MintAudio_audiobuf[0] = SDL_MintAudio_audiobuf[1] = NULL;
- }
-
- DEBUG_PRINT((DEBUG_NAME "closeaudio: buffers freed\n"));
- SDL_free(this->hidden);
- this->hidden = NULL;
- }
-}
-
-static int
-MINTDMA8_CheckAudio(_THIS)
-{
- int i, masterprediv, sfreq;
- unsigned long masterclock;
-
- DEBUG_PRINT((DEBUG_NAME "asked: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- if (this->spec.channels > 2) {
- this->spec.channels = 2; /* no more than stereo! */
- }
-
- /* Check formats available */
- this->spec.format = AUDIO_S8;
-
- /* Calculate and select the closest frequency */
- sfreq = 0;
- masterclock = MASTERCLOCK_STE;
- masterprediv = MASTERPREDIV_STE;
- switch (cookie_mch >> 16) {
-/*
- case MCH_STE:
- masterclock=MASTERCLOCK_STE;
- masterprediv=MASTERPREDIV_STE;
- break;
-*/
- case MCH_TT:
- masterclock = MASTERCLOCK_TT;
- masterprediv = MASTERPREDIV_TT;
- break;
- case MCH_F30:
- case MCH_ARANYM:
- masterclock = MASTERCLOCK_FALCON1;
- masterprediv = MASTERPREDIV_FALCON;
- sfreq = 1;
- break;
- }
-
- MINTAUDIO_freqcount = 0;
- for (i = sfreq; i < 4; i++) {
- SDL_MintAudio_AddFrequency(this,
- masterclock / (masterprediv * (1 << i)),
- masterclock, i - sfreq, -1);
- }
-
-#if 1
- for (i = 0; i < MINTAUDIO_freqcount; i++) {
- DEBUG_PRINT((DEBUG_NAME "freq %d: %lu Hz, clock %lu, prediv %d\n",
- i, MINTAUDIO_frequencies[i].frequency,
- MINTAUDIO_frequencies[i].masterclock,
- MINTAUDIO_frequencies[i].predivisor));
- }
-#endif
-
- MINTAUDIO_numfreq = SDL_MintAudio_SearchFrequency(this, this->spec.freq);
- this->spec.freq = MINTAUDIO_frequencies[MINTAUDIO_numfreq].frequency;
-
- DEBUG_PRINT((DEBUG_NAME "obtained: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- return 0;
-}
-
-static void
-MINTDMA8_InitAudio(_THIS)
-{
- void *oldpile;
- unsigned long buffer;
- unsigned char mode;
-
- /* Set replay tracks */
- if (cookie_snd & SND_16BIT) {
- Settracks(0, 0);
- Setmontracks(0);
- }
-
- oldpile = (void *) Super(0);
-
- /* Stop currently playing sound */
- DMAAUDIO_IO.control = 0;
-
- /* Set buffer */
- buffer = (unsigned long) SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- DMAAUDIO_IO.start_high = (buffer >> 16) & 255;
- DMAAUDIO_IO.start_mid = (buffer >> 8) & 255;
- DMAAUDIO_IO.start_low = buffer & 255;
-
- buffer += SDL_MintAudio_audiosize;
- DMAAUDIO_IO.end_high = (buffer >> 16) & 255;
- DMAAUDIO_IO.end_mid = (buffer >> 8) & 255;
- DMAAUDIO_IO.end_low = buffer & 255;
-
- mode = 3 - MINTAUDIO_frequencies[MINTAUDIO_numfreq].predivisor;
- if (this->spec.channels == 1) {
- mode |= 1 << 7;
- }
- DMAAUDIO_IO.sound_ctrl = mode;
-
- /* Set interrupt */
- Jdisint(MFP_DMASOUND);
- Xbtimer(XB_TIMERA, 8, 1, SDL_MintAudio_Dma8Interrupt);
- Jenabint(MFP_DMASOUND);
-
- if (cookie_snd & SND_16BIT) {
- if (Setinterrupt(SI_TIMERA, SI_PLAY) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setinterrupt() failed\n"));
- }
- }
-
- /* Go */
- DMAAUDIO_IO.control = 3; /* playback + repeat */
-
- Super(oldpile);
-}
-
-static int
-MINTDMA8_OpenDevice(_THIS, const char *devname, int iscapture)
-{
- SDL_MintAudio_device = this;
-
- /* Check audio capabilities */
- if (MINTDMA8_CheckAudio(this) == -1) {
- return 0;
- }
-
- /* Initialize all variables that we clean on shutdown */
- this->hidden = (struct SDL_PrivateAudioData *)
- SDL_malloc((sizeof *this->hidden));
- if (this->hidden == NULL) {
- SDL_OutOfMemory();
- return 0;
- }
- SDL_memset(this->hidden, 0, (sizeof *this->hidden));
-
- SDL_CalculateAudioSpec(&this->spec);
-
- /* Allocate memory for audio buffers in DMA-able RAM */
- DEBUG_PRINT((DEBUG_NAME "buffer size=%d\n", this->spec.size));
-
- SDL_MintAudio_audiobuf[0] =
- Atari_SysMalloc(this->spec.size * 2, MX_STRAM);
- if (SDL_MintAudio_audiobuf[0] == NULL) {
- SDL_free(this->hidden);
- this->hidden = NULL;
- SDL_OutOfMemory();
- return 0;
- }
- SDL_MintAudio_audiobuf[1] = SDL_MintAudio_audiobuf[0] + this->spec.size;
- SDL_MintAudio_numbuf = 0;
- SDL_memset(SDL_MintAudio_audiobuf[0], this->spec.silence,
- this->spec.size * 2);
- SDL_MintAudio_audiosize = this->spec.size;
- SDL_MintAudio_mutex = 0;
-
- DEBUG_PRINT((DEBUG_NAME "buffer 0 at 0x%08x\n",
- SDL_MintAudio_audiobuf[0]));
- DEBUG_PRINT((DEBUG_NAME "buffer 1 at 0x%08x\n",
- SDL_MintAudio_audiobuf[1]));
-
- SDL_MintAudio_CheckFpu();
-
- /* Setup audio hardware */
- MINTDMA8_InitAudio(this);
-
- return 1; /* good to go. */
-}
-
-static int
-MINTDMA8_Init(SDL_AudioDriverImpl * impl)
-{
- /* Cookie _MCH present ? if not, assume ST machine */
- if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
- cookie_mch = MCH_ST;
- }
-
- /* Cookie _SND present ? if not, assume ST machine */
- if (Getcookie(C__SND, &cookie_snd) == C_NOTFOUND) {
- cookie_snd = SND_PSG;
- }
-
- /* Check if we have 8 bits audio */
- if ((cookie_snd & SND_8BIT) == 0) {
- SDL_SetError(DEBUG_NAME "no 8 bits sound");
- return 0;
- }
-
- /* Check if audio is lockable */
- if (cookie_snd & SND_16BIT) {
- if (Locksnd() != 1) {
- SDL_SetError(DEBUG_NAME "audio locked by other application");
- return 0;
- }
-
- Unlocksnd();
- }
-
- DEBUG_PRINT((DEBUG_NAME "8 bits audio available!\n"));
-
- /* Set the function pointers */
- impl->OpenDevice = MINTDMA8_OpenDevice;
- impl->CloseDevice = MINTDMA8_CloseDevice;
- impl->LockDevice = MINTDMA8_LockDevice;
- impl->UnlockDevice = MINTDMA8_UnlockDevice;
- impl->OnlyHasDefaultOutputDevice = 1;
- impl->ProvidesOwnCallbackThread = 1;
- impl->SkipMixerLock = 1;
-
- return 2; /* 2 == definitely has an audio device. */
-}
-
-AudioBootStrap MINTAUDIO_DMA8_bootstrap = {
- MINT_AUDIO_DRIVER_NAME, "MiNT DMA 8 bits audio driver", MINTDMA8_Init, 0
-};
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_dma8.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- DMA 8bits and Falcon Codec audio definitions
-
- Patrice Mandin, Didier Méquignon
-*/
-
-#ifndef _SDL_mintaudio_dma8_h
-#define _SDL_mintaudio_dma8_h
-
-#define DMAAUDIO_IO_BASE (0xffff8900)
-struct DMAAUDIO_IO_S
-{
- unsigned char int_ctrl;
- unsigned char control;
-
- unsigned char dummy1;
- unsigned char start_high;
- unsigned char dummy2;
- unsigned char start_mid;
- unsigned char dummy3;
- unsigned char start_low;
-
- unsigned char dummy4;
- unsigned char cur_high;
- unsigned char dummy5;
- unsigned char cur_mid;
- unsigned char dummy6;
- unsigned char cur_low;
-
- unsigned char dummy7;
- unsigned char end_high;
- unsigned char dummy8;
- unsigned char end_mid;
- unsigned char dummy9;
- unsigned char end_low;
-
- unsigned char dummy10[12];
-
- unsigned char track_ctrl; /* CODEC only */
- unsigned char sound_ctrl;
- unsigned short sound_data;
- unsigned short sound_mask;
-
- unsigned char dummy11[10];
-
- unsigned short dev_ctrl;
- unsigned short dest_ctrl;
- unsigned short sync_div;
- unsigned char track_rec;
- unsigned char adderin_input;
- unsigned char channel_input;
- unsigned char channel_amplification;
- unsigned char channel_reduction;
-
- unsigned char dummy12[6];
-
- unsigned char data_direction;
- unsigned char dummy13;
- unsigned char dev_data;
-};
-#define DMAAUDIO_IO ((*(volatile struct DMAAUDIO_IO_S *)DMAAUDIO_IO_BASE))
-
-#endif /* _SDL_mintaudio_dma8_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_gsxb.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MiNT audio driver
- using XBIOS functions (GSXB compatible driver)
-
- Patrice Mandin
-*/
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-#include <mint/cookie.h>
-
-#include "SDL_audio.h"
-#include "../SDL_audio_c.h"
-#include "../SDL_sysaudio.h"
-
-#include "../../video/ataricommon/SDL_atarimxalloc_c.h"
-
-#include "SDL_mintaudio.h"
-#include "SDL_mintaudio_gsxb.h"
-
-/*--- Defines ---*/
-
-#define MINT_AUDIO_DRIVER_NAME "mint_gsxb"
-
-/* Debug print info */
-#define DEBUG_NAME "audio:gsxb: "
-#if 0
-#define DEBUG_PRINT(what) \
- { \
- printf what; \
- }
-#else
-#define DEBUG_PRINT(what)
-#endif
-
-/*--- Static variables ---*/
-
-static unsigned long cookie_snd, cookie_gsxb;
-
-/*--- Audio driver functions ---*/
-
-/* GSXB callbacks */
-static void MINTGSXB_GsxbInterrupt(void);
-static void MINTGSXB_GsxbNullInterrupt(void);
-
-static void
-MINTGSXB_LockDevice(_THIS)
-{
- /* Stop replay */
- Buffoper(0);
-}
-
-static void
-MINTGSXB_UnlockDevice(_THIS)
-{
- /* Restart replay */
- Buffoper(SB_PLA_ENA | SB_PLA_RPT);
-}
-
-static void
-MINTGSXB_CloseDevice(_THIS)
-{
- if (this->hidden != NULL) {
- /* Stop replay */
- Buffoper(0);
-
- /* Uninstall interrupt */
- if (NSetinterrupt(2, SI_NONE, MINTGSXB_GsxbNullInterrupt) < 0) {
- DEBUG_PRINT((DEBUG_NAME "NSetinterrupt() failed in close\n"));
- }
-
- /* Wait if currently playing sound */
- while (SDL_MintAudio_mutex != 0) {
- }
-
- /* Clear buffers */
- if (SDL_MintAudio_audiobuf[0]) {
- Mfree(SDL_MintAudio_audiobuf[0]);
- SDL_MintAudio_audiobuf[0] = SDL_MintAudio_audiobuf[1] = NULL;
- }
-
- /* Unlock sound system */
- Unlocksnd();
-
- SDL_free(this->hidden);
- this->hidden = NULL;
- }
-}
-
-static int
-MINTGSXB_CheckAudio(_THIS)
-{
- long snd_format;
- int i, resolution, format_signed, format_bigendian;
- SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
- int valid_datatype = 0;
-
- resolution = SDL_AUDIO_BITSIZE(this->spec.format);
- format_signed = SDL_AUDIO_ISSIGNED(this->spec.format);
- format_bigendian = SDL_AUDIO_ISBIGENDIAN(this->spec.format);
-
- DEBUG_PRINT((DEBUG_NAME "asked: %d bits, ", resolution));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", format_signed));
- DEBUG_PRINT(("big endian=%d, ", format_bigendian));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- if (this->spec.channels > 2) {
- this->spec.channels = 2; /* no more than stereo! */
- }
-
- while ((!valid_datatype) && (test_format)) {
- /* Check formats available */
- snd_format = Sndstatus(SND_QUERYFORMATS);
- this->spec.format = test_format;
- resolution = SDL_AUDIO_BITSIZE(this->spec.format);
- format_signed = SDL_AUDIO_ISSIGNED(this->spec.format);
- format_bigendian = SDL_AUDIO_ISBIGENDIAN(this->spec.format);
- switch (test_format) {
- case AUDIO_U8:
- case AUDIO_S8:
- if (snd_format & SND_FORMAT8) {
- valid_datatype = 1;
- snd_format = Sndstatus(SND_QUERY8BIT);
- }
- break;
-
- case AUDIO_U16LSB:
- case AUDIO_S16LSB:
- case AUDIO_U16MSB:
- case AUDIO_S16MSB:
- if (snd_format & SND_FORMAT16) {
- valid_datatype = 1;
- snd_format = Sndstatus(SND_QUERY16BIT);
- }
- break;
-
- case AUDIO_S32LSB:
- case AUDIO_S32MSB:
- if (snd_format & SND_FORMAT32) {
- valid_datatype = 1;
- snd_format = Sndstatus(SND_QUERY32BIT);
- }
- break;
-
- /* no float support... */
-
- default:
- test_format = SDL_NextAudioFormat();
- break;
- }
- }
-
- if (!valid_datatype) {
- SDL_SetError("Unsupported audio format");
- return (-1);
- }
-
- /* Check signed/unsigned format */
- if (format_signed) {
- if (snd_format & SND_FORMATSIGNED) {
- /* Ok */
- } else if (snd_format & SND_FORMATUNSIGNED) {
- /* Give unsigned format */
- this->spec.format = this->spec.format & (~SDL_AUDIO_MASK_SIGNED);
- }
- } else {
- if (snd_format & SND_FORMATUNSIGNED) {
- /* Ok */
- } else if (snd_format & SND_FORMATSIGNED) {
- /* Give signed format */
- this->spec.format |= SDL_AUDIO_MASK_SIGNED;
- }
- }
-
- if (format_bigendian) {
- if (snd_format & SND_FORMATBIGENDIAN) {
- /* Ok */
- } else if (snd_format & SND_FORMATLITTLEENDIAN) {
- /* Give little endian format */
- this->spec.format = this->spec.format & (~SDL_AUDIO_MASK_ENDIAN);
- }
- } else {
- if (snd_format & SND_FORMATLITTLEENDIAN) {
- /* Ok */
- } else if (snd_format & SND_FORMATBIGENDIAN) {
- /* Give big endian format */
- this->spec.format |= SDL_AUDIO_MASK_ENDIAN;
- }
- }
-
- /* Calculate and select the closest frequency */
- MINTAUDIO_freqcount = 0;
- for (i = 1; i < 4; i++) {
- SDL_MintAudio_AddFrequency(this,
- MASTERCLOCK_44K / (MASTERPREDIV_MILAN *
- (1 << i)),
- MASTERCLOCK_44K, (1 << i) - 1, -1);
- }
-
-#if 1
- for (i = 0; i < MINTAUDIO_freqcount; i++) {
- DEBUG_PRINT((DEBUG_NAME "freq %d: %lu Hz, clock %lu, prediv %d\n",
- i, MINTAUDIO_frequencies[i].frequency,
- MINTAUDIO_frequencies[i].masterclock,
- MINTAUDIO_frequencies[i].predivisor));
- }
-#endif
-
- MINTAUDIO_numfreq = SDL_MintAudio_SearchFrequency(this, this->spec.freq);
- this->spec.freq = MINTAUDIO_frequencies[MINTAUDIO_numfreq].frequency;
-
- DEBUG_PRINT((DEBUG_NAME "obtained: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- return 0;
-}
-
-static void
-MINTGSXB_InitAudio(_THIS)
-{
- int channels_mode, prediv;
- void *buffer;
-
- /* Stop currently playing sound */
- Buffoper(0);
-
- /* Set replay tracks */
- Settracks(0, 0);
- Setmontracks(0);
-
- /* Select replay format */
- switch (SDL_AUDIO_BITSIZE(this->spec.format)) {
- case 8:
- if (this->spec.channels == 2) {
- channels_mode = STEREO8;
- } else {
- channels_mode = MONO8;
- }
- break;
- case 16:
- if (this->spec.channels == 2) {
- channels_mode = STEREO16;
- } else {
- channels_mode = MONO16;
- }
- break;
- case 32:
- if (this->spec.channels == 2) {
- channels_mode = STEREO32;
- } else {
- channels_mode = MONO32;
- }
- break;
- default:
- channels_mode = STEREO16;
- break;
- }
- if (Setmode(channels_mode) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setmode() failed\n"));
- }
-
- prediv = MINTAUDIO_frequencies[MINTAUDIO_numfreq].predivisor;
- Devconnect(DMAPLAY, DAC, CLKEXT, prediv, 1);
-
- /* Set buffer */
- buffer = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- if (Setbuffer(0, buffer, buffer + this->spec.size) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setbuffer() failed\n"));
- }
-
- /* Install interrupt */
- if (NSetinterrupt(2, SI_PLAY, MINTGSXB_GsxbInterrupt) < 0) {
- DEBUG_PRINT((DEBUG_NAME "NSetinterrupt() failed\n"));
- }
-
- /* Go */
- Buffoper(SB_PLA_ENA | SB_PLA_RPT);
- DEBUG_PRINT((DEBUG_NAME "hardware initialized\n"));
-}
-
-static int
-MINTGSXB_OpenDevice(_THIS, const char *devname, int iscapture)
-{
- /* Lock sound system */
- if (Locksnd() != 1) {
- SDL_SetError("MINTGSXB_OpenDevice: Audio system already in use");
- return 0;
- }
-
- SDL_MintAudio_device = this;
-
- /* Check audio capabilities */
- if (MINTGSXB_CheckAudio(this) == -1) {
- return 0;
- }
-
- /* Initialize all variables that we clean on shutdown */
- this->hidden = (struct SDL_PrivateAudioData *)
- SDL_malloc((sizeof *this->hidden));
- if (this->hidden == NULL) {
- SDL_OutOfMemory();
- return 0;
- }
- SDL_memset(this->hidden, 0, (sizeof *this->hidden));
-
- SDL_CalculateAudioSpec(&this->spec);
-
- /* Allocate memory for audio buffers in DMA-able RAM */
- DEBUG_PRINT((DEBUG_NAME "buffer size=%d\n", this->spec.size));
-
- SDL_MintAudio_audiobuf[0] =
- Atari_SysMalloc(this->spec.size * 2, MX_STRAM);
- if (SDL_MintAudio_audiobuf[0] == NULL) {
- SDL_free(this->hidden);
- this->hidden = NULL;
- SDL_OutOfMemory();
- return 0;
- }
- SDL_MintAudio_audiobuf[1] = SDL_MintAudio_audiobuf[0] + this->spec.size;
- SDL_MintAudio_numbuf = 0;
- SDL_memset(SDL_MintAudio_audiobuf[0], this->spec.silence,
- this->spec.size * 2);
- SDL_MintAudio_audiosize = this->spec.size;
- SDL_MintAudio_mutex = 0;
-
- DEBUG_PRINT((DEBUG_NAME "buffer 0 at 0x%08x\n",
- SDL_MintAudio_audiobuf[0]));
- DEBUG_PRINT((DEBUG_NAME "buffer 1 at 0x%08x\n",
- SDL_MintAudio_audiobuf[1]));
-
- SDL_MintAudio_CheckFpu();
-
- /* Setup audio hardware */
- MINTGSXB_InitAudio(this);
-
- return 1; /* good to go. */
-}
-
-static void
-MINTGSXB_GsxbInterrupt(void)
-{
- Uint8 *newbuf;
-
- if (SDL_MintAudio_mutex)
- return;
-
- SDL_MintAudio_mutex = 1;
-
- SDL_MintAudio_numbuf ^= 1;
- SDL_MintAudio_Callback();
- newbuf = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- Setbuffer(0, newbuf, newbuf + SDL_MintAudio_audiosize);
-
- SDL_MintAudio_mutex = 0;
-}
-
-static void
-MINTGSXB_GsxbNullInterrupt(void)
-{
-}
-
-static int
-MINTGSXB_Init(SDL_AudioDriverImpl * impl)
-{
- /* Cookie _SND present ? if not, assume ST machine */
- if (Getcookie(C__SND, &cookie_snd) == C_NOTFOUND) {
- cookie_snd = SND_PSG;
- }
-
- /* Check if we have 16 bits audio */
- if ((cookie_snd & SND_16BIT) == 0) {
- SDL_SetError(DEBUG_NAME "no 16-bit sound");
- return 0;
- }
-
- /* Cookie GSXB present ? */
- cookie_gsxb = (Getcookie(C_GSXB, &cookie_gsxb) == C_FOUND);
-
- /* Is it GSXB ? */
- if (((cookie_snd & SND_GSXB) == 0) || (cookie_gsxb == 0)) {
- SDL_SetError(DEBUG_NAME "no GSXB audio");
- return 0;
- }
-
- /* Check if audio is lockable */
- if (Locksnd() != 1) {
- SDL_SetError(DEBUG_NAME "audio locked by other application");
- return 0;
- }
-
- Unlocksnd();
-
- DEBUG_PRINT((DEBUG_NAME "GSXB audio available!\n"));
-
- /* Set the function pointers */
- impl->OpenDevice = MINTGSXB_OpenDevice;
- impl->CloseDevice = MINTGSXB_CloseDevice;
- impl->LockDevice = MINTGSXB_LockDevice;
- impl->UnlockDevice = MINTGSXB_UnlockDevice;
- impl->OnlyHasDefaultOutputDevice = 1;
- impl->ProvidesOwnCallbackThread = 1;
- impl->SkipMixerLock = 1;
-
- return 2; /* 2 == definitely has an audio device. */
-}
-
-AudioBootStrap MINTAUDIO_GSXB_bootstrap = {
- MINT_AUDIO_DRIVER_NAME, "MiNT GSXB audio driver", MINTGSXB_Init, 0
-};
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_gsxb.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * GSXB audio definitions
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_mintaudio_gsxb_h
-#define _SDL_mintaudio_gsxb_h
-
-#include <mint/falcon.h> /* for trap_14_xxx macros */
-
-/* GSXB Cookie */
-
-#define C_GSXB 0x47535842L
-
-/* Bit 5 in cookie _SND */
-
-#define SND_GSXB (1<<5)
-
-/* NSoundcmd modes */
-
-#define SETRATE 7 /* Set sample rate */
-#define SET8BITFORMAT 8 /* 8 bits format */
-#define SET16BITFORMAT 9 /* 16 bits format */
-#define SET24BITFORMAT 10 /* 24 bits format */
-#define SET32BITFORMAT 11 /* 32 bits format */
-#define LTATTEN_MASTER 12 /* Attenuation */
-#define RTATTEN_MASTER 13
-#define LTATTEN_MICIN 14
-#define RTATTEN_MICIN 15
-#define LTATTEN_FMGEN 16
-#define RTATTEN_FMGEN 17
-#define LTATTEN_LINEIN 18
-#define RTATTEN_LINEIN 19
-#define LTATTEN_CDIN 20
-#define RTATTEN_CDIN 21
-#define LTATTEN_VIDIN 22
-#define RTATTEN_VIDIN 23
-#define LTATTEN_AUXIN 24
-#define RTATTEN_AUXIN 25
-
-/* Setmode modes */
-
-#define MONO16 3
-#define STEREO24 4
-#define STEREO32 5
-#define MONO24 6
-#define MONO32 7
-
-/* Sndstatus modes */
-
-#define SND_QUERYFORMATS 2
-#define SND_QUERYMIXERS 3
-#define SND_QUERYSOURCES 4
-#define SND_QUERYDUPLEX 5
-#define SND_QUERY8BIT 8
-#define SND_QUERY16BIT 9
-#define SND_QUERY24BIT 10
-#define SND_QUERY32BIT 11
-
-#define SND_FORMAT8 (1<<0)
-#define SND_FORMAT16 (1<<1)
-#define SND_FORMAT24 (1<<2)
-#define SND_FORMAT32 (1<<3)
-
-#define SND_FORMATSIGNED (1<<0)
-#define SND_FORMATUNSIGNED (1<<1)
-#define SND_FORMATBIGENDIAN (1<<2)
-#define SND_FORMATLITTLEENDIAN (1<<3)
-
-/* Devconnect prescalers */
-
-#define CLK_44K 1
-#define CLK_22K 3
-#define CLK_11K 7
-
-/* Extra xbios functions */
-
-#define NSoundcmd(mode,data,data2) \
- (long)trap_14_wwl((short)130,(short)(mode),(short)(data),(long)(data2))
-#define NSetinterrupt(src_inter,cause,inth_addr) \
- (long)trap_14_wwwl((short)135,(short)(src_inter),(short)(cause), \
- (long)(inth_addr))
-
-#endif /* _SDL_mintaudio_gsxb_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_it.S Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-
-/*
- Audio interrupts
-
- Patrice Mandin, Didier Méquignon
- */
-
- .text
-
- .globl _SDL_MintAudio_Callback
-
- .globl _SDL_MintAudio_XbiosInterrupt
- .globl _SDL_MintAudio_XbiosInterruptMeasureClock
- .globl _SDL_MintAudio_Dma8Interrupt
- .globl _SDL_MintAudio_StfaInterrupt
-
- .globl _SDL_MintAudio_mutex
- .globl _SDL_MintAudio_audiobuf
- .globl _SDL_MintAudio_numbuf
- .globl _SDL_MintAudio_audiosize
- .globl _SDL_MintAudio_clocktics
- .globl _SDL_MintAudio_hasfpu
-
- .globl _SDL_MintAudio_stfa
-
-/*
- 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
-*/
-
-#define savptr 0x4a2
-#define savamt 0x46
-
-/*--- Xbios interrupt vector to measure Falcon external clock ---*/
-
-_SDL_MintAudio_XbiosInterruptMeasureClock: /* 1 mS */
-
- btst #0,0xFFFF8901:w /* state DMA sound */
- beqs SDL_MintAudio_EndIntMeasure
- addql #1,_SDL_MintAudio_clocktics
-SDL_MintAudio_EndIntMeasure:
- bclr #5,0xFFFFFA0F:w /* Clear service bit */
- rte
-
-/*--- Xbios interrupt vector ---*/
-
-_SDL_MintAudio_XbiosInterrupt:
-
- /* 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
- bne SDL_MintAudio_XbiosEnd
- notw _SDL_MintAudio_mutex
-
- /* Swap buffers */
- eorw #1,_SDL_MintAudio_numbuf
-
- moveml d0-d7/a0-a6,sp@-
-
- /* Save FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_MintAudio_Xbios_nofpu1
- .chip 68060
- fsave sp@-
- fmoveml fpcr/fpsr/fpiar,sp@-
- fmovemx fp0-fp7,sp@-
- .chip 68000
-SDL_MintAudio_Xbios_nofpu1:
-
- /* Callback */
- jsr _SDL_MintAudio_Callback
-
- /* Restore FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_MintAudio_Xbios_nofpu2
- .chip 68060
- fmovemx sp@+,fp0-fp7
- fmoveml sp@+,fpcr/fpsr/fpiar
- frestore sp@+
- .chip 68000
-SDL_MintAudio_Xbios_nofpu2:
-
- /* Reserve space for registers */
- subl #savamt,savptr
-
- /* Set new buffer */
-
- moveq #0,d0
- movel _SDL_MintAudio_audiosize,d1
-
- movew _SDL_MintAudio_numbuf,d0
- lsll #2,d0
- lea _SDL_MintAudio_audiobuf,a0
- movel a0@(d0:l),a1
-
- lea a1@(d1:l),a2
-
- movel a2,sp@-
- movel a1,sp@-
- clrw sp@-
- movew #131,sp@-
- trap #14
- lea sp@(12),sp
-
- /* Restore registers space */
- addl #savamt,savptr
-
- moveml sp@+,d0-d7/a0-a6
-
- clrw _SDL_MintAudio_mutex
-SDL_MintAudio_XbiosEnd:
- rte
-
-/*--- DMA 8 bits interrupt vector ---*/
-
-_SDL_MintAudio_Dma8Interrupt:
-
- /* 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
- bne SDL_MintAudio_Dma8End
- notw _SDL_MintAudio_mutex
-
- /* Swap buffers */
- eorw #1,_SDL_MintAudio_numbuf
-
- moveml d0-d1/a0-a1,sp@-
-
- /* Save FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_MintAudio_Dma8_nofpu1
- .chip 68060
- fsave sp@-
- fmoveml fpcr/fpsr/fpiar,sp@-
- fmovemx fp0-fp7,sp@-
- .chip 68000
-SDL_MintAudio_Dma8_nofpu1:
-
- /* Callback */
- jsr _SDL_MintAudio_Callback
-
- /* Restore FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_MintAudio_Dma8_nofpu2
- .chip 68060
- fmovemx sp@+,fp0-fp7
- fmoveml sp@+,fpcr/fpsr/fpiar
- frestore sp@+
- .chip 68000
-SDL_MintAudio_Dma8_nofpu2:
-
- /* Set new buffer */
-
- moveq #0,d0
-
- movew _SDL_MintAudio_numbuf,d0
- lslw #2,d0
- lea _SDL_MintAudio_audiobuf,a0
- movel a0@(d0:w),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_mutex
-SDL_MintAudio_Dma8End:
- rte
-
-/*--- STFA interrupt vector ---*/
-
-STFA_SOUND_START = 6
-STFA_SOUND_END = STFA_SOUND_START+8
-
-_SDL_MintAudio_StfaInterrupt:
-
- /* Reenable interrupts, so other interrupts can work */
- movew #0x2300,sr
-
- /* Check if we are not already running */
- tstw _SDL_MintAudio_mutex
- bnes SDL_MintAudio_StfaEnd
- notw _SDL_MintAudio_mutex
-
- /* Swap buffers */
- eorw #1,_SDL_MintAudio_numbuf
-
- moveml d0-d7/a0-a6,sp@-
-
- /* Save FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_MintAudio_Stfa_nofpu1
- .chip 68060
- fsave sp@-
- fmoveml fpcr/fpsr/fpiar,sp@-
- fmovemx fp0-fp7,sp@-
- .chip 68000
-SDL_MintAudio_Stfa_nofpu1:
-
- /* Callback */
- jsr _SDL_MintAudio_Callback
-
- /* Restore FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_MintAudio_Stfa_nofpu2
- .chip 68060
- fmovemx sp@+,fp0-fp7
- fmoveml sp@+,fpcr/fpsr/fpiar
- frestore sp@+
- .chip 68000
-SDL_MintAudio_Stfa_nofpu2:
-
- /* Set new buffer */
-
- moveq #0,d0
- movel _SDL_MintAudio_stfa,a1
-
- movew _SDL_MintAudio_numbuf,d0
- lslw #2,d0
- lea _SDL_MintAudio_audiobuf,a0
- movel a0@(d0:w),d1
-
- /* Modify STFA replay buffers */
- movel d1,a1@(STFA_SOUND_START)
- addl _SDL_MintAudio_audiosize,d1
- movel d1,a1@(STFA_SOUND_END)
-
- moveml sp@+,d0-d7/a0-a6
-
- clrw _SDL_MintAudio_mutex
-SDL_MintAudio_StfaEnd:
- rte
--- a/src/audio/mint/SDL_mintaudio_mcsn.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MiNT audio driver
- using XBIOS functions (MacSound compatible driver)
-
- Patrice Mandin
-*/
-
-#include <support.h>
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-#include <mint/cookie.h>
-
-#include "SDL_audio.h"
-#include "../SDL_audio_c.h"
-#include "../SDL_sysaudio.h"
-
-#include "../../video/ataricommon/SDL_atarimxalloc_c.h"
-
-#include "SDL_mintaudio.h"
-#include "SDL_mintaudio_mcsn.h"
-
-/*--- Defines ---*/
-
-#define MINT_AUDIO_DRIVER_NAME "mint_mcsn"
-
-/* Debug print info */
-#define DEBUG_NAME "audio:mcsn: "
-#if 0
-#define DEBUG_PRINT(what) \
- { \
- printf what; \
- }
-#else
-#define DEBUG_PRINT(what)
-#endif
-
-/*--- Static variables ---*/
-
-static unsigned long cookie_snd = 0;
-static unsigned long cookie_mch = 0;
-static cookie_mcsn_t *cookie_mcsn = NULL;
-
-static void
-MINTMCSN_LockDevice(_THIS)
-{
- /* Stop replay */
- Buffoper(0);
-}
-
-static void
-MINTMCSN_UnlockDevice(_THIS)
-{
- /* Restart replay */
- Buffoper(SB_PLA_ENA | SB_PLA_RPT);
-}
-
-static void
-MINTMCSN_CloseDevice(_THIS)
-{
- if (this->hidden != NULL) {
- /* Stop replay */
- SDL_MintAudio_WaitThread();
- Buffoper(0);
-
- if (!SDL_MintAudio_mint_present) {
- /* Uninstall interrupt */
- Jdisint(MFP_DMASOUND);
- }
-
- /* Wait if currently playing sound */
- while (SDL_MintAudio_mutex != 0) {
- }
-
- /* Clear buffers */
- if (SDL_MintAudio_audiobuf[0]) {
- Mfree(SDL_MintAudio_audiobuf[0]);
- SDL_MintAudio_audiobuf[0] = SDL_MintAudio_audiobuf[1] = NULL;
- }
-
- /* Unlock sound system */
- Unlocksnd();
-
- SDL_free(this->hidden);
- this->hidden = NULL;
- }
-}
-
-static int
-MINTMCSN_CheckAudio(_THIS)
-{
- int i;
- unsigned long masterclock, masterprediv;
-
- DEBUG_PRINT((DEBUG_NAME "asked: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- if (this->spec.channels > 2) {
- this->spec.channels = 2; /* no more than stereo! */
- }
-
- /* Check formats available */
- MINTAUDIO_freqcount = 0;
- switch (cookie_mcsn->play) {
- case MCSN_ST:
- this->spec.channels = 1;
- this->spec.format = AUDIO_S8; /* FIXME: is it signed or unsigned ? */
- SDL_MintAudio_AddFrequency(this, 12500, 0, 0, -1);
- break;
- case MCSN_TT: /* Also STE, Mega STE */
- this->spec.format = AUDIO_S8;
- masterclock = MASTERCLOCK_STE;
- masterprediv = MASTERPREDIV_STE;
- if ((cookie_mch >> 16) == MCH_TT) {
- masterclock = MASTERCLOCK_TT;
- masterprediv = MASTERPREDIV_TT;
- }
- for (i = 0; i < 4; i++) {
- SDL_MintAudio_AddFrequency(this,
- masterclock / (masterprediv *
- (1 << i)),
- masterclock, 3 - i, -1);
- }
- break;
- case MCSN_FALCON: /* Also Mac */
- for (i = 1; i < 12; i++) {
- /* Remove unusable Falcon codec predivisors */
- if ((i == 6) || (i == 8) || (i == 10)) {
- continue;
- }
- SDL_MintAudio_AddFrequency(this,
- MASTERCLOCK_FALCON1 /
- (MASTERPREDIV_FALCON * (i + 1)),
- CLK25M, i + 1, -1);
- }
- if (cookie_mcsn->res1 != 0) {
- for (i = 1; i < 4; i++) {
- SDL_MintAudio_AddFrequency(this,
- (cookie_mcsn->res1) /
- (MASTERPREDIV_FALCON *
- (1 << i)), CLKEXT,
- (1 << i) - 1, -1);
- }
- }
- this->spec.format |= SDL_AUDIO_MASK_SIGNED; /* Audio is always signed */
- if ((SDL_AUDIO_BITSIZE(this->spec.format)) == 16) {
- this->spec.format |= SDL_AUDIO_MASK_ENDIAN; /* Audio is always big endian */
- this->spec.channels = 2; /* 16 bits always stereo */
- }
- break;
- }
-
-#if 1
- for (i = 0; i < MINTAUDIO_freqcount; i++) {
- DEBUG_PRINT((DEBUG_NAME "freq %d: %lu Hz, clock %lu, prediv %d\n",
- i, MINTAUDIO_frequencies[i].frequency,
- MINTAUDIO_frequencies[i].masterclock,
- MINTAUDIO_frequencies[i].predivisor));
- }
-#endif
-
- MINTAUDIO_numfreq = SDL_MintAudio_SearchFrequency(this, this->spec.freq);
- this->spec.freq = MINTAUDIO_frequencies[MINTAUDIO_numfreq].frequency;
-
- DEBUG_PRINT((DEBUG_NAME "obtained: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- return 0;
-}
-
-static void
-MINTMCSN_InitAudio(_THIS)
-{
- int channels_mode, prediv, dmaclock;
- void *buffer;
-
- /* Stop currently playing sound */
- SDL_MintAudio_quit_thread = SDL_FALSE;
- SDL_MintAudio_thread_finished = SDL_TRUE;
- SDL_MintAudio_WaitThread();
- Buffoper(0);
-
- /* Set replay tracks */
- Settracks(0, 0);
- Setmontracks(0);
-
- /* Select replay format */
- channels_mode = STEREO16;
- switch (SDL_AUDIO_BITSIZE(this->spec.format)) {
- case 8:
- if (this->spec.channels == 2) {
- channels_mode = STEREO8;
- } else {
- channels_mode = MONO8;
- }
- break;
- }
- if (Setmode(channels_mode) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setmode() failed\n"));
- }
-
- dmaclock = MINTAUDIO_frequencies[MINTAUDIO_numfreq].masterclock;
- prediv = MINTAUDIO_frequencies[MINTAUDIO_numfreq].predivisor;
- switch (cookie_mcsn->play) {
- case MCSN_TT:
- Devconnect(DMAPLAY, DAC, CLK25M, CLKOLD, 1);
- Soundcmd(SETPRESCALE, prediv);
- DEBUG_PRINT((DEBUG_NAME "STE/TT prescaler selected\n"));
- break;
- case MCSN_FALCON:
- Devconnect(DMAPLAY, DAC, dmaclock, prediv, 1);
- DEBUG_PRINT((DEBUG_NAME "Falcon prescaler selected\n"));
- break;
- }
-
- /* Set buffer */
- buffer = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- if (Setbuffer(0, buffer, buffer + this->spec.size) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setbuffer() failed\n"));
- }
-
- if (SDL_MintAudio_mint_present) {
- SDL_MintAudio_thread_pid = tfork(SDL_MintAudio_Thread, 0);
- } else {
- /* Install interrupt */
- Jdisint(MFP_DMASOUND);
- Xbtimer(XB_TIMERA, 8, 1, SDL_MintAudio_XbiosInterrupt);
- Jenabint(MFP_DMASOUND);
-
- if (Setinterrupt(SI_TIMERA, SI_PLAY) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setinterrupt() failed\n"));
- }
- }
-
- /* Go */
- Buffoper(SB_PLA_ENA | SB_PLA_RPT);
- DEBUG_PRINT((DEBUG_NAME "hardware initialized\n"));
-}
-
-static int
-MINTMCSN_OpenDevice(_THIS, const char *devname, int iscapture)
-{
- /* Lock sound system */
- if (Locksnd() != 1) {
- SDL_SetError("MINTMCSN_OpenDevice: Audio system already in use");
- return 0;
- }
-
- SDL_MintAudio_device = this;
-
- /* Check audio capabilities */
- if (MINTMCSN_CheckAudio(this) == -1) {
- return 0;
- }
-
- /* Initialize all variables that we clean on shutdown */
- this->hidden = (struct SDL_PrivateAudioData *)
- SDL_malloc((sizeof *this->hidden));
- if (this->hidden == NULL) {
- SDL_OutOfMemory();
- return 0;
- }
- SDL_memset(this->hidden, 0, (sizeof *this->hidden));
-
- SDL_CalculateAudioSpec(&this->spec);
-
- /* Allocate memory for audio buffers in DMA-able RAM */
- DEBUG_PRINT((DEBUG_NAME "buffer size=%d\n", this->spec.size));
-
- SDL_MintAudio_audiobuf[0] =
- Atari_SysMalloc(this->spec.size * 2, MX_STRAM);
- if (SDL_MintAudio_audiobuf[0] == NULL) {
- SDL_free(this->hidden);
- this->hidden = NULL;
- SDL_OutOfMemory();
- return 0;
- }
- SDL_MintAudio_audiobuf[1] = SDL_MintAudio_audiobuf[0] + this->spec.size;
- SDL_MintAudio_numbuf = 0;
- SDL_memset(SDL_MintAudio_audiobuf[0], this->spec.silence,
- this->spec.size * 2);
- SDL_MintAudio_audiosize = this->spec.size;
- SDL_MintAudio_mutex = 0;
-
- DEBUG_PRINT((DEBUG_NAME "buffer 0 at 0x%08x\n",
- SDL_MintAudio_audiobuf[0]));
- DEBUG_PRINT((DEBUG_NAME "buffer 1 at 0x%08x\n",
- SDL_MintAudio_audiobuf[1]));
-
- SDL_MintAudio_CheckFpu();
-
- /* Setup audio hardware */
- MINTMCSN_InitAudio(this);
-
- return 1; /* good to go. */
-}
-
-static int
-MINTMCSN_Init(SDL_AudioDriverImpl * impl)
-{
- unsigned long dummy = 0;
-
- SDL_MintAudio_mint_present = (Getcookie(C_MiNT, &dummy) == C_FOUND);
-
- /* We can't use XBIOS in interrupt with Magic, don't know about thread */
- if (Getcookie(C_MagX, &dummy) == C_FOUND) {
- return 0;
- }
-
- /* Cookie _MCH present ? if not, assume ST machine */
- if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
- cookie_mch = MCH_ST;
- }
-
- /* Cookie _SND present ? if not, assume ST machine */
- if (Getcookie(C__SND, &cookie_snd) == C_NOTFOUND) {
- cookie_snd = SND_PSG;
- }
-
- /* Check if we have 16 bits audio */
- if ((cookie_snd & SND_16BIT) == 0) {
- SDL_SetError(DEBUG_NAME "no 16-bit sound");
- return 0;
- }
-
- /* Cookie MCSN present ? */
- if (Getcookie(C_McSn, (long *) &cookie_mcsn) != C_FOUND) {
- SDL_SetError(DEBUG_NAME "no MCSN audio");
- return 0;
- }
-
- /* Check if interrupt at end of replay */
- if (cookie_mcsn->pint == 0) {
- SDL_SetError(DEBUG_NAME "no interrupt at end of replay");
- return 0;
- }
-
- /* Check if audio is lockable */
- if (Locksnd() != 1) {
- SDL_SetError(DEBUG_NAME "audio locked by other application");
- return 0;
- }
-
- Unlocksnd();
-
- DEBUG_PRINT((DEBUG_NAME "MCSN audio available!\n"));
-
- /* Set the function pointers */
- impl->OpenDevice = MINTMCSN_OpenDevice;
- impl->CloseDevice = MINTMCSN_CloseDevice;
- impl->LockDevice = MINTMCSN_LockDevice;
- impl->UnlockDevice = MINTMCSN_UnlockDevice;
- impl->OnlyHasDefaultOutputDevice = 1;
- impl->ProvidesOwnCallbackThread = 1;
- impl->SkipMixerLock = 1;
-
- return 2; /* 2 == definitely has an audio device. */
-}
-
-AudioBootStrap MINTAUDIO_MCSN_bootstrap = {
- MINT_AUDIO_DRIVER_NAME, "MiNT MCSN audio driver", MINTMCSN_Init, 0
-};
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_mcsn.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MCSN control structure
-
- Patrice Mandin
-*/
-
-#ifndef _SDL_mintaudio_mcsh_h
-#define _SDL_mintaudio_mcsh_h
-
-typedef struct
-{
- unsigned short version; /* Version */
- unsigned short size; /* Size of structure */
-
- unsigned short play; /* Replay capability */
- unsigned short record; /* Record capability */
- unsigned short dsp; /* DSP56K present */
- unsigned short pint; /* Interrupt at end of replay */
- unsigned short rint; /* Interrupt at end of record */
-
- unsigned long res1; /* Frequency of external clock */
- unsigned long res2;
- unsigned long res3;
- unsigned long res4;
-} cookie_mcsn_t __attribute__ ((packed));
-
-enum
-{
- MCSN_ST = 0,
- MCSN_TT,
- MCSN_STE = MCSN_TT,
- MCSN_FALCON,
- MCSN_MAC = MCSN_FALCON
-};
-
-#define SETSMPFREQ 7 /* Set sample frequency */
-
-#endif /* _SDL_mintaudio_mcsh_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_stfa.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,307 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MiNT audio driver
- using XBIOS functions (STFA driver)
-
- Patrice Mandin
-*/
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-#include <mint/cookie.h>
-
-#include "SDL_audio.h"
-#include "../SDL_audio_c.h"
-#include "../SDL_sysaudio.h"
-
-#include "../../video/ataricommon/SDL_atarimxalloc_c.h"
-
-#include "SDL_mintaudio.h"
-#include "SDL_mintaudio_stfa.h"
-
-/*--- Defines ---*/
-
-#define MINT_AUDIO_DRIVER_NAME "mint_stfa"
-
-/* Debug print info */
-#define DEBUG_NAME "audio:stfa: "
-#if 0
-#define DEBUG_PRINT(what) \
- { \
- printf what; \
- }
-#else
-#define DEBUG_PRINT(what)
-#endif
-
-/*--- Static variables ---*/
-
-static unsigned long cookie_snd = 0;
-static unsigned long cookie_mch = 0;
-static cookie_stfa_t *cookie_stfa = NULL;
-
-static const int freqs[16] = {
- 4995, 6269, 7493, 8192,
- 9830, 10971, 12538, 14985,
- 16384, 19819, 21943, 24576,
- 30720, 32336, 43885, 49152
-};
-
-static void
-MINTSTFA_LockDevice(_THIS)
-{
- /* Stop replay */
- void *oldpile = (void *) Super(0);
- cookie_stfa->sound_enable = STFA_PLAY_DISABLE;
- Super(oldpile);
-}
-
-static void
-MINTSTFA_UnlockDevice(_THIS)
-{
- /* Restart replay */
- void *oldpile = (void *) Super(0);
- cookie_stfa->sound_enable = STFA_PLAY_ENABLE | STFA_PLAY_REPEAT;
- Super(oldpile);
-}
-
-static void
-MINTSTFA_CloseDevice(_THIS)
-{
- if (this->hidden != NULL) {
- /* Stop replay */
- void *oldpile = (void *) Super(0);
- cookie_stfa->sound_enable = STFA_PLAY_DISABLE;
- Super(oldpile);
-
- /* Wait if currently playing sound */
- while (SDL_MintAudio_mutex != 0) {
- }
-
- /* Clear buffers */
- if (SDL_MintAudio_audiobuf[0]) {
- Mfree(SDL_MintAudio_audiobuf[0]);
- SDL_MintAudio_audiobuf[0] = SDL_MintAudio_audiobuf[1] = NULL;
- }
-
- SDL_free(this->hidden);
- this->hidden = NULL;
- }
-}
-
-static int
-MINTSTFA_CheckAudio(_THIS)
-{
- int i;
-
- DEBUG_PRINT((DEBUG_NAME "asked: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- if (SDL_AUDIO_BITSIZE(this->spec.format) > 16) {
- this->spec.format = AUDIO_S16SYS; /* clamp out int32/float32 ... */
- }
-
- if (this->spec.channels > 2) {
- this->spec.channels = 2; /* no more than stereo! */
- }
-
- /* Check formats available */
- MINTAUDIO_freqcount = 0;
- for (i = 0; i < 16; i++) {
- SDL_MintAudio_AddFrequency(this, freqs[i], 0, i, -1);
- }
-
-#if 1
- for (i = 0; i < MINTAUDIO_freqcount; i++) {
- DEBUG_PRINT((DEBUG_NAME "freq %d: %lu Hz, clock %lu, prediv %d\n",
- i, MINTAUDIO_frequencies[i].frequency,
- MINTAUDIO_frequencies[i].masterclock,
- MINTAUDIO_frequencies[i].predivisor));
- }
-#endif
-
- MINTAUDIO_numfreq = SDL_MintAudio_SearchFrequency(this, this->spec.freq);
- this->spec.freq = MINTAUDIO_frequencies[MINTAUDIO_numfreq].frequency;
-
- DEBUG_PRINT((DEBUG_NAME "obtained: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- return 0;
-}
-
-static void
-MINTSTFA_InitAudio(_THIS)
-{
- void *buffer = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- void *oldpile = (void *) Super(0);
-
- /* Stop replay */
- cookie_stfa->sound_enable = STFA_PLAY_DISABLE;
-
- /* Select replay format */
- cookie_stfa->sound_control =
- MINTAUDIO_frequencies[MINTAUDIO_numfreq].predivisor;
- if (SDL_AUDIO_BITSIZE(this->spec.format) == 8) {
- cookie_stfa->sound_control |= STFA_FORMAT_8BIT;
- } else {
- cookie_stfa->sound_control |= STFA_FORMAT_16BIT;
- }
- if (this->spec.channels == 2) {
- cookie_stfa->sound_control |= STFA_FORMAT_STEREO;
- } else {
- cookie_stfa->sound_control |= STFA_FORMAT_MONO;
- }
- if (SDL_AUDIO_ISSIGNED(this->spec.format) != 0) {
- cookie_stfa->sound_control |= STFA_FORMAT_SIGNED;
- } else {
- cookie_stfa->sound_control |= STFA_FORMAT_UNSIGNED;
- }
- if (SDL_AUDIO_ISBIGENDIAN(this->spec.format) != 0) {
- cookie_stfa->sound_control |= STFA_FORMAT_BIGENDIAN;
- } else {
- cookie_stfa->sound_control |= STFA_FORMAT_LITENDIAN;
- }
-
- /* Set buffer */
- cookie_stfa->sound_start = (unsigned long) buffer;
- cookie_stfa->sound_end = (unsigned long) (buffer + this->spec.size);
-
- /* Set interrupt */
- cookie_stfa->stfa_it = SDL_MintAudio_StfaInterrupt;
-
- /* Restart replay */
- cookie_stfa->sound_enable = STFA_PLAY_ENABLE | STFA_PLAY_REPEAT;
-
- Super(oldpile);
-
- DEBUG_PRINT((DEBUG_NAME "hardware initialized\n"));
-}
-
-static int
-MINTSTFA_OpenDevice(_THIS, const char *devname, int iscapture)
-{
- SDL_MintAudio_device = this;
-
- /* Check audio capabilities */
- if (MINTSTFA_CheckAudio(this) == -1) {
- return 0;
- }
-
- /* Initialize all variables that we clean on shutdown */
- this->hidden = (struct SDL_PrivateAudioData *)
- SDL_malloc((sizeof *this->hidden));
- if (this->hidden == NULL) {
- SDL_OutOfMemory();
- return 0;
- }
- SDL_memset(this->hidden, 0, (sizeof *this->hidden));
-
- SDL_CalculateAudioSpec(&this->spec);
-
- /* Allocate memory for audio buffers in DMA-able RAM */
- DEBUG_PRINT((DEBUG_NAME "buffer size=%d\n", this->spec.size));
-
- SDL_MintAudio_audiobuf[0] =
- Atari_SysMalloc(this->spec.size * 2, MX_STRAM);
- if (SDL_MintAudio_audiobuf[0] == NULL) {
- SDL_OutOfMemory();
- SDL_free(this->hidden);
- this->hidden = NULL;
- return 0;
- }
- SDL_MintAudio_audiobuf[1] = SDL_MintAudio_audiobuf[0] + this->spec.size;
- SDL_MintAudio_numbuf = 0;
- SDL_memset(SDL_MintAudio_audiobuf[0], this->spec.silence,
- this->spec.size * 2);
- SDL_MintAudio_audiosize = this->spec.size;
- SDL_MintAudio_mutex = 0;
-
- DEBUG_PRINT((DEBUG_NAME "buffer 0 at 0x%08x\n",
- SDL_MintAudio_audiobuf[0]));
- DEBUG_PRINT((DEBUG_NAME "buffer 1 at 0x%08x\n",
- SDL_MintAudio_audiobuf[1]));
-
- SDL_MintAudio_CheckFpu();
-
- /* Setup audio hardware */
- MINTSTFA_InitAudio(this);
-
- return 1; /* good to go. */
-}
-
-
-static int
-MINTSTFA_Init(SDL_AudioDriverImpl * impl)
-{
- /* Cookie _MCH present ? if not, assume ST machine */
- if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
- cookie_mch = MCH_ST;
- }
-
- /* Cookie _SND present ? if not, assume ST machine */
- if (Getcookie(C__SND, &cookie_snd) == C_NOTFOUND) {
- cookie_snd = SND_PSG;
- }
-
- /* Cookie STFA present ? */
- if (Getcookie(C_STFA, (long *) &cookie_stfa) != C_FOUND) {
- SDL_SetError(DEBUG_NAME "no STFA audio");
- return (0);
- }
-
- SDL_MintAudio_stfa = cookie_stfa;
-
- DEBUG_PRINT((DEBUG_NAME "STFA audio available!\n"));
-
- /* Set the function pointers */
- impl->OpenDevice = MINTSTFA_OpenDevice;
- impl->CloseDevice = MINTSTFA_CloseDevice;
- impl->LockDevice = MINTSTFA_LockDevice;
- impl->UnlockDevice = MINTSTFA_UnlockDevice;
- impl->OnlyHasDefaultOutputDevice = 1;
- impl->ProvidesOwnCallbackThread = 1;
- impl->SkipMixerLock = 1;
-
- return 2; /* 2 == definitely has an audio device. */
-}
-
-AudioBootStrap MINTAUDIO_STFA_bootstrap = {
- MINT_AUDIO_DRIVER_NAME, "MiNT STFA audio driver", MINTSTFA_Init, 0
-};
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_stfa.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- STFA control structure
-
- Patrice Mandin
-*/
-
-#ifndef _SDL_mintaudio_stfa_h
-#define _SDL_mintaudio_stfa_h
-
-/*--- Defines ---*/
-
-#define C_STFA 0x53544641L /* Sound treiber für atari (seb/The removers) */
-
-#define STFA_PLAY_ENABLE (1<<0)
-#define STFA_PLAY_DISABLE (0<<0)
-#define STFA_PLAY_REPEAT (1<<1)
-#define STFA_PLAY_SINGLE (0<<1)
-
-#define STFA_FORMAT_SIGNED (1<<15)
-#define STFA_FORMAT_UNSIGNED (0<<15)
-#define STFA_FORMAT_STEREO (1<<14)
-#define STFA_FORMAT_MONO (0<<14)
-#define STFA_FORMAT_16BIT (1<<13)
-#define STFA_FORMAT_8BIT (0<<13)
-#define STFA_FORMAT_LITENDIAN (1<<9)
-#define STFA_FORMAT_BIGENDIAN (0<<9)
-#define STFA_FORMAT_FREQ_MASK 0x0f
-enum
-{
- STFA_FORMAT_F4995 = 0,
- STFA_FORMAT_F6269,
- STFA_FORMAT_F7493,
- STFA_FORMAT_F8192,
-
- STFA_FORMAT_F9830,
- STFA_FORMAT_F10971,
- STFA_FORMAT_F12538,
- STFA_FORMAT_F14985,
-
- STFA_FORMAT_F16384,
- STFA_FORMAT_F19819,
- STFA_FORMAT_F21943,
- STFA_FORMAT_F24576,
-
- STFA_FORMAT_F30720,
- STFA_FORMAT_F32336,
- STFA_FORMAT_F43885,
- STFA_FORMAT_F49152
-};
-
-/*--- Types ---*/
-
-typedef struct
-{
- unsigned short sound_enable;
- unsigned short sound_control;
- unsigned short sound_output;
- unsigned long sound_start;
- unsigned long sound_current;
- unsigned long sound_end;
- unsigned short version;
- void *old_vbl;
- void *old_timera;
- unsigned long old_mfp_status;
- void *new_vbl;
- void *drivers_list;
- void *play_stop;
- unsigned short frequency;
- void *set_frequency;
-
- unsigned short frequency_threshold;
- unsigned short *custom_freq_table;
- unsigned short stfa_on_off;
- void *new_drivers_list;
- unsigned long old_bit_2_of_cookie_snd;
- void (*stfa_it) (void);
-} cookie_stfa_t __attribute__ ((packed));
-
-#endif /* _SDL_mintaudio_stfa_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/audio/mint/SDL_mintaudio_xbios.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,500 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/*
- MiNT audio driver
- using XBIOS functions (Falcon)
-
- Patrice Mandin, Didier Méquignon
-*/
-
-#include <unistd.h>
-#include <support.h>
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-#include <mint/cookie.h>
-
-#include "SDL_audio.h"
-#include "../SDL_audio_c.h"
-#include "../SDL_sysaudio.h"
-
-#include "../../video/ataricommon/SDL_atarimxalloc_c.h"
-
-#include "SDL_mintaudio.h"
-#include "SDL_mintaudio_dma8.h"
-
-/*--- Defines ---*/
-
-#define MINT_AUDIO_DRIVER_NAME "mint_xbios"
-
-/* Debug print info */
-#define DEBUG_NAME "audio:xbios: "
-#if 0
-#define DEBUG_PRINT(what) \
- { \
- printf what; \
- }
-#else
-#define DEBUG_PRINT(what)
-#endif
-
-static unsigned long cookie_snd = 0;
-
-static void
-MINTXBIOS_LockDevice(_THIS)
-{
- /* Stop replay */
- Buffoper(0);
-}
-
-static void
-MINTXBIOS_UnlockDevice(_THIS)
-{
- /* Restart replay */
- Buffoper(SB_PLA_ENA | SB_PLA_RPT);
-}
-
-static void
-MINTXBIOS_CloseDevice(_THIS)
-{
- if (this->hidden != NULL) {
- /* Stop replay */
- SDL_MintAudio_WaitThread();
- Buffoper(0);
-
- if (!SDL_MintAudio_mint_present) {
- /* Uninstall interrupt */
- Jdisint(MFP_DMASOUND);
- }
-
- /* Wait if currently playing sound */
- while (SDL_MintAudio_mutex != 0) {
- }
-
- /* Clear buffers */
- if (SDL_MintAudio_audiobuf[0]) {
- Mfree(SDL_MintAudio_audiobuf[0]);
- SDL_MintAudio_audiobuf[0] = SDL_MintAudio_audiobuf[1] = NULL;
- }
-
- /* Unlock sound system */
- Unlocksnd();
-
- SDL_free(this->hidden);
- this->hidden = NULL;
- }
-}
-
-/* Falcon XBIOS implementation of Devconnect() is buggy with external clock */
-static void
-Devconnect2(int src, int dst, int sclk, int pre)
-{
- static const unsigned short MASK1[3] = { 0, 0x6000, 0 };
- static const unsigned short MASK2[4] = { 0xFFF0, 0xFF8F, 0xF0FF, 0x0FFF };
- static const unsigned short INDEX1[4] = { 1, 3, 5, 7 };
- static const unsigned short INDEX2[4] = { 0, 2, 4, 6 };
- unsigned short sync_div, dev_ctrl, dest_ctrl;
- void *oldstack;
-
- if (dst == 0) {
- return;
- }
-
- oldstack = (void *) Super(0);
-
- dev_ctrl = DMAAUDIO_IO.dev_ctrl;
- dest_ctrl = DMAAUDIO_IO.dest_ctrl;
- dev_ctrl &= MASK2[src];
-
- if (src == ADC) {
- dev_ctrl |= MASK1[sclk];
- } else {
- dev_ctrl |= (INDEX1[sclk] << (src << 4));
- }
-
- if (dst & DMAREC) {
- dest_ctrl &= 0xFFF0;
- dest_ctrl |= INDEX1[src];
- }
-
- if (dst & DSPRECV) {
- dest_ctrl &= 0xFF8F;
- dest_ctrl |= (INDEX1[src] << 4);
- }
-
- if (dst & EXTOUT) {
- dest_ctrl &= 0xF0FF;
- dest_ctrl |= (INDEX1[src] << 8);
- }
-
- if (dst & DAC) {
- dev_ctrl &= 0x0FFF;
- dev_ctrl |= MASK1[sclk];
- dest_ctrl &= 0x0FFF;
- dest_ctrl |= (INDEX2[src] << 12);
- }
-
- sync_div = DMAAUDIO_IO.sync_div;
- if (sclk == CLKEXT) {
- pre <<= 8;
- sync_div &= 0xF0FF;
- } else {
- sync_div &= 0xFFF0;
- }
- sync_div |= pre;
-
- DMAAUDIO_IO.dev_ctrl = dev_ctrl;
- DMAAUDIO_IO.dest_ctrl = dest_ctrl;
- DMAAUDIO_IO.sync_div = sync_div;
-
- Super(oldstack);
-}
-
-static void
-MINTXBIOS_CheckExternalClock(_THIS)
-{
-#define SIZE_BUF_CLOCK_MEASURE (44100/10)
-
- unsigned long cookie_snd;
- char *buffer;
- int i, j;
-
- /* DSP present with its GPIO port ? */
- if (Getcookie(C__SND, &cookie_snd) == C_NOTFOUND) {
- return;
- }
- if ((cookie_snd & SND_DSP) == 0) {
- return;
- }
-
- buffer = Atari_SysMalloc(SIZE_BUF_CLOCK_MEASURE, MX_STRAM);
- if (buffer == NULL) {
- DEBUG_PRINT((DEBUG_NAME "Not enough memory for the measure\n"));
- return;
- }
- SDL_memset(buffer, 0, SIZE_BUF_CLOCK_MEASURE);
-
- Buffoper(0);
- Settracks(0, 0);
- Setmontracks(0);
- Setmode(MONO8);
- Jdisint(MFP_TIMERA);
-
- for (i = 0; i < 2; i++) {
- Gpio(GPIO_SET, 7); /* DSP port gpio outputs */
- Gpio(GPIO_WRITE, 2 + i); /* 22.5792/24.576 MHz for 44.1/48KHz */
- Devconnect2(DMAPLAY, DAC, CLKEXT, CLK50K); /* Matrix and clock source */
- Setbuffer(0, buffer, buffer + SIZE_BUF_CLOCK_MEASURE); /* Set buffer */
- Xbtimer(XB_TIMERA, 5, 38, SDL_MintAudio_XbiosInterruptMeasureClock); /* delay mode timer A, prediv /64, 1KHz */
- Jenabint(MFP_TIMERA);
- SDL_MintAudio_clocktics = 0;
- Buffoper(SB_PLA_ENA);
- usleep(110000);
-
- if ((Buffoper(-1) & 1) == 0) {
- if (SDL_MintAudio_clocktics) {
- unsigned long khz;
-
- khz =
- ((SIZE_BUF_CLOCK_MEASURE /
- SDL_MintAudio_clocktics) + 1) & 0xFFFFFFFE;
- DEBUG_PRINT((DEBUG_NAME "measure %d: freq=%lu KHz\n",
- i + 1, khz));
-
- if (khz == 44) {
- for (j = 1; j < 4; j++) {
- SDL_MintAudio_AddFrequency(this,
- MASTERCLOCK_44K
- /
- (MASTERPREDIV_FALCON
- * (1 << j)),
- MASTERCLOCK_44K,
- (1 << j) - 1, 2 + i);
- }
- } else if (khz == 48) {
- for (j = 1; j < 4; j++) {
- SDL_MintAudio_AddFrequency(this,
- MASTERCLOCK_48K
- /
- (MASTERPREDIV_FALCON
- * (1 << j)),
- MASTERCLOCK_48K,
- (1 << j) - 1, 2 + i);
- }
- }
- } else {
- DEBUG_PRINT((DEBUG_NAME "No measure\n"));
- }
- } else {
- DEBUG_PRINT((DEBUG_NAME "No SDMA clock\n"));
- }
-
- Buffoper(0); /* stop */
- Jdisint(MFP_TIMERA); /* Uninstall interrupt */
- }
-
- Mfree(buffer);
-}
-
-static int
-MINTXBIOS_CheckAudio(_THIS)
-{
- int i;
- Uint32 extclock;
-
- DEBUG_PRINT((DEBUG_NAME "asked: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- this->spec.format |= SDL_AUDIO_MASK_SIGNED; /* Audio is always signed */
-
- /* clamp out int32/float32 */
- if (SDL_AUDIO_BITSIZE(this->spec.format) >= 16) {
- this->spec.format = AUDIO_S16MSB; /* Audio is always big endian */
- this->spec.channels = 2; /* 16 bits always stereo */
- } else if (this->spec.channels > 2) {
- this->spec.channels = 2; /* no more than stereo! */
- }
-
- MINTAUDIO_freqcount = 0;
-
- /* Add external clocks if present */
- MINTXBIOS_CheckExternalClock(this);
-
- /* Standard clocks */
- for (i = 1; i < 12; i++) {
- /* Remove unusable Falcon codec predivisors */
- if ((i == 6) || (i == 8) || (i == 10)) {
- continue;
- }
- SDL_MintAudio_AddFrequency(this,
- MASTERCLOCK_FALCON1 /
- (MASTERPREDIV_FALCON * (i + 1)),
- MASTERCLOCK_FALCON1, i, -1);
- }
-
-#if 1
- for (i = 0; i < MINTAUDIO_freqcount; i++) {
- DEBUG_PRINT((DEBUG_NAME "freq %d: %lu Hz, clock %lu, prediv %d\n",
- i, MINTAUDIO_frequencies[i].frequency,
- MINTAUDIO_frequencies[i].masterclock,
- MINTAUDIO_frequencies[i].predivisor));
- }
-#endif
-
- MINTAUDIO_numfreq = SDL_MintAudio_SearchFrequency(this, this->spec.freq);
- this->spec.freq = MINTAUDIO_frequencies[MINTAUDIO_numfreq].frequency;
-
- DEBUG_PRINT((DEBUG_NAME "obtained: %d bits, ",
- SDL_AUDIO_BITSIZE(this->spec.format)));
- DEBUG_PRINT(("float=%d, ", SDL_AUDIO_ISFLOAT(this->spec.format)));
- DEBUG_PRINT(("signed=%d, ", SDL_AUDIO_ISSIGNED(this->spec.format)));
- DEBUG_PRINT(("big endian=%d, ",
- SDL_AUDIO_ISBIGENDIAN(this->spec.format)));
- DEBUG_PRINT(("channels=%d, ", this->spec.channels));
- DEBUG_PRINT(("freq=%d\n", this->spec.freq));
-
- return 0;
-}
-
-static void
-MINTXBIOS_InitAudio(_THIS)
-{
- int channels_mode, dmaclock, prediv;
- void *buffer;
-
- /* Stop currently playing sound */
- SDL_MintAudio_quit_thread = SDL_FALSE;
- SDL_MintAudio_thread_finished = SDL_TRUE;
- SDL_MintAudio_WaitThread();
- Buffoper(0);
-
- /* Set replay tracks */
- Settracks(0, 0);
- Setmontracks(0);
-
- /* Select replay format */
- channels_mode = STEREO16;
- switch (SDL_AUDIO_BITSIZE(this->spec.format)) {
- case 8:
- if (this->spec.channels == 2) {
- channels_mode = STEREO8;
- } else {
- channels_mode = MONO8;
- }
- break;
- }
- if (Setmode(channels_mode) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setmode() failed\n"));
- }
-
- dmaclock = MINTAUDIO_frequencies[MINTAUDIO_numfreq].masterclock;
- prediv = MINTAUDIO_frequencies[MINTAUDIO_numfreq].predivisor;
- if (MINTAUDIO_frequencies[MINTAUDIO_numfreq].gpio_bits != -1) {
- Gpio(GPIO_SET, 7); /* DSP port gpio outputs */
- Gpio(GPIO_WRITE, MINTAUDIO_frequencies[MINTAUDIO_numfreq].gpio_bits);
- Devconnect2(DMAPLAY, DAC | EXTOUT, CLKEXT, prediv);
- } else {
- Devconnect2(DMAPLAY, DAC, CLK25M, prediv);
- }
-
- /* Set buffer */
- buffer = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf];
- if (Setbuffer(0, buffer, buffer + this->spec.size) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setbuffer() failed\n"));
- }
-
- if (SDL_MintAudio_mint_present) {
- SDL_MintAudio_thread_pid = tfork(SDL_MintAudio_Thread, 0);
- } else {
- /* Install interrupt */
- Jdisint(MFP_DMASOUND);
- /*Xbtimer(XB_TIMERA, 8, 1, SDL_MintAudio_XbiosInterrupt); */
- Xbtimer(XB_TIMERA, 8, 1, SDL_MintAudio_Dma8Interrupt);
- Jenabint(MFP_DMASOUND);
-
- if (Setinterrupt(SI_TIMERA, SI_PLAY) < 0) {
- DEBUG_PRINT((DEBUG_NAME "Setinterrupt() failed\n"));
- }
- }
-
- /* Go */
- Buffoper(SB_PLA_ENA | SB_PLA_RPT);
- DEBUG_PRINT((DEBUG_NAME "hardware initialized\n"));
-}
-
-static int
-MINTXBIOS_OpenDevice(_THIS, const char *devname, int iscapture)
-{
- /* Lock sound system */
- if (Locksnd() != 1) {
- SDL_SetError("MINTXBIOS_OpenAudio: Audio system already in use");
- return 0;
- }
-
- SDL_MintAudio_device = this;
-
- /* Check audio capabilities */
- if (MINTXBIOS_CheckAudio(this) == -1) {
- return 0;
- }
-
- /* Initialize all variables that we clean on shutdown */
- this->hidden = (struct SDL_PrivateAudioData *)
- SDL_malloc((sizeof *this->hidden));
- if (this->hidden == NULL) {
- SDL_OutOfMemory();
- return 0;
- }
- SDL_memset(this->hidden, 0, (sizeof *this->hidden));
-
- SDL_CalculateAudioSpec(&this->spec);
-
- /* Allocate memory for audio buffers in DMA-able RAM */
- DEBUG_PRINT((DEBUG_NAME "buffer size=%d\n", this->spec.size));
-
- SDL_MintAudio_audiobuf[0] =
- Atari_SysMalloc(this->spec.size * 2, MX_STRAM);
- if (SDL_MintAudio_audiobuf[0] == NULL) {
- SDL_free(this->hidden);
- this->hidden = NULL;
- SDL_OutOfMemory();
- return 0;
- }
- SDL_MintAudio_audiobuf[1] = SDL_MintAudio_audiobuf[0] + this->spec.size;
- SDL_MintAudio_numbuf = 0;
- SDL_memset(SDL_MintAudio_audiobuf[0], this->spec.silence,
- this->spec.size * 2);
- SDL_MintAudio_audiosize = this->spec.size;
- SDL_MintAudio_mutex = 0;
-
- DEBUG_PRINT((DEBUG_NAME "buffer 0 at 0x%08x\n",
- SDL_MintAudio_audiobuf[0]));
- DEBUG_PRINT((DEBUG_NAME "buffer 1 at 0x%08x\n",
- SDL_MintAudio_audiobuf[1]));
-
- SDL_MintAudio_CheckFpu();
-
- /* Setup audio hardware */
- MINTXBIOS_InitAudio(this);
-
- return 1; /* good to go. */
-}
-
-static int
-MINTXBIOS_Init(SDL_AudioDriverImpl * impl)
-{
- unsigned long dummy = 0;
- /*SDL_MintAudio_mint_present = (Getcookie(C_MiNT, &dummy) == C_FOUND); */
- SDL_MintAudio_mint_present = SDL_FALSE;
-
- /* We can't use XBIOS in interrupt with Magic, don't know about thread */
- if (Getcookie(C_MagX, &dummy) == C_FOUND) {
- return (0);
- }
-
- /* Cookie _SND present ? if not, assume ST machine */
- if (Getcookie(C__SND, &cookie_snd) == C_NOTFOUND) {
- cookie_snd = SND_PSG;
- }
-
- /* Check if we have 16 bits audio */
- if ((cookie_snd & SND_16BIT) == 0) {
- SDL_SetError(DEBUG_NAME "no 16-bit sound");
- return (0);
- }
-
- /* Check if audio is lockable */
- if (Locksnd() != 1) {
- SDL_SetError(DEBUG_NAME "audio locked by other application");
- return (0);
- }
-
- Unlocksnd();
-
- DEBUG_PRINT((DEBUG_NAME "XBIOS audio available!\n"));
-
- /* Set the function pointers */
- impl->OpenDevice = MINTXBIOS_OpenDevice;
- impl->CloseDevice = MINTXBIOS_CloseDevice;
- impl->LockDevice = MINTXBIOS_LockDevice;
- impl->UnlockDevice = MINTXBIOS_UnlockDevice;
- impl->OnlyHasDefaultOutputDevice = 1;
- impl->ProvidesOwnCallbackThread = 1;
- impl->SkipMixerLock = 1;
-
- return 2; /* 2 == definitely has an audio device. */
-}
-
-AudioBootStrap MINTAUDIO_XBIOS_bootstrap = {
- MINT_AUDIO_DRIVER_NAME, "MiNT XBIOS audio driver", MINTXBIOS_Init, 0
-};
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/joystick/mint/SDL_sysjoystick.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,729 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifdef SDL_JOYSTICK_MINT
-
-/*
- * Atari Joystick/Joypad drivers
- *
- * Patrice Mandin
- */
-
-#include <mint/cookie.h>
-#include <mint/osbind.h>
-
-#include "SDL_events.h"
-#include "../SDL_sysjoystick.h"
-#include "../SDL_joystick_c.h"
-
-#include "../../video/ataricommon/SDL_ikbdinterrupt_s.h"
-#include "../../video/ataricommon/SDL_xbiosevents_c.h"
-#include "../../video/ataricommon/SDL_xbiosinterrupt_s.h"
-
-/*--- Const ---*/
-
-/* We can have:
- 1 joystick on IKBD port 1, read via hardware I/O
- or same joystick on IKBD port 1, read via xbios
- 1 joypad on port A (up to 4 with teamtap)
- or 2 joysticks on joypad port A
- or 1 analog paddle on joypad port A
- or 1 lightpen on joypad port A
- 1 joypad on port B (up to 4 with teamtap)
- or 2 joysticks on joypad port B
- or 1 analog paddle on joypad port B
- 2 joysticks on parallel port
-*/
-
-enum
-{
- IKBD_JOY1 = 0,
- XBIOS_JOY1,
- PORTA_PAD0,
- PORTA_PAD1,
- PORTA_PAD2,
- PORTA_PAD3,
- PORTB_PAD0,
- PORTB_PAD1,
- PORTB_PAD2,
- PORTB_PAD3,
- PORTA_JOY0,
- PORTA_JOY1,
- PORTB_JOY0,
- PORTB_JOY1,
- PORTA_LP,
- PORTA_ANPAD,
- PORTB_ANPAD,
-#if 0
- PARA_JOY0,
- PARA_JOY1,
-#endif
- MAX_JOYSTICKS
-};
-
-enum
-{
- MCH_ST = 0,
- MCH_STE,
- MCH_TT,
- MCH_F30,
- MCH_CLONE,
- MCH_ARANYM
-};
-
-/* Joypad buttons
- * Procontroller note:
- * L,R are connected to 4,6
- * X,Y,Z are connected to 7,8,9
- */
-
-enum
-{
- JP_UP = 0, JP_DOWN, JP_LEFT, JP_RIGHT,
- JP_KPMULT, JP_KP7, JP_KP4, JP_KP1,
- JP_KP0, JP_KP8, JP_KP5, JP_KP2,
- JP_KPNUM, JP_KP9, JP_KP6, JP_KP3,
- JP_PAUSE, JP_FIRE0, JP_UNDEF0, JP_FIRE1,
- JP_UNDEF1, JP_FIRE2, JP_UNDEF2, JP_OPTION
-};
-
-#define JP_NUM_BUTTONS 17
-
-#define PORT_JS_RIGHT (1<<0)
-#define PORT_JS_LEFT (1<<1)
-#define PORT_JS_DOWN (1<<2)
-#define PORT_JS_UP (1<<3)
-#define PORT_JS_FIRE (1<<4)
-
-/*--- Types ---*/
-
-typedef struct
-{
- SDL_bool enabled;
- unsigned char *name;
- Uint32 prevstate;
-} atarijoy_t;
-
-/*--- Variables ---*/
-
-static atarijoy_t atarijoysticks[MAX_JOYSTICKS] = {
- {SDL_FALSE, "IKBD joystick port 1", 0},
- {SDL_FALSE, "Xbios joystick port 1", 0},
- {SDL_FALSE, "Joypad 0 port A", 0},
- {SDL_FALSE, "Joypad 1 port A", 0},
- {SDL_FALSE, "Joypad 2 port A", 0},
- {SDL_FALSE, "Joypad 3 port A", 0},
- {SDL_FALSE, "Joypad 0 port B", 0},
- {SDL_FALSE, "Joypad 1 port B", 0},
- {SDL_FALSE, "Joypad 2 port B", 0},
- {SDL_FALSE, "Joypad 3 port B", 0},
- {SDL_FALSE, "Joystick 0 port A", 0},
- {SDL_FALSE, "Joystick 1 port A", 0},
- {SDL_FALSE, "Joystick 0 port B", 0},
- {SDL_FALSE, "Joystick 1 port B", 0},
- {SDL_FALSE, "Lightpen port A", 0},
- {SDL_FALSE, "Analog paddle port A", 0},
- {SDL_FALSE, "Analog paddle port B", 0}
-#if 0
- , {SDL_FALSE, "Joystick 0 parallel port", 0},
- {SDL_FALSE, "Joystick 1 parallel port", 0}
-#endif
-};
-
-static const int jp_buttons[JP_NUM_BUTTONS] = {
- JP_FIRE0, JP_FIRE1, JP_FIRE2, JP_PAUSE,
- JP_OPTION, JP_KPMULT, JP_KPNUM, JP_KP0,
- JP_KP1, JP_KP2, JP_KP3, JP_KP4,
- JP_KP5, JP_KP6, JP_KP7, JP_KP8,
- JP_KP9
-};
-
-static SDL_bool joypad_ports_enabled = SDL_FALSE;
-
-/* Updated joypad ports */
-static Uint16 jp_paddles[4];
-static Uint16 jp_lightpens[2];
-static Uint16 jp_directions;
-static Uint16 jp_fires;
-static Uint32 jp_joypads[8];
-
-/*--- Functions prototypes ---*/
-
-static int GetEnabledAtariJoystick(int index);
-static void UpdateJoypads(void);
-
-/*--- Functions ---*/
-
-int
-SDL_SYS_JoystickInit(void)
-{
- int i;
- unsigned long cookie_mch;
- const char *envr = SDL_getenv("SDL_JOYSTICK_ATARI");
-
-#define TEST_JOY_ENABLED(env,idstring,num) \
- if (SDL_strstr(env,idstring"-off")) { \
- atarijoysticks[num].enabled=SDL_FALSE; \
- } \
- if (SDL_strstr(env,idstring"-on")) { \
- atarijoysticks[num].enabled=SDL_TRUE; \
- }
-
- /* Cookie _MCH present ? if not, assume ST machine */
- if (Getcookie(C__MCH, &cookie_mch) != C_FOUND) {
- cookie_mch = MCH_ST << 16;
- }
-
- /* Enable some default joysticks */
- if ((cookie_mch == MCH_ST << 16) || ((cookie_mch >> 16) == MCH_STE) ||
- (cookie_mch == MCH_TT << 16) || (cookie_mch == MCH_F30 << 16) ||
- (cookie_mch == MCH_ARANYM << 16)) {
- atarijoysticks[IKBD_JOY1].enabled = (SDL_AtariIkbd_enabled != 0);
- }
- if ((cookie_mch == MCH_STE << 16) || (cookie_mch == MCH_F30 << 16)) {
- atarijoysticks[PORTA_PAD0].enabled =
- atarijoysticks[PORTA_PAD1].enabled =
- atarijoysticks[PORTA_PAD2].enabled =
- atarijoysticks[PORTA_PAD3].enabled =
- atarijoysticks[PORTB_PAD0].enabled =
- atarijoysticks[PORTB_PAD1].enabled =
- atarijoysticks[PORTB_PAD2].enabled =
- atarijoysticks[PORTB_PAD3].enabled = SDL_TRUE;
- }
- if (!atarijoysticks[IKBD_JOY1].enabled) {
- atarijoysticks[XBIOS_JOY1].enabled = (SDL_AtariXbios_enabled != 0);
- }
-
- /* Read environment for joysticks to enable */
- if (envr) {
- /* IKBD on any Atari, maybe clones */
- if ((cookie_mch == MCH_ST << 16) || ((cookie_mch >> 16) == MCH_STE)
- || (cookie_mch == MCH_TT << 16) || (cookie_mch == MCH_F30 << 16)
- || (cookie_mch == MCH_ARANYM << 16)) {
- if (SDL_AtariIkbd_enabled != 0) {
- TEST_JOY_ENABLED(envr, "ikbd-joy1", IKBD_JOY1);
- }
- }
- /* Joypads ports only on STE and Falcon */
- if ((cookie_mch == MCH_STE << 16) || (cookie_mch == MCH_F30 << 16)) {
- TEST_JOY_ENABLED(envr, "porta-pad", PORTA_PAD0);
- if (!atarijoysticks[PORTA_PAD0].enabled) {
- TEST_JOY_ENABLED(envr, "porta-joy0", PORTA_JOY0);
- TEST_JOY_ENABLED(envr, "porta-joy1", PORTA_JOY1);
- if (!(atarijoysticks[PORTA_JOY0].enabled)
- && !(atarijoysticks[PORTA_JOY1].enabled)) {
- TEST_JOY_ENABLED(envr, "porta-lp", PORTA_LP);
- if (!atarijoysticks[PORTA_LP].enabled) {
- TEST_JOY_ENABLED(envr, "porta-anpad", PORTA_ANPAD);
- }
- }
- }
-
- TEST_JOY_ENABLED(envr, "portb-pad", PORTB_PAD0);
- if (!atarijoysticks[PORTB_PAD0].enabled) {
- TEST_JOY_ENABLED(envr, "portb-joy0", PORTB_JOY0);
- TEST_JOY_ENABLED(envr, "portb-joy1", PORTB_JOY1);
- if (!(atarijoysticks[PORTB_JOY0].enabled)
- && !(atarijoysticks[PORTB_JOY1].enabled)) {
- TEST_JOY_ENABLED(envr, "portb-anpad", PORTB_ANPAD);
- }
- }
- }
-
- if (!atarijoysticks[IKBD_JOY1].enabled) {
- if (SDL_AtariXbios_enabled != 0) {
- TEST_JOY_ENABLED(envr, "xbios-joy1", XBIOS_JOY1);
- }
- }
-#if 0
- /* Parallel port on any Atari, maybe clones */
- if ((cookie_mch == MCH_ST << 16) || ((cookie_mch >> 16) == MCH_STE)
- || (cookie_mch == MCH_TT << 16)
- || (cookie_mch == MCH_F30 << 16)) {
- TEST_JOY_ENABLED(envr, "para-joy0", PARA_JOY0);
- TEST_JOY_ENABLED(envr, "para-joy1", PARA_JOY1);
- }
-#endif
- }
-
- /* Need to update joypad ports ? */
- joypad_ports_enabled = SDL_FALSE;
- for (i = PORTA_PAD0; i <= PORTB_ANPAD; i++) {
- if (atarijoysticks[i].enabled) {
- joypad_ports_enabled = SDL_TRUE;
- break;
- }
- }
-
- SDL_numjoysticks = 0;
- for (i = 0; i < MAX_JOYSTICKS; i++) {
- if (atarijoysticks[i].enabled) {
- ++SDL_numjoysticks;
- }
- }
-
- return (SDL_numjoysticks);
-}
-
-static int
-GetEnabledAtariJoystick(int index)
-{
- int i, j;
-
- /* Return the nth'index' enabled atari joystick */
- j = 0;
- for (i = 0; i < MAX_JOYSTICKS; i++) {
- if (!atarijoysticks[i].enabled) {
- continue;
- }
-
- if (j == index) {
- break;
- }
-
- ++j;
- }
- if (i == MAX_JOYSTICKS)
- return -1;
-
- return i;
-}
-
-const char *
-SDL_SYS_JoystickName(int index)
-{
- int numjoystick;
-
- numjoystick = GetEnabledAtariJoystick(index);
- if (numjoystick == -1)
- return NULL;
-
- return (atarijoysticks[numjoystick].name);
-}
-
-int
-SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
-{
- int numjoystick;
-
- numjoystick = GetEnabledAtariJoystick(joystick->index);
- if (numjoystick == -1)
- return -1;
-
- joystick->naxes = 0;
- joystick->nhats = 0;
- joystick->nballs = 0;
-
- switch (numjoystick) {
- case PORTA_PAD0:
- case PORTA_PAD1:
- case PORTA_PAD2:
- case PORTA_PAD3:
- case PORTB_PAD0:
- case PORTB_PAD1:
- case PORTB_PAD2:
- case PORTB_PAD3:
- joystick->nhats = 1;
- joystick->nbuttons = JP_NUM_BUTTONS;
- break;
- case PORTA_LP:
- case PORTA_ANPAD:
- case PORTB_ANPAD:
- joystick->naxes = 2;
- joystick->nbuttons = 2;
- break;
- default:
- joystick->nhats = 1;
- joystick->nbuttons = 1;
- break;
- }
-
- return (0);
-}
-
-void
-SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
-{
- int numjoystick;
- Uint8 hatstate;
- Uint32 curstate, prevstate;
-
- numjoystick = GetEnabledAtariJoystick(joystick->index);
- if (numjoystick == -1)
- return;
-
- prevstate = atarijoysticks[numjoystick].prevstate;
-
- if (joypad_ports_enabled) {
- Supexec(UpdateJoypads);
- }
-
- switch (numjoystick) {
- case IKBD_JOY1:
- case XBIOS_JOY1:
- {
- curstate = 0;
-
- if (numjoystick == IKBD_JOY1) {
- curstate = SDL_AtariIkbd_joystick & 0xff;
- }
- if (numjoystick == XBIOS_JOY1) {
- curstate = SDL_AtariXbios_joystick & 0xff;
- }
-
- if (curstate != prevstate) {
- hatstate = SDL_HAT_CENTERED;
- if (curstate & IKBD_JOY_LEFT) {
- hatstate |= SDL_HAT_LEFT;
- }
- if (curstate & IKBD_JOY_RIGHT) {
- hatstate |= SDL_HAT_RIGHT;
- }
- if (curstate & IKBD_JOY_UP) {
- hatstate |= SDL_HAT_UP;
- }
- if (curstate & IKBD_JOY_DOWN) {
- hatstate |= SDL_HAT_DOWN;
- }
- SDL_PrivateJoystickHat(joystick, 0, hatstate);
-
- /* Button */
- if ((curstate & IKBD_JOY_FIRE)
- && !(prevstate & IKBD_JOY_FIRE)) {
- SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
- }
- if (!(curstate & IKBD_JOY_FIRE)
- && (prevstate & IKBD_JOY_FIRE)) {
- SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
- }
- }
- atarijoysticks[numjoystick].prevstate = curstate;
- }
- break;
- case PORTA_PAD0:
- case PORTA_PAD1:
- case PORTA_PAD2:
- case PORTA_PAD3:
- case PORTB_PAD0:
- case PORTB_PAD1:
- case PORTB_PAD2:
- case PORTB_PAD3:
- {
- int numjoypad, i;
-
- numjoypad = 0;
- switch (numjoystick) {
- case PORTA_PAD0:
- numjoypad = 0;
- break;
- case PORTA_PAD1:
- numjoypad = 1;
- break;
- case PORTA_PAD2:
- numjoypad = 2;
- break;
- case PORTA_PAD3:
- numjoypad = 3;
- break;
- case PORTB_PAD0:
- numjoypad = 4;
- break;
- case PORTB_PAD1:
- numjoypad = 5;
- break;
- case PORTB_PAD2:
- numjoypad = 6;
- break;
- case PORTB_PAD3:
- numjoypad = 7;
- break;
- }
-
- curstate = jp_joypads[numjoypad];
- if (curstate != prevstate) {
- hatstate = SDL_HAT_CENTERED;
- if (curstate & (1 << JP_LEFT)) {
- hatstate |= SDL_HAT_LEFT;
- }
- if (curstate & (1 << JP_RIGHT)) {
- hatstate |= SDL_HAT_RIGHT;
- }
- if (curstate & (1 << JP_UP)) {
- hatstate |= SDL_HAT_UP;
- }
- if (curstate & (1 << JP_DOWN)) {
- hatstate |= SDL_HAT_DOWN;
- }
- SDL_PrivateJoystickHat(joystick, 0, hatstate);
-
- /* Buttons */
- for (i = 0; i < JP_NUM_BUTTONS; i++) {
- int button;
-
- button = 1 << jp_buttons[i];
-
- if ((curstate & button) && !(prevstate & button)) {
- SDL_PrivateJoystickButton(joystick, i, SDL_PRESSED);
- }
- if (!(curstate & button) && (prevstate & button)) {
- SDL_PrivateJoystickButton(joystick, i, SDL_RELEASED);
- }
- }
- }
- atarijoysticks[numjoystick].prevstate = curstate;
- }
- break;
- case PORTA_JOY0:
- case PORTA_JOY1:
- case PORTB_JOY0:
- case PORTB_JOY1:
- {
- int fire_shift = 0, dir_shift = 0;
-
- if (numjoystick == PORTA_JOY0) {
- fire_shift = 0;
- dir_shift = 0;
- }
- if (numjoystick == PORTA_JOY1) {
- fire_shift = 1;
- dir_shift = 4;
- }
- if (numjoystick == PORTB_JOY0) {
- fire_shift = 2;
- dir_shift = 8;
- }
- if (numjoystick == PORTB_JOY1) {
- fire_shift = 3;
- dir_shift = 12;
- }
-
- curstate = (jp_directions >> dir_shift) & 15;
- curstate |= ((jp_fires >> fire_shift) & 1) << 4;
-
- if (curstate != prevstate) {
- hatstate = SDL_HAT_CENTERED;
- if (curstate & PORT_JS_LEFT) {
- hatstate |= SDL_HAT_LEFT;
- }
- if (curstate & PORT_JS_RIGHT) {
- hatstate |= SDL_HAT_RIGHT;
- }
- if (curstate & PORT_JS_UP) {
- hatstate |= SDL_HAT_UP;
- }
- if (curstate & PORT_JS_DOWN) {
- hatstate |= SDL_HAT_DOWN;
- }
- SDL_PrivateJoystickHat(joystick, 0, hatstate);
-
- /* Button */
- if ((curstate & PORT_JS_FIRE)
- && !(prevstate & PORT_JS_FIRE)) {
- SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
- }
- if (!(curstate & PORT_JS_FIRE)
- && (prevstate & PORT_JS_FIRE)) {
- SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
- }
- }
- atarijoysticks[numjoystick].prevstate = curstate;
- }
- break;
- case PORTA_LP:
- {
- int i;
-
- curstate = jp_lightpens[0] >> 1;
- curstate |= (jp_lightpens[1] >> 1) << 15;
- curstate |= (jp_fires & 3) << 30;
-
- if (curstate != prevstate) {
- /* X axis */
- SDL_PrivateJoystickAxis(joystick, 0,
- jp_lightpens[0] ^ 0x8000);
- /* Y axis */
- SDL_PrivateJoystickAxis(joystick, 1,
- jp_lightpens[1] ^ 0x8000);
- /* Buttons */
- for (i = 0; i < 2; i++) {
- int button;
-
- button = 1 << (30 + i);
-
- if ((curstate & button) && !(prevstate & button)) {
- SDL_PrivateJoystickButton(joystick, i, SDL_PRESSED);
- }
- if (!(curstate & button) && (prevstate & button)) {
- SDL_PrivateJoystickButton(joystick, i, SDL_RELEASED);
- }
- }
- }
- atarijoysticks[numjoystick].prevstate = curstate;
- }
- break;
- case PORTA_ANPAD:
- case PORTB_ANPAD:
- {
- int numpaddle, i;
-
- numpaddle = 0 << 1;
- if (numjoystick == PORTB_ANPAD)
- numpaddle = 1 << 1;
-
- curstate = jp_paddles[numpaddle] >> 1;
- curstate |= (jp_paddles[numpaddle + 1] >> 1) << 15;
- curstate |= ((jp_fires >> numpaddle) & 3) << 30;
-
- if (curstate != prevstate) {
- /* X axis */
- SDL_PrivateJoystickAxis(joystick, 0,
- jp_paddles[numpaddle] ^ 0x8000);
- /* Y axis */
- SDL_PrivateJoystickAxis(joystick, 1,
- jp_paddles[numpaddle + 1] ^ 0x8000);
- /* Buttons */
- for (i = 0; i < 2; i++) {
- int button;
-
- button = 1 << (30 + i);
-
- if ((curstate & button) && !(prevstate & button)) {
- SDL_PrivateJoystickButton(joystick, i, SDL_PRESSED);
- }
- if (!(curstate & button) && (prevstate & button)) {
- SDL_PrivateJoystickButton(joystick, i, SDL_RELEASED);
- }
- }
- }
- atarijoysticks[numjoystick].prevstate = curstate;
- }
- break;
-#if 0
- case PARA_JOY0:
- case PARA_JOY1:
- break;
-#endif
- };
-
- return;
-}
-
-void
-SDL_SYS_JoystickClose(SDL_Joystick * joystick)
-{
- return;
-}
-
-void
-SDL_SYS_JoystickQuit(void)
-{
- SDL_numjoysticks = 0;
- return;
-}
-
-/*--- Joypad I/O read/write interface ---*/
-
-#define JOYPAD_IO_BASE (0xffff9200)
-struct JOYPAD_IO_S
-{
- Uint16 fires;
- Uint16 directions;
- Uint16 dummy1[6];
- Uint16 paddles[4];
- Uint16 dummy2[4];
- Uint16 lightpens[2];
-};
-#define JOYPAD_IO ((*(volatile struct JOYPAD_IO_S *)JOYPAD_IO_BASE))
-
-static const Uint16 joypad_masks[8 * 4] = {
- 0xfffe, 0xfffd, 0xfffb, 0xfff7,
- 0xfff0, 0xfff1, 0xfff2, 0xfff3,
- 0xfff4, 0xfff5, 0xfff6, 0xfff8,
- 0xfff9, 0xfffa, 0xfffc, 0xffff,
- 0xffef, 0xffdf, 0xffbf, 0xff7f,
- 0xff0f, 0xff1f, 0xff2f, 0xff3f,
- 0xff4f, 0xff5f, 0xff6f, 0xff8f,
- 0xff9f, 0xffaf, 0xffcf, 0xffff
-};
-
-static void
-UpdateJoypads(void)
-{
- Uint16 tmp, i, j;
- Uint32 cur_fire, cur_dir;
-
- /*--- This function is called in supervisor mode ---*/
-
- /* Update joysticks */
- jp_fires = (~(JOYPAD_IO.fires)) & 15;
- jp_directions = (~(JOYPAD_IO.directions));
-
- /* Update lightpen */
- tmp = JOYPAD_IO.lightpens[0] & 1023;
- jp_lightpens[0] = (tmp << 6) | (tmp >> 4);
- tmp = JOYPAD_IO.lightpens[1] & 1023;
- jp_lightpens[1] = (tmp << 6) | (tmp >> 4);
-
- /* Update paddles */
- tmp = (JOYPAD_IO.paddles[0] & 255);
- jp_paddles[0] = (tmp << 8) | tmp;
- tmp = (JOYPAD_IO.paddles[1] & 255);
- jp_paddles[1] = (tmp << 8) | tmp;
- tmp = (JOYPAD_IO.paddles[2] & 255);
- jp_paddles[2] = (tmp << 8) | tmp;
- tmp = (JOYPAD_IO.paddles[3] & 255);
- jp_paddles[3] = (tmp << 8) | tmp;
-
- /* Update joypads on teamtap port A */
- for (i = 0; i < 4; i++) {
- jp_joypads[i] = 0;
- for (j = 0; j < 4; j++) {
- JOYPAD_IO.directions = joypad_masks[(i * 4) + j];
-
- cur_fire = (~(JOYPAD_IO.fires) & 3) << 16;
- cur_dir = (~(JOYPAD_IO.directions) >> 8) & 15;
-
- jp_joypads[i] |= cur_fire << (j * 2);
- jp_joypads[i] |= cur_dir << (j * 4);
- }
- }
-
- /* Update joypads on teamtap port B */
- for (i = 4; i < 8; i++) {
- jp_joypads[i] = 0;
- for (j = 0; j < 4; j++) {
- JOYPAD_IO.directions = joypad_masks[(i * 4) + j];
-
- cur_fire = (~(JOYPAD_IO.fires) & 0xc) << 14;
- cur_dir = (~(JOYPAD_IO.directions) >> 12) & 15;
-
- jp_joypads[i] |= cur_fire << (j * 2);
- jp_joypads[i] |= cur_dir << (j * 4);
- }
- }
-
- JOYPAD_IO.directions = 0xffff;
-}
-
-#endif /* SDL_JOYSTICK_MINT */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/loadso/mint/SDL_sysloadso.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifdef SDL_LOADSO_LDG
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* System dependent library loading routines */
-
-#include <stdio.h>
-#include <gem.h>
-#include <ldg.h>
-
-#include "SDL_loadso.h"
-
-void *
-SDL_LoadObject(const char *sofile)
-{
- const char *loaderror = "Unknown error";
- void *handle = (void *) ldg_open((char *) sofile, ldg_global);
- if (handle == NULL) {
- SDL_SetError("Failed loading %s: %s", sofile, loaderror);
- }
- return (handle);
-}
-
-void *
-SDL_LoadFunction(void *handle, const char *name)
-{
- const char *loaderror = "Unknown error";
- void *symbol = (void *) ldg_find((char *) name, (LDG *) handle);
- if (symbol == NULL) {
- SDL_SetError("Failed loading %s: %s", name, loaderror);
- }
- return (symbol);
-}
-
-void
-SDL_UnloadObject(void *handle)
-{
- if (handle != NULL) {
- ldg_close((LDG *) handle, ldg_global);
- }
-}
-
-#endif /* SDL_LOADSO_LDG */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/timer/mint/SDL_systimer.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifdef SDL_TIMER_MINT
-
-/*
- * TOS/MiNT timer driver
- * based on vbl vector
- *
- * Patrice Mandin
- */
-
-#include <stdio.h>
-#include <sys/time.h>
-#include <signal.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-
-#include <mint/cookie.h>
-#include <mint/sysvars.h>
-#include <mint/osbind.h>
-#include <mint/mintbind.h>
-
-#include "SDL_timer.h"
-#include "../SDL_timer_c.h"
-#include "SDL_thread.h"
-
-#include "SDL_vbltimer_s.h"
-
-/* from audio/mint */
-void SDL_MintAudio_CheckFpu(void);
-
-/* The first ticks value of the application */
-static Uint32 start;
-static SDL_bool read_hz200_from_vbl = SDL_FALSE;
-static int mint_present; /* can we use Syield() ? */
-
-void
-SDL_StartTicks(void)
-{
- void *oldpile;
- unsigned long dummy;
-
- /* Set first ticks value */
- oldpile = (void *) Super(0);
- start = *((volatile long *) _hz_200);
- Super(oldpile);
-
- start *= 5; /* One _hz_200 tic is 5ms */
-
- mint_present = (Getcookie(C_MiNT, &dummy) == C_FOUND);
-}
-
-Uint32
-SDL_GetTicks(void)
-{
- Uint32 now = start;
-
- if (read_hz200_from_vbl) {
- now = SDL_Atari_hz200;
- } else {
- void *old_stack = (void *) Super(0);
- now = *((volatile long *) _hz_200);
- Super(old_stack);
- }
-
- return ((now * 5) - start);
-}
-
-void
-SDL_Delay(Uint32 ms)
-{
- Uint32 now;
-
- now = SDL_GetTicks();
- while ((SDL_GetTicks() - now) < ms) {
- if (mint_present) {
- Syield();
- }
- }
-}
-
-/* Data to handle a single periodic alarm */
-static SDL_bool timer_installed = SDL_FALSE;
-
-/* This is only called if the event thread is not running */
-int
-SDL_SYS_TimerInit(void)
-{
- void *old_stack;
-
- SDL_MintAudio_CheckFpu();
-
- /* Install RunTimer in vbl vector */
- old_stack = (void *) Super(0);
- timer_installed = !SDL_AtariVblInstall(SDL_ThreadedTimerCheck);
- Super(old_stack);
-
- if (!timer_installed) {
- return (-1);
- }
-
- read_hz200_from_vbl = SDL_TRUE;
- return (SDL_SetTimerThreaded(0));
-}
-
-void
-SDL_SYS_TimerQuit(void)
-{
- if (timer_installed) {
- /* Uninstall RunTimer vbl vector */
- void *old_stack = (void *) Super(0);
- SDL_AtariVblUninstall(SDL_ThreadedTimerCheck);
- Super(old_stack);
- timer_installed = SDL_FALSE;
- }
- read_hz200_from_vbl = SDL_FALSE;
-}
-
-int
-SDL_SYS_StartTimer(void)
-{
- SDL_SetError("Internal logic error: MiNT uses vbl timer");
- return (-1);
-}
-
-void
-SDL_SYS_StopTimer(void)
-{
- return;
-}
-
-#endif /* SDL_TIMER_MINT */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/timer/mint/SDL_vbltimer.S Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/*
- * VBL queue routine
- *
- * Patrice Mandin
- */
-
-#define _vbl_queue 0x456
-#define _hz_200 0x4ba
-
- .text
-
- .globl _SDL_AtariVblInstall
- .globl _SDL_AtariVblUninstall
-
- .globl _SDL_MintAudio_hasfpu
-
-/*--- Vector installer ---*/
-
-_SDL_AtariVblInstall:
- movel sp@(4),my_vector
- lea _my_vbl,a0
-
- clrw vbl_mutex
- movel _hz_200.w, _SDL_Atari_hz200
-
- /* Stop interrupts */
-
- movew #0x2700,sr
-
- /* Read vbl_queue pointer */
- movel _vbl_queue.w,a1
-
- /* Search a free place */
- moveq #7,d0
-bcl_search_place:
- movel (a1),d1
- beqs place_found
- addql #4,a1
- dbra d0,bcl_search_place
-
- /* Not found */
- moveq #1,d0
- bras exit_vbl_queue
-
- /* Then install ourselves */
-place_found:
- movel a0,(a1)
- moveq #0,d0
-
-exit_vbl_queue:
- /* Restart interrupts */
- movew #0x2300,sr
-
- rts
-
-/*--- Vector uninstaller ---*/
-
-_SDL_AtariVblUninstall:
- movel sp@(4),d0
- cmpl my_vector,d0
- bnes badvector
-
- movel #_my_vbl,d0
-
- /* Stop interrupts */
-
- movew #0x2700,sr
-
- /* Read vbl_queue pointer */
- movel _vbl_queue.w,a1
-
- /* Search where we are */
- moveq #7,d1
-bcl2_search_place:
- cmpl (a1),d0
- bnes next_place
- clrl (a1)
- moveq #0,d1
-next_place:
- addql #4,a1
- dbra d1,bcl2_search_place
-
- /* Restart interrupts */
- movew #0x2300,sr
-badvector:
- rts
-
-/*--- Our vbl ---*/
-
-_my_vbl:
- /* Update _hz_200 */
- movel _hz_200.w, _SDL_Atari_hz200
-
- /* Verify if this is not already running */
-
- tstw vbl_mutex
- bnes vbl_end
- notw vbl_mutex
-
- moveml d0-d7/a0-a6,sp@-
-
- /* Save FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_AtariVbl_nofpu1
- .chip 68060
- fsave sp@-
- fmoveml fpcr/fpsr/fpiar,sp@-
- fmovemx fp0-fp7,sp@-
- .chip 68000
-SDL_AtariVbl_nofpu1:
-
- movel my_vector,a0
- jsr a0@
-
- /* Restore FPU if needed */
- tstw _SDL_MintAudio_hasfpu
- beqs SDL_AtariVbl_Xbios_nofpu2
- .chip 68060
- fmovemx sp@+,fp0-fp7
- fmoveml sp@+,fpcr/fpsr/fpiar
- frestore sp@+
- .chip 68000
-SDL_AtariVbl_Xbios_nofpu2:
-
- moveml sp@+,d0-d7/a0-a6
-
- clrw vbl_mutex
-vbl_end:
- rts
-
- .data
- .even
- .comm _SDL_Atari_hz200,4*1
- .even
- .comm vbl_mutex,2*1
- .even
- .comm my_vector,4*1
--- a/src/timer/mint/SDL_vbltimer_s.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * TOS/MiNT timer driver
- * based on vbl vector
- *
- * Patrice Mandin
- */
-
-extern volatile long SDL_Atari_hz200;
-
-/* Functions prototypes */
-extern int SDL_AtariVblInstall(void *newvector);
-extern void SDL_AtariVblUninstall(void *newvector);
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/SDL_renderer_gl.c Sun Sep 20 04:13:23 2009 +0000
+++ b/src/video/SDL_renderer_gl.c Sun Sep 20 04:15:19 2009 +0000
@@ -234,8 +234,6 @@
{
#if defined(__QNXNTO__) && (_NTO_VERSION < 630)
#define __SDL_NOGETPROCADDR__
-#elif defined(__MINT__)
-#define __SDL_NOGETPROCADDR__
#endif
#ifdef __SDL_NOGETPROCADDR__
#define SDL_PROC(ret,func,params) data->func=func;
--- a/src/video/SDL_sysvideo.h Sun Sep 20 04:13:23 2009 +0000
+++ b/src/video/SDL_sysvideo.h Sun Sep 20 04:15:19 2009 +0000
@@ -379,12 +379,6 @@
#if SDL_VIDEO_DRIVER_EPOC
extern VideoBootStrap EPOC_bootstrap;
#endif
-#if SDL_VIDEO_DRIVER_XBIOS
-extern VideoBootStrap XBIOS_bootstrap;
-#endif
-#if SDL_VIDEO_DRIVER_GEM
-extern VideoBootStrap GEM_bootstrap;
-#endif
#if SDL_VIDEO_DRIVER_RISCOS
extern VideoBootStrap RISCOS_bootstrap;
#endif
--- a/src/video/SDL_video.c Sun Sep 20 04:13:23 2009 +0000
+++ b/src/video/SDL_video.c Sun Sep 20 04:15:19 2009 +0000
@@ -88,12 +88,6 @@
#if SDL_VIDEO_DRIVER_EPOC
&EPOC_bootstrap,
#endif
-#if SDL_VIDEO_DRIVER_XBIOS
- &XBIOS_bootstrap,
-#endif
-#if SDL_VIDEO_DRIVER_GEM
- &GEM_bootstrap,
-#endif
#if SDL_VIDEO_DRIVER_RISCOS
&RISCOS_bootstrap,
#endif
--- a/src/video/ataricommon/SDL_ataric2p.S Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,447 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/*
- Chunky to planar conversion routine
- 1 byte/pixel -> 4 or 8 bit planes
-
- Patrice Mandin
- Xavier Joubert
- Mikael Kalms
-*/
-
- .globl _SDL_Atari_C2pConvert
- .globl _SDL_Atari_C2pConvert8
- .globl _SDL_Atari_C2pConvert4
- .globl _SDL_Atari_C2pConvert4_pal
-
-/* ------------ Conversion C2P, 8 bits ------------ */
-
- .text
-_SDL_Atari_C2pConvert8:
- movel sp@(4),c2p_source
- movel sp@(8),c2p_dest
- movel sp@(12),c2p_width
- movel sp@(16),c2p_height
- movel sp@(20),c2p_dblligne
- movel sp@(24),c2p_srcpitch
- movel sp@(28),c2p_dstpitch
-
- moveml d2-d7/a2-a6,sp@-
-
- movel c2p_source,c2p_cursrc
- movel c2p_dest,c2p_curdst
- movel #0x0f0f0f0f,d4
- movel #0x00ff00ff,d5
- movel #0x55555555,d6
- movew c2p_height+2,c2p_row
- movew c2p_width+2,d0
- andw #-8,d0
- movew d0,c2p_rowlen
-
-SDL_Atari_C2p8_rowloop:
-
- movel c2p_cursrc,a0
- movel c2p_curdst,a1
-
- movel a0,a2
- addw c2p_rowlen,a2
-
- movel a0@+,d0
- movel a0@+,d1
- movel a0@+,d2
- movel a0@+,d3
-/*
- d0 = a7a6a5a4a3a2a1a0 b7b6b5b4b3b2b1b0 c7c6c5c4c3c2c1c0 d7d6d5d4d3d2d1d0
- d1 = e7e6e5e4e3e2e1e0 f7f6f5f4f3f2f1f0 g7g6g5g4g3g2g1g0 h7h6h5h4h3h2h1h0
- d2 = i7i6i5i4i3i2i1i0 j7j6j5j4j3j2j1j0 k7k6k5k4k3k2k1k0 l7l6l5l4l3l2l1l0
- d3 = m7m6m5m4m3m2m1m0 n7n6n5n4n3n2n1n0 o7o6o5o4o3o2o1o0 p7p6p5p4p3p2p1p0
-*/
- movel d1,d7
- lsrl #4,d7
- eorl d0,d7
- andl d4,d7
- eorl d7,d0
- lsll #4,d7
- eorl d7,d1
-
- movel d3,d7
- lsrl #4,d7
- eorl d2,d7
- andl d4,d7
- eorl d7,d2
- lsll #4,d7
- eorl d7,d3
-
- movel d2,d7
- lsrl #8,d7
- eorl d0,d7
- andl d5,d7
- eorl d7,d0
- lsll #8,d7
- eorl d7,d2
-
- movel d3,d7
- lsrl #8,d7
- eorl d1,d7
- andl d5,d7
- eorl d7,d1
- lsll #8,d7
- eorl d7,d3
-/*
- d0 = a7a6a5a4e7e6e5e4 i7i6i5i4m7m6m5m4 c7c6c5c4g7g6g5g4 k7k6k5k4o7o6o5o4
- d1 = a3a2a1a0e3e2e1e0 i3i2i1i0m3m2m1m0 c3c2c1c0g3g2g1g0 k3k2k1k0o3o2o1o0
- d2 = b7b6b5b4f7f6f5f4 j7j6j5j4n7n6n5n4 d7d6d5d4h7h6h5h4 l7l6l5l4p7p6p5p4
- d3 = b3b2b1b0f3f2f1f0 j3j2j1j0n3n2n1n0 d3d2d1d0h3h2h1h0 l3l2l1l0p3p2p1p0
-*/
- bras SDL_Atari_C2p8_start
-
-SDL_Atari_C2p8_pix16:
-
- movel a0@+,d0
- movel a0@+,d1
- movel a0@+,d2
- movel a0@+,d3
-/*
- d0 = a7a6a5a4a3a2a1a0 b7b6b5b4b3b2b1b0 c7c6c5c4c3c2c1c0 d7d6d5d4d3d2d1d0
- d1 = e7e6e5e4e3e2e1e0 f7f6f5f4f3f2f1f0 g7g6g5g4g3g2g1g0 h7h6h5h4h3h2h1h0
- d2 = i7i6i5i4i3i2i1i0 j7j6j5j4j3j2j1j0 k7k6k5k4k3k2k1k0 l7l6l5l4l3l2l1l0
- d3 = m7m6m5m4m3m2m1m0 n7n6n5n4n3n2n1n0 o7o6o5o4o3o2o1o0 p7p6p5p4p3p2p1p0
-*/
- movel d1,d7
- lsrl #4,d7
- movel a3,a1@+
- eorl d0,d7
- andl d4,d7
- eorl d7,d0
- lsll #4,d7
- eorl d7,d1
-
- movel d3,d7
- lsrl #4,d7
- eorl d2,d7
- andl d4,d7
- eorl d7,d2
- movel a4,a1@+
- lsll #4,d7
- eorl d7,d3
-
- movel d2,d7
- lsrl #8,d7
- eorl d0,d7
- andl d5,d7
- eorl d7,d0
- movel a5,a1@+
- lsll #8,d7
- eorl d7,d2
-
- movel d3,d7
- lsrl #8,d7
- eorl d1,d7
- andl d5,d7
- eorl d7,d1
- movel a6,a1@+
- lsll #8,d7
- eorl d7,d3
-/*
- d0 = a7a6a5a4e7e6e5e4 i7i6i5i4m7m6m5m4 c7c6c5c4g7g6g5g4 k7k6k5k4o7o6o5o4
- d1 = a3a2a1a0e3e2e1e0 i3i2i1i0m3m2m1m0 c3c2c1c0g3g2g1g0 k3k2k1k0o3o2o1o0
- d2 = b7b6b5b4f7f6f5f4 j7j6j5j4n7n6n5n4 d7d6d5d4h7h6h5h4 l7l6l5l4p7p6p5p4
- d3 = b3b2b1b0f3f2f1f0 j3j2j1j0n3n2n1n0 d3d2d1d0h3h2h1h0 l3l2l1l0p3p2p1p0
-*/
-
-SDL_Atari_C2p8_start:
-
- movel d2,d7
- lsrl #1,d7
- eorl d0,d7
- andl d6,d7
- eorl d7,d0
- addl d7,d7
- eorl d7,d2
-
- movel d3,d7
- lsrl #1,d7
- eorl d1,d7
- andl d6,d7
- eorl d7,d1
- addl d7,d7
- eorl d7,d3
-/*
- d0 = a7b7a5b5e7f7e5f5 i7j7i5j5m7n7m5n5 c7d7c5d5g7h7g5h5 k7l7k5l5o7p7o5p5
- d1 = a3b3a1b1e3f3e1f1 i3j3i1j1m3n3m1n1 c3d3c1d1g3h3g1h1 k3l3k1l1o3p3o1p1
- d2 = a6b6a4b4e6f6e4f4 i6j6i4j4m6n6m4n4 c6d6c4d4g6h6g4h4 k6l6k4l4o6p6o4p4
- d3 = a2b2a0b0e2f2e0f0 i2j2i0j0m2n2m0n0 c2d2c0d0g2h2g0h0 k2l2k0l0o2p2o0p0
-*/
- movew d2,d7
- movew d0,d2
- swap d2
- movew d2,d0
- movew d7,d2
-
- movew d3,d7
- movew d1,d3
- swap d3
- movew d3,d1
- movew d7,d3
-/*
- d0 = a7b7a5b5e7f7e5f5 i7j7i5j5m7n7m5n5 a6b6a4b4e6f6e4f4 i6j6i4j4m6n6m4n4
- d1 = a3b3a1b1e3f3e1f1 i3j3i1j1m3n3m1n1 a2b2a0b0e2f2e0f0 i2j2i0j0m2n2m0n0
- d2 = c7d7c5d5g7h7g5h5 k7l7k5l5o7p7o5p5 c6d6c4d4g6h6g4h4 k6l6k4l4o6p6o4p4
- d3 = c3d3c1d1g3h3g1h1 k3l3k1l1o3p3o1p1 c2d2c0d0g2h2g0h0 k2l2k0l0o2p2o0p0
-*/
- movel d2,d7
- lsrl #2,d7
- eorl d0,d7
- andl #0x33333333,d7
- eorl d7,d0
- lsll #2,d7
- eorl d7,d2
-
- movel d3,d7
- lsrl #2,d7
- eorl d1,d7
- andl #0x33333333,d7
- eorl d7,d1
- lsll #2,d7
- eorl d7,d3
-/*
- d0 = a7b7c7d7e7f7g7h7 i7j7k7l7m7n7o7p7 a6b6c6d6e6f6g6h6 i6j6k6l6m6n6o6p6
- d1 = a3b3c3d3e3f3g3h3 i3j3k3l3m3n3o3p3 a2b2c2d2e2f2g2h2 i2j2k2l2m2n2o2p2
- d2 = a5b5c5d5e5f5g5h5 i5j5k5l5m5n5o5p5 a4b4c4d4e4f4g4h4 i4j4k4l4m4n4o4p4
- d3 = a1b1c1d1e1f1g1h1 i1j1k1l1m1n1o1p1 a0b0c0d0e0f0g0h0 i0j0k0l0m0n0o0p0
-*/
- swap d0
- swap d1
- swap d2
- swap d3
-
- movel d0,a6
- movel d2,a5
- movel d1,a4
- movel d3,a3
-
- cmpl a0,a2
- bgt SDL_Atari_C2p8_pix16
-
- movel a3,a1@+
- movel a4,a1@+
- movel a5,a1@+
- movel a6,a1@+
-
- /* Double the line ? */
-
- movel c2p_srcpitch,d0
- movel c2p_dstpitch,d1
-
- tstl c2p_dblligne
- beqs SDL_Atari_C2p8_nodblline
-
- movel c2p_curdst,a0
- movel a0,a1
- addl d1,a1
-
- movew c2p_width+2,d7
- lsrw #4,d7
- subql #1,d7
-SDL_Atari_C2p8_dblloop:
- movel a0@+,a1@+
- movel a0@+,a1@+
- movel a0@+,a1@+
- movel a0@+,a1@+
- dbra d7,SDL_Atari_C2p8_dblloop
-
- addl d1,c2p_curdst
-
-SDL_Atari_C2p8_nodblline:
-
- /* Next line */
-
- addl d0,c2p_cursrc
- addl d1,c2p_curdst
-
- subqw #1,c2p_row
- bne SDL_Atari_C2p8_rowloop
-
- moveml sp@+,d2-d7/a2-a6
- rts
-
-/* ------------ Conversion C2P, 4 bits ------------ */
-
-_SDL_Atari_C2pConvert4:
- movel sp@(4),c2p_source
- movel sp@(8),c2p_dest
- movel sp@(12),c2p_width
- movel sp@(16),c2p_height
- movel sp@(20),c2p_dblligne
- movel sp@(24),c2p_srcpitch
- movel sp@(28),c2p_dstpitch
-
- moveml d2-d7/a2-a6,sp@-
-
- movel c2p_source,a0
- movel c2p_dest,a1
- lea _SDL_Atari_table_c2p,a2
- movel #0x00070001,d3
-#if defined(__M68020__)
- moveq #0,d0
-#endif
-
- movel c2p_height,d7
- subql #1,d7
-c2p4_bcly:
- movel a0,a4 | Save start address of source
- movel a1,a5 | Save start address of dest
-
- | Conversion
-
- movel c2p_width,d6
- lsrw #4,d6
- subql #1,d6
-c2p4_bclx:
- | Octets 0-7
-
- moveq #0,d1
- moveq #7,d5
-c2p4_bcl07:
-#if defined(__M68020__)
- moveb a0@+,d0
- lea a2@(0,d0:w:4),a3
-#else
- moveq #0,d0
- moveb a0@+,d0
- lslw #2,d0
- lea a2@(0,d0:w),a3
-#endif
- lsll #1,d1
- orl a3@,d1
- dbra d5,c2p4_bcl07
-
- movepl d1,a1@(0)
- addw d3,a1
- swap d3
-
- | Octets 8-15
-
- moveq #0,d1
- moveq #7,d5
-c2p4_bcl815:
-#if defined(__M68020__)
- moveb a0@+,d0
- lea a2@(0,d0:w:4),a3
-#else
- moveq #0,d0
- moveb a0@+,d0
- lslw #2,d0
- lea a2@(0,d0:w),a3
-#endif
- lsll #1,d1
- orl a3@,d1
- dbra d5,c2p4_bcl815
-
- movepl d1,a1@(0)
- addw d3,a1
- swap d3
-
- dbra d6,c2p4_bclx
-
- | Double line ?
-
- tstl c2p_dblligne
- beqs c2p4_nodblligne
-
- movel a5,a6 | src line
- movel a5,a1 | dest line
- addl c2p_dstpitch,a1
-
- movel c2p_width,d6
- lsrw #3,d6
- subql #1,d6
-c2p4_copydbl:
- movel a6@+,a1@+
- dbra d6,c2p4_copydbl
-
- addl c2p_dstpitch,a5
-c2p4_nodblligne:
-
- | Next line
-
- movel a4,a0
- addl c2p_srcpitch,a0
- movel a5,a1
- addl c2p_dstpitch,a1
-
- dbra d7,c2p4_bcly
-
- moveml sp@+,d2-d7/a2-a6
- rts
-
-/* ------------ Conversion of a light palette in 4 bits ------------ */
-
-_SDL_Atari_C2pConvert4_pal:
- /* a0 is a 256-word light palette */
- movel sp@(4),a0
-
- moveml d2-d3,sp@-
-
- lea _SDL_Atari_table_c2p,a1
- movew #255,d3
-c2p_pal_initbcl:
- movew a0@+,d0
- lsrw #4,d0
- andw #15,d0
-
- moveq #3,d1
-c2p_pal_initbyte:
- btst d1,d0
- sne d2
- negw d2
- moveb d2,a1@(0,d1:w)
-
- dbra d1,c2p_pal_initbyte
-
- addql #4,a1
- dbra d3,c2p_pal_initbcl
-
- moveml sp@+,d2-d3
-
- rts
-
-/* ------------ Buffers ------------ */
-
- .bss
-
- .even
- .comm _SDL_Atari_C2pConvert,4
- .comm _SDL_Atari_table_c2p,1024
-
- .comm c2p_source,4 /* Source framebuffer */
- .comm c2p_dest,4 /* Destination framebuffer */
- .comm c2p_width,4 /* Width of zone to convert */
- .comm c2p_height,4 /* Height of zone to convert */
- .comm c2p_dblligne,4 /* Double the lines while converting ? */
- .comm c2p_srcpitch,4 /* Source pitch */
- .comm c2p_dstpitch,4 /* Destination pitch */
- .comm c2p_cursrc,4 /* Current source line */
- .comm c2p_curdst,4 /* Current destination line */
- .comm c2p_rowlen,2 /* Line length in bytes */
- .comm c2p_row,2 /* Current line number */
--- a/src/video/ataricommon/SDL_ataric2p_s.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _ATARI_C2P_h
-#define _ATARI_C2P_h
-
-#include "SDL_stdinc.h"
-
-/*--- Functions pointers ---*/
-
-/* Convert a chunky screen to bitplane screen */
-
-extern void (*SDL_Atari_C2pConvert) (Uint8 * src, /* Source screen (one byte=one pixel) */
- Uint8 * dest, /* Destination (4/8 bits planes) */
- Uint32 width, /* Dimensions of screen to convert */
- Uint32 height, Uint32 dblligne, /* Double the lines when converting ? */
- Uint32 srcpitch, /* Length of one source line in bytes */
- Uint32 dstpitch /* Length of one destination line in bytes */
- );
-
-/*--- 8 bits functions ---*/
-
-/* Convert a chunky screen to bitplane screen */
-
-void SDL_Atari_C2pConvert8(Uint8 * src, /* Source screen (one byte=one pixel) */
- Uint8 * dest, /* Destination (8 bits planes) */
- Uint32 width, /* Dimensions of screen to convert */
- Uint32 height, Uint32 dblligne, /* Double the lines when converting ? */
- Uint32 srcpitch, /* Length of one source line in bytes */
- Uint32 dstpitch /* Length of one destination line in bytes */
- );
-
-/*--- 4 bits functions ---*/
-
-/* Convert a chunky screen to bitplane screen */
-
-void SDL_Atari_C2pConvert4(Uint8 * src, /* Source screen (one byte=one pixel) */
- Uint8 * dest, /* Destination (4 bits planes) */
- Uint32 width, /* Dimensions of screen to convert */
- Uint32 height, Uint32 dblligne, /* Double the lines when converting ? */
- Uint32 srcpitch, /* Length of one source line in bytes */
- Uint32 dstpitch /* Length of one destination line in bytes */
- );
-
-/* Conversion palette */
-
-void SDL_Atari_C2pConvert4_pal(Uint16 * lightpalette);
-
-#endif /* _ATARI_C2P_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_ataridevmouse.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- MiNT /dev/mouse driver
-
- Patrice Mandin
-*/
-
-#include <fcntl.h>
-#include <unistd.h>
-
-#include "../../events/SDL_events_c.h"
-#include "SDL_ataridevmouse_c.h"
-
-/* Defines */
-
-#define DEVICE_NAME "/dev/mouse"
-
-/* Local variables */
-
-static int handle = -1;
-static int mouseb, prev_mouseb;
-
-/* Functions */
-
-int
-SDL_AtariDevMouse_Open(void)
-{
- int r;
- const char *mousedev;
-
- /*
- TODO: Fix the MiNT device driver, that locks mouse for other
- applications, so this is disabled till fixed
- */
- return 0;
-
- /* First, try SDL_MOUSEDEV device */
- mousedev = SDL_getenv("SDL_MOUSEDEV");
- if (!mousedev) {
- handle = open(mousedev, 0);
- }
-
- /* Failed, try default device */
- if (handle < 0) {
- handle = open(DEVICE_NAME, 0);
- }
-
- if (handle < 0) {
- handle = -1;
- return 0;
- }
-
- /* Set non blocking mode */
- r = fcntl(handle, F_GETFL, 0);
- if (r < 0) {
- close(handle);
- handle = -1;
- return 0;
- }
-
- r |= O_NDELAY;
-
- r = fcntl(handle, F_SETFL, r);
- if (r < 0) {
- close(handle);
- handle = -1;
- return 0;
- }
-
- prev_mouseb = 7;
- return 1;
-}
-
-void
-SDL_AtariDevMouse_Close(void)
-{
- if (handle > 0) {
- close(handle);
- handle = -1;
- }
-}
-
-static int
-atari_GetButton(int button)
-{
- switch (button) {
- case 0:
- return SDL_BUTTON_RIGHT;
- case 1:
- return SDL_BUTTON_MIDDLE;
- default:
- break;
- }
-
- return SDL_BUTTON_LEFT;
-}
-
-void
-SDL_AtariDevMouse_PostMouseEvents(_THIS, SDL_bool buttonEvents)
-{
- unsigned char buffer[3];
- int mousex, mousey;
-
- if (handle < 0) {
- return;
- }
-
- mousex = mousey = 0;
- while (read(handle, buffer, sizeof(buffer)) == sizeof(buffer)) {
- mouseb = buffer[0] & 7;
- mousex += (char) buffer[1];
- mousey += (char) buffer[2];
-
- /* Mouse button events */
- if (buttonEvents && (mouseb != prev_mouseb)) {
- int i;
-
- for (i = 0; i < 3; i++) {
- int curbutton, prevbutton;
-
- curbutton = mouseb & (1 << i);
- prevbutton = prev_mouseb & (1 << i);
-
- if (curbutton && !prevbutton) {
- SDL_PrivateMouseButton(SDL_RELEASED,
- atari_GetButton(i), 0, 0);
- }
- if (!curbutton && prevbutton) {
- SDL_PrivateMouseButton(SDL_PRESSED,
- atari_GetButton(i), 0, 0);
- }
- }
-
- prev_mouseb = mouseb;
- }
- }
-
- /* Mouse motion event */
- if (mousex || mousey) {
- SDL_PrivateMouseMotion(0, 1, mousex, -mousey);
- }
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_ataridevmouse_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- MiNT /dev/mouse driver
-
- Patrice Mandin
-*/
-
-#ifndef _SDL_ATARI_DEVMOUSE_H_
-#define _SDL_ATARI_DEVMOUSE_H_
-
-#include "../SDL_sysvideo.h"
-
-extern int SDL_AtariDevMouse_Open(void);
-extern void SDL_AtariDevMouse_Close(void);
-extern void SDL_AtariDevMouse_PostMouseEvents(_THIS, SDL_bool buttonEvents);
-
-#endif /* _SDL_ATARI_DEVMOUSE_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarieddi.S Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/*
- * Read EdDI version
- *
- * Patrice Mandin
- */
-
- .text
-
- .globl _Atari_get_EdDI_version
-
-/*--- Vector installer ---*/
-
-_Atari_get_EdDI_version:
- movel sp@(4),a0 /* Value of EdDI cookie */
-
- /* Call EdDI function #0 */
- clrw d0
- jsr (a0)
-
- rts
--- a/src/video/ataricommon/SDL_atarieddi_s.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_Atari_eddi_s_h
-#define _SDL_Atari_eddi_s_h
-
-/*--- Defines ---*/
-
-/* EdDI versions */
-
-#define EDDI_10 (0x0100)
-#define EDDI_11 (0x0110)
-
-/* Screen format */
-
-enum
-{
- VDI_FORMAT_UNKNOWN = -1,
- VDI_FORMAT_INTER = 0, /* Interleaved bitplanes */
- VDI_FORMAT_VDI = 1, /* VDI independent */
- VDI_FORMAT_PACK = 2 /* Packed pixels */
-};
-
-/* CLUT types */
-enum
-{
- VDI_CLUT_NONE = 0, /* Monochrome mode */
- VDI_CLUT_HARDWARE, /* <256 colours mode */
- VDI_CLUT_SOFTWARE /* True colour mode */
-};
-
-/*--- Functions ---*/
-
-unsigned long Atari_get_EdDI_version(void *function_pointer);
-
-#endif /* _SDL_Atari_eddi_s_h */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarievents.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager
- *
- * Patrice Mandin
- *
- * This routines choose what the final event manager will be
- */
-
-#include <mint/cookie.h>
-#include <mint/ostruct.h>
-#include <mint/osbind.h>
-
-#include "../../events/SDL_sysevents.h"
-#include "../../events/SDL_events_c.h"
-
-#include "SDL_atarikeys.h"
-#include "SDL_atarievents_c.h"
-#include "SDL_biosevents_c.h"
-#include "SDL_gemdosevents_c.h"
-#include "SDL_ikbdevents_c.h"
-
-enum
-{
- MCH_ST = 0,
- MCH_STE,
- MCH_TT,
- MCH_F30,
- MCH_CLONE,
- MCH_ARANYM
-};
-
-#ifndef KT_NOCHANGE
-# define KT_NOCHANGE -1
-#endif
-
-/* The translation tables from a console scancode to a SDL keysym */
-static SDLKey keymap[ATARIBIOS_MAXKEYS];
-static unsigned char *keytab_normal;
-
-void (*SDL_Atari_ShutdownEvents) (void);
-
-static void
-SDL_Atari_InitializeEvents(_THIS)
-{
- const char *envr;
- unsigned long cookie_mch;
-
- /* Test if we are on an Atari machine or not */
- if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
- cookie_mch = 0;
- }
- cookie_mch >>= 16;
-
- /* Default is Ikbd, the faster except for clones */
- switch (cookie_mch) {
- case MCH_ST:
- case MCH_STE:
- case MCH_TT:
- case MCH_F30:
- case MCH_ARANYM:
- _this->PumpEvents = AtariIkbd_PumpEvents;
- SDL_Atari_ShutdownEvents = AtariIkbd_ShutdownEvents;
- break;
- default:
- _this->PumpEvents = AtariGemdos_PumpEvents;
- SDL_Atari_ShutdownEvents = AtariGemdos_ShutdownEvents;
- break;
- }
-
- envr = SDL_getenv("SDL_ATARI_EVENTSDRIVER");
-
- if (!envr) {
- return;
- }
-
- if (SDL_strcmp(envr, "ikbd") == 0) {
- _this->PumpEvents = AtariIkbd_PumpEvents;
- SDL_Atari_ShutdownEvents = AtariIkbd_ShutdownEvents;
- }
-
- if (SDL_strcmp(envr, "gemdos") == 0) {
- _this->PumpEvents = AtariGemdos_PumpEvents;
- SDL_Atari_ShutdownEvents = AtariGemdos_ShutdownEvents;
- }
-
- if (SDL_strcmp(envr, "bios") == 0) {
- _this->PumpEvents = AtariBios_PumpEvents;
- SDL_Atari_ShutdownEvents = AtariBios_ShutdownEvents;
- }
-
- SDL_Atari_InitInternalKeymap(_this);
-}
-
-void
-Atari_PumpEvents(_THIS)
-{
- Atari_InitializeEvents(_this);
-
- /* Call choosen routine */
- _this->PumpEvents(_this);
-}
-
-void
-SDL_Atari_InitInternalKeymap(_THIS)
-{
- int i;
- _KEYTAB *key_tables;
-
- /* Read system tables for scancode -> ascii translation */
- key_tables = (_KEYTAB *) Keytbl(KT_NOCHANGE, KT_NOCHANGE, KT_NOCHANGE);
- keytab_normal = key_tables->unshift;
-
- /* Initialize keymap */
- for (i = 0; i < ATARIBIOS_MAXKEYS; i++)
- keymap[i] = SDLK_UNKNOWN;
-
- /* Functions keys */
- for (i = 0; i < 10; i++)
- keymap[SCANCODE_F1 + i] = SDLK_F1 + i;
-
- /* Cursor keypad */
- keymap[SCANCODE_HELP] = SDLK_HELP;
- keymap[SCANCODE_UNDO] = SDLK_UNDO;
- keymap[SCANCODE_INSERT] = SDLK_INSERT;
- keymap[SCANCODE_CLRHOME] = SDLK_HOME;
- keymap[SCANCODE_UP] = SDLK_UP;
- keymap[SCANCODE_DOWN] = SDLK_DOWN;
- keymap[SCANCODE_RIGHT] = SDLK_RIGHT;
- keymap[SCANCODE_LEFT] = SDLK_LEFT;
-
- /* Special keys */
- keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE;
- keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE;
- keymap[SCANCODE_TAB] = SDLK_TAB;
- keymap[SCANCODE_ENTER] = SDLK_RETURN;
- keymap[SCANCODE_DELETE] = SDLK_DELETE;
- keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL;
- keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT;
- keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT;
- keymap[SCANCODE_LEFTALT] = SDLK_LALT;
- keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK;
-}
-
-/* Atari to Unicode charset translation table */
-
-Uint16 SDL_AtariToUnicodeTable[256] = {
- /* Standard ASCII characters from 0x00 to 0x7e */
- /* Unicode stuff from 0x7f to 0xff */
-
- 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
- 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
- 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
- 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
- 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
- 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
- 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
- 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
-
- 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
- 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
- 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
- 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
- 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
- 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
- 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
- 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0394,
-
- 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
- 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
- 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
- 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x00DF, 0x0192,
- 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
- 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
- 0x00C3, 0x00F5, 0x00D8, 0x00F8, 0x0153, 0x0152, 0x00C0, 0x00C3,
- 0x00D5, 0x00A8, 0x00B4, 0x2020, 0x00B6, 0x00A9, 0x00AE, 0x2122,
-
- 0x0133, 0x0132, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5,
- 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DB, 0x05DC, 0x05DE, 0x05E0,
- 0x05E1, 0x05E2, 0x05E4, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA,
- 0x05DF, 0x05DA, 0x05DD, 0x05E3, 0x05E5, 0x00A7, 0x2038, 0x221E,
- 0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
- 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x222E, 0x03C6, 0x2208, 0x2229,
- 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
- 0x00B0, 0x2022, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x00B3, 0x00AF
-};
-
-SDL_keysym *
-SDL_Atari_TranslateKey(int scancode, SDL_keysym * keysym, SDL_bool pressed)
-{
- int asciicode = 0;
-
- /* Set the keysym information */
- keysym->scancode = scancode;
- keysym->mod = KMOD_NONE;
- keysym->sym = keymap[scancode];
- keysym->unicode = 0;
-
- if (keysym->sym == SDLK_UNKNOWN) {
- keysym->sym = asciicode = keytab_normal[scancode];
- }
-
- if (SDL_TranslateUNICODE && pressed) {
- keysym->unicode = SDL_AtariToUnicodeTable[asciicode];
- }
-
- return (keysym);
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarievents_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARI_EVENTS_H_
-#define _SDL_ATARI_EVENTS_H_
-
-#include "../SDL_sysvideo.h"
-
-#define ATARIBIOS_MAXKEYS 128
-
-/* Special keys state */
-#ifndef K_RSHIFT
-enum
-{
- K_RSHIFT = 0,
- K_LSHIFT,
- K_CTRL,
- K_ALT,
- K_CAPSLOCK,
- K_CLRHOME,
- K_INSERT
-};
-#endif
-
-extern void (*SDL_Atari_ShutdownEvents) (void);
-
-extern void SDL_Atari_PumpEvents(_THIS);
-
-extern void SDL_Atari_InitInternalKeymap(_THIS);
-
-/* Atari to Unicode charset translation table */
-extern Uint16 SDL_AtariToUnicodeTable[256];
-SDL_keysym *SDL_Atari_TranslateKey(int scancode, SDL_keysym * keysym,
- SDL_bool pressed);
-
-#endif /* _SDL_ATARI_EVENTS_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarigl.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1127 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/* Atari OSMesa.ldg implementation of SDL OpenGL support */
-
-/*--- Includes ---*/
-
-#if SDL_VIDEO_OPENGL
-#include <GL/osmesa.h>
-#endif
-
-#include <mint/osbind.h>
-
-#include "SDL_endian.h"
-#include "SDL_video.h"
-#include "SDL_atarigl_c.h"
-#if SDL_VIDEO_OPENGL_OSMESA_DYNAMIC
-#include "SDL_loadso.h"
-#endif
-
-/*--- Defines ---*/
-
-#define PATH_OSMESA_LDG "osmesa.ldg"
-#define PATH_MESAGL_LDG "mesa_gl.ldg"
-#define PATH_TINYGL_LDG "tiny_gl.ldg"
-
-#define VDI_RGB 0xf
-
-/*--- Functions prototypes ---*/
-
-static void SDL_AtariGL_UnloadLibrary(_THIS);
-
-#if SDL_VIDEO_OPENGL
-static void CopyShadowNull(_THIS, SDL_Surface * surface);
-static void CopyShadowDirect(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBTo555(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBTo565(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBSwap(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBToARGB(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBToABGR(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBToBGRA(_THIS, SDL_Surface * surface);
-static void CopyShadowRGBToRGBA(_THIS, SDL_Surface * surface);
-static void CopyShadow8888To555(_THIS, SDL_Surface * surface);
-static void CopyShadow8888To565(_THIS, SDL_Surface * surface);
-
-static void ConvertNull(_THIS, SDL_Surface * surface);
-static void Convert565To555be(_THIS, SDL_Surface * surface);
-static void Convert565To555le(_THIS, SDL_Surface * surface);
-static void Convert565le(_THIS, SDL_Surface * surface);
-static void ConvertBGRAToABGR(_THIS, SDL_Surface * surface);
-
-static int InitNew(_THIS, SDL_Surface * current);
-static int InitOld(_THIS, SDL_Surface * current);
-#endif
-
-/*--- Public functions ---*/
-
-int
-SDL_AtariGL_Init(_THIS, SDL_Surface * current)
-{
-#if SDL_VIDEO_OPENGL
- if (gl_oldmesa) {
- gl_active = InitOld(_this, current);
- } else {
- gl_active = InitNew(_this, current);
- }
-#endif
-
- return (gl_active);
-}
-
-void
-SDL_AtariGL_Quit(_THIS, SDL_bool unload)
-{
-#if SDL_VIDEO_OPENGL
- if (gl_oldmesa) {
- /* Old mesa implementations */
- if (_this->gl_data->OSMesaDestroyLDG) {
- _this->gl_data->OSMesaDestroyLDG();
- }
- if (gl_shadow) {
- Mfree(gl_shadow);
- gl_shadow = NULL;
- }
- } else {
- /* New mesa implementation */
- if (gl_ctx) {
- if (_this->gl_data->OSMesaDestroyContext) {
- _this->gl_data->OSMesaDestroyContext(gl_ctx);
- }
- gl_ctx = NULL;
- }
- }
-
- if (unload) {
- SDL_AtariGL_UnloadLibrary(_this);
- }
-#endif /* SDL_VIDEO_OPENGL */
- gl_active = 0;
-}
-
-int
-SDL_AtariGL_LoadLibrary(_THIS, const char *path)
-{
-#if SDL_VIDEO_OPENGL
-
-#if SDL_VIDEO_OPENGL_OSMESA_DYNAMIC
- void *handle;
- SDL_bool cancel_load;
-
- if (gl_active) {
- SDL_SetError("OpenGL context already created");
- return -1;
- }
-
- /* Unload previous driver */
- SDL_AtariGL_UnloadLibrary(_this);
-
- /* Load library given by path */
- handle = SDL_LoadObject(path);
- if (handle == NULL) {
- /* Try to load another one */
- path = SDL_getenv("SDL_VIDEO_GL_DRIVER");
- if (path != NULL) {
- handle = SDL_LoadObject(path);
- }
-
- /* If it does not work, try some other */
- if (handle == NULL) {
- path = PATH_OSMESA_LDG;
- handle = SDL_LoadObject(path);
- }
-
- if (handle == NULL) {
- path = PATH_MESAGL_LDG;
- handle = SDL_LoadObject(path);
- }
-
- if (handle == NULL) {
- path = PATH_TINYGL_LDG;
- handle = SDL_LoadObject(path);
- }
- }
-
- if (handle == NULL) {
- SDL_SetError("Could not load OpenGL library");
- return -1;
- }
-
- _this->gl_data->glGetIntegerv = SDL_LoadFunction(handle, "glGetIntegerv");
- _this->gl_data->glFinish = SDL_LoadFunction(handle, "glFinish");
- _this->gl_data->glFlush = SDL_LoadFunction(handle, "glFlush");
-
- cancel_load = SDL_FALSE;
- if (_this->gl_data->glGetIntegerv == NULL) {
- cancel_load = SDL_TRUE;
- } else {
- /* We need either glFinish (OSMesa) or glFlush (TinyGL) */
- if ((_this->gl_data->glFinish == NULL) &&
- (_this->gl_data->glFlush == NULL)) {
- cancel_load = SDL_TRUE;
- }
- }
- if (cancel_load) {
- SDL_SetError("Could not retrieve OpenGL functions");
- SDL_UnloadObject(handle);
- /* Restore pointers to static library */
- SDL_AtariGL_InitPointers(this);
- return -1;
- }
-
- /* Load functions pointers (osmesa.ldg) */
- _this->gl_data->OSMesaCreateContextExt =
- SDL_LoadFunction(handle, "OSMesaCreateContextExt");
- _this->gl_data->OSMesaDestroyContext =
- SDL_LoadFunction(handle, "OSMesaDestroyContext");
- _this->gl_data->OSMesaMakeCurrent =
- SDL_LoadFunction(handle, "OSMesaMakeCurrent");
- _this->gl_data->OSMesaPixelStore =
- SDL_LoadFunction(handle, "OSMesaPixelStore");
- _this->gl_data->OSMesaGetProcAddress =
- SDL_LoadFunction(handle, "OSMesaGetProcAddress");
-
- /* Load old functions pointers (mesa_gl.ldg, tiny_gl.ldg) */
- _this->gl_data->OSMesaCreateLDG =
- SDL_LoadFunction(handle, "OSMesaCreateLDG");
- _this->gl_data->OSMesaDestroyLDG =
- SDL_LoadFunction(handle, "OSMesaDestroyLDG");
-
- gl_oldmesa = 0;
-
- if ((_this->gl_data->OSMesaCreateContextExt == NULL) ||
- (_this->gl_data->OSMesaDestroyContext == NULL) ||
- (_this->gl_data->OSMesaMakeCurrent == NULL) ||
- (_this->gl_data->OSMesaPixelStore == NULL) ||
- (_this->gl_data->OSMesaGetProcAddress == NULL)) {
- /* Hum, maybe old library ? */
- if ((_this->gl_data->OSMesaCreateLDG == NULL) ||
- (_this->gl_data->OSMesaDestroyLDG == NULL)) {
- SDL_SetError("Could not retrieve OSMesa functions");
- SDL_UnloadObject(handle);
- /* Restore pointers to static library */
- SDL_AtariGL_InitPointers(_this);
- return -1;
- } else {
- gl_oldmesa = 1;
- }
- }
-
- _this->gl_config.dll_handle = handle;
- if (path) {
- SDL_strlcpy(_this->gl_config.driver_path, path,
- SDL_arraysize(_this->gl_config.driver_path));
- } else {
- *this->gl_config.driver_path = '\0';
- }
-
-#endif
- _this->gl_config.driver_loaded = 1;
-
- return 0;
-#else
- return -1;
-#endif
-}
-
-void *
-SDL_AtariGL_GetProcAddress(_THIS, const char *proc)
-{
- void *func = NULL;
-#if SDL_VIDEO_OPENGL
-
- if (_this->gl_config.dll_handle) {
- func = SDL_LoadFunction(this->gl_config.dll_handle, (void *) proc);
- } else if (_this->gl_data->OSMesaGetProcAddress) {
- func = _this->gl_data->OSMesaGetProcAddress(proc);
- }
-#endif
- return func;
-}
-
-int
-SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int *value)
-{
-#if SDL_VIDEO_OPENGL
- GLenum mesa_attrib;
- SDL_Surface *surface;
-
- if (!gl_active) {
- return -1;
- }
-
- switch (attrib) {
- case SDL_GL_RED_SIZE:
- mesa_attrib = GL_RED_BITS;
- break;
- case SDL_GL_GREEN_SIZE:
- mesa_attrib = GL_GREEN_BITS;
- break;
- case SDL_GL_BLUE_SIZE:
- mesa_attrib = GL_BLUE_BITS;
- break;
- case SDL_GL_ALPHA_SIZE:
- mesa_attrib = GL_ALPHA_BITS;
- break;
- case SDL_GL_DOUBLEBUFFER:
- surface = _this->screen;
- *value = ((surface->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF);
- return 0;
- case SDL_GL_DEPTH_SIZE:
- mesa_attrib = GL_DEPTH_BITS;
- break;
- case SDL_GL_STENCIL_SIZE:
- mesa_attrib = GL_STENCIL_BITS;
- break;
- case SDL_GL_ACCUM_RED_SIZE:
- mesa_attrib = GL_ACCUM_RED_BITS;
- break;
- case SDL_GL_ACCUM_GREEN_SIZE:
- mesa_attrib = GL_ACCUM_GREEN_BITS;
- break;
- case SDL_GL_ACCUM_BLUE_SIZE:
- mesa_attrib = GL_ACCUM_BLUE_BITS;
- break;
- case SDL_GL_ACCUM_ALPHA_SIZE:
- mesa_attrib = GL_ACCUM_ALPHA_BITS;
- break;
- default:
- return -1;
- }
-
- _this->gl_data->glGetIntegerv(mesa_attrib, value);
- return 0;
-#else
- return -1;
-#endif
-}
-
-int
-SDL_AtariGL_MakeCurrent(_THIS)
-{
-#if SDL_VIDEO_OPENGL
- SDL_Surface *surface;
- GLenum type;
-
- if (gl_oldmesa && gl_active) {
- return 0;
- }
-
- if (_this->gl_config.dll_handle) {
- if ((_this->gl_data->OSMesaMakeCurrent == NULL) ||
- (_this->gl_data->OSMesaPixelStore == NULL)) {
- return -1;
- }
- }
-
- if (!gl_active) {
- SDL_SetError("Invalid OpenGL context");
- return -1;
- }
-
- surface = _this->screen;
-
- if ((surface->format->BitsPerPixel == 15)
- || (surface->format->BitsPerPixel == 16)) {
- type = GL_UNSIGNED_SHORT_5_6_5;
- } else {
- type = GL_UNSIGNED_BYTE;
- }
-
- if (!
- (_this->
- gl_data->OSMesaMakeCurrent(gl_ctx, surface->pixels, type, surface->w,
- surface->h))) {
- SDL_SetError("Can not make OpenGL context current");
- return -1;
- }
-
- /* OSMesa draws upside down */
- _this->gl_data->OSMesaPixelStore(OSMESA_Y_UP, 0);
-
- return 0;
-#else
- return -1;
-#endif
-}
-
-void
-SDL_AtariGL_SwapBuffers(_THIS)
-{
-#if SDL_VIDEO_OPENGL
- if (gl_active) {
- if (_this->gl_config.dll_handle) {
- if (_this->gl_data->glFinish) {
- _this->gl_data->glFinish();
- } else if (_this->gl_data->glFlush) {
- _this->gl_data->glFlush();
- }
- } else {
- _this->gl_data->glFinish();
- }
- gl_copyshadow(_this, _this->screen);
- gl_convert(_this, _this->screen);
- }
-#endif
-}
-
-void
-SDL_AtariGL_InitPointers(_THIS)
-{
-#if SDL_VIDEO_OPENGL
- _this->gl_data->OSMesaCreateContextExt = OSMesaCreateContextExt;
- _this->gl_data->OSMesaDestroyContext = OSMesaDestroyContext;
- _this->gl_data->OSMesaMakeCurrent = OSMesaMakeCurrent;
- _this->gl_data->OSMesaPixelStore = OSMesaPixelStore;
- _this->gl_data->OSMesaGetProcAddress = OSMesaGetProcAddress;
-
- _this->gl_data->glGetIntegerv = glGetIntegerv;
- _this->gl_data->glFinish = glFinish;
- _this->gl_data->glFlush = glFlush;
-
- _this->gl_data->OSMesaCreateLDG = NULL;
- _this->gl_data->OSMesaDestroyLDG = NULL;
-#endif
-}
-
-/*--- Private functions ---*/
-
-static void
-SDL_AtariGL_UnloadLibrary(_THIS)
-{
-#if SDL_VIDEO_OPENGL
- if (_this->gl_config.dll_handle) {
- SDL_UnloadObject(_this->gl_config.dll_handle);
- _this->gl_config.dll_handle = NULL;
-
- /* Restore pointers to static library */
- SDL_AtariGL_InitPointers(_this);
- }
-#endif
-}
-
-/*--- Creation of an OpenGL context using new/old functions ---*/
-
-#if SDL_VIDEO_OPENGL
-static int
-InitNew(_THIS, SDL_Surface * current)
-{
- GLenum osmesa_format;
- SDL_PixelFormat *pixel_format;
- Uint32 redmask;
- int recreatecontext;
- GLint newaccumsize;
-
- if (_this->gl_config.dll_handle) {
- if (_this->gl_data->OSMesaCreateContextExt == NULL) {
- return 0;
- }
- }
-
- /* Init OpenGL context using OSMesa */
- gl_convert = ConvertNull;
- gl_copyshadow = CopyShadowNull;
- gl_upsidedown = SDL_FALSE;
-
- pixel_format = current->format;
- redmask = pixel_format->Rmask;
- switch (pixel_format->BitsPerPixel) {
- case 15:
- /* 1555, big and little endian, unsupported */
- gl_pixelsize = 2;
- osmesa_format = OSMESA_RGB_565;
- if (redmask == 31 << 10) {
- gl_convert = Convert565To555be;
- } else {
- gl_convert = Convert565To555le;
- }
- break;
- case 16:
- gl_pixelsize = 2;
- if (redmask == 31 << 11) {
- osmesa_format = OSMESA_RGB_565;
- } else {
- /* 565, little endian, unsupported */
- osmesa_format = OSMESA_RGB_565;
- gl_convert = Convert565le;
- }
- break;
- case 24:
- gl_pixelsize = 3;
- if (redmask == 255 << 16) {
- osmesa_format = OSMESA_RGB;
- } else {
- osmesa_format = OSMESA_BGR;
- }
- break;
- case 32:
- gl_pixelsize = 4;
- if (redmask == 255 << 16) {
- osmesa_format = OSMESA_ARGB;
- } else if (redmask == 255 << 8) {
- osmesa_format = OSMESA_BGRA;
- } else if (redmask == 255 << 24) {
- osmesa_format = OSMESA_RGBA;
- } else {
- /* ABGR format unsupported */
- osmesa_format = OSMESA_BGRA;
- gl_convert = ConvertBGRAToABGR;
- }
- break;
- default:
- gl_pixelsize = 1;
- osmesa_format = OSMESA_COLOR_INDEX;
- break;
- }
-
- /* Try to keep current context if possible */
- newaccumsize =
- _this->gl_config.accum_red_size +
- _this->gl_config.accum_green_size +
- _this->gl_config.accum_blue_size + _this->gl_config.accum_alpha_size;
- recreatecontext = 1;
- if (gl_ctx &&
- (gl_curformat == osmesa_format) &&
- (gl_curdepth == _this->gl_config.depth_size) &&
- (gl_curstencil == _this->gl_config.stencil_size) &&
- (gl_curaccum == newaccumsize)) {
- recreatecontext = 0;
- }
- if (recreatecontext) {
- SDL_AtariGL_Quit(this, SDL_FALSE);
-
- gl_ctx =
- _this->gl_data->OSMesaCreateContextExt(osmesa_format,
- _this->
- gl_config.depth_size,
- _this->
- gl_config.stencil_size,
- newaccumsize, NULL);
-
- if (gl_ctx) {
- gl_curformat = osmesa_format;
- gl_curdepth = _this->gl_config.depth_size;
- gl_curstencil = _this->gl_config.stencil_size;
- gl_curaccum = newaccumsize;
- } else {
- gl_curformat = 0;
- gl_curdepth = 0;
- gl_curstencil = 0;
- gl_curaccum = 0;
- }
- }
-
- return (gl_ctx != NULL);
-}
-
-
-static int
-InitOld(_THIS, SDL_Surface * current)
-{
- GLenum osmesa_format;
- SDL_PixelFormat *pixel_format;
- Uint32 redmask;
- int recreatecontext, tinygl_present;
-
- if (_this->gl_config.dll_handle) {
- if (_this->gl_data->OSMesaCreateLDG == NULL) {
- return 0;
- }
- }
-
- /* TinyGL only supports VDI_RGB (OSMESA_RGB) */
- tinygl_present = 0;
- if (_this->gl_config.dll_handle) {
- if (_this->gl_data->glFinish == NULL) {
- tinygl_present = 1;
- }
- }
-
- /* Init OpenGL context using OSMesa */
- gl_convert = ConvertNull;
- gl_copyshadow = CopyShadowNull;
- gl_upsidedown = SDL_FALSE;
-
- pixel_format = current->format;
- redmask = pixel_format->Rmask;
- switch (pixel_format->BitsPerPixel) {
- case 15:
- /* 15 bits unsupported */
- if (tinygl_present) {
- gl_pixelsize = 3;
- osmesa_format = VDI_RGB;
- if (redmask == 31 << 10) {
- gl_copyshadow = CopyShadowRGBTo555;
- } else {
- gl_copyshadow = CopyShadowRGBTo565;
- gl_convert = Convert565To555le;
- }
- } else {
- gl_pixelsize = 4;
- gl_upsidedown = SDL_TRUE;
- osmesa_format = OSMESA_ARGB;
- if (redmask == 31 << 10) {
- gl_copyshadow = CopyShadow8888To555;
- } else {
- gl_copyshadow = CopyShadow8888To565;
- gl_convert = Convert565To555le;
- }
- }
- break;
- case 16:
- /* 16 bits unsupported */
- if (tinygl_present) {
- gl_pixelsize = 3;
- osmesa_format = VDI_RGB;
- gl_copyshadow = CopyShadowRGBTo565;
- if (redmask != 31 << 11) {
- /* 565, little endian, unsupported */
- gl_convert = Convert565le;
- }
- } else {
- gl_pixelsize = 4;
- gl_upsidedown = SDL_TRUE;
- osmesa_format = OSMESA_ARGB;
- gl_copyshadow = CopyShadow8888To565;
- if (redmask != 31 << 11) {
- /* 565, little endian, unsupported */
- gl_convert = Convert565le;
- }
- }
- break;
- case 24:
- gl_pixelsize = 3;
- if (tinygl_present) {
- osmesa_format = VDI_RGB;
- gl_copyshadow = CopyShadowDirect;
- if (redmask != 255 << 16) {
- gl_copyshadow = CopyShadowRGBSwap;
- }
- } else {
- gl_copyshadow = CopyShadowDirect;
- gl_upsidedown = SDL_TRUE;
- if (redmask == 255 << 16) {
- osmesa_format = OSMESA_RGB;
- } else {
- osmesa_format = OSMESA_BGR;
- }
- }
- break;
- case 32:
- if (tinygl_present) {
- gl_pixelsize = 3;
- osmesa_format = VDI_RGB;
- gl_copyshadow = CopyShadowRGBToARGB;
- if (redmask == 255) {
- gl_convert = CopyShadowRGBToABGR;
- } else if (redmask == 255 << 8) {
- gl_convert = CopyShadowRGBToBGRA;
- } else if (redmask == 255 << 24) {
- gl_convert = CopyShadowRGBToRGBA;
- }
- } else {
- gl_pixelsize = 4;
- gl_upsidedown = SDL_TRUE;
- gl_copyshadow = CopyShadowDirect;
- if (redmask == 255 << 16) {
- osmesa_format = OSMESA_ARGB;
- } else if (redmask == 255 << 8) {
- osmesa_format = OSMESA_BGRA;
- } else if (redmask == 255 << 24) {
- osmesa_format = OSMESA_RGBA;
- } else {
- /* ABGR format unsupported */
- osmesa_format = OSMESA_BGRA;
- gl_convert = ConvertBGRAToABGR;
- }
- }
- break;
- default:
- if (tinygl_present) {
- SDL_AtariGL_Quit(_this, SDL_FALSE);
- return 0;
- }
- gl_pixelsize = 1;
- gl_copyshadow = CopyShadowDirect;
- osmesa_format = OSMESA_COLOR_INDEX;
- break;
- }
-
- /* Try to keep current context if possible */
- recreatecontext = 1;
- if (gl_shadow &&
- (gl_curformat == osmesa_format) &&
- (gl_curwidth == current->w) && (gl_curheight == current->h)) {
- recreatecontext = 0;
- }
- if (recreatecontext) {
- SDL_AtariGL_Quit(_this, SDL_FALSE);
-
- gl_shadow =
- _this->gl_data->OSMesaCreateLDG(osmesa_format, GL_UNSIGNED_BYTE,
- current->w, current->h);
-
- if (gl_shadow) {
- gl_curformat = osmesa_format;
- gl_curwidth = current->w;
- gl_curheight = current->h;
- } else {
- gl_curformat = 0;
- gl_curwidth = 0;
- gl_curheight = 0;
- }
- }
-
- return (gl_shadow != NULL);
-}
-
-/*--- Conversions routines from shadow buffer to the screen ---*/
-
-static void
-CopyShadowNull(_THIS, SDL_Surface * surface)
-{
-}
-
-static void
-CopyShadowDirect(_THIS, SDL_Surface * surface)
-{
- int y, srcpitch, dstpitch;
- Uint8 *srcline, *dstline;
-
- srcline = gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- SDL_memcpy(dstline, srcline, srcpitch);
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBTo555(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint16 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 1;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
- for (x = 0; x < surface->w; x++) {
- Uint16 dstcolor;
-
- dstcolor = ((*srccol++) << 7) & (31 << 10);
- dstcolor |= ((*srccol++) << 2) & (31 << 5);
- dstcolor |= ((*srccol++) >> 3) & 31;
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBTo565(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint16 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 1;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- Uint16 dstcolor;
-
- dstcolor = ((*srccol++) << 8) & (31 << 11);
- dstcolor |= ((*srccol++) << 3) & (63 << 5);
- dstcolor |= ((*srccol++) >> 3) & 31;
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBSwap(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint8 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- *dstcol++ = srccol[2];
- *dstcol++ = srccol[1];
- *dstcol++ = srccol[0];
- srccol += 3;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBToARGB(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint32 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 2;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- Uint32 dstcolor;
-
- dstcolor = (*srccol++) << 16;
- dstcolor |= (*srccol++) << 8;
- dstcolor |= *srccol++;
-
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBToABGR(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint32 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 2;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- Uint32 dstcolor;
-
- dstcolor = *srccol++;
- dstcolor |= (*srccol++) << 8;
- dstcolor |= (*srccol++) << 16;
-
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBToBGRA(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint32 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 2;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- Uint32 dstcolor;
-
- dstcolor = (*srccol++) << 8;
- dstcolor |= (*srccol++) << 16;
- dstcolor |= (*srccol++) << 24;
-
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadowRGBToRGBA(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint32 *dstline, *dstcol;
- Uint8 *srcline, *srccol;
-
- srcline = (Uint8 *) gl_shadow;
- srcpitch = surface->w * gl_pixelsize;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 2;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- Uint32 dstcolor;
-
- dstcolor = (*srccol++) << 24;
- dstcolor |= (*srccol++) << 16;
- dstcolor |= (*srccol++) << 8;
-
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadow8888To555(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint16 *dstline, *dstcol;
- Uint32 *srcline, *srccol;
-
- srcline = (Uint32 *) gl_shadow;
- srcpitch = (surface->w * gl_pixelsize) >> 2;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 1;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
- for (x = 0; x < surface->w; x++) {
- Uint32 srccolor;
- Uint16 dstcolor;
-
- srccolor = *srccol++;
- dstcolor = (srccolor >> 9) & (31 << 10);
- dstcolor |= (srccolor >> 6) & (31 << 5);
- dstcolor |= (srccolor >> 3) & 31;
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-static void
-CopyShadow8888To565(_THIS, SDL_Surface * surface)
-{
- int x, y, srcpitch, dstpitch;
- Uint16 *dstline, *dstcol;
- Uint32 *srcline, *srccol;
-
- srcline = (Uint32 *) gl_shadow;
- srcpitch = (surface->w * gl_pixelsize) >> 2;
- dstline = surface->pixels;
- dstpitch = surface->pitch >> 1;
- if (gl_upsidedown) {
- srcline += (surface->h - 1) * srcpitch;
- srcpitch = -srcpitch;
- }
-
- for (y = 0; y < surface->h; y++) {
- srccol = srcline;
- dstcol = dstline;
-
- for (x = 0; x < surface->w; x++) {
- Uint32 srccolor;
- Uint16 dstcolor;
-
- srccolor = *srccol++;
- dstcolor = (srccolor >> 8) & (31 << 11);
- dstcolor |= (srccolor >> 5) & (63 << 5);
- dstcolor |= (srccolor >> 3) & 31;
- *dstcol++ = dstcolor;
- }
-
- srcline += srcpitch;
- dstline += dstpitch;
- }
-}
-
-/*--- Conversions routines in the screen ---*/
-
-static void
-ConvertNull(_THIS, SDL_Surface * surface)
-{
-}
-
-static void
-Convert565To555be(_THIS, SDL_Surface * surface)
-{
- int x, y, pitch;
- unsigned short *line, *pixel;
-
- line = surface->pixels;
- pitch = surface->pitch >> 1;
- for (y = 0; y < surface->h; y++) {
- pixel = line;
- for (x = 0; x < surface->w; x++) {
- unsigned short color = *pixel;
-
- *pixel++ = (color & 0x1f) | ((color >> 1) & 0xffe0);
- }
-
- line += pitch;
- }
-}
-
-static void
-Convert565To555le(_THIS, SDL_Surface * surface)
-{
- int x, y, pitch;
- unsigned short *line, *pixel;
-
- line = surface->pixels;
- pitch = surface->pitch >> 1;
- for (y = 0; y < surface->h; y++) {
- pixel = line;
- for (x = 0; x < surface->w; x++) {
- unsigned short color = *pixel;
-
- color = (color & 0x1f) | ((color >> 1) & 0xffe0);
- *pixel++ = SDL_Swap16(color);
- }
-
- line += pitch;
- }
-}
-
-static void
-Convert565le(_THIS, SDL_Surface * surface)
-{
- int x, y, pitch;
- unsigned short *line, *pixel;
-
- line = surface->pixels;
- pitch = surface->pitch >> 1;
- for (y = 0; y < surface->h; y++) {
- pixel = line;
- for (x = 0; x < surface->w; x++) {
- unsigned short color = *pixel;
-
- *pixel++ = SDL_Swap16(color);
- }
-
- line += pitch;
- }
-}
-
-static void
-ConvertBGRAToABGR(_THIS, SDL_Surface * surface)
-{
- int x, y, pitch;
- unsigned long *line, *pixel;
-
- line = surface->pixels;
- pitch = surface->pitch >> 2;
- for (y = 0; y < surface->h; y++) {
- pixel = line;
- for (x = 0; x < surface->w; x++) {
- unsigned long color = *pixel;
-
- *pixel++ = (color << 24) | (color >> 8);
- }
-
- line += pitch;
- }
-}
-
-#endif /* SDL_VIDEO_OPENGL */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarigl_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 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
-*/
-#include "SDL_config.h"
-
-/* Atari OSMesa.ldg implementation of SDL OpenGL support */
-
-#ifndef _SDL_ATARIGL_H_
-#define _SDL_ATARIGL_H_
-
-#if SDL_VIDEO_OPENGL
-#include <GL/osmesa.h>
-#endif
-
-#include "../SDL_sysvideo.h"
-
-struct SDL_GLDriverData
-{
-
- int gl_active; /* to stop switching drivers while we have a valid context */
-
- int gl_oldmesa; /* Old OpenGL support ? */
-
- int gl_pixelsize; /* for CopyShadow functions */
-
- SDL_bool gl_upsidedown; /* Some implementations draw upside down */
-
- Uint8 *gl_shadow; /* Shadow buffer for old implementations */
-
- /* for unsupported OSMesa buffer formats */
- void (*ConvertSurface) (_THIS, SDL_Surface * surface);
-
- /* to convert the shadow buffer to the screen format */
- void (*CopyShadow) (_THIS, SDL_Surface * surface);
-
-#if SDL_VIDEO_OPENGL
- OSMesaContext ctx;
-
- /* OpenGL functions */
- void (*glGetIntegerv) (GLenum pname, GLint * value);
- void (*glFinish) (void);
- void (*glFlush) (void);
-
- /* osmesa.ldg */
- OSMesaContext(*OSMesaCreateContextExt) (GLenum format, GLint depthBits,
- GLint stencilBits,
- GLint accumBits,
- OSMesaContext sharelist);
- void (*OSMesaDestroyContext) (OSMesaContext ctx);
- GLboolean(*OSMesaMakeCurrent) (OSMesaContext ctx, void *buffer,
- GLenum type, GLsizei width,
- GLsizei height);
- void (*OSMesaPixelStore) (GLint pname, GLint value);
- void *(*OSMesaGetProcAddress) (const char *funcName);
-
- /* mesa_gl.ldg, tiny_gl.ldg */
- void *(*OSMesaCreateLDG) (long format, long type, long width,
- long height);
- void (*OSMesaDestroyLDG) (void);
-
- /* Info needed to compare existing context with new asked one */
- int width, height;
- GLenum format;
- GLint depth, stencil, accum;
-#endif
-};
-
-/* Variable names */
-#define gl_active (_this->gl_data->gl_active)
-#define gl_ctx (_this->gl_data->ctx)
-#define gl_oldmesa (_this->gl_data->gl_oldmesa)
-#define gl_pixelsize (_this->gl_data->gl_pixelsize)
-#define gl_upsidedown (_this->gl_data->gl_upsidedown)
-#define gl_shadow (_this->gl_data->gl_shadow)
-#define gl_convert (_this->gl_data->ConvertSurface)
-#define gl_copyshadow (_this->gl_data->CopyShadow)
-#define gl_curformat (_this->gl_data->format)
-#define gl_curdepth (_this->gl_data->depth)
-#define gl_curstencil (_this->gl_data->stencil)
-#define gl_curaccum (_this->gl_data->accum)
-#define gl_curwidth (_this->gl_data->width)
-#define gl_curheight (_this->gl_data->height)
-
-/* OpenGL functions */
-extern int SDL_AtariGL_Init(_THIS, SDL_Surface * current);
-extern void SDL_AtariGL_Quit(_THIS, SDL_bool unload);
-extern void SDL_AtariGL_InitPointers(_THIS);
-
-extern int SDL_AtariGL_LoadLibrary(_THIS, const char *path);
-extern void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc);
-extern int SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int *value);
-extern int SDL_AtariGL_MakeCurrent(_THIS);
-extern void SDL_AtariGL_SwapBuffers(_THIS);
-
-#endif /* _SDL_ATARIGL_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarikeys.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/*
- * Atari Scancode definitions
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARIKEYS_H_
-#define _SDL_ATARIKEYS_H_
-
-/* --- Keyboard scancodes --- */
-/* taken from svgalib/vgakeyboard.h */
-
-#define SCANCODE_ESCAPE 0x01
-#define SCANCODE_1 0x02
-#define SCANCODE_2 0x03
-#define SCANCODE_3 0x04
-#define SCANCODE_4 0x05
-#define SCANCODE_5 0x06
-#define SCANCODE_6 0x07
-#define SCANCODE_7 0x08
-#define SCANCODE_8 0x09
-#define SCANCODE_9 0x0a
-#define SCANCODE_0 0x0b
-#define SCANCODE_MINUS 0x0c
-#define SCANCODE_EQUAL 0x0d
-#define SCANCODE_BACKSPACE 0x0e
-
-#define SCANCODE_TAB 0x0f
-#define SCANCODE_Q 0x10
-#define SCANCODE_W 0x11
-#define SCANCODE_E 0x12
-#define SCANCODE_R 0x13
-#define SCANCODE_T 0x14
-#define SCANCODE_Y 0x15
-#define SCANCODE_U 0x16
-#define SCANCODE_I 0x17
-#define SCANCODE_O 0x18
-#define SCANCODE_P 0x19
-#define SCANCODE_BRACKET_LEFT 0x1a
-#define SCANCODE_BRACKET_RIGHT 0x1b
-#define SCANCODE_ENTER 0x1c
-#define SCANCODE_DELETE 0x53
-
-#define SCANCODE_LEFTCONTROL 0x1d
-#define SCANCODE_A 0x1e
-#define SCANCODE_S 0x1f
-#define SCANCODE_D 0x20
-#define SCANCODE_F 0x21
-#define SCANCODE_G 0x22
-#define SCANCODE_H 0x23
-#define SCANCODE_J 0x24
-#define SCANCODE_K 0x25
-#define SCANCODE_L 0x26
-#define SCANCODE_SEMICOLON 0x27
-#define SCANCODE_APOSTROPHE 0x28
-#define SCANCODE_GRAVE 0x29
-
-#define SCANCODE_LEFTSHIFT 0x2a
-#define SCANCODE_BACKSLASH 0x2b
-#define SCANCODE_Z 0x2c
-#define SCANCODE_X 0x2d
-#define SCANCODE_C 0x2e
-#define SCANCODE_V 0x2f
-#define SCANCODE_B 0x30
-#define SCANCODE_N 0x31
-#define SCANCODE_M 0x32
-#define SCANCODE_COMMA 0x33
-#define SCANCODE_PERIOD 0x34
-#define SCANCODE_SLASH 0x35
-#define SCANCODE_RIGHTSHIFT 0x36
-
-#define SCANCODE_LEFTALT 0x38
-#define SCANCODE_SPACE 0x39
-#define SCANCODE_CAPSLOCK 0x3a
-
-/* Functions keys */
-#define SCANCODE_F1 0x3b
-#define SCANCODE_F2 0x3c
-#define SCANCODE_F3 0x3d
-#define SCANCODE_F4 0x3e
-#define SCANCODE_F5 0x3f
-#define SCANCODE_F6 0x40
-#define SCANCODE_F7 0x41
-#define SCANCODE_F8 0x42
-#define SCANCODE_F9 0x43
-#define SCANCODE_F10 0x44
-
-/* Numeric keypad */
-#define SCANCODE_KP0 0x70
-#define SCANCODE_KP1 0x6d
-#define SCANCODE_KP2 0x6e
-#define SCANCODE_KP3 0x6f
-#define SCANCODE_KP4 0x6a
-#define SCANCODE_KP5 0x6b
-#define SCANCODE_KP6 0x6c
-#define SCANCODE_KP7 0x67
-#define SCANCODE_KP8 0x68
-#define SCANCODE_KP9 0x69
-#define SCANCODE_KP_PERIOD 0x71
-#define SCANCODE_KP_DIVIDE 0x65
-#define SCANCODE_KP_MULTIPLY 0x66
-#define SCANCODE_KP_MINUS 0x4a
-#define SCANCODE_KP_PLUS 0x4e
-#define SCANCODE_KP_ENTER 0x72
-#define SCANCODE_KP_LEFTPAREN 0x63
-#define SCANCODE_KP_RIGHTPAREN 0x64
-
-/* Cursor keypad */
-#define SCANCODE_HELP 0x62
-#define SCANCODE_UNDO 0x61
-#define SCANCODE_INSERT 0x52
-#define SCANCODE_CLRHOME 0x47
-#define SCANCODE_UP 0x48
-#define SCANCODE_DOWN 0x50
-#define SCANCODE_RIGHT 0x4d
-#define SCANCODE_LEFT 0x4b
-
-#endif /* _SDL_ATARIKEYS_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarimxalloc.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Memory allocation
- *
- * Patrice Mandin
- */
-
-#include <mint/osbind.h>
-
-#include "SDL_stdinc.h"
-
-/*--- Variables ---*/
-
-static int atari_mxalloc_avail = -1;
-
-/*--- Functions ---*/
-
-void *
-Atari_SysMalloc(Uint32 size, Uint16 alloc_type)
-{
- /* Test if Mxalloc() available */
- if (atari_mxalloc_avail < 0) {
- atari_mxalloc_avail =
- ((Sversion() & 0xFF) >= 0x01) | (Sversion() >= 0x1900);
- }
-
- if (atari_mxalloc_avail) {
- return (void *) Mxalloc(size, alloc_type);
- } else {
- return (void *) Malloc(size);
- }
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_atarimxalloc_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Memory allocation
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARI_MXALLOC_H_
-#define _SDL_ATARI_MXALLOC_H_
-
-/*--- Defines ---*/
-
-/* Mxalloc parameters */
-#define MX_STRAM 0
-#define MX_TTRAM 1
-#define MX_PREFSTRAM 2
-#define MX_PREFTTRAM 3
-
-/*--- Functions ---*/
-
-extern void *Atari_SysMalloc(Uint32 size, Uint16 alloc_type);
-
-#endif /* _SDL_ATARI_MXALLOC_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_biosevents.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager, using BIOS
- *
- * Patrice Mandin
- */
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/cookie.h>
-
-#include "../../events/SDL_sysevents.h"
-#include "../../events/SDL_events_c.h"
-
-#include "SDL_atarikeys.h"
-#include "SDL_atarievents_c.h"
-#include "SDL_xbiosevents_c.h"
-#include "SDL_ataridevmouse_c.h"
-
-static unsigned char bios_currentkeyboard[ATARIBIOS_MAXKEYS];
-static unsigned char bios_previouskeyboard[ATARIBIOS_MAXKEYS];
-static SDL_bool use_dev_mouse = SDL_FALSE;
-
-static void UpdateSpecialKeys(int special_keys_state);
-
-void
-AtariBios_InitOSKeymap(_THIS)
-{
- int i, vectors_mask;
- unsigned long dummy;
-
- SDL_memset(bios_currentkeyboard, 0, sizeof(bios_currentkeyboard));
- SDL_memset(bios_previouskeyboard, 0, sizeof(bios_previouskeyboard));
-
- use_dev_mouse = (SDL_AtariDevMouse_Open() != 0) ? SDL_TRUE : SDL_FALSE;
-
- vectors_mask = ATARI_XBIOS_JOYSTICKEVENTS; /* XBIOS joystick events */
- if (!use_dev_mouse) {
- vectors_mask |= ATARI_XBIOS_MOUSEEVENTS; /* XBIOS mouse events */
- }
- /*if (Getcookie(C_MiNT, &dummy) == C_FOUND) {
- vectors_mask = 0;
- } */
-
- SDL_AtariXbios_InstallVectors(vectors_mask);
-}
-
-void
-AtariBios_PumpEvents(_THIS)
-{
- int i;
- SDL_keysym keysym;
-
- /* Update pressed keys */
- SDL_memset(bios_currentkeyboard, 0, ATARIBIOS_MAXKEYS);
-
- while (Bconstat(_CON)) {
- unsigned long key_pressed;
- key_pressed = Bconin(_CON);
- bios_currentkeyboard[(key_pressed >> 16) & (ATARIBIOS_MAXKEYS - 1)] =
- 0xFF;
- }
-
- /* Read special keys */
- UpdateSpecialKeys(Kbshift(-1));
-
- /* Now generate events */
- for (i = 0; i < ATARIBIOS_MAXKEYS; i++) {
- /* Key pressed ? */
- if (bios_currentkeyboard[i] && !bios_previouskeyboard[i])
- SDL_PrivateKeyboard(SDL_PRESSED,
- SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE));
-
- /* Key unpressed ? */
- if (bios_previouskeyboard[i] && !bios_currentkeyboard[i])
- SDL_PrivateKeyboard(SDL_RELEASED,
- SDL_Atari_TranslateKey(i, &keysym,
- SDL_FALSE));
- }
-
- if (use_dev_mouse) {
- SDL_AtariDevMouse_PostMouseEvents(_this, SDL_TRUE);
- } else {
- SDL_AtariXbios_PostMouseEvents(_this, SDL_TRUE);
- }
-
- /* Will be previous table */
- SDL_memcpy(bios_previouskeyboard, bios_currentkeyboard,
- sizeof(bios_previouskeyboard));
-}
-
-static void
-UpdateSpecialKeys(int special_keys_state)
-{
-#define UPDATE_SPECIAL_KEYS(numbit,scancode) \
- { \
- if (special_keys_state & (1<<(numbit))) { \
- bios_currentkeyboard[scancode]=0xFF; \
- } \
- }
-
- UPDATE_SPECIAL_KEYS(K_RSHIFT, SCANCODE_RIGHTSHIFT);
- UPDATE_SPECIAL_KEYS(K_LSHIFT, SCANCODE_LEFTSHIFT);
- UPDATE_SPECIAL_KEYS(K_CTRL, SCANCODE_LEFTCONTROL);
- UPDATE_SPECIAL_KEYS(K_ALT, SCANCODE_LEFTALT);
- UPDATE_SPECIAL_KEYS(K_CAPSLOCK, SCANCODE_CAPSLOCK);
-}
-
-void
-AtariBios_ShutdownEvents(void)
-{
- SDL_AtariXbios_RestoreVectors();
- if (use_dev_mouse) {
- SDL_AtariDevMouse_Close();
- }
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_biosevents_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager, using BIOS
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARI_BIOSEVENTS_H_
-#define _SDL_ATARI_BIOSEVENTS_H_
-
-#include "../SDL_sysvideo.h"
-
-extern void AtariBios_InitOSKeymap(_THIS);
-extern void AtariBios_PumpEvents(_THIS);
-extern void AtariBios_ShutdownEvents(void);
-
-#endif /* _SDL_ATARI_BIOSEVENTS_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_gemdosevents.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager, using Gemdos
- *
- * Patrice Mandin
- */
-
-/* Mint includes */
-#include <mint/osbind.h>
-#include <mint/cookie.h>
-
-#include "../../events/SDL_sysevents.h"
-#include "../../events/SDL_events_c.h"
-
-#include "SDL_atarikeys.h"
-#include "SDL_atarievents_c.h"
-#include "SDL_xbiosevents_c.h"
-#include "SDL_ataridevmouse_c.h"
-
-/* To save state of keyboard */
-
-static unsigned char gemdos_currentkeyboard[ATARIBIOS_MAXKEYS];
-static unsigned char gemdos_previouskeyboard[ATARIBIOS_MAXKEYS];
-static SDL_bool use_dev_mouse = SDL_FALSE;
-
-enum
-{
- DEV_BUSY = 0,
- DEV_READY
-};
-
-static void UpdateSpecialKeys(int special_keys_state);
-
-void
-AtariGemdos_InitOSKeymap(_THIS)
-{
- int i, vectors_mask;
- unsigned long dummy;
-
- SDL_memset(gemdos_currentkeyboard, 0, sizeof(gemdos_currentkeyboard));
- SDL_memset(gemdos_previouskeyboard, 0, sizeof(gemdos_previouskeyboard));
-
- use_dev_mouse = (SDL_AtariDevMouse_Open() != 0) ? SDL_TRUE : SDL_FALSE;
-
- vectors_mask = ATARI_XBIOS_JOYSTICKEVENTS; /* XBIOS joystick events */
- if (!use_dev_mouse) {
- vectors_mask |= ATARI_XBIOS_MOUSEEVENTS; /* XBIOS mouse events */
- }
- /*if (Getcookie(C_MiNT, &dummy) == C_FOUND) {
- vectors_mask = 0;
- } */
-
- SDL_AtariXbios_InstallVectors(vectors_mask);
-}
-
-void
-AtariGemdos_PumpEvents(_THIS)
-{
- int i;
- SDL_keysym keysym;
-
- /* Update pressed keys */
- SDL_memset(gemdos_currentkeyboard, 0, ATARIBIOS_MAXKEYS);
-
- while (Cconis() != DEV_BUSY) {
- unsigned long key_pressed;
- key_pressed = Cnecin();
- gemdos_currentkeyboard[(key_pressed >> 16) & (ATARIBIOS_MAXKEYS - 1)]
- = 0xFF;
- }
-
- /* Read special keys */
- UpdateSpecialKeys(Kbshift(-1));
-
- /* Now generate events */
- for (i = 0; i < ATARIBIOS_MAXKEYS; i++) {
- /* Key pressed ? */
- if (gemdos_currentkeyboard[i] && !gemdos_previouskeyboard[i])
- SDL_PrivateKeyboard(SDL_PRESSED,
- SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE));
-
- /* Key unpressed ? */
- if (gemdos_previouskeyboard[i] && !gemdos_currentkeyboard[i])
- SDL_PrivateKeyboard(SDL_RELEASED,
- SDL_Atari_TranslateKey(i, &keysym,
- SDL_FALSE));
- }
-
- if (use_dev_mouse) {
- SDL_AtariDevMouse_PostMouseEvents(_this, SDL_TRUE);
- } else {
- SDL_AtariXbios_PostMouseEvents(_this, SDL_TRUE);
- }
-
- /* Will be previous table */
- SDL_memcpy(gemdos_previouskeyboard, gemdos_currentkeyboard,
- sizeof(gemdos_previouskeyboard));
-}
-
-static void
-UpdateSpecialKeys(int special_keys_state)
-{
-#define UPDATE_SPECIAL_KEYS(numbit,scancode) \
- { \
- if (special_keys_state & (1<<(numbit))) { \
- gemdos_currentkeyboard[scancode]=0xFF; \
- } \
- }
-
- UPDATE_SPECIAL_KEYS(K_RSHIFT, SCANCODE_RIGHTSHIFT);
- UPDATE_SPECIAL_KEYS(K_LSHIFT, SCANCODE_LEFTSHIFT);
- UPDATE_SPECIAL_KEYS(K_CTRL, SCANCODE_LEFTCONTROL);
- UPDATE_SPECIAL_KEYS(K_ALT, SCANCODE_LEFTALT);
- UPDATE_SPECIAL_KEYS(K_CAPSLOCK, SCANCODE_CAPSLOCK);
-}
-
-void
-AtariGemdos_ShutdownEvents(void)
-{
- SDL_AtariXbios_RestoreVectors();
- if (use_dev_mouse) {
- SDL_AtariDevMouse_Close();
- }
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_gemdosevents_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager, using Gemdos
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARI_GEMDOSEVENTS_H_
-#define _SDL_ATARI_GEMDOSEVENTS_H_
-
-#include "../SDL_sysvideo.h"
-
-extern void AtariGemdos_InitOSKeymap(_THIS);
-extern void AtariGemdos_PumpEvents(_THIS);
-extern void AtariGemdos_ShutdownEvents(void);
-
-#endif /* _SDL_ATARI_GEMDOSEVENTS_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_ikbdevents.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager, using hardware IKBD
- *
- * Patrice Mandin
- */
-
-/* Mint includes */
-#include <mint/osbind.h>
-
-#include "../../events/SDL_sysevents.h"
-#include "../../events/SDL_events_c.h"
-
-#include "SDL_atarikeys.h"
-#include "SDL_atarievents_c.h"
-#include "SDL_ikbdinterrupt_s.h"
-
-#define KEY_PRESSED 0xff
-#define KEY_UNDEFINED 0x80
-#define KEY_RELEASED 0x00
-
-static Uint16 atari_prevmouseb; /* save state of mouse buttons */
-
-void
-AtariIkbd_InitOSKeymap(_THIS)
-{
- SDL_memset(SDL_AtariIkbd_keyboard, KEY_UNDEFINED,
- sizeof(SDL_AtariIkbd_keyboard));
-
- /* Now install our handler */
- SDL_AtariIkbd_mouseb = SDL_AtariIkbd_mousex = SDL_AtariIkbd_mousey = 0;
- atari_prevmouseb = 0;
-
- Supexec(SDL_AtariIkbdInstall);
-}
-
-static int
-atari_GetButton(int button)
-{
- switch (button) {
- case 0:
- return SDL_BUTTON_RIGHT;
- break;
- case 1:
- default:
- return SDL_BUTTON_LEFT;
- break;
- }
-}
-
-void
-AtariIkbd_PumpEvents(_THIS)
-{
- int i;
- SDL_keysym keysym;
- int specialkeys;
-
- /*--- Send keyboard events ---*/
-
- /* Now generate events */
- for (i = 0; i < ATARIBIOS_MAXKEYS; i++) {
- /* Key pressed ? */
- if (SDL_AtariIkbd_keyboard[i] == KEY_PRESSED) {
- SDL_PrivateKeyboard(SDL_PRESSED,
- SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE));
- SDL_AtariIkbd_keyboard[i] = KEY_UNDEFINED;
- }
-
- /* Key released ? */
- if (SDL_AtariIkbd_keyboard[i] == KEY_RELEASED) {
- SDL_PrivateKeyboard(SDL_RELEASED,
- SDL_Atari_TranslateKey(i, &keysym,
- SDL_FALSE));
- SDL_AtariIkbd_keyboard[i] = KEY_UNDEFINED;
- }
- }
-
- /*--- Send mouse events ---*/
-
- /* Mouse motion ? */
- if (SDL_AtariIkbd_mousex || SDL_AtariIkbd_mousey) {
- SDL_PrivateMouseMotion(0, 1, SDL_AtariIkbd_mousex,
- SDL_AtariIkbd_mousey);
- SDL_AtariIkbd_mousex = SDL_AtariIkbd_mousey = 0;
- }
-
- /* Mouse button ? */
- if (SDL_AtariIkbd_mouseb != atari_prevmouseb) {
- for (i = 0; i < 2; i++) {
- int curbutton, prevbutton;
-
- curbutton = SDL_AtariIkbd_mouseb & (1 << i);
- prevbutton = atari_prevmouseb & (1 << i);
-
- if (curbutton && !prevbutton) {
- SDL_PrivateMouseButton(SDL_PRESSED, atari_GetButton(i), 0, 0);
- }
- if (!curbutton && prevbutton) {
- SDL_PrivateMouseButton(SDL_RELEASED,
- atari_GetButton(i), 0, 0);
- }
- }
- atari_prevmouseb = SDL_AtariIkbd_mouseb;
- }
-}
-
-void
-AtariIkbd_ShutdownEvents(void)
-{
- Supexec(SDL_AtariIkbdUninstall);
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_ikbdevents_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Atari keyboard events manager, using hardware IKBD
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARI_IKBDEVENTS_H_
-#define _SDL_ATARI_IKBDEVENTS_H_
-
-#include "../SDL_sysvideo.h"
-
-extern void AtariIkbd_InitOSKeymap(_THIS);
-extern void AtariIkbd_PumpEvents(_THIS);
-extern void AtariIkbd_ShutdownEvents(void);
-
-#endif /* _SDL_ATARI_IKBDEVENTS_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_ikbdinterrupt.S Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/*
- * 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@-
-
- | Disable 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
-
- | Set mouse relative mode
-
- moveb #8,0xfffffc02:w
-
- | Reenable interrupts
-
- 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@-
-
- | Disable interrupts
-
- movew #0x2700,sr
-
- | Restore previous MFP registers
-
- lea 0xfffffa00:w,a0
-
- bclr #6,a0@(0x09)
- tstb ikbd_ierb
- beqs ikbd_restoreierb
- bset #6,a0@(0x09)
-ikbd_restoreierb:
-
- bclr #6,a0@(0x15)
- tstb ikbd_imrb
- beqs ikbd_restoreimrb
- bset #6,a0@(0x15)
-ikbd_restoreimrb:
-
- movel old_ikbd,0x118:w
-
- | Clear keyboard buffer
-
- lea 0xfffffc00:w,a0
-ikbd_videbuffer:
- btst #0,a0@
- beqs ikbd_finbuffer
- tstb a0@(0x02)
- bras ikbd_videbuffer
-ikbd_finbuffer:
-
- | Reenable interrupts
-
- movew #0x2300,sr
-
- movel sp@+,a0
- rts
-
- .bss
-
- .even
- .comm ikbd_ierb,1
- .comm ikbd_imrb,1
-
-/*--- Our custom IKBD vector ---*/
-
- .text
- .even
- .ascii "XBRA"
- .ascii "LSDL"
- .comm old_ikbd,4*1
-ikbd:
- | Check if source is IKBD or MIDI
- btst #0,0xfffffc00.w
- beqs ikbd_oldmidi
-
- moveml d0-d1/a0,sp@-
- moveb 0xfffffc02:w,d0
-
- | Joystick packet ?
-
- cmpb #0xff,d0
- beqs ikbd_yes_joystick
-
- | Mouse packet ?
-
- cmpb #0xf8,d0
- bmis ikbd_no_mouse
- cmpb #0xfc,d0
- bpls ikbd_no_mouse
-
- | Mouse packet, byte #1
-
-ikbd_yes_mouse:
- andw #3,d0
- movew d0,_SDL_AtariIkbd_mouseb
-
- movel #ikbd_mousex,0x118:w
- bras ikbd_endit_stack
-
- | Joystick packet, byte #1
-
-ikbd_yes_joystick:
- movel #ikbd_joystick,0x118:w
- bras ikbd_endit_stack
-
- | Keyboard press/release
-
-ikbd_no_mouse:
- moveb d0,d1
- lea _SDL_AtariIkbd_keyboard,a0
- andw #0x7f,d1
- tas d0
- spl a0@(0,d1:w)
-
- | End of interrupt
-
-ikbd_endit_stack:
- moveml sp@+,d0-d1/a0
-ikbd_endit:
- bclr #6,0xfffffa11:w
- rte
-
- | Call old MIDI interrupt
-
-ikbd_oldmidi:
- movel old_ikbd,sp@-
- rts
-
- | Mouse packet, byte #2
-
-ikbd_mousex:
-
- | Check if source is IKBD or MIDI
- btst #0,0xfffffc00.w
- beqs ikbd_oldmidi
-
- movew d0,sp@-
-
- moveb 0xfffffc02:w,d0
- extw d0
- addw d0,_SDL_AtariIkbd_mousex
-
- movew sp@+,d0
-
- movel #ikbd_mousey,0x118:w
- bras ikbd_endit
-
- | Mouse packet, byte #3
-
-ikbd_mousey:
-
- | Check if source is IKBD or MIDI
- btst #0,0xfffffc00.w
- beqs ikbd_oldmidi
-
- movew d0,sp@-
-
- moveb 0xfffffc02:w,d0
- extw d0
- addw d0,_SDL_AtariIkbd_mousey
-
- movew sp@+,d0
-
- movel #ikbd,0x118:w
- bras ikbd_endit
-
- | Joystick packet, byte #2
-
-ikbd_joystick:
-
- | Check if source is IKBD or MIDI
- btst #0,0xfffffc00.w
- beqs ikbd_oldmidi
-
- moveb 0xfffffc02:w,_SDL_AtariIkbd_joystick+1
-
- movel #ikbd,0x118:w
- bras ikbd_endit
-
- .data
-
- .even
-_SDL_AtariIkbd_enabled:
- .word 0
-
- .bss
-
- .even
- .comm _SDL_AtariIkbd_keyboard,128
- .comm _SDL_AtariIkbd_mousex,2
- .comm _SDL_AtariIkbd_mousey,2
- .comm _SDL_AtariIkbd_mouseb,2
- .comm _SDL_AtariIkbd_joystick,2
--- a/src/video/ataricommon/SDL_ikbdinterrupt_s.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Mouse vector
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_IKBDINTERRUPT_S_H_
-#define _SDL_IKBDINTERRUPT_S_H_
-
-#include <mint/osbind.h>
-
-#include "SDL_stdinc.h"
-
-/* Const */
-
-#define IKBD_JOY_UP (1<<0)
-#define IKBD_JOY_DOWN (1<<1)
-#define IKBD_JOY_LEFT (1<<2)
-#define IKBD_JOY_RIGHT (1<<3)
-#define IKBD_JOY_FIRE (1<<7)
-
-/* Variables */
-
-extern volatile Uint8 SDL_AtariIkbd_keyboard[128]; /* Keyboard table */
-extern volatile Uint16 SDL_AtariIkbd_mouseb; /* Mouse on port 0, buttons */
-extern volatile Sint16 SDL_AtariIkbd_mousex; /* Mouse X relative motion */
-extern volatile Sint16 SDL_AtariIkbd_mousey; /* Mouse Y relative motion */
-extern volatile Uint16 SDL_AtariIkbd_joystick; /* Joystick on port 1 */
-
-/* For joystick driver to know if this is usable */
-extern Uint16 SDL_AtariIkbd_enabled;
-
-/* Functions */
-
-extern void SDL_AtariIkbdInstall(void);
-extern void SDL_AtariIkbdUninstall(void);
-
-#endif /* _SDL_IKBDINTERRUPT_S_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_xbiosevents.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * XBIOS mouse & joystick vectors
- *
- * Patrice Mandin
- */
-
-#include <mint/osbind.h>
-
-#include "../../events/SDL_events_c.h"
-#include "SDL_xbiosevents_c.h"
-#include "SDL_xbiosinterrupt_s.h"
-
-/* Variables */
-
-int SDL_AtariXbios_enabled = 0;
-
-/* Local variables */
-
-static _KBDVECS *kbdvecs; /* Pointer to access system vectors */
-static Uint16 atari_prevmouseb; /* buttons */
-
-/* Functions */
-
-void
-SDL_AtariXbios_InstallVectors(int vectors_mask)
-{
- void *oldpile;
-
- /* Clear variables */
- SDL_AtariXbios_mouselock =
- SDL_AtariXbios_mouseb =
- SDL_AtariXbios_mousex =
- SDL_AtariXbios_mousey =
- SDL_AtariXbios_joystick = atari_prevmouseb = 0;
-
- if (vectors_mask == 0) {
- SDL_AtariXbios_enabled = 0;
- return;
- }
-
- /* Read IKBD vectors base */
- kbdvecs = Kbdvbase();
-
- /* Go to supervisor mode */
- oldpile = (void *) Super(0);
-
- /* Install our vectors */
- SDL_AtariXbios_Install(kbdvecs,
- (vectors_mask & ATARI_XBIOS_MOUSEEVENTS) ?
- SDL_AtariXbios_MouseVector : NULL,
- (vectors_mask & ATARI_XBIOS_JOYSTICKEVENTS) ?
- SDL_AtariXbios_JoystickVector : NULL);
-
- /* Back to user mode */
- Super(oldpile);
-
- SDL_AtariXbios_enabled = 1;
-}
-
-void
-SDL_AtariXbios_RestoreVectors(void)
-{
- void *oldpile;
-
- if (SDL_AtariXbios_enabled == 0) {
- return;
- }
-
- /* Read IKBD vectors base */
- kbdvecs = Kbdvbase();
-
- /* Go to supervisor mode */
- oldpile = (void *) Super(NULL);
-
- /* Reinstall system vector */
- SDL_AtariXbios_Restore(kbdvecs);
-
- /* 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;
- }
-}
-
-void
-SDL_AtariXbios_PostMouseEvents(_THIS, SDL_bool buttonEvents)
-{
- if (SDL_AtariXbios_enabled == 0) {
- return;
- }
-
- /* 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 ? */
- if (buttonEvents && (SDL_AtariXbios_mouseb != atari_prevmouseb)) {
- int i;
-
- for (i = 0; i < 2; i++) {
- int curbutton, prevbutton;
-
- curbutton = SDL_AtariXbios_mouseb & (1 << i);
- prevbutton = atari_prevmouseb & (1 << i);
-
- if (curbutton && !prevbutton) {
- SDL_PrivateMouseButton(SDL_PRESSED, atari_GetButton(i), 0, 0);
- }
- if (!curbutton && prevbutton) {
- SDL_PrivateMouseButton(SDL_RELEASED,
- atari_GetButton(i), 0, 0);
- }
- }
- atari_prevmouseb = SDL_AtariXbios_mouseb;
- }
-}
-
-void
-SDL_AtariXbios_LockMousePosition(SDL_bool lockPosition)
-{
- SDL_AtariXbios_mouselock = lockPosition;
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_xbiosevents_c.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Xbios mouse & joystick vectors
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_ATARI_XBIOSEVENTS_H_
-#define _SDL_ATARI_XBIOSEVENTS_H_
-
-#include "../SDL_sysvideo.h"
-
-#define ATARI_XBIOS_MOUSEEVENTS (1<<0)
-#define ATARI_XBIOS_JOYSTICKEVENTS (1<<1)
-
-extern int SDL_AtariXbios_enabled;
-
-extern void SDL_AtariXbios_InstallVectors(int vectors_mask);
-extern void SDL_AtariXbios_RestoreVectors(void);
-extern void SDL_AtariXbios_PostMouseEvents(_THIS, SDL_bool buttonEvents);
-extern void SDL_AtariXbios_LockMousePosition(SDL_bool lockPosition);
-
-#endif /* _SDL_XBIOSEVENTS_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_xbiosinterrupt.S Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/*
- * XBIOS mouse & joystick vectors
- *
- * Patrice Mandin
- */
-
- .text
-
- .globl _SDL_AtariXbios_Install
- .globl _SDL_AtariXbios_Restore
- .globl _SDL_AtariXbios_MouseVector
- .globl _SDL_AtariXbios_JoystickVector
-
- .globl _SDL_AtariXbios_mouselock
- .globl _SDL_AtariXbios_mouseb
- .globl _SDL_AtariXbios_mousex
- .globl _SDL_AtariXbios_mousey
- .globl _SDL_AtariXbios_joystick
-
-/*--- Vector installer ---*/
-
-_SDL_AtariXbios_Install:
- movel sp@(4),a0
-
- /* Stop interrupts */
-
- movew #0x2700,sr
-
- /* Save old mouse vector, set our routine */
-
- clrl oldmousevector
- movel sp@(8),d0
- beqs no_new_mouse_vector
- movel a0@(16),oldmousevector
- movel d0,a0@(16)
-no_new_mouse_vector:
-
- /* Save old joystick vector, set our routine */
-
- clrl oldjoystickvector
- movel sp@(12),d0
- beqs no_new_joystick_vector
- movel a0@(24),oldjoystickvector
- movel d0,a0@(24)
-no_new_joystick_vector:
-
- /* Restart interrupts */
-
- movew #0x2300,sr
-
- rts
-
-/*--- Vector restorer ---*/
-
-_SDL_AtariXbios_Restore:
- movel sp@(4),a0
-
- /* Stop interrupts */
-
- movew #0x2700,sr
-
- /* Restore mouse vector */
-
- movel oldmousevector,d0
- beqs no_restore_mouse
- movel d0,a0@(16)
-no_restore_mouse:
-
- /* Restore joystick vector */
-
- movel oldjoystickvector,d0
- beqs no_restore_joystick
- movel d0,a0@(24)
-no_restore_joystick:
-
- /* Restart interrupts */
-
- movew #0x2300,sr
-
- rts
-
-/*--- Our mouse vector ---*/
-
- .text
- .even
- .ascii "XBRA"
- .ascii "LSDL"
- .comm oldmousevector,4*1
-_SDL_AtariXbios_MouseVector:
- movel d0,sp@-
-
- /* Mouse buttons */
- moveb (a0),d0
- andw #3,d0
- movew d0,_SDL_AtariXbios_mouseb
-
- /* X movement */
- moveb a0@(1),d0
- extw d0
- addw d0,_SDL_AtariXbios_mousex
-
- /* Y movement */
- moveb a0@(2),d0
- extw d0
- addw d0,_SDL_AtariXbios_mousey
-
- /* Lock mouse position ? */
- tstw _SDL_AtariXbios_mouselock
- beq.s no_mouse_lock
- clrb a0@(1)
- clrb a0@(2)
-no_mouse_lock:
-
- /* Jump through old vector */
- movel sp@+,d0
-
- movel oldmousevector,sp@-
- rts
-
- .data
- .even
- .comm _SDL_AtariXbios_mouselock,2*1
- .comm _SDL_AtariXbios_mousex,2*1
- .comm _SDL_AtariXbios_mousey,2*1
- .comm _SDL_AtariXbios_mouseb,2*1
-
-/*--- Our joystick vector ---*/
-
- .text
- .even
- .ascii "XBRA"
- .ascii "LSDL"
- .comm oldjoystickvector,4*1
-_SDL_AtariXbios_JoystickVector:
- movel d0,sp@-
-
- /* New joystick state */
- moveb a0@(2),d0
- andw #0x8f,d0
- movew d0,_SDL_AtariXbios_joystick
-
- /* Jump through old vector */
- movel sp@+,d0
-
- movel oldjoystickvector,sp@-
- rts
-
- .data
- .even
- .comm _SDL_AtariXbios_joystick,2*1
--- a/src/video/ataricommon/SDL_xbiosinterrupt_s.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Mouse vector
- *
- * Patrice Mandin
- */
-
-#ifndef _SDL_XBIOSINTERRUPT_S_H_
-#define _SDL_XBIOSINTERRUPT_S_H_
-
-#include <mint/osbind.h>
-
-#include "SDL_stdinc.h"
-
-/* Variables */
-
-extern volatile Uint16 SDL_AtariXbios_mouselock; /* mouse lock position */
-extern volatile Uint16 SDL_AtariXbios_mouseb; /* buttons */
-extern volatile Sint16 SDL_AtariXbios_mousex; /* X relative motion */
-extern volatile Sint16 SDL_AtariXbios_mousey; /* Y relative motion */
-extern volatile Uint16 SDL_AtariXbios_joystick; /* Joystick */
-
-/* Functions */
-
-extern void SDL_AtariXbios_Install(_KBDVECS * kbdvecs, void *newmousevector,
- void *newjoystickvector);
-extern void SDL_AtariXbios_Restore(_KBDVECS * kbdvecs);
-extern void SDL_AtariXbios_MouseVector(void *buf);
-extern void SDL_AtariXbios_JoystickVector(void *buf);
-
-#endif /* _SDL_XBIOSINTERRUPT_S_H_ */
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemevents.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,383 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * GEM SDL video driver implementation
- * inspired from the Dummy SDL driver
- *
- * Patrice Mandin
- * and work from
- * Olivier Landemarre, Johan Klockars, Xavier Joubert, Claude Attard
- */
-
-#include <gem.h>
-
-#include "SDL_gemvideo.h"
-#include "SDL_gemevents.h"
-#include "../../events/SDL_events_c.h"
-#include "../ataricommon/SDL_atarikeys.h" /* for keyboard scancodes */
-#include "../ataricommon/SDL_atarievents_c.h"
-#include "../ataricommon/SDL_xbiosevents_c.h"
-#include "../ataricommon/SDL_ataridevmouse_c.h"
-
-/* Variables */
-
-static unsigned char gem_currentkeyboard[ATARIBIOS_MAXKEYS];
-static unsigned char gem_previouskeyboard[ATARIBIOS_MAXKEYS];
-
-/* Functions prototypes */
-
-static int do_messages(_THIS, short *message);
-static void do_keyboard(short kc, short ks);
-static void do_mouse(_THIS, short mx, short my, short mb, short ks);
-
-/* Functions */
-
-void
-GEM_PumpEvents(_THIS)
-{
-#if 0
- short mousex, mousey, mouseb, dummy;
- short kstate, prevkc, prevks;
- int i;
- SDL_keysym keysym;
-
- SDL_memset(gem_currentkeyboard, 0, sizeof(gem_currentkeyboard));
- prevkc = prevks = 0;
-
- for (;;) {
- int quit, resultat, event_mask, mouse_event;
- short buffer[8], kc;
- short x2, y2, w2, h2;
-
- quit = mouse_event = x2 = y2 = w2 = h2 = 0;
-
- event_mask = MU_MESAG | MU_TIMER | MU_KEYBD;
- if (!GEM_fullscreen && (GEM_handle >= 0)) {
- wind_get(GEM_handle, WF_WORKXYWH, &x2, &y2, &w2, &h2);
- event_mask |= MU_M1;
- mouse_event = ((SDL_GetAppState() & SDL_APPMOUSEFOCUS) ==
- SDL_APPMOUSEFOCUS) ? MO_LEAVE : MO_ENTER;
- }
-
- resultat = evnt_multi(event_mask,
- 0, 0, 0,
- mouse_event, x2, y2, w2, h2,
- 0, 0, 0, 0, 0,
- buffer,
- 10,
- &dummy, &dummy, &dummy, &kstate, &kc, &dummy);
-
- /* Message event ? */
- if (resultat & MU_MESAG)
- quit = do_messages(this, buffer);
-
- /* Keyboard event ? */
- if (resultat & MU_KEYBD) {
- if ((prevkc != kc) || (prevks != kstate)) {
- do_keyboard(kc, kstate);
- } else {
- /* Avoid looping, if repeating same key */
- break;
- }
- }
-
- /* Mouse entering/leaving window */
- if (resultat & MU_M1) {
- if (this->input_grab == SDL_GRAB_OFF) {
- /* Switch mouse focus state */
- SDL_PrivateAppActive((mouse_event == MO_ENTER),
- SDL_APPMOUSEFOCUS);
- }
- GEM_CheckMouseMode(this);
- }
-
- /* Timer event ? */
- if ((resultat & MU_TIMER) || quit)
- break;
- }
-
- /* Update mouse */
- graf_mkstate(&mousex, &mousey, &mouseb, &kstate);
- do_mouse(this, mousex, mousey, mouseb, kstate);
-
- /* Now generate keyboard events */
- for (i = 0; i < ATARIBIOS_MAXKEYS; i++) {
- /* Key pressed ? */
- if (gem_currentkeyboard[i] && !gem_previouskeyboard[i])
- SDL_PrivateKeyboard(SDL_PRESSED,
- SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE));
-
- /* Key unpressed ? */
- if (gem_previouskeyboard[i] && !gem_currentkeyboard[i])
- SDL_PrivateKeyboard(SDL_RELEASED,
- SDL_Atari_TranslateKey(i, &keysym,
- SDL_FALSE));
- }
-
- SDL_memcpy(gem_previouskeyboard, gem_currentkeyboard,
- sizeof(gem_previouskeyboard));
-
- /* Refresh window name ? */
- if (GEM_refresh_name) {
- const char *window_name = (SDL_GetAppState() & SDL_APPACTIVE) ?
- GEM_title_name : GEM_icon_name;
- if (window_name) {
- wind_set(GEM_handle, WF_NAME,
- (short) (((unsigned long) window_name) >> 16),
- (short) (((unsigned long) window_name) & 0xffff), 0, 0);
- }
- GEM_refresh_name = SDL_FALSE;
- }
-#endif
-}
-
-static int
-do_messages(_THIS, short *message)
-{
-#if 0
- int quit, posted, check_mouse_mode;
- short x2, y2, w2, h2;
-
- quit = check_mouse_mode = 0;
- switch (message[0]) {
- case WM_CLOSED:
- case AP_TERM:
- posted = SDL_PrivateQuit();
- quit = 1;
- break;
- case WM_MOVED:
- wind_set(message[3], WF_CURRXYWH, message[4], message[5],
- message[6], message[7]);
- break;
- case WM_TOPPED:
- wind_set(message[3], WF_TOP, message[4], 0, 0, 0);
- /* Continue with TOP event processing */
- case WM_ONTOP:
- SDL_PrivateAppActive(1, SDL_APPINPUTFOCUS);
- if (VDI_setpalette) {
- VDI_setpalette(this, VDI_curpalette);
- }
- check_mouse_mode = 1;
- break;
- case WM_REDRAW:
- if (!GEM_lock_redraw) {
- GEM_wind_redraw(this, message[3], &message[4]);
- }
- break;
- case WM_ICONIFY:
- case WM_ALLICONIFY:
- wind_set(message[3], WF_ICONIFY, message[4], message[5],
- message[6], message[7]);
- /* If we're active, make ourselves inactive */
- if (SDL_GetAppState() & SDL_APPACTIVE) {
- /* Send an internal deactivate event */
- SDL_PrivateAppActive(0, SDL_APPACTIVE);
- }
- /* Update window title */
- if (GEM_refresh_name && GEM_icon_name) {
- wind_set(GEM_handle, WF_NAME,
- (short) (((unsigned long) GEM_icon_name) >> 16),
- (short) (((unsigned long) GEM_icon_name) & 0xffff),
- 0, 0);
- GEM_refresh_name = SDL_FALSE;
- }
- check_mouse_mode = 1;
- break;
- case WM_UNICONIFY:
- wind_set(message[3], WF_UNICONIFY, message[4], message[5],
- message[6], message[7]);
- /* If we're not active, make ourselves active */
- if (!(SDL_GetAppState() & SDL_APPACTIVE)) {
- /* Send an internal activate event */
- SDL_PrivateAppActive(1, SDL_APPACTIVE);
- }
- if (GEM_refresh_name && GEM_title_name) {
- wind_set(GEM_handle, WF_NAME,
- (short) (((unsigned long) GEM_title_name) >> 16),
- (short) (((unsigned long) GEM_title_name) & 0xffff),
- 0, 0);
- GEM_refresh_name = SDL_FALSE;
- }
- check_mouse_mode = 1;
- break;
- case WM_SIZED:
- wind_set(message[3], WF_CURRXYWH, message[4], message[5],
- message[6], message[7]);
- wind_get(message[3], WF_WORKXYWH, &x2, &y2, &w2, &h2);
- GEM_win_fulled = SDL_FALSE; /* Cancel maximized flag */
- GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */
- SDL_PrivateResize(w2, h2);
- break;
- case WM_FULLED:
- {
- short x, y, w, h;
-
- if (GEM_win_fulled) {
- wind_get(message[3], WF_PREVXYWH, &x, &y, &w, &h);
- GEM_win_fulled = SDL_FALSE;
- } else {
- x = GEM_desk_x;
- y = GEM_desk_y;
- w = GEM_desk_w;
- h = GEM_desk_h;
- GEM_win_fulled = SDL_TRUE;
- }
- wind_set(message[3], WF_CURRXYWH, x, y, w, h);
- wind_get(message[3], WF_WORKXYWH, &x2, &y2, &w2, &h2);
- GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */
- SDL_PrivateResize(w2, h2);
- }
- break;
- case WM_BOTTOMED:
- wind_set(message[3], WF_BOTTOM, 0, 0, 0, 0);
- /* Continue with BOTTOM event processing */
- case WM_UNTOPPED:
- SDL_PrivateAppActive(0, SDL_APPINPUTFOCUS);
- if (VDI_setpalette) {
- VDI_setpalette(this, VDI_oldpalette);
- }
- check_mouse_mode = 1;
- break;
- }
-
- if (check_mouse_mode) {
- GEM_CheckMouseMode(this);
- }
-
- return quit;
-#else
- return 0;
-#endif
-}
-
-static void
-do_keyboard(short kc, short ks)
-{
-#if 0
- int scancode, asciicode;
-
- if (kc) {
- scancode = (kc >> 8) & (ATARIBIOS_MAXKEYS - 1);
- gem_currentkeyboard[scancode] = 0xFF;
- }
-
- /* Read special keys */
- if (ks & K_RSHIFT)
- gem_currentkeyboard[SCANCODE_RIGHTSHIFT] = 0xFF;
- if (ks & K_LSHIFT)
- gem_currentkeyboard[SCANCODE_LEFTSHIFT] = 0xFF;
- if (ks & K_CTRL)
- gem_currentkeyboard[SCANCODE_LEFTCONTROL] = 0xFF;
- if (ks & K_ALT)
- gem_currentkeyboard[SCANCODE_LEFTALT] = 0xFF;
-#endif
-}
-
-static void
-do_mouse(_THIS, short mx, short my, short mb, short ks)
-{
-#if 0
- static short prevmousex = 0, prevmousey = 0, prevmouseb = 0;
- short x2, y2, w2, h2;
-
- /* Don't return mouse events if out of window */
- if ((SDL_GetAppState() & SDL_APPMOUSEFOCUS) == 0) {
- return;
- }
-
- /* Retrieve window coords, and generate mouse events accordingly */
- x2 = y2 = 0;
- w2 = VDI_w;
- h2 = VDI_h;
- if ((!GEM_fullscreen) && (GEM_handle >= 0)) {
- wind_get(GEM_handle, WF_WORKXYWH, &x2, &y2, &w2, &h2);
-
- /* Do not generate mouse button event if out of window working area */
- if ((mx < x2) || (mx >= x2 + w2) || (my < y2) || (my >= y2 + h2)) {
- mb = prevmouseb;
- }
- }
-
- /* Mouse motion ? */
- if (GEM_mouse_relative) {
- if (GEM_usedevmouse) {
- SDL_AtariDevMouse_PostMouseEvents(this, SDL_FALSE);
- } else {
- SDL_AtariXbios_PostMouseEvents(this, SDL_FALSE);
- }
- } else {
- if ((prevmousex != mx) || (prevmousey != my)) {
- int posx, posy;
-
- /* Give mouse position relative to window position */
- posx = mx - x2;
- if (posx < 0)
- posx = 0;
- if (posx > w2)
- posx = w2 - 1;
- posy = my - y2;
- if (posy < 0)
- posy = 0;
- if (posy > h2)
- posy = h2 - 1;
-
- SDL_PrivateMouseMotion(0, 0, posx, posy);
- }
- prevmousex = mx;
- prevmousey = my;
- }
-
- /* Mouse button ? */
- if (prevmouseb != mb) {
- int i;
-
- for (i = 0; i < 2; i++) {
- int curbutton, prevbutton;
-
- curbutton = mb & (1 << i);
- prevbutton = prevmouseb & (1 << i);
-
- if (curbutton && !prevbutton) {
- SDL_PrivateMouseButton(SDL_PRESSED, i + 1, 0, 0);
- }
- if (!curbutton && prevbutton) {
- SDL_PrivateMouseButton(SDL_RELEASED, i + 1, 0, 0);
- }
- }
- prevmouseb = mb;
- }
-
- /* Read special keys */
- if (ks & K_RSHIFT)
- gem_currentkeyboard[SCANCODE_RIGHTSHIFT] = 0xFF;
- if (ks & K_LSHIFT)
- gem_currentkeyboard[SCANCODE_LEFTSHIFT] = 0xFF;
- if (ks & K_CTRL)
- gem_currentkeyboard[SCANCODE_LEFTCONTROL] = 0xFF;
- if (ks & K_ALT)
- gem_currentkeyboard[SCANCODE_LEFTALT] = 0xFF;
-#endif
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemevents.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_gemevents_h
-#define _SDL_gemevents_h
-
-extern void GEM_PumpEvents(_THIS);
-
-#endif /* _SDL_gemevents_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemkeyboard.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#include "SDL_gemvideo.h"
-
-#include "../../events/SDL_keyboard_c.h"
-
-void
-GEM_InitKeyboard(_THIS)
-{
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
- SDL_Keyboard keyboard;
-
- SDL_zero(keyboard);
- data->keyboard = SDL_AddKeyboard(&keyboard, -1);
-}
-
-void
-GEM_QuitKeyboard(_THIS)
-{
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
-
- SDL_DelKeyboard(data->keyboard);
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemkeyboard.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_gemkeyboard_h
-#define _SDL_gemkeyboard_h
-
-extern void GEM_InitKeyboard(_THIS);
-extern void GEM_QuitKeyboard(_THIS);
-
-#endif /* _SDL_gemkeyboard_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemmodes.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#include "SDL_gemvideo.h"
-
-
-void
-GEM_InitModes(_THIS)
-{
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
- Uint32 Rmask, Gmask, Bmask, Amask;
- SDL_VideoDisplay display;
- SDL_DisplayData *displaydata;
- SDL_DisplayMode mode;
- int bpp;
-
- /* read vdi bpp, rmask, gmask, bmask, amask */
-
- mode.format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask);
- mode.w = 0 /* vdi width */ ;
- mode.h = 0 /* vdi height */ ;
- mode.refresh_rate = 0;
- mode.driverdata = NULL;
-
- displaydata = (SDL_DisplayData *) SDL_malloc(sizeof(*displaydata));
- if (!displaydata) {
- return;
- }
- /* fill display data */
-
- SDL_zero(display);
- display.desktop_mode = mode;
- display.current_mode = mode;
- display.driverdata = displaydata;
- SDL_AddVideoDisplay(&display);
-}
-
-void
-GEM_GetDisplayModes(_THIS)
-{
- SDL_DisplayData *data = (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
- SDL_DisplayMode mode;
- //SDL_AddDisplayMode(_this->current_display, &mode);
-}
-
-int
-GEM_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
-{
- //SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata;
- return -1;
-}
-
-void
-GEM_QuitModes(_THIS)
-{
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemmodes.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_gemmodes_h
-#define _SDL_gemmodes_h
-
-typedef struct
-{
- int width;
- int height;
- int depth;
-} SDL_DisplayData;
-
-extern void GEM_InitModes(_THIS);
-extern void GEM_GetDisplayModes(_THIS);
-extern int GEM_SetDisplayMode(_THIS, SDL_DisplayMode * mode);
-extern void GEM_QuitModes(_THIS);
-
-#endif /* _SDL_gemmodes_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemmouse.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#include "SDL_gemvideo.h"
-
-#include "../../events/SDL_mouse_c.h"
-
-void
-GEM_InitMouse(_THIS)
-{
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
- SDL_Mouse mouse;
-
- SDL_zero(mouse);
- data->mouse = SDL_AddMouse(&mouse, -1);
-}
-
-void
-GEM_QuitMouse(_THIS)
-{
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
-
- SDL_DelMouse(data->mouse);
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemmouse.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_gemmouse_h
-#define _SDL_gemmouse_h
-
-extern void GEM_InitMouse(_THIS);
-extern void GEM_QuitMouse(_THIS);
-
-#endif /* _SDL_gemmouse_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemvideo.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- GEM video driver
-
- Patrice Mandin
- and work from
- Olivier Landemarre, Johan Klockars, Xavier Joubert, Claude Attard
-*/
-
-/* Mint includes */
-#include <gem.h>
-#include <gemx.h>
-#include <mint/osbind.h>
-#include <mint/cookie.h>
-
-#include "SDL_video.h"
-#include "SDL_mouse.h"
-#include "../SDL_sysvideo.h"
-#include "../SDL_pixels_c.h"
-
-#include "SDL_gemvideo.h"
-
-/* Initialization/Query functions */
-static int GEM_VideoInit(_THIS);
-static void GEM_VideoQuit(_THIS);
-
-static void GEM_GL_SwapBuffers(_THIS);
-
-
-static int
-GEM_Available(void)
-{
- /* Test if AES available */
- if (appl_init() == -1)
- return 0;
-
- appl_exit();
- return 1;
-}
-
-static void
-GEM_DeleteDevice(SDL_VideoDevice * device)
-{
- SDL_VideoData *data = (SDL_VideoData *) device->driverdata;
-
- SDL_free(device->driverdata);
- SDL_free(device);
-}
-
-static SDL_VideoDevice *
-GEM_CreateDevice(int devindex)
-{
- SDL_VideoDevice *device;
- SDL_VideoData *data;
-
- /* Initialize all variables that we clean on shutdown */
- device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
- if (device) {
- data = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
- }
- if (!device || !data) {
- SDL_OutOfMemory();
- if (device) {
- SDL_free(device);
- }
- return NULL;
- }
- device->driverdata = data;
-
- /* Set the function pointers */
- device->VideoInit = GEM_VideoInit;
- device->VideoQuit = GEM_VideoQuit;
- device->GetDisplayModes = GEM_GetDisplayModes;
- device->SetDisplayMode = GEM_SetDisplayMode;
- device->PumpEvents = GEM_PumpEvents;
-
- device->CreateWindow = GEM_CreateWindow;
- device->CreateWindowFrom = GEM_CreateWindowFrom;
- device->SetWindowTitle = GEM_SetWindowTitle;
- device->SetWindowPosition = GEM_SetWindowPosition;
- device->SetWindowSize = GEM_SetWindowSize;
- device->ShowWindow = GEM_ShowWindow;
- device->HideWindow = GEM_HideWindow;
- device->RaiseWindow = GEM_RaiseWindow;
- device->MaximizeWindow = GEM_MaximizeWindow;
- device->MinimizeWindow = GEM_MinimizeWindow;
- device->RestoreWindow = GEM_RestoreWindow;
- device->SetWindowGrab = GEM_SetWindowGrab;
- device->DestroyWindow = GEM_DestroyWindow;
- device->GetWindowWMInfo = GEM_GetWindowWMInfo;
-
-#if SDL_VIDEO_OPENGL
- device->GL_LoadLibrary = SDL_AtariGL_LoadLibrary;
- device->GL_GetProcAddress = SDL_AtariGL_GetProcAddress;
- device->GL_CreateContext = SDL_AtariGL_CreateContext;
- device->GL_MakeCurrent = SDL_AtariGL_MakeCurrent;
- device->GL_SetSwapInterval = SDL_AtariGL_SetSwapInterval;
- device->GL_GetSwapInterval = SDL_AtariGL_GetSwapInterval;
- device->GL_SwapWindow = GEM_GL_SwapWindow;
- device->GL_DeleteContext = SDL_AtariGL_DeleteContext;
-#endif
-
- device->free = GEM_DeleteDevice;
-
- return device;
-}
-
-VideoBootStrap GEM_bootstrap = {
- "gem", "Atari GEM video driver",
- GEM_Available, GEM_CreateDevice
-};
-
-int
-GEM_VideoInit(_THIS)
-{
- int i;
- short work_in[12], work_out[272], dummy;
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
-
- /* Open AES (Application Environment Services) */
- if (appl_init() == -1) {
- fprintf(stderr, "Can not open AES\n");
- return 1;
- }
-
- /* Read version and features */
- if (aes_global[0] >= 0x0410) {
- short ap_gout[4];
-
- data->wfeatures = 0;
- if (appl_getinfo(AES_WINDOW, &ap_gout[0], &ap_gout[1], &ap_gout[2],
- &ap_gout[3]) == 0) {
- data->wfeatures = ap_gout[0];
- }
- }
-
- /* Ask VDI physical workstation handle opened by AES */
- data->vdi_handle = graf_handle(&dummy, &dummy, &dummy, &dummy);
-
- /* Open virtual VDI workstation */
- work_in[0] = Getrez() + 2;
- for (i = 1; i < 10; i++)
- work_in[i] = 1;
- work_in[10] = 2;
-
- v_opnvwk(work_in, &(data->vdi_handle), work_out);
- if (data->vdi_handle == 0) {
- fprintf(stderr, "Can not open VDI virtual workstation\n");
- return 1;
- }
-
- /* Set mouse cursor to arrow */
- graf_mouse(ARROW, NULL);
-
- /* Setup VDI fill functions */
- vsf_color(data->vdi_handle, 0);
- vsf_interior(data->vdi_handle, 1);
- vsf_perimeter(data->vdi_handle, 0);
-
- GEM_InitModes(_this);
-
- GEM_InitKeyboard(_this);
- GEM_InitMouse(_this);
-
- return (0);
-}
-
-void
-GEM_VideoQuit(_THIS)
-{
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
-
- GEM_QuitMouse(_this);
- GEM_QuitKeyboard(_this);
-
- GEM_QuitModes(_this);
-
- /* Close VDI workstation */
- if (data->vdi_handle) {
- v_clsvwk(data->vdi_handle);
- }
-
- appl_exit();
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemvideo.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_gemvideo_h
-#define _SDL_gemvideo_h
-
-#include "../SDL_sysvideo.h"
-
-#include "SDL_gemevents.h"
-#include "SDL_gemkeyboard.h"
-#include "SDL_gemmodes.h"
-#include "SDL_gemmouse.h"
-#include "SDL_gemwindow.h"
-
-/* Private display data */
-
-typedef struct
-{
- int mouse;
- int keyboard;
-
- /* VDI infos */
- short vdi_handle; /* workstation handle */
-
- /* AES infos */
- int wfeatures; /* window features */
-} SDL_VideoData;
-
-#endif /* _SDL_gemvideo_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemwindow.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#include "../SDL_sysvideo.h"
-#include "../../events/SDL_keyboard_c.h"
-
-#include "SDL_gemvideo.h"
-
-/* This is included after SDL_win32video.h, which includes windows.h */
-#include "SDL_syswm.h"
-
-
-int
-GEM_CreateWindow(_THIS, SDL_Window * window)
-{
- return -1;
-}
-
-int
-GEM_CreateWindowFrom(_THIS, SDL_Window * window, const void *data)
-{
- return -1;
-}
-
-void
-GEM_SetWindowTitle(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_SetWindowPosition(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_SetWindowSize(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_ShowWindow(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_HideWindow(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_RaiseWindow(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_MaximizeWindow(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_MinimizeWindow(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_RestoreWindow(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_SetWindowGrab(_THIS, SDL_Window * window)
-{
-}
-
-void
-GEM_DestroyWindow(_THIS, SDL_Window * window)
-{
-}
-
-SDL_bool
-GEM_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
-{
- return SDL_FALSE;
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/gem/SDL_gemwindow.h Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#ifndef _SDL_gemwindow_h
-#define _SDL_gemwindow_h
-
-typedef struct
-{
- SDL_WindowID windowID;
- struct SDL_VideoData *videodata;
-} SDL_WindowData;
-
-extern int GEM_CreateWindow(_THIS, SDL_Window * window);
-extern int GEM_CreateWindowFrom(_THIS, SDL_Window * window, const void *data);
-extern void GEM_SetWindowTitle(_THIS, SDL_Window * window);
-extern void GEM_SetWindowPosition(_THIS, SDL_Window * window);
-extern void GEM_SetWindowSize(_THIS, SDL_Window * window);
-extern void GEM_ShowWindow(_THIS, SDL_Window * window);
-extern void GEM_HideWindow(_THIS, SDL_Window * window);
-extern void GEM_RaiseWindow(_THIS, SDL_Window * window);
-extern void GEM_MaximizeWindow(_THIS, SDL_Window * window);
-extern void GEM_MinimizeWindow(_THIS, SDL_Window * window);
-extern void GEM_RestoreWindow(_THIS, SDL_Window * window);
-extern void GEM_SetWindowGrab(_THIS, SDL_Window * window);
-extern void GEM_DestroyWindow(_THIS, SDL_Window * window);
-extern SDL_bool GEM_GetWindowWMInfo(_THIS, SDL_Window * window,
- struct SDL_SysWMinfo *info);
-
-#endif /* _SDL_gemwindow_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/xbios/SDL_xbios.c Sun Sep 20 04:13:23 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- 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
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-/*
- * Xbios SDL video driver
- *
- * Patrice Mandin
- */
-
-#include <sys/stat.h>
-#include <unistd.h>
-
-/* Mint includes */
-#include <mint/cookie.h>
-#include <mint/osbind.h>
-#include <mint/falcon.h>
-
-#include "SDL_video.h"
-#include "SDL_mouse.h"
-#include "../SDL_sysvideo.h"
-#include "../SDL_pixels_c.h"
-#include "../../events/SDL_events_c.h"
-
-#include "../ataricommon/SDL_ataric2p_s.h"
-#include "../ataricommon/SDL_atarievents_c.h"
-#include "../ataricommon/SDL_atarimxalloc_c.h"
-#include "../ataricommon/SDL_atarigl_c.h"
-#include "SDL_xbios.h"
-#include "SDL_xbiosmodes.h"
-
-/* Debug print info */
-#if 0
-#define DEBUG_PRINT(what) \
- { \
- printf what; \
- }
-#define DEBUG_VIDEO_XBIOS 1
-#else
-#define DEBUG_PRINT(what)
-#undef DEBUG_VIDEO_XBIOS
-#endif
-
-/* Initialization/Query functions */
-static int XBIOS_VideoInit(_THIS);
-static void XBIOS_VideoQuit(_THIS);
-
-/* Xbios driver bootstrap functions */
-
-static int
-XBIOS_Available(void)
-{
- unsigned long cookie_vdo, cookie_mil, cookie_hade, cookie_scpn;
-
- /* Milan/Hades Atari clones do not have an Atari video chip */
- if ((Getcookie(C__MIL, &cookie_mil) == C_FOUND) ||
- (Getcookie(C_hade, &cookie_hade) == C_FOUND)) {
- return 0;
- }
-
- /* Cookie _VDO present ? if not, assume ST machine */
- if (Getcookie(C__VDO, &cookie_vdo) != C_FOUND) {
- cookie_vdo = VDO_ST << 16;
- }
-
- /* Test if we have a monochrome monitor plugged in */
- switch (cookie_vdo >> 16) {
- case VDO_ST:
- case VDO_STE:
- if (Getrez() == (ST_HIGH >> 8))
- return 0;
- break;
- case VDO_TT:
- if ((EgetShift() & ES_MODE) == TT_HIGH)
- return 0;
- break;
- case VDO_F30:
- if (VgetMonitor() == MONITOR_MONO)
- return 0;
- /*if (Getcookie(C_SCPN, &cookie_scpn) == C_FOUND) {
- if (!SDL_XBIOS_SB3Usable((scpn_cookie_t *) cookie_scpn)) {
- return 0;
- }
- } */
- break;
- default:
- return 0;
- }
-
- return 1;
-}
-
-static void
-XBIOS_DeleteDevice(SDL_VideoDevice * device)
-{
- SDL_free(device->driverdata);
- SDL_free(device);
-}
-
-static SDL_VideoDevice *
-XBIOS_CreateDevice(int devindex)
-{
- SDL_VideoDevice *device;
- SDL_VideoData *data;
-
- /* Initialize all variables that we clean on shutdown */
- device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
- if (device) {
- data = (struct SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
- }
- if (!device || !data) {
- SDL_OutOfMemory();
- if (device) {
- SDL_free(device);
- }
- return NULL;
- }
- device->driverdata = data;
-
- /* Video functions */
- device->VideoInit = XBIOS_VideoInit;
- device->VideoQuit = XBIOS_VideoQuit;