@radastan: yo lo saqué del WOS, de donde explican los modelos de 128K. De todos modos, mira:
Código: Seleccionar todo
/*
AY REGISTERS - To play sound, just write to 0, 1, 6, 7, 8, 11, 12, 13
0 Channel A fine pitch 8-bit (0-255)
1 Channel A course pitch 4-bit (0-15)
2 Channel B fine pitch 8-bit (0-255)
3 Channel B course pitch 4-bit (0-15)
4 Channel C fine pitch 8-bit (0-255)
5 Channel C course pitch 4-bit (0-15)
6 Noise pitch 5-bit (0-31)
7 Mixer 8-bit (see below)
8 Channel A volume 4-bit (0-15, see below)
9 Channel B volume 4-bit (0-15, see below)
10 Channel C volume 4-bit (0-15, see below)
11 Envelope fine duration 8-bit (0-255)
12 Envelope course duration 8-bit (0-255)
13 Envelope shape 4-bit (0-15)
14 I/O port A 8-bit (0-255)
15 I/O port B 8-bit (0-255)
Bit: 7 6 5 4 3 2 1 0
_ _
I/O I/O Noise Noise Noise Tone Tone Tone
B A C B A C B A
*/
unsigned char sound1[] = {100,50,0,0,0,0,4,216,31,0,0,10,10,9};
unsigned char sound2[] = {250,250,0,0,0,0,15,248,31,0,0,10,10,0};
unsigned char sound3[] = {10,10,0,0,0,0,29,216,31,0,0,4,4,0};
unsigned char sound4[] = {10,100,0,0,0,0,15,248,31,0,0,50,50,0};
unsigned char sound5[] = {15,1,0,0,0,0,15,248,31,0,0,50,50,0};
unsigned char *sounds[] = {sound1, sound2, sound3, sound4, sound5};
void my_play_sound (int n)
{
sp_outp (65533, 4);
sp_outp (49149, *(sounds[n]));
sp_outp (65533, 5);
sp_outp (49149, *(sounds[n] + 1));
sp_outp (65533, 6);
sp_outp (49149, *(sounds[n] + 6));
sp_outp (65533, 7);
sp_outp (49149, *(sounds[n] + 7));
sp_outp (65533, 10);
sp_outp (49149, *(sounds[n] + 8));
sp_outp (65533, 11);
sp_outp (49149, *(sounds[n] + 11));
sp_outp (65533, 12);
sp_outp (49149, *(sounds[n] + 12));
sp_outp (65533, 13);
sp_outp (49149, *(sounds[n] + 13));
}