<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Yamaha_YM2149_Manual</id>
	<title>Yamaha YM2149 Manual - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Yamaha_YM2149_Manual"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;action=history"/>
	<updated>2026-05-13T18:26:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;diff=19570&amp;oldid=prev</id>
		<title>&gt;Tompee: categorise</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;diff=19570&amp;oldid=prev"/>
		<updated>2006-10-15T12:08:40Z</updated>

		<summary type="html">&lt;p&gt;categorise&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:08, 15 October 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l394&quot;&gt;Line 394:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 394:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Back to &lt;/del&gt;[[Programming]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category:&lt;/ins&gt;Programming]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Tompee</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;diff=19569&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 09:23, 13 September 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;diff=19569&amp;oldid=prev"/>
		<updated>2006-09-13T09:23:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:23, 13 September 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l392&quot;&gt;Line 392:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 392:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;NOTE - The writing to register RD will reset the envelope frequency clock&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;NOTE - The writing to register RD will reset the envelope frequency clock&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre?&amp;lt;/pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Back to [[Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;diff=19568&amp;oldid=prev</id>
		<title>&gt;Ggn at 12:15, 12 September 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Yamaha_YM2149_Manual&amp;diff=19568&amp;oldid=prev"/>
		<updated>2006-09-12T12:15:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
           Yamaha YM2149&lt;br /&gt;
&lt;br /&gt;
Software-Controlled Sound Generator (SSG)&lt;br /&gt;
-----------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overview&lt;br /&gt;
&lt;br /&gt;
The SSG (Software-Controlled Sound Generator) is an NMOS-LSI device designed&lt;br /&gt;
to be capable of music generation. It only requires the microprocessor or&lt;br /&gt;
microcomputer (CPU) to initialize its register array, thus reducing the load&lt;br /&gt;
on the CPU. Music generation is carried out by the three sequence square wave&lt;br /&gt;
generator, noise generator, and envelope generator according to the set&lt;br /&gt;
parameters. This allows for the generation of music, special effects,&lt;br /&gt;
warnings, and various other types of sounds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Features&lt;br /&gt;
&lt;br /&gt;
5V single power supply&lt;br /&gt;
Easy connection to 8 bit or 16 bit CPU&lt;br /&gt;
Simple connection to external system through 2 sequence 8 bit I/O port&lt;br /&gt;
Wide voicing range of 8 octaves&lt;br /&gt;
Smooth attenuation by 5 bit envelope generator&lt;br /&gt;
Built-in 5 bit D/A convertor&lt;br /&gt;
Input of double frequency clock can be handled by built-in clock frequency&lt;br /&gt;
 divider&lt;br /&gt;
TTL compatible level&lt;br /&gt;
Low power consumption (typical 125mW)&lt;br /&gt;
40 pin plastic DIL package&lt;br /&gt;
Pin compatible with AY-3-8910 manufactured by GI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pin Layout&lt;br /&gt;
&lt;br /&gt;
        Vss(GND) 1          40 Vcc(+5V)&lt;br /&gt;
             N.C 2          39 Test1&lt;br /&gt;
Analog Channel B 3          38 Analog Channel C&lt;br /&gt;
Analog Channel A 4          37 DA0&lt;br /&gt;
             N.C 5          36 DA1&lt;br /&gt;
            IOB7 6          35 DA2&lt;br /&gt;
            IOB6 7          34 DA3&lt;br /&gt;
            IOB5 8          33 DA4&lt;br /&gt;
            IOB4 9          32 DA5&lt;br /&gt;
           IOB3 10          31 DA6&lt;br /&gt;
           IOB2 11          30 DA7&lt;br /&gt;
           IOB1 12          29 BC1&lt;br /&gt;
           IOB0 13          28 BC2&lt;br /&gt;
           IOA7 14          27 BDIR&lt;br /&gt;
           IOA6 15          26 SEL&lt;br /&gt;
           IOA5 16          25 A8&lt;br /&gt;
           IOA4 17          24 A9&lt;br /&gt;
           IOA3 18          23 RESET&lt;br /&gt;
           IOA2 19          22 CLOCK&lt;br /&gt;
           IOA1 20          21 IOA0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Block diagram&lt;br /&gt;
&lt;br /&gt;
  A9 A8     BDIR BC2 BC1          DA7~DA0&lt;br /&gt;
   o o        o   o   o             |&lt;br /&gt;
   | |        |   |   |             |&lt;br /&gt;
   | |        |   |   |             |&lt;br /&gt;
   | |   --- Bus Control ---o  Bidirectional      -----o I/O Port A &amp;lt;=&amp;gt; IOA7~IOA0&lt;br /&gt;
   | |   |    Decoder    o---     buffer          |&lt;br /&gt;
   | |   |                          o             |&lt;br /&gt;
   | |   |                          |             |&lt;br /&gt;
   | |   o                          o             |&lt;br /&gt;
   Register Addr --o Address --o Register o-------|&lt;br /&gt;
      Latch          Decoder      Array           -----o I/O Port B &amp;lt;=&amp;gt; IOB7~IOB0&lt;br /&gt;
                                    o&lt;br /&gt;
                                    |&lt;br /&gt;
       --------------------------------------&lt;br /&gt;
       |          |     |     |             |&lt;br /&gt;
       o          o     |     o             o&lt;br /&gt;
     Noise      Music   |  Envelope       Level         Frequency&lt;br /&gt;
   Generator  Generator |  Generator --o Control o-----  divider  ---o CLOCK&lt;br /&gt;
       |          |     |                   |   master      |&lt;br /&gt;
       |          o     |                   |    clock      |&lt;br /&gt;
       -------o Mixer o--                   |               ---------o SEL&lt;br /&gt;
                  |                         |&lt;br /&gt;
                  |                         |&lt;br /&gt;
                  o                         |&lt;br /&gt;
           D/A Convertor o------------------&lt;br /&gt;
             |    |    |&lt;br /&gt;
             |    |    |&lt;br /&gt;
            Analog Channel&lt;br /&gt;
             o    o    o&lt;br /&gt;
             A    B    C&lt;br /&gt;
&lt;br /&gt;
Description of pins&lt;br /&gt;
&lt;br /&gt;
1. DA7 ~ DA0&lt;br /&gt;
  This is an 8 bit bidirectional data bus which is used for moving data and&lt;br /&gt;
  addresses between the SSG and CPU. In the read and write modes, DA7 ~ DA0&lt;br /&gt;
  corresponds to B7 ~ B0 of the register array. In the address mode, DA3 ~ DA0&lt;br /&gt;
  is used for the register address, and DA7 ~ DA4 is used together with A9 and&lt;br /&gt;
  A8 for the upper address.&lt;br /&gt;
2. A8 and A9&lt;br /&gt;
  These are the upper address input pins. A8 has pullup resistance while A9&lt;br /&gt;
  has pulldown resistance. When the voltage level at A8 while the level at A9&lt;br /&gt;
  and DA7 ~ DA4 is low, the address mode is selected allowing for the fetching&lt;br /&gt;
  of a register address. Connect A8 and A9 to +5V and ground respectively when&lt;br /&gt;
  not in use.&lt;br /&gt;
3. RESET&lt;br /&gt;
  Reset is effective when the voltage level is low, and the contents of all&lt;br /&gt;
  registers in the array are reset to '0'. This pin has pullup resistance.&lt;br /&gt;
4. CLOCK&lt;br /&gt;
  Supplies the master clock to the sound generator and envelope generator. This&lt;br /&gt;
  is equipped with a 1/2 frequency divider which allows for the use of a&lt;br /&gt;
  frequency which is 1/2 of the input clock, as the master clock.&lt;br /&gt;
5. SEL&lt;br /&gt;
  When SEL is driven to the high level, the input clock is taken as the master&lt;br /&gt;
  clock. When the voltage level of SEL is low, the input clock is divided by 2&lt;br /&gt;
  to obtain the master clock. This pin has pullup resistance, allowing for&lt;br /&gt;
  full pin compatibility with the AY-3-8910 manufactured by AI, when this pin&lt;br /&gt;
  is not connected to anything.&lt;br /&gt;
6. BDIR,BC1 and BC2&lt;br /&gt;
  Controls the external bus (DA7 ~ DA0) and internal bus of the SSG. The&lt;br /&gt;
  following four modes can be set by the bus control decoder. The bus control&lt;br /&gt;
  is redundant, control is possible even when BC5 is connected to +5V.&lt;br /&gt;
&lt;br /&gt;
   BDIR BC2 BC1   Mode&lt;br /&gt;
     0   0   0    Inactive&lt;br /&gt;
     0   0   1    Address&lt;br /&gt;
     0   1   0    Inactive&lt;br /&gt;
     0   1   1    Read&lt;br /&gt;
     1   0   0    Address&lt;br /&gt;
     1   0   1    Inactive&lt;br /&gt;
     1   1   0    Write&lt;br /&gt;
     1   1   1    Address&lt;br /&gt;
&lt;br /&gt;
Inactive mode: DA7 ~ DA0 has high impedance.&lt;br /&gt;
Address mode:  DA7 ~ DA0 set to input mode, and address is fetched from&lt;br /&gt;
                register array.&lt;br /&gt;
Write mode:    DA7 ~ DA0 set to input mode, and data is written to register&lt;br /&gt;
                currently being addressed.&lt;br /&gt;
Read mode:     DA7 ~ DA0 set to output mode, and contents of register&lt;br /&gt;
                currently being addressed are output.&lt;br /&gt;
&lt;br /&gt;
7. ANALOG CHANNEL A,B,C&lt;br /&gt;
  Each of the three channels is equipped with a D/A convertor which converts&lt;br /&gt;
  the calculated digital values to analog signals for output.&lt;br /&gt;
8. IOA7 ~ IOA0, IOB7 ~ IOB0&lt;br /&gt;
  These are two 8 bit I/O ports. These ports allow the SSG to be placed&lt;br /&gt;
  between an external system and the CPU for the transfer of data. These pins&lt;br /&gt;
  have pullup resistance.&lt;br /&gt;
9. TEST1&lt;br /&gt;
  Output pin for testing the device. Do not connect to anything.&lt;br /&gt;
10. Vcc&lt;br /&gt;
  +5V power pin.&lt;br /&gt;
11. Vss&lt;br /&gt;
  Ground pin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Description of funtions&lt;br /&gt;
&lt;br /&gt;
All functions of the SSG are controlled by the 16 internal registers. The CPU&lt;br /&gt;
need only write data to the internal registers of the SSG. The SSG itself&lt;br /&gt;
generates the sound. Sound is generated by the following blocks:&lt;br /&gt;
&lt;br /&gt;
Music generator:     Square waves having a different frequency are generated&lt;br /&gt;
                      for each channel (A,B and C)&lt;br /&gt;
Noise generator:     Pseudo-random waveforms are generated (variable frequency)&lt;br /&gt;
Mixer:               Music and noise output are mixed for the three channels&lt;br /&gt;
                      (A,B and C)&lt;br /&gt;
Level control:       Constant level or variable level is given for each of the&lt;br /&gt;
                      three channels (A,B and C). Constant levels are&lt;br /&gt;
                      controlled by the CPU, and variable levels by the&lt;br /&gt;
                      envelope generator.&lt;br /&gt;
Envelope generator:  Generates various types of attenuation (single burst&lt;br /&gt;
                      attenuated and repeated attenuation)&lt;br /&gt;
D/A convertor:       Sound is output on each of the three channels (A,B and C)&lt;br /&gt;
                      at the level determined by the level control.&lt;br /&gt;
&lt;br /&gt;
The CPU can read the contents of the internal registers with no effect on&lt;br /&gt;
sound.&lt;br /&gt;
&lt;br /&gt;
    Register Array&lt;br /&gt;
&lt;br /&gt;
     A9  A8 DA7 DA6 DA5 DA4 DA3 DA2 DA1 DA0&lt;br /&gt;
     0   1   0   0   0   0   0   0   0   0&lt;br /&gt;
     0   1   0   0   0   0   1   1   1   1&lt;br /&gt;
    \______________________/\_____________/&lt;br /&gt;
         Upper addresses    Lower addresses&lt;br /&gt;
          (chip select)    (register select)&lt;br /&gt;
&lt;br /&gt;
Of the ten bit address, the lower addresses DA3 ~ DA0 are used to select the&lt;br /&gt;
16 internal registers(register array). The upper addresses are used for chip&lt;br /&gt;
selection. A9 and A8 is programmed to 01 while DA7 through DA4 are set to&lt;br /&gt;
0000. When the upper addresses match this program in the address mode, a&lt;br /&gt;
register address (lower four bits DA3 through DA0) is fetched from the&lt;br /&gt;
register address latch. When the value set is in the upper addresses is&lt;br /&gt;
different from the program value, the bidirectional bus formed from DA7&lt;br /&gt;
through DA0 is driven to high impedance. A register address which has been&lt;br /&gt;
fetched is retained until the next address is fetched, and is not affected&lt;br /&gt;
by the read, write, or inactive mode.&lt;br /&gt;
&lt;br /&gt;
  Register Array&lt;br /&gt;
                            B7....B0&lt;br /&gt;
R0 Frequency of Channel A   00000000   8 bit fine tone adjustment&lt;br /&gt;
R1                          ----0000   4 bit rough tone adjustment&lt;br /&gt;
R2 Frequency of Channel B   00000000   8 bit fine tone adjustment&lt;br /&gt;
R3                          ----0000   4 bit rough tone adjustment&lt;br /&gt;
R4 Frequency of Channel C   00000000   8 bit fine tone adjustment&lt;br /&gt;
R5                          ----0000   4 bit rough tone adjustment&lt;br /&gt;
R6 Frequency of Noise       ---00000   5 bit noise frequency&lt;br /&gt;
R7 I/O port and mixer       iinnnttt   i-I/O, n-Noise, t-Tone&lt;br /&gt;
   settings                 bacbacba&lt;br /&gt;
R8 Level of channel A       ---mllll   m-Mode, l-Level&lt;br /&gt;
R9 Level of channel B       ---mllll   m-Mode, l-Level&lt;br /&gt;
RA Level of channel C       ---mllll   m-Mode, l-Level&lt;br /&gt;
RB Frequency of envelope    00000000   8 bit fine adjustment&lt;br /&gt;
RC                          00000000   8 bit rough adjustment&lt;br /&gt;
RD Shape of envelope        ----cath   c-Cont, a-Att, t-Alt, h-Hold&lt;br /&gt;
RE Data of I/O port A       00000000   8 bit data&lt;br /&gt;
RF Data of I/O port B       00000000   8 bit data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(1) Setting of music frequency (controlled by registers R0 ~ R5)&lt;br /&gt;
&lt;br /&gt;
The frequencies of the square wave generated by the music generators for the&lt;br /&gt;
three channels (A,B and C) are controlled by registers R0 through R5. R0 and&lt;br /&gt;
R1 control channel A, R2 and R3 are used for channel B, and R4 and R5 control&lt;br /&gt;
channel C. The oscillation frequency fT is obtained in the following manner&lt;br /&gt;
from the value of the register TP(decimal).&lt;br /&gt;
&lt;br /&gt;
       fT = fMaster&lt;br /&gt;
            -------&lt;br /&gt;
             16TP&lt;br /&gt;
&lt;br /&gt;
fMaster is the frequency of the master clock (this is the input click&lt;br /&gt;
frequency when SEL is high, and 1/2 of this frequency when low).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Rough tone adjustment                 Fine tone adjustment&lt;br /&gt;
          register           Channel           register&lt;br /&gt;
             R1                 A                 R0&lt;br /&gt;
             R3                 B                 R2&lt;br /&gt;
             R5                 C                 R4&lt;br /&gt;
&lt;br /&gt;
    B7 B6 B5 B4 B3 B2 B1 B0           B7 B6 B5 B4 B3 B2 B1 B0&lt;br /&gt;
    \---------/|            \       /&lt;br /&gt;
     Not used  |              \   /&lt;br /&gt;
               |                |&lt;br /&gt;
               TP11 TP10 TP9 TP8 TP7 TP6 TP5 TP4 TP3 TP2 TP1 TP0&lt;br /&gt;
                12 bit oscillation frequency setting value (TP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(2) Setting of noise generator (controlled by register R6)&lt;br /&gt;
&lt;br /&gt;
The noise frequency fN is obtained from the register value NP(decimal) in the&lt;br /&gt;
following manner.&lt;br /&gt;
&lt;br /&gt;
       fN = fMaster        (fMaster if the frequency of the master clock)&lt;br /&gt;
            -------&lt;br /&gt;
             16NP&lt;br /&gt;
&lt;br /&gt;
  Noise frequency register R6&lt;br /&gt;
    B7 B6 B5 B4 B3 B2 B1 B0&lt;br /&gt;
    \------/|               \&lt;br /&gt;
    Not used|                \&lt;br /&gt;
            |                 |&lt;br /&gt;
            NP4 NP3 NP2 NP1 NP0&lt;br /&gt;
     5 bit noise frequency setting value (NP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(3) Settings of mixer and I/O ports (controlled by register R7)&lt;br /&gt;
&lt;br /&gt;
The mixer is used to combine music and noise components. The combination is&lt;br /&gt;
determined by bits B5 ~ B0 of register R7. Sound is output when a '0' is&lt;br /&gt;
written to the register. Thus, when both the noise and tone are '0', the&lt;br /&gt;
output is combined by the mixer. When the noise is '0' and the tone is '1',&lt;br /&gt;
only the noise signal is output. When the noise is '1' and the tone is '0',&lt;br /&gt;
music (square wave) is output. Nothing is output when both the noise and tone&lt;br /&gt;
are '1'. Selection of input/output for the I/O ports is determined by bits B7&lt;br /&gt;
and B6 of register R7. Input is selected when '0' is written to the register&lt;br /&gt;
bits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  I/O port and mixer setting register R7&lt;br /&gt;
        B7 B6 B5 B4 B3 B2 B1 B0&lt;br /&gt;
      /     /|        |\        \&lt;br /&gt;
    /     /  |        |  \        \&lt;br /&gt;
     I/O       Noise        Tone&lt;br /&gt;
    B   A     C   B   A    C   B   A&lt;br /&gt;
&lt;br /&gt;
(Input is selected for I/O port when '0', and noise or tone can be output&lt;br /&gt;
when '0')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(4) Level control (controlled by R8 ~ RA)&lt;br /&gt;
&lt;br /&gt;
The audio level output from the D/A convertors for the three channels (A,B&lt;br /&gt;
and C) is adjusted by registers R8, R9 and RA.&lt;br /&gt;
&lt;br /&gt;
    Level setting registers  Channel&lt;br /&gt;
             R8                 A&lt;br /&gt;
             R9                 B&lt;br /&gt;
             RA                 C&lt;br /&gt;
&lt;br /&gt;
        B7 B6 B5 B4 B3 B2 B1 B0&lt;br /&gt;
        \------/|  |\          \&lt;br /&gt;
        Not used|  |  \          \&lt;br /&gt;
                |  |    \          \&lt;br /&gt;
                 M        L3 L2 L1 L0&lt;br /&gt;
                Mode   4 bit level selection&lt;br /&gt;
&lt;br /&gt;
Mode M selects whether the level is fixed (when M=0) or variable (M=1). When&lt;br /&gt;
M=0, level is determined from one of 16 by level selection signals L3,L2,L1&lt;br /&gt;
and L0 which compromise the lower four bits. When M=1, the level is determined&lt;br /&gt;
by the 5 bit output of E4,E3,E2,E1 and E0 of the envelope generator of the&lt;br /&gt;
SSG. (This level is variable as E4 ~ E0 change over time)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(5) Setting of envelope frequency (controlled by R8 and RC)&lt;br /&gt;
&lt;br /&gt;
Thus, the envelope repetition frequency fE is obtained as follows from the&lt;br /&gt;
envelope setting period value EP (decimal):&lt;br /&gt;
&lt;br /&gt;
       fE = fMaster        (fMaster if the frequency of the master clock)&lt;br /&gt;
            -------&lt;br /&gt;
             256EP&lt;br /&gt;
&lt;br /&gt;
Envelope rough adjustment register RC  Envelope fine adjustment register RB&lt;br /&gt;
        B7 B6 B5 B4 B3 B2 B1 B0           B7 B6 B5 B4 B3 B2 B1 B0&lt;br /&gt;
      /                         \       /                         \&lt;br /&gt;
    /                             \   /                             \&lt;br /&gt;
  /                                 |                                \&lt;br /&gt;
  EP15 EP14 EP13 EP12 EP11 EP10 EP9 EP8 EP7 EP6 EP5 EP4 EP3 EP2 EP1 EP0&lt;br /&gt;
                16 bit envelope period setting value (EP)&lt;br /&gt;
&lt;br /&gt;
The period of the actual frequency fEA used for the envelope generated is&lt;br /&gt;
1/32 of the envelope repetition period (1/fE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(6) Envelope shape control (controlled by RD)&lt;br /&gt;
&lt;br /&gt;
The envelope generator counts the envelope clock fEA 32 times for each&lt;br /&gt;
envelope pattern cycle. The envelope level is determined by the 5 bit output&lt;br /&gt;
(E4 ~ E0) of the counter. The shape of the envelope is created by increasing,&lt;br /&gt;
decreasing, stopping, or repeating this counter. The shape is controlled by&lt;br /&gt;
bits B3 ~ B0 of the register RD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Envelope shape control register RD&lt;br /&gt;
        B7 B6 B5 B4 B3 B2 B1 B0&lt;br /&gt;
        \----------/ |  |  |  |&lt;br /&gt;
          Not used   |  |  |  --- Hold&lt;br /&gt;
                     |  |  ------ Alt&lt;br /&gt;
                     |  --------- Att&lt;br /&gt;
                     ------------ Cont&lt;br /&gt;
                Envelope shape control signals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The envelope can take the shapes shown below according to combinations of the&lt;br /&gt;
CONT, ATT, ALT and HOLD signals.&lt;br /&gt;
&lt;br /&gt;
           B3  B2  B1   B0&lt;br /&gt;
          CONT ATT ALT HOLD&lt;br /&gt;
            0   0   x   x  \&lt;br /&gt;
                            \---------------------&lt;br /&gt;
&lt;br /&gt;
            0   1   x   x   /|&lt;br /&gt;
                           / |--------------------&lt;br /&gt;
&lt;br /&gt;
            1   0   0   0  \ |\ |\ |\ |\ |\ |\ |\ &lt;br /&gt;
                            \| \| \| \| \| \| \| \&lt;br /&gt;
&lt;br /&gt;
            1   0   0   1  \&lt;br /&gt;
                            \---------------------&lt;br /&gt;
&lt;br /&gt;
            1   0   1   0  \  /\  /\  /\  /\  /\  /&lt;br /&gt;
                            \/  \/  \/  \/  \/  \/&lt;br /&gt;
&lt;br /&gt;
            1   0   1   1  \ |--------------------&lt;br /&gt;
                            \|&lt;br /&gt;
&lt;br /&gt;
            1   1   0   0   /| /| /| /| /| /| /| /&lt;br /&gt;
                           / |/ |/ |/ |/ |/ |/ |/&lt;br /&gt;
&lt;br /&gt;
            1   1   0   1   /---------------------&lt;br /&gt;
                           /&lt;br /&gt;
&lt;br /&gt;
            1   1   1   0   /\  /\  /\  /\  /\  /\&lt;br /&gt;
                           /  \/  \/  \/  \/  \/  \&lt;br /&gt;
&lt;br /&gt;
            1   1   1   1   /|&lt;br /&gt;
                           / |--------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE - The writing to register RD will reset the envelope frequency clock&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre?&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>&gt;Ggn</name></author>
	</entry>
</feed>