Так и там тоже были переполнения
http://zx-pk.ru/attachment.php?attac...1&d=1358979832
поэтому, проверить на счёт переполнений всегда есть смысл первым делом.
Вид для печати
Так и там тоже были переполнения
http://zx-pk.ru/attachment.php?attac...1&d=1358979832
поэтому, проверить на счёт переполнений всегда есть смысл первым делом.
Как я понял, запись в буфер происходит слишком быстро и код эмулятора не успевает.
Ну вот чего ему не хватает :mad:
http://zx-pk.ru/attachment.php?attac...1&d=1359589855
если кому попадался этот тест с пунктом 6 (стык С2) поделитесь пожалуйста.
Patron, на этот вопрос у меня ответа нет, но вот код, может там чего
Код:if (m_SerialInCallback != NULL && frameticks % 416 == 0)
{
CFirstMemoryController* pMemCtl = (CFirstMemoryController*) m_pFirstMemCtl;
if ((pMemCtl->m_Port176574 & 004) == 0) // Not loopback?
{
BYTE b;
if (m_SerialInCallback(&b))
{
if ((pMemCtl->m_Port176570 & 0200) == 0) // Ready?
{
pMemCtl->m_Port176572 = b;
}
else
{
pMemCtl->m_Port176570 |= 010000; // Set Overflow flag
}
pMemCtl->m_Port176570 |= 0200; // Set Ready flag
}
}
}
if (m_SerialOutCallback != NULL && frameticks % serialOutTicks == 0)
{
CFirstMemoryController* pMemCtl = (CFirstMemoryController*) m_pFirstMemCtl;
if (serialTxCount > 0)
{
serialTxCount--;
if (serialTxCount == 0) // Translation countdown finished - the byte translated
{
if ((pMemCtl->m_Port176574 & 004) == 0) // Not loopback?
{
(*m_SerialOutCallback)((BYTE)(pMemCtl->m_Port176576 & 0xff));
}
else // Loopback
{
pMemCtl->m_Port176572 = pMemCtl->m_Port176576 & 0xff;
pMemCtl->m_Port176570 |= 0200; // Set Ready flag
}
pMemCtl->m_Port176574 |= 0200; // Set Ready flag
}
}
else if ((pMemCtl->m_Port176574 & 0200) == 0) // Ready is 0?
{
serialTxCount = 8; // Start translation countdown
}
}
У меня пока основная гипотеза -- что передача байт из эмулятора происходит без проверки того готов ли к этому COM-порт. Поэтому вероятно мы и видим overrun. Вообще общение с COM-портом у меня построено не на overlapped и не на событиях, а по более простой схеме -- чисто байтовое чтение и запись. При чтении если очередной байт не готов -- он не отдаётся. Но при записи пишется всё не взирая на возможные переполнения.
Эта версия TUK.SAV от СЭМЗА, я сейчас потыкался - другой версии не нашёл,
попробуй TS.SAV - просто ради эксперимента?
http://savepic.org/2745756.png
http://savepic.org/2736540.png
и вот ещё отдельный для СА "TSA.SAV"
http://savepic.org/2697628.png
Кажется где-то под С2 было что-то отдельно написано, если откопаю-вспомню выложу сразу.