Проверил - нету.
Правда я не конфигурил COM порт.но это не должно влиять.
UPD: сконфигурил - ничего не изменилось. Разьве что готовность исчезла навсегда :)
В UKNCBTL запись в порт 0176574 обрабатывается так:
А нужно так:Код:void CFirstMemoryController::SetPortWord(WORD address, WORD word)
{
switch (address) {
case 0176574: // Стык С2: Регистр состояния источника
case 0176575: // Bits 0,2,6
m_Port176574 = (m_Port176574 & ~0105) | (word & 0105);
break;
case 0176576: // Стык С2: Регистр данных источника
case 0176577: // нижние 8 бит доступны по записи
m_Port176576 = word & 0xff;
m_Port176574 &= ~128; // Reset bit 7 (Ready)
break;
}
}
Точно так же нужно изменить обработку всех остальных 3-х регистров статуса ( приёмник С2, приёмник СА, передатчик СА ), учитывая, что адреса векторов и место IRQ в цепочке приоритетов там другие ( для С2 - приемник 7, передатчик 8, для СА - приемник 9, передатчик 10 ).Код:void CFirstMemoryController::SetPortWord(WORD address, WORD word)
{
switch (address) {
case 0176574: // Стык С2: Регистр состояния источника
case 0176575: // Bits 0,2,6
if(((m_Port176574 & 0300) == 0200) && (word & 0100))
{
m_pCPU->InterruptVIRQ(8, 0374);
}
m_Port176574 = (m_Port176574 & ~0105) | (word & 0105);
break;
case 0176576: // Стык С2: Регистр данных источника
case 0176577: // нижние 8 бит доступны по записи
m_Port176576 = word & 0xff;
m_Port176574 &= ~128; // Reset bit 7 (Ready)
break;
}
}
offtop
Скрытый текст
Patron, уже предвкушаю (когда до дела дойдёт) какая будет правильная виртуальная УК-НЦ от Patrona ! ) Вот бы чуток в будущее отмотать, скачать и выложить тут - типа вот ребята - вот так короче всё будет )))
ИМХО: пока я не увидел первый исходник на Си - я думал, что Ассемблер(МАКРО-11) страшный и непонятный )))
[свернуть]
Понятно, в коде UKNCBTL уже где-то используются VIRQ 7 и 9, это теперь весь код перелопачивать?