Skip to the content
PCBKitNew board
2 layers100 × 50 mmRc2014-ym2149, the printed circuit board in 3D

KiCad schematics and gerbers for a YM sound card for the RC2014. See it in action here: https://www.youtube.com/watch?v=-iLwi9FagFE

Size
100 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
37
Nets
99
Pads
242
Tracks, vias
964, 3
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
2 Apr 2017
Updated
10 Aug 2026

Overview

Rc2014-ym2149 is an open-source printed circuit board by electrified, from the electrified/rc2014-ym2149 repository on GitHub. It is a 2-layer board of 100 × 50 mm with 37 parts on 99 nets, routed with 964 tracks and 3 vias.

It is built around the 74HCT138D, 74HCT00D and 74HCT74D, with the SJ1-3523N among its other parts. Its parts include 7 capacitors, 7 resistors, 5 ICs, 3 connectors and 1 crystal. It belongs with the retro computing and games boards of this library.

Main components

4

README

README.md

YM2149F/AY-3-8190 Sound card for the RC2014 computer - Revision 6.1

The head of this repository contains the latest version - currently Rev 6.1. Please check the version of your board, and select the appropriate tag from the right to get the documentation for your board. e.g go here for the Rev 5 (most common) docs

Picture of the board

Video demonstration: https://www.youtube.com/watch?v=-iLwi9FagFE

The board

This is a YM2149F/AY-3-8910 sound card for the RC2014 Z80 8-bit computer. It adds the ability to play music on your RC2014!

What can you use this for?

  • Playing music for MSX or ColecoVision Super Game Module compatible software (you may also want a TMS9918A board)
  • Playing music ripped from spectrum games
  • Playing Spectrum Protracker 2/3 and tunes in MYM format
  • Adding music to your own games
  • Making music from BASIC or ASM!

Features

  • Stereo Line out, with golden ratio mixer.
  • Header for the 2 8-bit I/O ports. These could be used for reading from joysticks, additional serial ports, LED indicators etc.
  • Both YM2149F and AY-3-8910 ICs may be used
  • Supported in RomWBW
  • Possible to jumper to the same IO port as the ZX Spectrum AY
  • Known to work on the standard RC2014 setup, as well as on Steve Cousin's SC126 and SC130
  • Divides the RC2014 clock by 2 or 4 using flip flops to bring it under the 2Mhz max clock speed of the AY.
  • Supports enabling the YM2149F's internal clock divider. This means that bus speeds up to 16Mhz could be supported without overclocking the chip. (AY does not have this feature)
  • George Beckett has done some great work getting the board working on the Minstrel 4th Jupiter Ace compatible computer. See his repository here for information.

History

The Yamaha YM2149F and General Instrument AY-3-8910 are popular sound chips that were used in a wide variety of computers and arcade machines in the 1980s and 1990s. The most notable of those being the ZX Spectrum 128, Atari ST and MSX computers.

