Home > Previous Page >  Lex Van AY-3-8910 PSG
Archive Search  

Lex Van AY-3-8910 PSG

AY-3-8910 sound generator and joy stick port design by Lex Van Sonderen first published in ACE User 4 1983.



The AY-3-8910 is a 3-voice programmable sound generator (PSG) designed by General Instrument, initially for use with their 16-bit CP1610 and other 8-bit microcomputers. The chip also has two general-purpose 8-bit parallel I/O ports, A and B. Its the same chip that's used in the sound card made by Essex Micro Electronic and also in AMI (more AY-3-8910 details can be found here on the AMI page).

Components are:                       Qty

A Y-3-8910 PSG                         1
79 LS 02                               1
79 LS 32                               1
LM 386                                 1
I/O SOCKET to fit ATARI-type joystick  1
3.5 mm SOCKET (Base and switch)        1
L S. 8 Ohm                             1
Resistor 2.7 Ohm                       1
         470 Ohm                       2
         1 k Ohm                       11
Variable resistor  1k Ohm              1
Capacitor 47uF                         1
          100uf                        2
          0.1uf                        5
          330pF                        1
23—Way Edge Connector                  1


In Holland this cost me about £18 I think it will cost about £12-15 in the UK (1984 prices).

The programmable sound generator contains 16 registers, and is addressed with the commands


221 OUT
223 OUT
221 IN


Entering N 221 OUT (N=0 to 15) selects the current register, and N 223 OUT puts value N in registers last pointed to by N 221 OUT.


I use : REG 221 OUT ;
      : SET 223 OUT ;
      : REG? REG 221 IN ;


EG. 6 REG points to register 6, and
25 SET puts 25 into register 6.
6 REG? returns the current value of register 6


Register # Use Values
1 & 0 Low and High bytes of channel A pitch. 0-255
0-31
2 & 3 Low and High bytes of channel B pitch. 0-255
0-31
4 & 5 Low and High bytes of channel C pitch. 0-255
0-31
3 Noise period on all channels 0-31
7 On-Off selection (see below) (see below)
8 Volume of channel A 0-15
9 Volume of channel B 0-15
10 Volume of channel C 0-15
11 & 12 Low and High bytes of Envelope Duration 0-255
0-255
13 Envelope Shape (see below) (see below)
14 I/O port A data register  
15 I/O port B data register  

Register 7 details:
Decimal 128 64 32 16 8 4 2 1
Bit 7 6 5 4 3 2 1 0
Use B
I/O
A
I/O
C
Noise
B
Noise
A
Noise
A
Tone
B
Tone
C
Tone
When BITs 0-5 are set (1) the channel is OFF , When BITs 0-5 are reset (0) the channel is ON
so any combination of tone and noise channels is possible.
When BITs 6 & 7 are SET (1) the ports are OUTPUT, When reset (0) the ports are INPUT
Register 8-10 details:
Decimal 128 64 32 16 8 4 2 1
Bit 7 6 5 4 3 2 1 0
Use X X X E V V V V
X - Not Used, E - Envelope enable (set (1) on, reset (0) off, V - General volume control 0-15

Register 13 Envelope shape
Dec Bit 3 Bit 2 Bit 1 Bit 0 Shape
0-3 0 0 x x
4-7 0 1 x x
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
Envelope control is switched on by setting bit 4 of the volume register of the required channel, see Register 8-10 details above.


I wish you a lot of success building it. When you think it works, enter the following:
: REG 221 OUT ;
: SET 223 OUT ;
: REG? 221 OUT 221 IN ;

Try the following:

0 REG 200 SET 7 REG 254 SET 8 REG 8 SET IN It should produce a cont inuous tone if it fails, enter: O REG? 7 REG? 8 REG? It should print 200 It should print 254 It should print 8 If not, your PSG is not properly connected. When it is, and if it still fai Is, the amplifier part or the clock part is not, properly connected. To put all sound off:

Some Examples: 6 REG 8 SET 7 REG 247 SET 8 REG 16 SET 12 REG 20 SET 13 REG I SET ( Shot. ) O REG 16 SET 7 REG 247 SET 8 REG 16 SET 12 REG 10 SET 13 REG 4 SET (Snap as in Pacman) 7 REG '255 SET 6 REG 28 SET 7 REG 247 SET 8 REG 16 SET 12 REG 20 SET 13 REG 1 SET ( Explode) 6 REG 20 SET 7 REG 247 SET 8 REG 16 SET 12 REG' 50 SET 13 REG 10 SET (Sea —Waves) do O REG 200 SET 7 REG 254 SET 8 REG 16 SET 12 REG 20 SET 13 REG 1 SET (Ping) O REG 200 SET 2 REG 201 SET 4 REG 100 SET 7 REG 248 SET 8 REG 16 SET 9 REG 16 SET 10 REG 16 SET 12 REG 20 SET 13 REG 8 SET (Twangy Piano)
wip