From 07381b13b0da01d25d0b26c764ead9ec34806c9f Mon Sep 17 00:00:00 2001 From: William Harrington Date: Wed, 22 May 2019 16:28:12 -0500 Subject: Use README data from SN76489 jblang github site. --- addon/SN76489/README.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) (limited to 'addon/SN76489') diff --git a/addon/SN76489/README.md b/addon/SN76489/README.md index 133af44..132415e 100644 --- a/addon/SN76489/README.md +++ b/addon/SN76489/README.md @@ -1 +1,84 @@ -https://www.tindie.com/products/mfkamprath/sn76489-sound-card-kit-for-rc2014/ +# SN76489 Sound Card for RC2014 + +This is a SN76489-based sound card for the RC2014. It is a very simple chip, only capable of producing square waves and a noise channel, without any envelope control or filters. This chip was used in the TI-99/4A, ColecoVision, Sega SG-1000, Sega Master System, Sega Genesis, IBM PCjr, Tandy 1000, BBC Micro, as well as many arcade games. + +The board can optionally support two SN76489 chips for 6 channel stereo sound, but currently this is unsupported by any software. If stereo sound is not desired, then the second chip and its supporting components can be omitted. + + +## Assembly Instructions + +[Ready-to-Assemble Kits](https://www.tindie.com/products/mfkamprath/sn76489-sound-card-kit-for-rc2014/) are available on Tindie. These are sold by Michael Kamprath with my permission. However, I offer no warranty or guarantee of support. + +[Gerbers](https://cdn.hackaday.io/files/1590576805094688/SN76918_rev1_gerbers.zip) for the PCB are available. I highly recommend [JLCPCB](https://jlcpcb.com/) for PCB fabrication. Alternatively, boards can be ordered from the shared project on [OSH Park](https://oshpark.com/shared_projects/e6PXAnrA). + +Refer to the [schematic](SN76489.pdf), the picture below, and the bill of materials below for assembly guidance. + +![SN76489 PCB](board.jpg) + +### Bill of Materials + +All parts except for the SN76489 are available from Mouser. The SN76489 can be obtained from eBay. + +| Reference | Part | +|-|-| +| J1, J5 | 2x40 right angle pin header with extra pins removed from top row | +| JP1, JP2 | 1x3 straight pin header | +| J7, J9* | 2x8 straight pin header | +| J6 | 2x9 straight pin header | +| J8* | 2x10 straight pin header | +| J11 | 2x3 stright pin header | +| | Jumper blocks for each jumper (9 total) | +| J2 | CUI SJ1-3523N audio jack | +| C1-C3, C6-C7 | 0.1uf ceramic disc or MLCC capacitor | +| C4, C5* | 470 uf electrolytic capacitor | +| U2, U3** | 74HCT138 3-8 line decoder | +| U1, U4* | TI SN76489 sound chip | +| U5*** | 74HCT74 dual D-type flip-flop | + +Some components are optional: + +*U4, C3, C5, J8 and J9 can be omitted if you do not want stereo sound. + +**U3 and C2 can be omitted if you don't need tight address decoding. + +***U5 and C6 can be omitted if you don't need a clock divider. + + +## Configuration Jumpers + +### Addresses + +The board uses two 138 decoders and a set of jumpers to decode the addresses for the sound chips, but the second decoder can be omitted if tight decoding is not required. With only one decoder, each chip will occupy 32 addresses. With two decoders, the decoding can be narrowed to a range of 4 addresses per chip. Each chip's address can be individually configured via jumpers. If using the second decoder, both chips must be assigned a 4 address range within the same 32 address block. + +- **J6** and **J7** configure the left chip, and **J8** and **J9** configure the right chip. +- **J7** and **J9** select the top 3 bits of the address, with the following ranges, from top to bottom: 00-1F, 20-3F, 40-5F, 60-7F, 80-9F, A0-BF, C0-DF, E0-FF +- **J6** and **J8** select the next 3 bits of the address. In the bottom position, the second decoder is not used, so the full 32-address range will match. Each of the 8 positions selects a range of 4 addresses: X0-X3, X4-X7, X8-XB, XC-XF, Y0-Y3, Y4-Y7, Y8-YB, and YC-YF, where X is the lower half and Y is the upper half of the 32-address range selected by **J7**. **J8** has one additional jumper in the topmost position which completely disables the right chip. +- **JP2** selects mono (left) or stereo (right) operation. In mono mode, the left chip is connected to both left and right channels on the audio jack. + +A few examples: + +- For the full ColecoVision address range: **J7** and **J9** in the bottom position. **J8** in the topmost position. This sets the left chip to E0-FF and disables the right chip. Set **JP2** to mono (left). +- For ColecoVision compatibility with most games while using a tighter address range: **J7** in the bottom position, **J9** doesn't matter, **J6** in position 8, and **J8** in position 8 (counting from the top). This sets the left chip to FC-FF and the right chip F8-FB. **J8** can also be set to the topmost position to disable the right chip. Most ColecoVision games use FF to access the sound chip but it's possible some games may use ports outside of this range. Set **JP2** to mono (left) when playing ColecoVision games or to stereo (right) if you want use software that supports both chips. + +### Clock + +A 74HCT74 is used to optionally divide the incoming clock by 2 or 4. The maximum clock frequency supported by the SN76489 is 4MHz, so the divider must be used if the incoming clock frequency is higher than that. + +- **JP1** selects the clock source from the RC2014 bus. The lower position selects CLK1 and the upper position selects CLK2. +- **J11** selects the clock divider: /1 (left), /2 (middle) or /4 (right). + +The input clock frequency affects the frequency of the tones generated by the sound chip. If you change the input clock frequency, you will need to adjust the note tables in your software to compensate. Refer to the SN76489 manual for details. + +## Resources + +- [SN76489 Manual](http://www.vgmpf.com/Wiki/images/7/78/SN76489AN_-_Manual.pdf) +- [SN76489 Development](http://www.smspower.org/Development/SN76489) +- [The Z80 and the SN76489](https://bumbershootsoft.wordpress.com/2018/03/24/genesis-the-z80-and-the-sn76489/) + +Copyright 2018 J.B. Langston + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- cgit v1.2.3-54-g00ecf