summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/portmedia/pmmidi.c
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2013-01-31 05:47:51 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2013-01-31 05:47:51 +0000
commit39f48b0bee65cba39c30338d200a6e9650789ac3 (patch)
tree591ce11b644cee974364611ff580fd0ae973de71 /src/osd/portmedia/pmmidi.c
parentb03019053e787c9b0e8c49a6edb76d34d5a48897 (diff)
(MESS) SoundBlaster: MIDI Out support for single-byte, SB UART, and MPU-401 UART modes. [R. Belmont]
Diffstat (limited to 'src/osd/portmedia/pmmidi.c')
-rw-r--r--src/osd/portmedia/pmmidi.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/osd/portmedia/pmmidi.c b/src/osd/portmedia/pmmidi.c
index 7067cbe3aa3..42714cfc980 100644
--- a/src/osd/portmedia/pmmidi.c
+++ b/src/osd/portmedia/pmmidi.c
@@ -243,6 +243,20 @@ void osd_write_midi_channel(osd_midi_device *dev, UINT8 data)
#ifndef DISABLE_MIDI
int bytes_needed = 0;
+ // skip sysex data
+ if (dev->last_status == 0xf0)
+ {
+ if (data != 0xf7)
+ {
+ return;
+ }
+ else
+ {
+ dev->last_status = 0xf7;
+ return;
+ }
+ }
+
if ((dev->xmit_cnt == 0) && (data & 0x80))
{
dev->last_status = data;
@@ -258,6 +272,13 @@ void osd_write_midi_channel(osd_midi_device *dev, UINT8 data)
dev->xmit_in[dev->xmit_cnt++] = data;
}
+ if ((dev->xmit_cnt == 1) && (dev->xmit_in[0] == 0xf0))
+ {
+ dev->xmit_cnt = 0;
+ dev->last_status = 0xf0;
+ return;
+ }
+
// are we there yet?
switch ((dev->xmit_in[0]>>4) & 0xf)
{