Construction Steps

  1. If you have bought one of Spencer's kits, obtain a YM2149 chip from your local friendly eBay seller :)
  2. Verify the components supplied in the kit match up with bill of materials
  3. Solder the components to the board, matching the components in the BOM to the component references printed on the PCB, starting with the lowest height ones first e.g. bypass capacitors and resistors, then moving on to IC sockets, pin headers and do the electrolytic capacitors and output jack last.
  4. Insert the ICs in their sockets. The component reference marking on the PCB (e.g. U1) is nearest to pin 1 for all ICs
  5. If you have a Z80 based system, configure the jumpers on the board so it looks like the picture in the README. This will ensure it is at the right IO address.
  6. Insert board into backplane/SBC
  7. Boot into RomWBW ensure you have the "tune.com" application (it's not included in the ROM drive but should be on the disk images)
  8. Find some music to play. There are some example files in https://github.com/wwarthen/RomWBW/tree/dev/Source/Apps/Tune/Tunes that you could transfer to the system.
  9. Use tune.com to play the music file. If you download the RomWBW*-Package.zip corresponding to whatever version of RomWBW you are using the from the releases page here https://github.com/wwarthen/RomWBW/releases, the tune.com executable will be in the Binary/Apps directory.

Bill Of Materials

Picture of the board

QtySchematic ReferenceDescription
2U1 U216 pin DIP socket 2.54 mm pin pitch, 7.62 mm wide
1U540 pin DIP socket, 2.54mm pin pitch, 15.24mm wide
1U5Yamaha YM2149F or General Instrument AY-3-8910
1U474HCT74
2U3 U414 pin DIP socket 2.54 mm pin pitch, 7.62 mm wide
1U374HCT00
2U1 U274HCT138
2R6 R71k6 ohm 1/4 watt metal film resistor
2R4 R51k ohm 1/4 watt metal film resistor
3R1 R2 R33k ohm 1/4 watt metal film resistor
1P140 pin right angled 2.54mm header
1CON13 or 5 pin 3.5mm PCB mount jack socket (e.g. SJ1-3525N - mouser part 710-860020472001)
2C6 C74.7uF electrolytic capacitor
5C1 C2 C3 C4 C50.1uF ceramic capacitor 2.54 mm pin pitch
7JP1-5 JP8-JP93 x 1 straight pin header 2.54 mm pin pitch
1JP72 x 1 straight pin header 2.54 mm pin pitch
1JP69 x 2 straight pin header 2.54 mm pin pitch
1J29 x 2 straight pin header 2.54 mm pin pitch
1X1Half size Oscillator socket (or DIP-8 socket with middle pins removed)
5VariousJumpers

The majority of the components are widely available, however both the AY-3-8910 and YM2194F are unfortunately not in production any more, but reclaimed chips are available fairly plentifully on eBay from suppliers in China. I would suggest using a standard 40 pin DIL socket for the AY as they are more accommodating to bent/soldered pins than a turned pin ones.

Addressing

The board contains a set of jumpers to select the address at which the sound chip will respond to commands. The jumpers settings are described in detail below.

"Normal" or MSX addressing mode is recommended.

The "default" addresses for this board are register write 0xA0, data write 0xA1, data read 0xA2 These correspond to the RomWBW AYMODE == AYMODE_MSX setting. See here.

Normal/MSX/ColecoVision addressing

MSX mode uses standard 8-bit port addressing. This board allows the base address to be any value from 00-F0 (MSX uses A0 and ColecoVision SGM uses 50 for the PSG's base address). Different ports in the lower nybble are used for reading and writing the address and data registers. Writing to port X0h selects the PSG register. Writing to port X1h writes the selected PSG register value and reading port X2h reads the selected PSG register value.

i.e. for MSX: Configure base address: A0h Register write address: A0h Data write address: A1h Data read address: A2h

and ColecoVision Configure base address: 50h Register write address: 50h Data write address: 51h Data read address: 52h

ZX Spectrum addressing

ZX Spectrum mode uses an uncommon 16-bit I/O addressing scheme for the PSG. This is possible since the Z80 puts the value of the B register on the upper 8 bits of the address bus when performing an IN r, (C) or OUT (C), r instruction. Setting A15 to 1 and A1 to 0 enables the PSG and A14 distinguishes between PSG address and data registers. To select a PSG register, set BC to FFFDh and use OUT (C), r to select the address in r. To write a value to the selected PSG register set BC to BFFDh and use OUT (C), r to write the value in r. To read the selected PSG register value, set BC to FFFDh and use IN r, (C). Note that r must be A, D, E, H, or L since B and C are required for addressing. Also note that OUT (n), A and IN A, (n) instructions won't work since they put the value of A on the upper 8 bits of the address bus.

Compatibility with Rev 5

REV6 no longer supports the D0/D8 addresses used by default in REV5 and earlier (AYMODE_RC2014 in RomWBW). REV6 introduced MSX-compatible addressing and supporting addresses used by REV5 and earlier would have required additional chips. This seems like a fair tradeoff since existing software that uses the original default addresses for this board is minimal compared to software that uses the MSX or Spectrum addressing schemes.

Note: Pin 1 on each jumper is identified by having square pad.

JP1-JP3

Select between MSX and ZX Spectrum decoding. All 3 jumpers should all be set to either MSX or ZX Spectrum mode. For Spectrum mode, JP6 must also be set in position 17-18. Mixing modes on different jumpers will result in nonsensical address decoding.

pinsdescription
1-2 (Left Position)Normal/MSX/ColecoVision
2-3 (Right Position)ZX Spectrum

JP5

Selects the upper or lower half of the address range selected by JP6.

pinsdescription
1-2 (Left position)Upper (odd) half
2-3 (Right position)Lower (even) half

JP6

Selects the base address for MSX addressing mode. For Spectrum addressing, the rightmost position (17-18) must be used. MSX addressing can use any base address from 00-F0, where JP6 selects the 3 most significant bits. JP5 is used to set A4, thus selecting the lower or upper half of the range chosen by JP5.

pinswith JP5 on 1&2
1-2 (Bottom most position)0x00
3-40x20
5-60x40
7-80x60
9-100x80
11-120xA0 (MSX Compatible)
13-140xC0
15-160xE0
17-18 (Top most position)Spectrum Mode
pinswith JP5 on 2&3
1-2 (Bottom most position)0x10
3-40x30
5-60x50 (ColecoVision SGM compatible)
7-80x70
9-100x90
11-120xB0
13-140xD0
15-160xF0
17-18 (Top most position)Spectrum Mode

JP7

YM2149 only, internally halve clock if jumpered

JP8

Use bus clock or onboard oscillator

pinsdescription
1-2Oscillator
2-3Bus clock

JP9

Clock divisor. Divides the bus or oscillator

pinsdescription
1-2Divide by 2
2-3Divide by 4 - Default

Outputs

CON1 - 3.5mm audio out

J2 - 2 8 bit I/O ports

How to use from BASIC

See the BASIC programs in player/test. descend.bas plays some descending tones, io_in.bas demonstrates reading from the IO port, and io_out.bas demonstrates writing to an IO port.

How to use from RomWBW

Wayne has incorporated a player called "Tune" into RomWBW that will play PT2, PT3 and MYM files. See here for the source: https://github.com/wwarthen/RomWBW/tree/master/Source/Apps/Tune. It should be present within RomWBW disk images.

Alternatively start the Microsoft BASIC interpreter mbasic, and refer to the above BASIC examples.

MSX Configuration

#A0 (write) Register write port #A1 (write) Value write port #A2 (read) Value read port

Sources for music to play

ZXArt is my favourite site: https://zxart.ee/eng/music/mainpage/

http://zxtunes.com/ is another massive collection.

http://ftp.kameli.net/pub/mym/ has a collection of MYM files

This tool compresses YMs to MYMs, which makes a lot of music available: http://osdk.org/index.php?page=documentation&subpage=ym2mym although your mileage may vary, I found some YMs weren't convertible.

This is a large archive of YM tunes to try with the above tool: ftp://ftp.modland.com/pub/modules/YM/

The CPC Power site has a lot of Amstrad YMs: https://www.cpc-power.com/index.php?page=database

There are some PT2s, PT3s and YMs on Sergei Bulba's site: http://bulba.untergrund.net/music_e.htm (although a lot of tunes in other formats)

Credits

  • Some ideas and the golden ratio output mixing were taken from the Melodik 2 design here: http://hw.speccy.cz/melodik2.html
  • MSX decoding, many thanks to J.B. Langston

License

Copyright Ed Brindley 2017-2022.

This source describes Open Hardware and is licensed under the CERN-OHL-P v2 You may redistribute and modify this documentation and make products using it under the terms of the CERN-OHL-P v2 (https:/cern.ch/cern-ohl). This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions

Parts

37
QtyValueFootprintReferences
50.1uFCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC1, C2, C3, C4, C5
33KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3
3MSX/ZX SpectrumConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP1, JP2, JP3
21KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4, R5
21K6Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6, R7
24.7uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC6, C7
274HCT138Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU1, U2
174HCT00Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU3
174HCT74Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU4
1BASE ADDRESSConnector_PinHeader_2.54mm:PinHeader_2x09_P2.54mm_VerticalJP6
1CLOCK DIVIDE 1/2 or 1/4Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP9
1CXO_DIP8Package_DIP:DIP-8_W7.62mm_Socket_LongPadsX1
1IO OutConnector_PinHeader_2.54mm:PinHeader_2x09_P2.54mm_VerticalJ2
1LOGOrc2014:designed_for_rc2014G2
1LOGOrc2014:rev61G5
1LOGOrc2014:ym_text2G1
1LOGOrc2014:speakerG***
1MountingHoleMountingHole:MountingHole_3.2mm_M3H1
1RC2014 BUSrc2014:PinHeader_1x39_P2.54mm_VerticalP1
1SJ1-3523Nrc2014:Headphone_Jack_3.5mm_5_pinCON1
1Upper/lower halfConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP5
1Use bus clockConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP8
1YM 1/2 CLKConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP7
1YM2149Package_DIP:DIP-40_W15.24mm_Socket_LongPadsU5

The 36 most common of 37 parts.

Questions

How big is the Rc2014-ym2149 PCB?

It measures 100 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Rc2014-ym2149 use?

37 parts, built around the 74HCT138D, 74HCT00D, 74HCT74D and SJ1-3523N. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Rc2014-ym2149 KiCad files?

From the electrified/rc2014-ym2149 repository on GitHub, at the commit this page was made from: the board is rc2014-ym2149.kicad_pcb and its schematic rc2014-ym2149.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Rc2014-ym2149 design in my own project?

Its repository states no licence, so its author keeps all rights: ask electrified before reusing the design.

Similar boards

  • 2 layers200 × 150 mmMSX ONE, the printed circuit board in 3D

    MSX ONE

    jdgabbard/MSX-ONE-Computer

    MSX 1 Computer from discrete parts

    114 parts28GPL-3.0
  • 2 layers100 × 80 mmMini8085Ext, the printed circuit board in 3D

    Mini8085Ext

    skiselev/minimax8085-apu-ext

    Arithmetic Processor and Extension Board for MiniMax 8085 SBC

    42 parts13
  • 2 layers184 × 80 mmAdcboard, the printed circuit board in 3D

    Adcboard

    nuclearfutureslab/ibxII-hardware

    Hardware for IBX ][ - nuclear warhead verification with an Apple II

    126 parts5GPL-3.0
  • 2 layers101.6 × 50.8 mmRc2014 monitor, the printed circuit board in 3D

    Rc2014 monitor

    Hyiger-Designs/rc2014_monitor

    Monitor Board for the RC2014

    62 parts2OSL-3.0
  • 2 layers368.3 × 215.9 mmTTL 6510 Computer fab, the printed circuit board in 3D

    TTL 6510 Computer fab

    StefansAI/TTL-6510-Computer

    Yet another CPU made from TTL chips

    330 parts1
  • 4 layers280 × 140 mmP8x alu card, the printed circuit board in 3D

    P8x alu card

    ksr/p8x

    Generated by generators/genkicad.py from the canonical geneagle netlist (CARDS["peripheral-card"]), same standard as the memory card: 4-layer (F/B signals, In1=GND, In2=VCC planes), a bypass cap above each IC, a…

    77 parts
  • 2 layersLM80C R6, the printed circuit board in 3D

    LM80C R6

    leomil72/LM80C

    A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

    153 parts123GPL-3.0
  • 2 layers106 × 95.4 mmHardmpu wt, the printed circuit board in 3D

    Hardmpu wt

    PickledDog/hardmpu-wt

    HardMPU with wavetable module support

    50 parts30Apache-2.0