Introduction

I got the idea of a YM2149 Sound card for the QX-10 after seeing one that was designed for the RC2014 system. Since the only sound the QX-10 orignally had was a basic PC Beeper, I thought it would be cool to build a more advanced sound card built around the YM2149. As a bonus I stuck a 26-pin header header that can be connected to an external MPU-401 to provide MIDI support.

Schematic

The sound card allows selecting of the base IO address via jumper J2, the software is compiled to use a base of 0xC0. This is then further divided into 4 seperate IO address used by the sound card.

  • 0x00 - The register latch used by the YM2149 chip. (write only)
  • 0x01 - The data port for the YM2149. (read/write)
  • 0x02 - The MPU-401 data port. (read/writre)
  • 0x03 - The status/command port for the MPU-401. (read/write)

The jumper J4 is to select which interrupt (INTL, INTh1, INTH2) is connected to the INT line on the MPU-401. If you don’t wish to enable interrupts you can leave it unconnected to disable interrupts.

J1 is the stereo output and is produced by mixing the three YM2149 channels using a set of resisters.

Bill of Materials
Ref Description Part
C1,C2 470uf Capacitor ECA-1CM471
C3-C11 0.1uf Capacitor RDER72A104K1S1H03A
J1 3.5mm Jack SJ1-3533NG
J2 2x8 Pin Header 77313-418-16LF
J3 2x13 Right Angle Pin Header 68021-426HLF
J4 2x3 Pin Header 10129381-906002BLF
R1-R3 3k Resistor MFR-25FRF52-3K
R4,R5,R8 1k Resistor MFR-25FRE52-1K
R6,R7 1.6k Resistor MFR-25FRF52-1K6
U1 Programable Sound Generator YM2149
U2,U8 74LS138 SN74LS138N
U3,U9 74LS08 SN74LS08N
U4 74LS245 SN74LS245N
U5 74LS541 SN74LS541N
U6 74LS00 SN74LS00N
U7 74LS86 SN74LS86AN

Note: The external MPU-401 support has not yet been tested with real hardware.

CP/M Support

For the YM2149 support I am using a modified version of tune.com from RomWBW that was ported to plain CP/M and then has a few changes made by me to make it work with the QX-10 and allow it to be assembled with z88dk.

Since there was never any MIDI software written for the QX-10 I wrote a simple program using z88dk called mpu401.com that will play a scale using a specified MIDI channel. Using that you can connect an MPU-401 and a MT-32 or other MIDI output device up and you should be able to hear the scale played over your MIDI device.