Важная информация

User Tag List

Страница 63 из 112 ПерваяПервая ... 596061626364656667 ... ПоследняяПоследняя
Показано с 621 по 630 из 1114

Тема: Эмулятор УКНЦ - UKNCBTL

  1. #621
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Поэтому вероятно мы и видим overrun.
    А мы таки видим именно overrun ?

    Мы видим именно бит 010000 в регистре статуса приёмника ?

    Если да - это неправильная эмуляция.

    Вот такой код в принципе ошибочен:
    Код:
    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
    }
    Вообще общение с COM-портом у меня построено не на overlapped и не на событиях, а по более простой схеме -- чисто байтовое чтение и запись. При чтении если очередной байт не готов -- он не отдаётся. Но при записи пишется всё не взирая на возможные переполнения.
    Так и надо.

    Но ещё надо учитывать, что драйвер com0com - пакетный. Он не следит за промежутком времени между байтами ( в Windows вообще ни одна программа этого не делает ), поэтому, если эмулятор допускает формирование признака overrun - при работе в Windows этот признак обязательно будет формироваться.

    ---------- Post added at 11:38 ---------- Previous post was at 11:35 ----------

    Здесь даже промежутки времени не столь важны.

    Ведь в реальном порту действует квитирование, т.е. байт не может быть принят, если порт не готов. А в эмуляторе может! И даже признак overrun формируется!

    ---------- Post added at 11:41 ---------- Previous post was at 11:38 ----------

    Поэтому - в нынешнем состоянии эмулятор эмулирует работу 1801ВП1-065 по кабелю без линий квитирования. А по такому кабелю ни TU58, ни сеть УКНЦ работать не могут.

  2. #622
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если да - это неправильная эмуляция.

    Вот такой код в принципе ошибочен:
    Код:
    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
    }
    А в чем ошибочность кода? Если стоит признак готовности, то данные с приемника не считаны, и при приходе других данных ставится бит переполнения, а принятая посылка теряется.
    Цитата Сообщение от Patron Посмотреть сообщение
    Ведь в реальном порту действует квитирование, т.е. байт не может быть принят, если порт не готов. А в эмуляторе может! И даже признак overrun формируется!
    Поэтому - в нынешнем состоянии эмулятор эмулирует работу 1801ВП1-065 по кабелю без линий квитирования. А по такому кабелю ни TU58, ни сеть УКНЦ работать не могут.
    А как это так, что байт не может быть принят, если порт не готов? Может, еще как может. Ведь для приема другая сторона его передает, а если она не следит за состояниями линии квитирования, то она может его передать и возможно переполнение. Единственное 1801ВП1-065 не сможет передать байт, если на линии BSYD нет готовности от приемника той стороны.
    И кстати в сетевом адаптере линии квитирования не используются, там только прием, передача и земля.

  3. #623
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А в чем ошибочность кода? Если стоит признак готовности, то данные с приемника не считаны, и при приходе других данных ставится бит переполнения, а принятая посылка теряется.
    Ошибочность в том, что Windows не исключает приход в программу любого количества байтов без задержки вообще. Это же мы не с аппаратным портом по прерываниям работаем, а опрашиваем входной буфер Windows ёмкостью 3К. Пока Windows занимается своими делами - в этом буфере копятся байты, а когда процесс исполняющейся программы эмулятора получает свой квант - ему вываливаются из буфера все накопившиеся там байты разом.

    кстати в сетевом адаптере линии квитирования не используются, там только прием, передача и земля.
    И это на скорости 57600.. Круто! Быстро же должны работать программы сетевого обмена, чтобы не потерять ни одного байта.

  4. #624
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Ошибочность в том, что Windows не исключает приход в программу любого количества байтов без задержки вообще. Это же мы не с аппаратным портом по прерываниям работаем, а опрашиваем входной буфер Windows ёмкостью 3К. Пока Windows занимается своими делами - в этом буфере копятся байты, а когда процесс исполняющейся программы эмулятора получает свой квант - ему вываливаются из буфера все накопившиеся там байты разом.
    Это же с какой скоростью по COM-порту идти данные? Да и как же редко программ должна получать кванты времени?
    Проблема может быть в другом. UKNCBTL работает по фреймам, 25 фреймов в секунду. Т.е. быстренько эмулируется 1/25 секунды, обновляется экран, а потом спит в ожидании завершения 1/25 секунды на реальном PC. Вот во время этой спячки и могут придти реальные данные. Но однако же в эмуляторе данные с очереди снимаются со скоростью порта внутри фрейма, поэтому между снятиями данных эмулируемая программа должна успеть прочесть приемник. Если успевает, то и переполнения не будет.
    Цитата Сообщение от Patron Посмотреть сообщение
    И это на скорости 57600.. Круто! Быстро же должны работать программы сетевого обмена, чтобы не потерять ни одного байта.
    Быстро. Загрузчик из ПЗУ без прерываний. А в RT-11 драйвер MC.SYS работает в режиме прерываний. Но драйвер MC.SYS не является самим драйвером, а скорее резидентной программой, сидящей на обработке и отправке пакетов по сети.

  5. #625
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,594
    Спасибо Благодарностей отдано 
    1,240
    Спасибо Благодарностей получено 
    1,803
    Поблагодарили
    693 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    UKNCBTL работает по фреймам, 25 фреймов в секунду. Т.е. быстренько эмулируется 1/25 секунды, обновляется экран, а потом спит в ожидании завершения 1/25 секунды на реальном PC.
    А чего не 1/50? Почему выбрали каждый второй фрейм?

  6. #626
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    между снятиями данных эмулируемая программа должна успеть прочесть приемник. Если успевает, то и переполнения не будет.
    Именно так. И проведённые испытания показывают, что как раз и не успевает.

    В настройках COM-порта можно сделать дополнительную опцию: Эмулировать OVERRUN - при включении которой чтение из буфера Windows будет работать как сейчас, а при выключении - как надо.

    ---------- Post added at 14:11 ---------- Previous post was at 14:08 ----------

    Цитата Сообщение от Titus Посмотреть сообщение
    А чего не 1/50?
    Даже за 1/50 секунды com0com на скорости 9600 насыпет во входной буфер 20 байтов.

    ---------- Post added at 14:19 ---------- Previous post was at 14:11 ----------

    Хочется же иметь возможность эмулировать как работу по кабелю без квитирования, так и работу по кабелю с квитированием.

    Вот выбор этих режимов и надо добавить в окно настроек COM-порта.
    Последний раз редактировалось Patron; 31.01.2013 в 16:27.

  7. #627
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Именно так. И проведённые испытания показывают, что как раз и не успевает.
    В эмуляторе еще не сделана корректно эмуляция последовательного порта, вот дождемся нормальной эмуляции, тогда уже можно говорить о переполнении, есть или нет.
    Цитата Сообщение от Patron Посмотреть сообщение
    Ведь нужно же иметь возможность эмулировать как работу по кабелю без квитирования, так работу и по кабелю с квитированием.

    Выбор этих режимов и надо добавить в окно настроек COM-порта.
    Эмулятор работает рывками по фреймам, так что довольно сложновато это сделать.

  8. #628
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В эмуляторе еще не сделана корректно эмуляция последовательного порта, вот дождемся нормальной эмуляции, тогда уже можно говорить о переполнении, есть или нет.
    Т.е. до сих пор неизвестно, устанавливается ли бит переполнения в ходе работы..
    А если добавить в это самое место отладочную печать и всё узнать ?
    Последний раз редактировалось Patron; 05.02.2013 в 20:11.

  9. #629
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Т.е. до сих пор неизвестно, устанавливается ли бит переполнения в ходе работы..
    А если добавить в это самое место отладочную печать и всё узнать ?
    В эмуляторе есть такая функция для вывода сообщения в консоль вроде DebugPrint. Так что можно в интересующие места программы вставлять вывод на консоль.

  10. #630
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если с выключенной эмуляцией оверрана всё заработает - значит оверран эмулируется плохо. Если же и тогда ничего не заработает - значит качество эмуляции оверрана не при чём.

Страница 63 из 112 ПерваяПервая ... 596061626364656667 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1191
    Последнее: 15.02.2024, 13:32
  2. Ответов: 231
    Последнее: 21.03.2022, 07:54
  3. Эмулятор УКНЦ на JavaScript
    от nzeemin в разделе Эмуляторы отечественных компьютеров
    Ответов: 4
    Последнее: 27.04.2021, 14:26
  4. УКНЦ и Gotec Flash Floppy эмулятор
    от Ynicky в разделе ДВК, УКНЦ
    Ответов: 10
    Последнее: 10.09.2019, 04:34
  5. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •