Commit 46f459a7 authored by Sam Lantinga's avatar Sam Lantinga

Updated OS/2 build, yay!

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401446
parent e1f2aca1
......@@ -36,7 +36,7 @@ SDLMAIN_TARGET = libSDLmain.a
SDLMAIN_SOURCES = @SDLMAIN_SOURCES@
SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
DIST = acinclude.m4 autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS CWprojects.sea.bin docs docs.html EpocBuildFiles.zip include INSTALL Makefile.dc Makefile.in MPWmake.sea.bin PBProjects.tar.gz README* sdl-config.in sdl.m4 SDL.qpg.in SDL.spec SDL.spec.in setvars.cmd src test TODO VisualCE.zip VisualC.html VisualC.zip Watcom.mif WhatsNew Xcode21.tar.gz Xcode.tar.gz XcodeUniversal.tar.gz
DIST = acinclude.m4 autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS CWprojects.sea.bin docs docs.html EpocBuildFiles.zip include INSTALL Makefile.dc Makefile.in MPWmake.sea.bin PBProjects.tar.gz README* sdl-config.in sdl.m4 SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualCE.zip VisualC.html VisualC.zip Watcom-OS2.zip WhatsNew Xcode21.tar.gz Xcode.tar.gz XcodeUniversal.tar.gz
LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
......
......@@ -3,7 +3,7 @@
SDL on OS/2
===========
Last updated on Oct 02, 2005.
Last updated on Feb. 26, 2006.
1. How to compile?
......@@ -16,6 +16,11 @@ To compile this, you'll need the followings installed:
- The FSLib library
(ftp://ftp.netlabs.org/pub/SDL)
First of all, you have to put the OS/2-specific Watcom makefiles into the
source code tree by unzipping the file Watcom-OS2.zip here. This will
result in a Watcom.mif and a setvars.cmd file in this folder, and several
Makefile.wat files in the src\ folder and in some of its subfolders.
Please edit the second, fourth and fifth lines of setvars.cmd file
to set the folders where the toolkit, the OW compiler and the FSLib are.
You won't need NASM yet (The Netwide Assembler), you can leave that line.
......@@ -107,7 +112,59 @@ of the Joystick Port hardware, not OS/2.
6. Next steps...
6. Proportional windows
-----------------------
For some SDL applications it can be handy to have proportional windows, so
the windows will keep their aspect ratio when resized.
This can be achieved in two ways:
- Before starting the given SDL application, set the
SDL_USE_PROPORTIONAL_WINDOW environment variable to something, e.g.:
SET SDL_USE_PROPORTIONAL_WINDOW=1
dosbox.exe
- If you have a HOME environment variable set, then SDL will look for a file
in there called ".sdl.proportionals". If that file contains the name of the
currently running SDL executable, then that process will have proportional
windows automatically.
Please note that this file is created automatically with default values
at the first run.
7. Audio in SDL applications
----------------------------
Audio effects are one of the most important features in games. Creating audio
effects in sync with the game and without hickups and pauses in the audio are
very important things.
However there are multithreaded SDL applications that have tight loops as their
main logic loop. This kills performance in OS/2, and takes too much CPU from
other threads in the same process, for example from the thread to create the
sound effects.
For this reason, the OS/2 port of SDL can be instructed to run the audio thread
in high priority, which makes sure that there will be enough time for the
processing of the audio data.
At default, SDL/2 runs the audio thread at ForegroundServer+0 priority. Well
written and well behaving SDL applications should work well in this mode.
For other applications, you can tell SDL/2 to run the audio thread at
TimeCritical priority by setting an env.variable before starting the SDL app:
SET SDL_USE_TIMECRITICAL_AUDIO=1
Please note that this is a bit risky, because if the SDL application runs a
tight infinite loop in this thread, this will make the whole system
unresponsive, so use it with care, and only for applications that need it!
8. Next steps...
----------------
Things to do:
......@@ -119,7 +176,7 @@ Things to do:
7. Contacts
9. Contacts
-----------
You can contact the developers for bugs:
......@@ -131,3 +188,90 @@ Things to do:
Notice however that SDL/2 is 'in development' stage so ... if you want to help,
please, be our guest and contact us!
10. Changelog of the OS/2 port
------------------------------
Version 1.2 - 2006-02-26 - Doodle
- Updated the official SDL version with the OS/2 specific changes.
- Added support for real unicode keycode conversion.
Version 1.2.7 - 2006-01-20 - Doodle
- Added support for selectively using timecritical priority for
audio threads by SDL_USE_TIMECRITICAL_AUDIO environment variable.
(e.g.:
SET SDL_USE_TIMECRITICAL_AUDIO=1
dosbox.exe
)
Version 1.2.7 - 2005-12-22 - Doodle
- Added support for proportional SDL windows.
There are two ways to have proportional (aspect-keeping) windows for
a given SDL application: Either set the SDL_USE_PROPORTIONAL_WINDOW
environment variable to something before starting the application
(e.g.:
SET SDL_USE_PROPORTIONAL_WINDOW=1
dosbox.exe
)
or, if you have the HOME environment variable set, then SDL.DLL will
create a file in that directory called .sdl.proportionals, and you can
put there the name of executable files that will be automatically made
proportional.
Version 1.2.7 - 2005-10-14 - Doodle
- Enabled Exception handler code in FSLib to be able to restore original
desktop video mode in case the application crashes.
- Added the missing FSLib_Uninitialize() call into SDL.
(The lack of it did not cause problems, but it's cleaner this way.)
- Fixed a mouse problem in Fullscreen mode where any mouse click
re-centered the mouse.
Version 1.2.7 - 2005-10-09 - Doodle
- Implemented window icon support
Version 1.2.7 - 2005-10-03 - Doodle
- Reworked semaphore support again
- Tuned thread priorities
Version 1.2.7 - 2005-10-02 - Doodle
- Added support for custom mouse pointers
- Fixed WM_CLOSE processing: give a chance to SDL app to ask user...
- Added support for MMX-accelerated audio mixers
- Other small fixes
Version 1.2.7 - 2005-09-12 - Doodle
- Small fixes for DosBox incorporated into public release
- Fixed semaphore support (SDL_syssem.c)
- Fixed FSLib to have good clipping in scaled window mode,
and to prevent occasional desktop freezes.
Version 1.2.7 - 2004-09-08a - Caetano
- Improved joystick support (general verifications about hardware).
- Added support up to 8 buttons in 2 axes joysticks and 6 buttons in 3 axes joysticks.
- Added support to environment variable SDL_OS2_JOYSTICK to specify a joystick.
- Improved Joystick test to handle every type of joystick and display only relevant information.
- Merged with Doodle 2004-09-08
- Little tid up in README.OS2
- Added explanation about SDL_OS2_JOYSTICK environment variable on README.OS2
Version 1.2.7 - 2004-09-07 - Caetano
- Merged with changes in headers for GCC compiling.
- Added Joystick support using basic IBM GAME$ support, allowing it to work with all joystick drivers since OS/2 2.1.
- Improved joystick detection (hacked!). OS/2 do not allow real joystick detection, so...
- Modified makefile in test to compile "testjoystick". Anyway, it's useless, since it seems to cause a lot of trouble in OS/2 (because os video routines, not Joystick support).
- Created separated Joystick test program to test only joystick functions.
- Improved joystick auto-centering.
- Improved the coordinate correction routine to use two scale factors for each axis.
Version 1.2.7 - 2004-07-05 - Caetano
- Corrected the time returned by status in CDROM support (it was incorrect)
- Added the testcdrom.c and corrected the linking directive (it was causing an error)
Version 1.2.7 - 2004-07-02a - Caetano
- Corrected a little problem in a comment at SDL-1.2.7\test\torturethread.c, line 18 (missing */, nested comment)
- Added CDROM support to tree (SDL-1.2.7\src\cdrom\os2\SDL_syscdrom.c)
- Modified makefile (SDL-1.2.7\src\makefiles.wat and SDL-1.2.7\watcom.mif) to build with CDROM support
- Added the "extra" SDL_types.h forgotten in 2004-07-02 version.
<End-Of-File>
File added
#=============================================================================
# This file contains the common includes for the
# Watcom makefiles to build SDL.DLL for OS/2
#
#
#=============================================================================
# Create debug build or not?
#debug_build=defined
# Special flags for building SDL
SDLCFlags = -dBUILD_SDL -dCHECK_LEAKS
#
#==============================================================================
#
!ifdef debug_build
debugflags = -d2 -dDEBUG_BUILD
!else
debugflags =
!endif
cflags = -zq $(debugflags) -bd -bm -bt=OS2 -5s -fpi -sg -otexan -wx -ei $(SDLCFlags) $(ExtraCFlags)
.extensions:
.extensions: .lib .dll .obj .c .asm
.c.obj : .AUTODEPEND
wcc386 $[* $(cflags)
.asm.obj : .AUTODEPEND
nasm -t -O2 -f obj -I$(%include) $[*.asm
......@@ -36,6 +36,8 @@
#include "SDL_config_macosx.h"
#elif defined(__WIN32__)
#include "SDL_config_win32.h"
#elif defined(__OS2__)
#include "SDL_config_os2.h"
#else
/* This is the minimal configuration that can be used to build SDL */
......
......@@ -36,6 +36,8 @@
#include "SDL_config_macosx.h"
#elif defined(__WIN32__)
#include "SDL_config_win32.h"
#elif defined(__OS2__)
#include "SDL_config_os2.h"
#else
/* This is the minimal configuration that can be used to build SDL */
......
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2006 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
*/
#ifndef _SDL_config_os2_h
#define _SDL_config_os2_h
/* This is a set of defines to configure the SDL features */
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
typedef unsigned int size_t;
typedef unsigned long uintptr_t;
typedef signed long long int64_t;
typedef unsigned long long uint64_t;
#define SDL_HAS_64BIT_TYPE 1
/* Use Watcom's LIBC */
#define HAVE_LIBC 1
/* Useful headers */
#define HAVE_SYS_TYPES_H 1
#define HAVE_STDIO_H 1
#define STDC_HEADERS 1
#define HAVE_STDLIB_H 1
#define HAVE_STDARG_H 1
#define HAVE_MALLOC_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRING_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_CTYPE_H 1
#define HAVE_MATH_H 1
#define HAVE_SIGNAL_H 1
/* C library functions */
#define HAVE_MALLOC 1
#define HAVE_CALLOC 1
#define HAVE_REALLOC 1
#define HAVE_FREE 1
#define HAVE_ALLOCA 1
#define HAVE_GETENV 1
#define HAVE_PUTENV 1
#define HAVE_UNSETENV 1
#define HAVE_QSORT 1
#define HAVE_ABS 1
#define HAVE_BCOPY 1
#define HAVE_MEMSET 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMCMP 1
#define HAVE_STRLEN 1
#define HAVE_STRLCPY 1
#define HAVE_STRLCAT 1
#define HAVE_STRDUP 1
#define HAVE__STRREV 1
#define HAVE__STRUPR 1
#define HAVE__STRLWR 1
#define HAVE_INDEX 1
#define HAVE_RINDEX 1
#define HAVE_STRCHR 1
#define HAVE_STRRCHR 1
#define HAVE_STRSTR 1
#define HAVE_ITOA 1
#define HAVE__LTOA 1
#define HAVE__UITOA 1
#define HAVE__ULTOA 1
#define HAVE_STRTOL 1
#define HAVE__I64TOA 1
#define HAVE__UI64TOA 1
#define HAVE_STRTOLL 1
#define HAVE_STRTOD 1
#define HAVE_ATOI 1
#define HAVE_ATOF 1
#define HAVE_STRCMP 1
#define HAVE_STRNCMP 1
#define HAVE_STRICMP 1
#define HAVE_STRCASECMP 1
#define HAVE_SSCANF 1
#define HAVE_SNPRINTF 1
#define HAVE_VSNPRINTF 1
#define HAVE_SETJMP 1
#define HAVE_CLOCK_GETTIME 1
/* Enable various audio drivers */
#define SDL_AUDIO_DRIVER_DART 1
/* Enable various cdrom drivers */
#define SDL_CDROM_OS2 1
/* Enable various input drivers */
#define SDL_JOYSTICK_OS2 1
/* Enable various shared object loading systems */
#define SDL_LOADSO_OS2 1
/* Enable various threading systems */
#define SDL_THREAD_OS2 1
/* Enable various timer systems */
#define SDL_TIMER_OS2 1
/* Enable various video drivers */
#define SDL_VIDEO_DRIVER_OS2FS 1
/* Enable OpenGL support */
/* Nothing here yet for OS/2... :( */
/* Enable assembly routines where available */
#define SDL_ASSEMBLY_ROUTINES 1
#endif /* _SDL_config_os2_h */
......@@ -65,8 +65,8 @@ typedef struct SDL_Thread SDL_Thread;
#endif
#ifdef __OS2__
typedef int (__cdecl *pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg);
typedef void (__cdecl *pfnSDL_CurrentEndThread)(void);
typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg);
typedef void (*pfnSDL_CurrentEndThread)(void);
#else
#ifdef __GNUC__
#include <stdint.h>
......
@ECHO OFF
SET WATCOM=d:\watcom
SET NASM=d:\nasm
SET OS2TK=d:\os2tk45
SET FSLIB=d:\watcom\projects\FSLib
SET PATH=%WATCOM%\BINP;%WATCOM%\BINW;%os2tk%\bin;%NASM%;%PATH%
SET INCLUDE=%WATCOM%\H;%WATCOM%\H\OS2
SET FINCLUDE=%WATCOM%\SRC\FORTRAN
SET EDPATH=%WATCOM%\EDDAT
SET HELP=%WATCOM%\BINP\HELP;%HELP%
SET BOOKSHELF=%WATCOM%\BINP\HELP;%BOOKSHELF%
SET BEGINLIBPATH=%WATCOM%\BINP\DLL
cmd
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
#
#=============================================================================
dllname=SDL
audioobjs = audio\SDL_audio.obj audio\SDL_audiocvt.obj audio\SDL_audiomem.obj &
audio\SDL_mixer.obj audio\SDL_mixer_MMX_VC.obj audio\SDL_wave.obj &
audio\SDL_dart.obj
cdromobjs = cdrom\SDL_cdrom.obj cdrom\SDL_syscdrom.obj
cpuinfoobjs = cpuinfo\SDL_cpuinfo.obj
endianobjs = endian\SDL_endian.obj
eventsobjs = events\SDL_active.obj events\SDL_events.obj events\SDL_expose.obj &
events\SDL_keyboard.obj events\SDL_mouse.obj events\SDL_quit.obj &
events\SDL_resize.obj
fileobjs = file\SDL_rwops.obj
hermesobjs = hermes\mmx_main.obj hermes\mmxp2_32.obj hermes\x86_main.obj &
hermes\x86p_16.obj hermes\x86p_32.obj
joystickobjs = joystick\SDL_joystick.obj joystick\SDL_sysjoystick.obj
threadobjs = thread\SDL_thread.obj thread\SDL_sysmutex.obj &
thread\SDL_syssem.obj thread\SDL_systhread.obj &
thread\SDL_syscond.obj
timerobjs = timer\SDL_timer.obj timer\SDL_systimer.obj
videoobjs = video\SDL_blit.obj video\SDL_blit_0.obj video\SDL_blit_1.obj &
video\SDL_blit_A.obj video\SDL_blit_N.obj video\SDL_bmp.obj &
video\SDL_cursor.obj video\SDL_gamma.obj video\SDL_pixels.obj &
video\SDL_RLEaccel.obj video\SDL_stretch.obj video\SDL_surface.obj &
video\SDL_video.obj video\SDL_yuv.obj video\SDL_yuv_mmx.obj &
video\SDL_yuv_sw.obj video\SDL_os2fslib.obj
object_files= SDL.obj SDL_error.obj SDL_fatal.obj SDL_getenv.obj &
SDL_loadso.obj $(audioobjs) $(cpuinfoobjs) $(endianobjs) &
$(eventsobjs) $(fileobjs) $(joystickobjs) &
$(threadobjs) $(timerobjs) $(videoobjs) $(cdromobjs)
# Extra stuffs to pass to C compiler:
ExtraCFlags=
#
#==============================================================================
#
!include ..\Watcom.mif
.before
@set include=$(%os2tk)\h;$(%include);../include;./thread;./thread/os2;./video;./cdrom;./cdrom/os2;./joystick;./joystick/os2;
all : check_subdir_objects $(dllname).dll $(dllname).lib
$(dllname).dll : $(dllname).lnk $(object_files)
wlink @$(dllname)
check_subdir_objects: .always .symbolic
@cd audio
@wmake -h -f Makefile.wat
@cd ..\cdrom
@wmake -h -f Makefile.wat
@cd ..\cpuinfo
@wmake -h -f Makefile.wat
@cd ..\endian
@wmake -h -f Makefile.wat
@cd ..\events
@wmake -h -f Makefile.wat
@cd ..\file
@wmake -h -f Makefile.wat
@cd ..\joystick
@wmake -h -f Makefile.wat
@cd ..\thread
@wmake -h -f Makefile.wat
@cd ..\timer
@wmake -h -f Makefile.wat
@cd ..\video
@wmake -h -f Makefile.wat
@cd ..
$(dllname).lnk :
@echo Creating linker file ($(dllname).lnk)...
@echo $#============================================================================= >$^@
@echo $# This is a linker file to build SDL.DLL for OS/2 >>$^@
@echo $# >>$^@
@echo $# Generated automatically by Makefile.wat >>$^@
@echo $#============================================================================= >>$^@
@echo SYSTEM 386 LX DLL INITINSTANCE TERMINSTANCE >>$^@
@echo NAME $^& >>$^@
@for %i in ($(object_files)) do @echo FILE %i >>$^@
@echo LIBPATH %os2tk%\lib >>$^@
@echo LIBPATH %fslib% >>$^@
@echo LIB mmpm2.lib >>$^@
@echo LIB fslib.lib >>$^@
@echo OPTION QUIET >>$^@
@echo OPTION MAP=$^&.map >>$^@
@echo OPTION DESCRIPTION 'Simple DirectMedia Layer v1.2.7' >>$^@
@echo OPTION ELIMINATE >>$^@
@echo OPTION MANYAUTODATA >>$^@
@echo OPTION OSNAME='OS/2 and eComStation' >>$^@
@echo OPTION SHOWDEAD >>$^@
@echo Linker file created!
$(dllname).lib : $(dllname).dll
implib $(dllname).lib $(dllname).dll
clean : .SYMBOLIC
@if exist *.dll del *.dll
@if exist *.lib del *.lib
@if exist *.obj del *.obj
@if exist *.lnk del *.lnk
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
@cd audio
@wmake -h -f Makefile.wat clean
@cd ..\cdrom
@wmake -h -f Makefile.wat clean
@cd ..\cpuinfo
@wmake -h -f Makefile.wat clean
@cd ..\endian
@wmake -h -f Makefile.wat clean
@cd ..\events
@wmake -h -f Makefile.wat clean
@cd ..\file
@wmake -h -f Makefile.wat clean
@cd ..\joystick
@wmake -h -f Makefile.wat clean
@cd ..\thread
@wmake -h -f Makefile.wat clean
@cd ..\timer
@wmake -h -f Makefile.wat clean
@cd ..\video
@wmake -h -f Makefile.wat clean
@cd ..
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for DART (audio support)
#=============================================================================
object_files= SDL_audio.obj SDL_audiocvt.obj SDL_audiomem.obj SDL_mixer.obj SDL_mixer_MMX_VC.obj SDL_wave.obj SDL_dart.obj
ExtraCFlags=-dUSE_ASM_MIXER_VC -dUSE_DOSSETPRIORITY
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;./dart
all : $(object_files)
SDL_dart.obj: .AUTODEPEND
wcc386 dart\SDL_dart.c $(cflags)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -181,10 +181,20 @@ int SDL_RunAudio(void *audiop)
// Increase the priority of this thread to make sure that
// the audio will be continuous all the time!
#ifdef USE_DOSSETPRIORITY
if (SDL_getenv("SDL_USE_TIMECRITICAL_AUDIO"))
{
#ifdef DEBUG_BUILD
printf("[SDL_RunAudio] : Setting priority to ForegroundServer+0! (TID%d)\n", SDL_ThreadID());
printf("[SDL_RunAudio] : Setting priority to TimeCritical+0! (TID%d)\n", SDL_ThreadID());
#endif
DosSetPriority(PRTYS_THREAD, PRTYC_FOREGROUNDSERVER, 0, 0);
DosSetPriority(PRTYS_THREAD, PRTYC_TIMECRITICAL, 0, 0);
}
else
{
#ifdef DEBUG_BUILD
printf("[SDL_RunAudio] : Setting priority to ForegroundServer+0! (TID%d)\n", SDL_ThreadID());
#endif
DosSetPriority(PRTYS_THREAD, PRTYC_FOREGROUNDSERVER, 0, 0);
}
#endif
#endif
......
......@@ -134,8 +134,7 @@ void SDL_MixAudio (Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
SDL_MixAudio_MMX_S8((char*)dst,(char*)src,(unsigned int)len,(int)volume);
}
else
#endif
#if defined(_MSC_VER) && defined(M_I86) && defined(SDL_ASSEMBLY_ROUTINES)
#elif ((defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)) && defined(SDL_ASSEMBLY_ROUTINES)
if (SDL_HasMMX())
{
SDL_MixAudio_MMX_S8_VC((char*)dst,(char*)src,(unsigned int)len,(int)volume);
......@@ -180,8 +179,8 @@ void SDL_MixAudio (Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
{
SDL_MixAudio_MMX_S16((char*)dst,(char*)src,(unsigned int)len,(int)volume);
}
else
#elif defined(USE_ASM_MIXER_VC)
else
#elif ((defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)) && defined(SDL_ASSEMBLY_ROUTINES)
if (SDL_HasMMX())
{
SDL_MixAudio_MMX_S16_VC((char*)dst,(char*)src,(unsigned int)len,(int)volume);
......
......@@ -23,7 +23,7 @@
#include "SDL_mixer_MMX_VC.h"
#if defined(_MSC_VER) && defined(M_I86) && defined(SDL_ASSEMBLY_ROUTINES)
#if ((defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)) && defined(SDL_ASSEMBLY_ROUTINES)
// MMX assembler version of SDL_MixAudio for signed little endian 16 bit samples and signed 8 bit samples
// Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr)
// Converted to Intel ASM notation by Cth
......
......@@ -21,7 +21,7 @@
*/
#include "SDL_config.h"
#if defined(_MSC_VER) && defined(M_I86) && defined(SDL_ASSEMBLY_ROUTINES)
#if ((defined(_MSC_VER) && defined(M_I86)) || (defined(__WATCOMC__))) && defined(SDL_ASSEMBLY_ROUTINES)
// headers for MMX assembler version of SDL_MixAudio
// Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr)
// Converted to Intel ASM notation by Cth
......
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for OS/2 System CDROM support
#=============================================================================
object_files=SDL_syscdrom.obj SDL_cdrom.obj
ExtraCFlags=
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;./os2;../;
all : $(object_files)
SDL_syscdrom.obj : .AUTODEPEND
wcc386 os2\SDL_syscdrom.c $(cflags)
SDL_cdrom.obj : .AUTODEPEND
wcc386 SDL_cdrom.c $(cflags)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -293,7 +293,7 @@ if (LOUSHORT(mciSendCommand(cdrom->id,MCI_STATUS,MCI_WAIT | MCI_STATUS_ITEM,&msp
if (msp.ulReturn == MCI_MODE_PAUSE)
{
mgp.hwndCallback = (HWND)NULL; // None
mciSendCommand(cdrom->id,MCI_RESUME,NULL,&mgp, 0);
mciSendCommand(cdrom->id,MCI_RESUME,0,&mgp, 0);
}
}
/* Now play it. */
......@@ -338,7 +338,7 @@ if (LOUSHORT(mciSendCommand(cdrom->id,MCI_STATUS,MCI_WAIT | MCI_STATUS_ITEM,&msp
if (msp.ulReturn == MCI_MODE_PAUSE)
{
mgp.hwndCallback = (HWND)NULL; // None
mciSendCommand(cdrom->id,MCI_RESUME,NULL,&mgp, 0);
mciSendCommand(cdrom->id,MCI_RESUME,0,&mgp, 0);
}
}
/* Now stops the media */
......
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for cpuinfo
#=============================================================================
object_files=SDL_cpuinfo.obj
# We have to define the following so the assembly parts can be
# compiled by Watcom, too!
ExtraCFlags=-d_MSC_VER
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include
all : $(object_files)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -96,7 +96,7 @@ CPUid by definition. But it's nice to be able to prove it. :) */
:
: "%rax", "%rcx"
);
#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_X86_))
#elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
__asm {
pushfd ; Get original EFLAGS
pop eax
......@@ -165,7 +165,7 @@ static __inline__ int CPU_getCPUIDFeatures(void)
:
: "%eax", "%ecx", "%edx", "%edi"
);
#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_X86_))
#elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
__asm {
xor eax, eax ; Set up for CPUID instruction
cpuid ; Get and save vendor ID
......@@ -217,7 +217,7 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void)
:
: "%eax", "%ecx", "%edx", "%edi"
);
#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_X86_))
#elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
__asm {
mov eax,80000000h ; Query for extended functions
cpuid ; Get extended function limit
......
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for events
#=============================================================================
object_files=SDL_active.obj SDL_events.obj SDL_expose.obj SDL_keyboard.obj SDL_mouse.obj SDL_quit.obj SDL_resize.obj
ExtraCFlags=-dUSE_DOSSETPRIORITY
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;../timer;../joystick;../video;
all : $(object_files)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -176,7 +176,7 @@ printf("Mouse event didn't change state - dropped!\n");
SDL_MouseY = Y;
SDL_DeltaX += Xrel;
SDL_DeltaY += Yrel;
SDL_MoveCursor(SDL_MouseX, SDL_MouseY);
SDL_MoveCursor(SDL_MouseX, SDL_MouseY);
/* Post the event, if desired */
posted = 0;
......
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for file
#=============================================================================
object_files=SDL_rwops.obj
ExtraCFlags=
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include
all : $(object_files)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for joystick (using the dummy joystick driver)
#=============================================================================
object_files=SDL_joystick.obj SDL_sysjoystick.obj
ExtraCFlags=
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;./os2;../;../events;
all : $(object_files)
SDL_sysjoystick.obj: .AUTODEPEND
wcc386 os2\SDL_sysjoystick.c $(cflags)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -32,6 +32,7 @@
#include "joyos2.h"
#include "SDL_joystick.h"
#include "SDL_events.h"
#include "../SDL_sysjoystick.h"
#include "../SDL_joystick_c.h"
......@@ -50,7 +51,7 @@ HFILE hJoyPort = NULL; /* Joystick GAME$ Port Address */
#define JOY_BUTTON_FLAG(n) (1<<n)
/* Joystick data... hold information about detected devices */
struct _SYS_JoyData
typedef struct SYS_JoyData_s
{
Sint8 id; // Device ID
char szDeviceName[MAX_JOYNAME]; // Device Name
......@@ -62,7 +63,9 @@ int axes_min[MAX_AXES]; // minimum callibration value for axes
int axes_med[MAX_AXES]; // medium callibration value for axes
int axes_max[MAX_AXES]; // maximum callibration value for axes
int buttoncalc[4]; // Used for buttons 5, 6, 7 and 8.
} SYS_JoyData[MAX_JOYSTICKS];
} SYS_JoyData_t, *SYS_JoyData_p;
SYS_JoyData_t SYS_JoyData[MAX_JOYSTICKS];
/* Structure used to convert data from OS/2 driver format to SDL format */
......@@ -292,16 +295,16 @@ if (numdevs > 0)
}
/* Hack to define Joystick Port Names */
if ( numdevs > maxdevs ) numdevs = maxdevs;
for (i=0; i<numdevs; i++) {
SDL_snprintf (SYS_JoyData[i].szDeviceName, SDL_arraysize(szDeviceName), "Default Joystick %c", 'A'+SYS_JoyData[i].id);
}
for (i=0; i<numdevs; i++)
SDL_snprintf (SYS_JoyData[i].szDeviceName, SDL_arraysize(SYS_JoyData[i].szDeviceName), "Default Joystick %c", 'A'+SYS_JoyData[i].id);
}
}
/* Return the number of devices found */
return(numdevs);
}
/***********************************************************/
/* Function to get the device-dependent name of a joystick */
/***********************************************************/
......
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for threading
#=============================================================================
object_files=SDL_thread.obj SDL_sysmutex.obj SDL_syssem.obj SDL_systhread.obj SDL_syscond.obj
ExtraCFlags=
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;./os2;../;
all : $(object_files)
SDL_sysmutex.obj: .AUTODEPEND
wcc386 os2\SDL_sysmutex.c $(cflags)
SDL_syssem.obj: .AUTODEPEND
wcc386 os2\SDL_syssem.c $(cflags)
SDL_systhread.obj: .AUTODEPEND
wcc386 os2\SDL_systhread.c $(cflags)
SDL_syscond.obj: .AUTODEPEND
wcc386 os2\SDL_syscond.c $(cflags)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -30,6 +30,7 @@
#include "SDL_thread.h"
#include "../SDL_systhread.h"
#include "../SDL_thread_c.h"
typedef struct ThreadStartParms
{
......
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for timers
#=============================================================================
object_files=SDL_timer.obj SDL_systimer.obj
ExtraCFlags=
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;./os2;../;
all : $(object_files)
SDL_systimer.obj: .AUTODEPEND
wcc386 os2\SDL_systimer.c $(cflags)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for threading
#=============================================================================
object_files=SDL_blit.obj SDL_blit_0.obj SDL_blit_1.obj SDL_blit_A.obj SDL_blit_N.obj SDL_bmp.obj SDL_cursor.obj SDL_gamma.obj SDL_pixels.obj SDL_RLEaccel.obj SDL_stretch.obj SDL_surface.obj SDL_video.obj SDL_yuv.obj SDL_yuv_mmx.obj SDL_yuv_sw.obj SDL_os2fslib.obj
ExtraCFlags=-dUSE_DOSSETPRIORITY
#
#==============================================================================
#
!include ..\..\Watcom.mif
.before
set include=$(%os2tk)\h;$(%include);../../include;../;./os2;../events;../hermes;$(%FSLIB);
all : $(object_files)
SDL_os2fslib.obj : .AUTODEPEND
wcc386 os2fslib\SDL_os2fslib.c $(cflags)
clean : .SYMBOLIC
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
......@@ -35,6 +35,7 @@
*/
#if ((defined(_MFC_VER) && defined(_M_IX86)/* && !defined(_WIN32_WCE) still needed? */) || \
defined(__WATCOMC__) || \
(defined(__GNUC__) && defined(__i386__))) && SDL_ASSEMBLY_ROUTINES
#define USE_ASM_STRETCH
#endif
......@@ -281,8 +282,7 @@ int SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect,
: "=&D" (u1), "=&S" (u2)
: "0" (dstp), "1" (srcp), "r" (copy_row)
: "memory" );
#else
#ifdef _MSC_VER
#elif defined(_MSC_VER) || defined(__WATCOMC__)
{ void *code = copy_row;
__asm {
push edi
......@@ -299,7 +299,6 @@ int SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect,
#else
#error Need inline assembly for this compiler
#endif
#endif /* __GNUC__ */
break;
}
#else
......
This diff is collapsed.
......@@ -57,8 +57,15 @@ struct SDL_PrivateVideoData
int fInFocus; // True if we're in focus!
int iSkipWMMOUSEMOVE; // Number of WM_MOUSEMOVE messages to skip!
int iMouseVisible; //
PFNWP pfnOldFrameProc; // Old window frame procedure
int bProportionalResize; // 0: No proportional resizing
// 1: Do proportional resizing
ULONG ulResizingFlag; // First resizing flag value
};
/* OS/2 specific backdoor function to be able to set FrameControlFlags of */
/* the SDL window before creating it. */
extern DECLSPEC void SDLCALL SDL_OS2FSLIB_SetFCFToUse(ULONG ulFCF);
#endif /* _SDL_os2fslib_h */
#=============================================================================
# This is a Watcom makefile to build SDL.DLL for OS/2
#
# Makefile for test applications
#=============================================================================
# Create debug build or not?
debug_build=defined
#-----------------------------------------------------------------------------
# The next part is somewhat general, for creation of EXE files.
#-----------------------------------------------------------------------------
cflags = $(debugflags) -bm -bt=OS2 -5 -fpi -sg -otexan -wx -ei
.before
set include=$(%os2tk)\h;$(%include);../include
.extensions:
.extensions: .exe .obj .c
all : testalpha.exe &
testbitmap.exe &
testcdrom.exe &
testcpuinfo.exe &
testjoystick.exe &
testkeys.exe &
testlock.exe &
testsem.exe &
testsprite.exe &
testtimer.exe &
testtypes.exe &
testver.exe &
testvidinfo.exe &
testwin.exe &
testwm.exe &
threadwin.exe &
torturethread.exe &
checkkeys.exe
.c.obj : .AUTODEPEND
wcc386 -zq -bm -5s -ei -oteaxan -wx $[* $(cflags)
.obj.exe : .AUTODEPEND
wlink system os2v2 F $* L ..\src\sdl.lib name $@ op quiet
clean : .SYMBOLIC
@if exist *.exe del *.exe
@if exist *.obj del *.obj
@if exist *.map del *.map
@if exist *.res del *.res
@if exist *.lst del *.lst
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment