From 2573117b74f2a510c80994e2798df35197f0e3e1 Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Tue, 30 May 2017 20:09:30 -0400 Subject: ay8910.cpp: add pinout, remove outdated comments from .h [Lord Nightmare] --- src/devices/sound/ay8910.cpp | 92 ++++++++++++++++++++++++++++++++++++++++++++ src/devices/sound/ay8910.h | 15 -------- 2 files changed, 92 insertions(+), 15 deletions(-) diff --git a/src/devices/sound/ay8910.cpp b/src/devices/sound/ay8910.cpp index b0eaabbcc69..bc1cf3bffef 100644 --- a/src/devices/sound/ay8910.cpp +++ b/src/devices/sound/ay8910.cpp @@ -251,6 +251,98 @@ has twice the steps, happening twice as fast. ***************************************************************************/ +/** +AY-3-8910/8914/YM2149 (YM3439? others?) + _______ _______ + _|* \__/ |_ + [4] VSS (GND) -- |_|1 40|_| -- VCC (+5v) + _| |_ + [5] NC |_|2 39|_| <- TEST 1 [1] + _| |_ + ANALOG CHANNEL B <- |_|3 38|_| -> ANALOG CHANNEL C + _| |_ + ANALOG CHANNEL A <- |_|4 37|_| <> DA0 + _| |_ + [5] NC |_|5 36|_| <> DA1 + _| |_ + IOB7 <> |_|6 35|_| <> DA2 + _| |_ + IOB6 <> |_|7 34|_| <> DA3 + _| /---\ |_ + IOB5 <> |_|8 \-/ | A 33|_| <> DA4 + _| . . Y |_ + IOB4 <> |_|9 |---| - S 32|_| <> DA5 + _| ' ' 3 O |_ + IOB3 <> |_|10 8 - U 31|_| <> DA6 + _| 3 8 N |_ + IOB2 <> |_|11 0 9 D 30|_| <> DA7 + _| 8 1 |_ + IOB1 <> |_|12 0 29|_| <- BC1 + _| P |_ + IOB0 <> |_|13 28|_| <- BC2 + _| |_ + IOA7 <> |_|14 27|_| <- BDIR + _| |_ + IOA6 <> |_|15 26|_| <- TEST 2 [2] + _| |_ + IOA5 <> |_|16 25|_| <- A8 [3] + _| |_ + IOA4 <> |_|17 24|_| <- /A9 [3] + _| |_ + IOA3 <> |_|18 23|_| <- /RESET + _| |_ + IOA2 <> |_|19 22|_| == CLOCK + _| |_ + IOA1 <> |_|20 21|_| <> IOA0 + |__________________| + +[1] Based on the decap, TEST 1 affects the Envelope Generator and/or the + frequency divider somehow. +[2] The TEST 2 input connects to the same selector as A8 and /A9 do on the 8910 + and appears to act as just another active high enable like A8(pin 25) and + has an internal pull-up so if left NC the chip remains enabled. + On the 8914, it performs the same above function but additionally ?disables? + the DA0-7 bus if pulled low/active. This additional function was removed + on the 8910. + on YM2149 and YM3439 this pin is /SEL, if low, clock input is /2 +[3] It is possible for A8 and /A9 pins to be mask programmed to have different + active polarities. This might be true on the AY-3-8916/17 parts used on the + Intellivision ECS module? (not the Keyboard module?) +[4] The bond wire for the VSS pin goes to the substrate frame, and then a + separate bond wire connects it to a pad between pins 21 and 22 +[5] These pins lack internal bond wires entirely. + +AY-3-8910/A: 2 I/O ports +AY-3-8912/A: 1 I/O port; /A9 doesn't exist and is considered pulled low. +AY-3-8913/A: 0 I/O port; BC2 pin doesn't exist and is considered pulled high. + Factory default for these three types when writing address data to them is: + /A9 must be low, A8 must be high, A7 thru A4 must be low. + A7 thru A4 enable state can be changed with a factory mask adjustment but + default was 0000 for the "common" part shipped. + The 'A' version of the 3 above have a re-laid out die, unclear if there are + any behavior changes vs the non-'A' version. +AY-3-8914: same as 8910 except for different register mapping and two bit + envelope enable / volume field. + Factory default for these three types when writing address data to them is: + /A9 must be low, A8 must be high, A7 thru A4 must be low. + A7 thru A4 enable state can be changed with a factory mask adjustment but + are unknown for the one known part shipped, used in the Intellivision. +AY8930: mostly backwards compatible with 8910, except like the AY-3-8913, the + BC2 pin is considered tied high/permanently '1'. + If the AY8930's extended mode is enabled, it gains higher resolution + frequency and volume control, separate volume per-channel, and the duty + cycle can be adjusted for the 3 channels. If the mode is not enabled, it + behaves exactly(?) like an AY-3-8910. +YM2149: The envelope register has 5 bits of resolution internally, allowing for + smoother volume ramping, though the register for setting its direct value + remains 4 bits wide. The chip also has a selectable clock divider on pin 26 + (/SEL), which was /TEST2 on the AY-3-8910. If low, the input clock is halved. +YM3439: limited info: CMOS version of YM2149? +YMZ284: limited info: 0 I/O port, different clock divider +YMZ294: limited info: 0 I/O port +OKI M5255, Winbond WF19054, JFC 95101, File KC89C72, Toshiba T7766A : differences to be listed +*/ + #include "emu.h" #include "ay8910.h" diff --git a/src/devices/sound/ay8910.h b/src/devices/sound/ay8910.h index 44c04bf36b0..cf910729a69 100644 --- a/src/devices/sound/ay8910.h +++ b/src/devices/sound/ay8910.h @@ -5,21 +5,6 @@ #pragma once - -/* -AY-3-8910A: 2 I/O ports -AY-3-8912A: 1 I/O port -AY-3-8913A: 0 I/O port -AY-3-8914: same as 8910 except for different register mapping and two bit envelope enable / volume field -AY8930: upper compatible with 8910. -In extended mode, it has higher resolution and duty ratio setting -YM2149: higher resolution, selectable clock divider -YM3439: same as 2149 -YMZ284: 0 I/O port, different clock divider -YMZ294: 0 I/O port -OKI M5255, Winbond WF19054, JFC 95101, File KC89C72, Toshiba T7766A : differences to be listed -*/ - #define ALL_8910_CHANNELS -1 /* Internal resistance at Volume level 7. */ -- cgit v1.2.3