О том и речь ) Благодарю, Patron !
Поэтому я и предложил пускай пользователь имеет возможность либо определить
путь сохранения в ini файле или допустим в буфер системы ?
Или как-то так наверное даже правильней?
Вид для печати
На текущий момент мыслей по поводу реализации прерываний нет, поэтому пока то что есть: работающий С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
http://img-fotki.yandex.ru/get/5642/..._dc87e392_orig
Наверное это лишнее, в реале УКНЦ кроме скорости стыка С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, стала работать загрузка НХ сервера.