If you wish to check emulator in parallel mode use this sketch for arduino.
For new version of AY-Player (update 30.11.2015)
const int ad[8] = { 8, 9, 2, 3, 4, 5, 6, 7 }; // connect to DA0,1,...,7
const int pinBC1 = 10;
const int pinBDIR = 11;
//Fast pin switching macros
#define CLR(x,y) (x&=(~(1<<y)))
#define SET(x,y) (x|=(1<<y))
#define __BCPORT__ PORTB
#define __BC1__ 2
#define __BDIR__ 3
void setup() {
//init pins
for( int i=0; i < 8; i++)
pinMode(ad[i], OUTPUT);
pinMode(pinBC1, OUTPUT);
pinMode(pinBDIR, OUTPUT);
//inactive mode
digitalWrite(pinBC1, LOW);
digitalWrite(pinBDIR, LOW);
//serial init
Serial.begin(57600);
}
void send_data(unsigned char address, unsigned char data) {
//write address to pins
PORTB |= address & 0x03;
PORTD |= address & 0xFC;
//validate addess
__BCPORT__ |= (1 << __BDIR__) + (1 << __BC1__);
delayMicroseconds(1);
__BCPORT__ &= ~((1 << __BDIR__) + (1 << __BC1__));
PORTB &= ~(address & 0x03);
PORTD &= ~(address & 0xFC);
//write data to pins
PORTB |= data & 0x03;
PORTD |= data & 0xFC;
//validate data
SET(__BCPORT__,__BDIR__);
delayMicroseconds(1);
CLR(__BCPORT__,__BDIR__);
PORTB &= ~(data & 0x03);
PORTD &= ~(data & 0xFC);
}
void loop() {
byte reg;
while(1) {
do {
while(Serial.available() < 1) { delayMicroseconds(1); }
reg = Serial.read();
}
while( reg > 15 );
while(Serial.available() < 1) { delayMicroseconds(1); }
send_data(reg, Serial.read());
}
}
For old version of AY-Player
const int ad[8] = { 8, 9, 2, 3, 4, 5, 6, 7 }; // connect to DA0,1,...,7
const int pinBC1 = 10;
const int pinBDIR = 11;
//Fast pin switching macros
#define CLR(x,y) (x&=(~(1<<y)))
#define SET(x,y) (x|=(1<<y))
#define __BCPORT__ PORTB
#define __BC1__ 2
#define __BDIR__ 3
//const int ledPin = 13;
byte buf[16];
byte buf2[16];
void setup(){
//init pins
for( int i=0; i < 8; i++)
pinMode(ad[i], OUTPUT);
pinMode(pinBC1, OUTPUT);
pinMode(pinBDIR, OUTPUT);
//pinMode(ledPin, OUTPUT);
//inactive mode
digitalWrite(pinBC1, LOW);
digitalWrite(pinBDIR, LOW);
memset(buf,0,16);
memset(buf2,0,16);
//serial init
Serial.begin(19200);
}
void send_data(unsigned char address, unsigned char data)
{
//write address to pins
PORTB |= address & 0x03;
PORTD |= address & 0xFC;
delayMicroseconds(1);
//validate addess
__BCPORT__ |= (1 << __BDIR__) + (1 << __BC1__);
delayMicroseconds(1);
__BCPORT__ &= ~((1 << __BDIR__) + (1 << __BC1__));
PORTB &= ~(address & 0x03);
PORTD &= ~(address & 0xFC);
//write data to pins
PORTB |= data & 0x03;
PORTD |= data & 0xFC;
delayMicroseconds(1);
//validate data
SET(__BCPORT__,__BDIR__);
delayMicroseconds(1);
CLR(__BCPORT__,__BDIR__);
PORTB &= ~(data & 0x03);
PORTD &= ~(data & 0xFC);
}
byte bufcnt = 0;
byte prev = 0;
void loop() {
while(1)
{
while(Serial.available() < 1) { delayMicroseconds(1); }
byte data = Serial.read(); buf[bufcnt] = data;
if(bufcnt > 13 && data==0x7F && prev == 0x80)
{
bufcnt=0;
break;
}
else
{
if(bufcnt<16)
bufcnt++;
}
prev = data;
}
//digitalWrite(ledPin, HIGH);
//PORTB |= (1<<5);
for (int i = 0; i < 14; i++)
{
if( buf[i]!=buf2[i])
{
if(!(i==13 && buf[i] == 0xFF))
send_data(i, buf[i]);
}
}
memcpy(buf2,buf,16);
//digitalWrite(ledPin, LOW);
//PORTB &= ~(1<<5);
}
Data pins for parallel sending data 8,9,2,3,4,5,6,7 BC1 pin 10 BDIR pin 11 connect these pins according the figure above
[ad name=”HTML”]

Не могу понять как реализовать параллельную загрузку с ардуины на эмулятор, по какой схеме подключать, через что отсылать с плеера(даже если без ардуины – то через какой девайс необходимо отправлять данные с плеера?)? Не могли бы вы более подробно описать эти нюансы? Заранее благодарен.
Пересылка с проигрывателя идет через переходник COM->TTL или USB->TTL, у переходника берется +5v, GND и TX, подключается к эмулятору, далее в проигрывателе выбирается COM порт и всё
параллельная загрузка, тут всё аналогично AY-3-89XX, т.е. используются BC1/BDIR и шина данных, в скетче приведена функция отправки байта в определенный регистр
Как я понял, с новой версией avr-ay player данный скетч уже не подойдет? Просто есть девайсина, построенная по этому принципу, но с использованием реального YM2149F, и хочется заставить её работать с новой версией плеера.
Не могли бы вы подсказать как сего можно добиться?
Добавил вариант для новой версии проигрывателя, отпишитесь потом работает или нет
Да, заработало, спасибо.
Плеер у Вас обалденный! Классная разработка! Слушаю через реальный YM2149F.
Звук восхитительный! Снял видео : https://youtu.be/iMv-pLgDepI
Спасибо! Пойду сравню заодно звучание эмулятора с YM 🙂
Добавлю ссылку на ваше видео в группу в ВК
Ничего не имею против эмулятора, но как-то ламповей и теплее YM2149 😉
Да и сравнение будет немного не корректное. По скорости воспроизведения будет отличаться, у меня генератор на 1.84 МГц работает. 😉
Добавил скетч со встроенным генератором на 2МГц, может будет чем-то полезен, да и вообще там скетч гораздо производительнее, генератор можно отключить, если не нужен 🙂