2022-01-16 01:10:43 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# General Instrument AY-3-8910
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 14:55:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								this chip was used in many home computers (ZX Spectrum, MSX, Amstrad CPC, Atari ST, etc.), video game consoles (Intellivision and Vectrex), arcade boards and even slot machines!
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 01:10:43 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 01:53:05 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it is a 3-channel square/noise/envelope sound generator. the chip's powerful sound comes from the envelope...
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 01:10:43 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 01:53:05 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								the AY-3-8914 variant was used in Intellivision, which is pretty much an AY with 4 level envelope volume per channel and different register format.
							 
						 
					
						
							
								
									
										
										
										
											2022-03-11 13:30:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 01:10:43 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# effects
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `20xx` : set channel mode. `xx`  may be one of the following: 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `00` : square
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `01` : noise
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `02` : square and noise
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `03` : envelope
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `04` : envelope and square
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `05` : envelope and noise
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `06` : envelope and square and noise
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `07` : nothing
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `21xx` : set noise frequency. `xx`  is a value between 00 and 1F. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `22xy` : set envelope mode. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `x`  sets the envelope shape, which may be one of the following:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `0: \___`  decay
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `4: /___`  attack once
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `8: \\\\`  saw
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `9: \___`  decay
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `A: \/\/`  inverse obelisco
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `B: \¯¯¯`  decay once
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `C: ////`  inverse saw
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `D: /¯¯¯`  attack
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `E: /\/\`  obelisco
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -  `F: /___`  attack once
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  if `y`  is 1 then the envelope will affect this channel.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `23xx` : set envelope period low byte. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `24xx` : set envelope period high byte. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `25xx` : slide envelope period up. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `26xx` : slide envelope period down. 
						 
					
						
							
								
									
										
										
										
											2022-01-20 03:23:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  `29xy` : enable auto-envelope mode. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `x`  is the numerator.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  `y`  is the denominator.
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 14:55:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  if `x`  or `y`  are 0 this will disable auto-envelope mode.
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 21:55:43 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  `2Exx` : write to I/O port A. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  this changes the port's mode to "write". make sure you have connected something to it.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  `2Fxx` : write to I/O port B. 
						 
					
						
							
								
									
										
										
										
											2022-10-16 01:53:05 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  this changes the port's mode to "write". make sure you have connected something to it.