Outside of the interrupt-driven playback of Legend Entertainment titles, most DOS games requiring an intelligent-mode MPU-401 yet handle their own MIDI playback timing, and only leverage the "intelligent" features of the MPU-401 in a very rudimentary sense, looking something like the following:
MPU Reset
o 0x331 0xFF - MPU Reset
i 0x330 0xFE - Command Acknowledged
SysEx Transmission
o 0x331 0xDF - Want To Send System Message
i 0x330 0xFE - Command Acknowledged
o 0x330 0xF0 - Start of Exclusive
...
o 0x330 0xF7 - End of Exclusive
MIDI Message #1
o 0x331 0xD0 - Want To Send Data (on Track 1)
i 0x330 0xFE - Command Acknowledged
o 0x330 1st Byte of MIDI Message
o 0x330 2nd Byte of MIDI Message
o 0x330 3rd Byte of MIDI Message (if applicable)
MIDI Message #2
o 0x331 0xD0 - Want To Send Data (on Track 1)
i 0x330 0xFE - Command Acknowledged
o 0x330 1st Byte of MIDI Message
o 0x330 2nd Byte of MIDI Message
o 0x330 3rd Byte of MIDI Message (if applicable)
So on, and so forth.
The majority of UART-only MPU-401 implementations only recognize/acknowledge the "0xFF: Reset" and "0x3F: UART mode" commands. Even with the limited example given above, you can see why this would be an issue, as (poorly-coded) software expecting acknowledgement of unsupported MPU commands will simply wait forever, resulting in hanging behavior (Hi, Sierra On-Line!).
Some hardware vendors took a slightly different approach, and designed their UART-only MPU-401 implementations to acknowledge all MPU commands, irrespective of underlying support, while also allowing/sending subsequent data bytes in "non-UART" mode. Given the example above again, you can see why this would successfully allow software expecting an "intelligent-mode" MPU-401 to work with such interfaces.
Soundcards that I've found to offer this "faux" intelligent-mode MPU-401 support include:
- Ensoniq's entire Soundscape line
- Mediatrix' Audiotrix Pro
- Yamaha's SW20-PC (lacks external MPU-401 MIDI OUT - "SB-MIDI" only)
- Yamaha's SW60XG (lacks external MIDI OUT)
Crystal/Cirrus Logic chipsets are an interesting case in that they will similarly acknowledge all MPU commands in "non-UART" mode, but subsequently ignore any data writes, so while the hanging behavior is avoided, there's no MIDI output to be had.
SoftMPU arguably makes this a moot point, but given "hardware-based" MPU-401 criterion, and for several other reasons besides, an expanded Audiotrix Pro is about as close to a one-card solution as I've ever found.