Последний раз редактировалось hobot; 24.10.2012 в 14:13.
На текущий момент мыслей по поводу реализации прерываний нет, поэтому пока то что есть: работающий С2 и СА оба пока не работают по прерываниям.
По С2 можно загрузиться с НХ сервера, по СА загрузка останавливается с ошибкой, но тоже результат.
Для связи используется программа сом0сом http://sourceforge.net/projects/com0com/
Все остальное в ветках "Сеть УКНЦ" и "УКНЦ загрузка через стык С2"
Для сети запуск копий из разных папок.
Затащил к себе код от Vamos, и озаботился настройкой COM-портов -- уже жаловались что приходится менять код под себя. Не доделал ещё, но будет примерно так: отдельный диалог на редактирование структуры DCB. Если какие-либо ещё параметры DCB нужно вытащить в редактор -- скажите, сделаю.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx -- DCB structure
![]()
Наверное это лишнее, в реале УКНЦ кроме скорости стыка С2 все жёстко определено.
nzeemin, если будет возможность - посмотри пожалуйста ещё раз про звук для свежей компиляции UKNCBTL. Штука такая - на обычном DESKTOPE у меня бортовой звук и там все норм работает, а на ноуте UKNCBTL портит настройку так, что приходиться лазить поправлять иначе такое в колонках шипение при запуске других приложений пугающее ))) Впрочем я привык уже после запуска эмулятора лазить автоматом в звук.настройки ноута ))) Проблема в том, что минимальное значение ползунка почему то на звуковухе бука вызывает перегруз в купе с переключением на (только) левый канал. Какие ещё доработки планируются?
Возможно ли ожидать Load State в обозримом будущем и в целом любые новости по этому проекту всегда очень интересно !
Для реализации прерываний портов СА и С2 нужно модифицировать не только функцию void CFirstMemoryController::SetPortWord(WORD address, WORD word), но и void CFirstMemoryController::SetPortByte(WORD address, BYTE byte), которая в данный момент выглядит довольно бледно:
Код:void CFirstMemoryController::SetPortByte(WORD address, BYTE byte) { WORD word = (address&1)?((WORD)byte) << 8:(WORD)byte; switch (address) { case 0176560: //network case 0176561: //СА: Регистр состояния приемника m_Port176560 = (m_Port176560 & ~0100) | (word & 0100); // Bit 6 only break; case 0176562: // СА: Регистр данных приемника case 0176563: // недоступен по записи return ; case 0176564: // СА: Регистр состояния источника case 0176565: m_Port176564 = (m_Port176564 & ~0105) | (word & 0105); // Bits 0,2,6 break; case 0176566: // СА: Регистр данных источника case 0176567: // нижние 8 бит доступны по записи m_Port176566 = word & 0xff; m_Port176564 &= ~128; // Reset bit 7 (Ready) break; case 0176570: // Стык С2: Регистр состояния приемника case 0176571: case 0176572: // Стык С2: Регистр данных приемника case 0176573: case 0176574: // Стык С2: Регистр состояния источника case 0176575: case 0176576: // Стык С2: Регистр данных источника case 0176577: return ; } }
---------- Post added at 10:56 ---------- Previous post was at 10:29 ----------
Правильно ли я понимаю, что при использовании такого алгоритма обработки в эмуляторе байтовой записи в порт - команда CLRB @#176561 сбросит разрешение прерываний ?Код:void CFirstMemoryController::SetPortByte(WORD address, BYTE byte) { WORD word = (address&1)?((WORD)byte) << 8:(WORD)byte; switch (address) { case 0176560: //network case 0176561: //СА: Регистр состояния приемника // Bit 6 only m_Port176560 = (m_Port176560 & ~0100) | (word & 0100); break; } }
Настоящая УКНЦ действительно преобразует байт в слово перед записью в порт ?
Patron, видимо nzeemin еще не затащил код, у меня там все прописано.
Но толку пока от этих прерываний мало, DLTST показывает что все хорошо, а загрузка как не шла так и не идет TU58 в том числе.
Вот не знаю, но команда MOVB @#176561,R5 проходит, номер станции работает.
---------- Post added at 12:09 ---------- Previous post was at 12:05 ----------
С этой функции все и началось, после того как я туда скопипастил из void CFirstMemoryController::SetPortWord(WORD address, WORD word) все для С2, стала работать загрузка НХ сервера.
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)