diff options
author | Wohlstand <admin@wohlnet.ru> | 2024-05-06 00:29:39 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2024-05-06 00:29:39 +0300 |
commit | 01b56cd73039760fd8a319584c979aa10d50119b (patch) | |
tree | c02a473bbf707221c478c08199d187da91040c87 /utils/midiplay/adlmidiplay.cpp | |
parent | 5d80a4e766d07786856e8a8c96476c9c3de8d9c4 (diff) | |
download | libADLMIDI-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/adlmidiplay.cpp')
-rw-r--r-- | utils/midiplay/adlmidiplay.cpp | 10 |
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(); |