diff options
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 |
commit | 39f48b0bee65cba39c30338d200a6e9650789ac3 (patch) | |
tree | 591ce11b644cee974364611ff580fd0ae973de71 /src/osd/portmedia/pmmidi.c | |
parent | b03019053e787c9b0e8c49a6edb76d34d5a48897 (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.c | 21 |
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) { |