aboutsummaryrefslogtreecommitdiff
path: root/utils/midiplay
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2024-05-06 00:29:39 +0300
committerWohlstand <admin@wohlnet.ru>2024-05-06 00:29:39 +0300
commit01b56cd73039760fd8a319584c979aa10d50119b (patch)
treec02a473bbf707221c478c08199d187da91040c87 /utils/midiplay
parent5d80a4e766d07786856e8a8c96476c9c3de8d9c4 (diff)
downloadlibADLMIDI-01b56cd73039760fd8a319584c979aa10d50119b.tar.gz
libADLMIDI-01b56cd73039760fd8a319584c979aa10d50119b.tar.bz2
libADLMIDI-01b56cd73039760fd8a319584c979aa10d50119b.zip
MidiPlay: Added check for dmpi_yield on DOS
and use the "hlt" when "dmpi_yield" is unavailable
Diffstat (limited to 'utils/midiplay')
-rw-r--r--utils/midiplay/adlmidiplay.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/utils/midiplay/adlmidiplay.cpp b/utils/midiplay/adlmidiplay.cpp
index 542a3a1..1b5bf28 100644
--- a/utils/midiplay/adlmidiplay.cpp
+++ b/utils/midiplay/adlmidiplay.cpp
@@ -122,6 +122,7 @@ __inline int c99_snprintf(char *outBuf, size_t size, const char *format, ...)
#define HW_OPL_MSDOS
#include <conio.h>
#include <dos.h>
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
@@ -998,6 +999,10 @@ int main(int argc, char **argv)
# ifdef __DJGPP__
//disable();
+ int haveYield;
+ errno = 0;
+ __dpmi_yield();
+ haveYield = errno ? 0 : 1;
outportb(0x43, 0x34);
outportb(0x40, timerPeriod & 0xFF);
outportb(0x40, timerPeriod >> 8);
@@ -1192,7 +1197,10 @@ int main(int argc, char **argv)
//__asm__ volatile("sti\nhlt");
//usleep(10000);
# ifdef __DJGPP__
- __dpmi_yield();
+ if(haveYield)
+ __dpmi_yield();
+ else
+ __asm__ volatile("hlt");
# endif
# ifdef __WATCOMC__
//dpmi_dos_yield();