newoswan/seal-hack/src/audiodj.c
2019-09-01 21:47:54 +01:00

384 lines
9.3 KiB
C

/*
* @(#)audiodj.c 0.2 1998/12/20 Carlos Hasan (chasan@dcc.uchile.cl)
*
* Hack for DJGPP 2.01 to lock code and data into a contiguous memory region.
*
* Copyright (C) 1998-1999 Carlos Hasan
*
* This program 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 of the License, or
* (at your option) any later version.
*/
#include <dpmi.h>
#include <sys/nearptr.h>
static int __SEAL_BSS_BEGIN;
static int __SEAL_DATA_BEGIN = 0xCafe;
static int __SEAL_TEXT_BEGIN(void) { return 0; }
static void SEAL_LOCK_MEMORY(void);
#include "audio.c"
#include "wavfile.c"
#include "xmfile.c"
#include "s3mfile.c"
#include "modfile.c"
#include "mtmfile.c"
#include "iofile.c"
#include "modeng.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#define GetAudioCaps noneGetAudioCaps
#define PingAudio nonePingAudio
#define OpenAudio noneOpenAudio
#define CloseAudio noneCloseAudio
#define UpdateAudio noneUpdateAudio
#define SetAudioCallback noneSetAudioCallback
#include "nondrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#define GetAudioCaps sbGetAudioCaps
#define PingAudio sbPingAudio
#define OpenAudio sbOpenAudio
#define CloseAudio sbCloseAudio
#define UpdateAudio sbUpdateAudio
#define SetAudioCallback sbSetAudioCallback
#include "sbdrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#define GetAudioCaps pasGetAudioCaps
#define PingAudio pasPingAudio
#define OpenAudio pasOpenAudio
#define CloseAudio pasCloseAudio
#define UpdateAudio pasUpdateAudio
#define SetAudioCallback pasSetAudioCallback
#include "pasdrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#define GetAudioCaps wssGetAudioCaps
#define PingAudio wssPingAudio
#define OpenAudio wssOpenAudio
#define CloseAudio wssCloseAudio
#define UpdateAudio wssUpdateAudio
#define SetAudioCallback wssSetAudioCallback
#include "wssdrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#define GetAudioCaps ariaGetAudioCaps
#define PingAudio ariaPingAudio
#define OpenAudio ariaOpenAudio
#define CloseAudio ariaCloseAudio
#define UpdateAudio ariaUpdateAudio
#define SetAudioCallback ariaSetAudioCallback
#include "ariadrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef VOICE_START
#undef VOICE_STOP
#undef VOICE_LOOP
#undef VOICE_BIDILOOP
#undef aVolumeTable
#undef aFrequencyTable
#define aVolumeTable mixVolumeTable
#define aFrequencyTable mixFrequencyTable
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#undef SetAudioMixerValue
#undef OpenVoices
#undef CloseVoices
#undef GetAudioDataAvail
#undef CreateAudioData
#undef DestroyAudioData
#undef WriteAudioData
#undef PrimeVoice
#undef StartVoice
#undef StopVoice
#undef SetVoicePosition
#undef SetVoiceFrequency
#undef SetVoiceVolume
#undef SetVoicePanning
#undef GetVoicePosition
#undef GetVoiceFrequency
#undef GetVoiceVolume
#undef GetVoicePanning
#undef GetVoiceStatus
#undef SetAudioTimerProc
#undef SetAudioTimerRate
#define GetAudioCaps mixGetAudioCaps
#define PingAudio mixPingAudio
#define OpenAudio mixOpenAudio
#define CloseAudio mixCloseAudio
#define UpdateAudio mixUpdateAudio
#define SetAudioCallback mixSetAudioCallback
#define SetAudioMixerValue mixSetAudioMixerValue
#define OpenVoices mixOpenVoices
#define CloseVoices mixCloseVoices
#define GetAudioDataAvail mixGetAudioDataAvail
#define CreateAudioData mixCreateAudioData
#define DestroyAudioData mixDestroyAudioData
#define WriteAudioData mixWriteAudioData
#define PrimeVoice mixPrimeVoice
#define StartVoice mixStartVoice
#define StopVoice mixStopVoice
#define SetVoicePosition mixSetVoicePosition
#define SetVoiceFrequency mixSetVoiceFrequency
#define SetVoiceVolume mixSetVoiceVolume
#define SetVoicePanning mixSetVoicePanning
#define GetVoicePosition mixGetVoicePosition
#define GetVoiceFrequency mixGetVoiceFrequency
#define GetVoiceVolume mixGetVoiceVolume
#define GetVoicePanning mixGetVoicePanning
#define GetVoiceStatus mixGetVoiceStatus
#define SetAudioTimerProc mixSetAudioTimerProc
#define SetAudioTimerRate mixSetAudioTimerRate
#include "mixdrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef VOICE_START
#undef VOICE_STOP
#undef VOICE_LOOP
#undef VOICE_BIDILOOP
#undef aVolumeTable
#undef aFrequencyTable
#define aVolumeTable aweVolumeTable
#define aFrequencyTable aweFrequencyTable
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#undef SetAudioMixerValue
#undef OpenVoices
#undef CloseVoices
#undef GetAudioDataAvail
#undef CreateAudioData
#undef DestroyAudioData
#undef WriteAudioData
#undef PrimeVoice
#undef StartVoice
#undef StopVoice
#undef SetVoicePosition
#undef SetVoiceFrequency
#undef SetVoiceVolume
#undef SetVoicePanning
#undef GetVoicePosition
#undef GetVoiceFrequency
#undef GetVoiceVolume
#undef GetVoicePanning
#undef GetVoiceStatus
#undef SetAudioTimerProc
#undef SetAudioTimerRate
#define GetAudioCaps aweGetAudioCaps
#define PingAudio awePingAudio
#define OpenAudio aweOpenAudio
#define CloseAudio aweCloseAudio
#define UpdateAudio aweUpdateAudio
#define SetAudioCallback aweSetAudioCallback
#define SetAudioMixerValue aweSetAudioMixerValue
#define OpenVoices aweOpenVoices
#define CloseVoices aweCloseVoices
#define GetAudioDataAvail aweGetAudioDataAvail
#define CreateAudioData aweCreateAudioData
#define DestroyAudioData aweDestroyAudioData
#define WriteAudioData aweWriteAudioData
#define PrimeVoice awePrimeVoice
#define StartVoice aweStartVoice
#define StopVoice aweStopVoice
#define SetVoicePosition aweSetVoicePosition
#define SetVoiceFrequency aweSetVoiceFrequency
#define SetVoiceVolume aweSetVoiceVolume
#define SetVoicePanning aweSetVoicePanning
#define GetVoicePosition aweGetVoicePosition
#define GetVoiceFrequency aweGetVoiceFrequency
#define GetVoiceVolume aweGetVoiceVolume
#define GetVoicePanning aweGetVoicePanning
#define GetVoiceStatus aweGetVoiceStatus
#define SetAudioTimerProc aweSetAudioTimerProc
#define SetAudioTimerRate aweSetAudioTimerRate
#include "awedrv.c"
#undef BUFFERSIZE
#undef CLIP
#undef TIMEOUT
#undef DEBUG
#undef VOICE_START
#undef VOICE_STOP
#undef VOICE_LOOP
#undef VOICE_BIDILOOP
#undef aVolumeTable
#undef aFrequencyTable
#define aVolumeTable gusVolumeTable
#define aFrequencyTable gusFrequencyTable
#undef GetAudioCaps
#undef PingAudio
#undef OpenAudio
#undef CloseAudio
#undef UpdateAudio
#undef SetAudioCallback
#undef SetAudioMixerValue
#undef OpenVoices
#undef CloseVoices
#undef GetAudioDataAvail
#undef CreateAudioData
#undef DestroyAudioData
#undef WriteAudioData
#undef PrimeVoice
#undef StartVoice
#undef StopVoice
#undef SetVoicePosition
#undef SetVoiceFrequency
#undef SetVoiceVolume
#undef SetVoicePanning
#undef GetVoicePosition
#undef GetVoiceFrequency
#undef GetVoiceVolume
#undef GetVoicePanning
#undef GetVoiceStatus
#undef SetAudioTimerProc
#undef SetAudioTimerRate
#define GetAudioCaps gusGetAudioCaps
#define PingAudio gusPingAudio
#define OpenAudio gusOpenAudio
#define CloseAudio gusCloseAudio
#define UpdateAudio gusUpdateAudio
#define SetAudioCallback gusSetAudioCallback
#define SetAudioMixerValue gusSetAudioMixerValue
#define OpenVoices gusOpenVoices
#define CloseVoices gusCloseVoices
#define GetAudioDataAvail gusGetAudioDataAvail
#define CreateAudioData gusCreateAudioData
#define DestroyAudioData gusDestroyAudioData
#define WriteAudioData gusWriteAudioData
#define PrimeVoice gusPrimeVoice
#define StartVoice gusStartVoice
#define StopVoice gusStopVoice
#define SetVoicePosition gusSetVoicePosition
#define SetVoiceFrequency gusSetVoiceFrequency
#define SetVoiceVolume gusSetVoiceVolume
#define SetVoicePanning gusSetVoicePanning
#define GetVoicePosition gusGetVoicePosition
#define GetVoiceFrequency gusGetVoiceFrequency
#define GetVoiceVolume gusGetVoiceVolume
#define GetVoicePanning gusGetVoicePanning
#define GetVoiceStatus gusGetVoiceStatus
#define SetAudioTimerProc gusSetAudioTimerProc
#define SetAudioTimerRate gusSetAudioTimerRate
#include "gusdrv.c"
#include "msdos.c"
static int __SEAL_BSS_END;
static int __SEAL_DATA_END = 0xCafe;
static int __SEAL_TEXT_END(void) { return 0; }
static void SEAL_LOCK_MEMORY(void)
{
/* lock in host memory the text, data and bss segments */
_go32_dpmi_lock_code(__SEAL_TEXT_BEGIN,
(long) __SEAL_TEXT_END - (long) __SEAL_TEXT_BEGIN);
_go32_dpmi_lock_data(&__SEAL_DATA_BEGIN,
(long) &__SEAL_DATA_END - (long) &__SEAL_DATA_BEGIN);
_go32_dpmi_lock_data(&__SEAL_BSS_BEGIN,
(long) &__SEAL_BSS_END - (long) &__SEAL_BSS_BEGIN);
/* lock conventional memory used for DMA buffers and IRQ callbacks */
_crt0_startup_flags |= _CRT0_FLAG_NEARPTR;
__djgpp_nearptr_enable();
_go32_dpmi_lock_data((void *) __djgpp_conventional_base, 640 << 10);
}