User Tag List

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 42

Тема: Эмулятор Союз-Неон ПК-11/16 - NEONBTL

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

    По умолчанию

    Про старшие разряды счётчика HDBUFA09 и HDBUFA10 в ПЛМ P11.
    Разряды имеют регистровый выход и информация на них защёлкивается по переднему фронту на входе CLK. Передний фронт возникает во время счёта при переносе из 7-ого разряда или во время очистки счётчика. Очистка счётчика возможна при записи в регистры 0161054 и 0161076. При записи в регистр 0161076 должны записаться новые значения 9-го и 10-го разрядов счётчика, которые выступают в качестве выбора банка в СОЗУ. Также передний фронт формируется два раза при выдаче сигнала HD-BDRQ с контроллера жёсткого диска, эти правила срабатывают для обычного счёта.
    Правила формирования новых значений разрядов
    HDBUFA09 и HDBUFA10.

    Разряд
    HDBUFA09:
    /HD-BCS*HDBUFA08*HDBUFA09
    /HDBUFA08*/HDBUFA09*/CL-CNT
    /HDBUFA08*/HDBUFA09*/A01
    CL-CNT*/DB0*A01
    HD-BCS*/HDBUFA09

    Разряд HDBUFA10:
    /HD-BCS*HDBUFA08*HDBUFA09*HDBUFA10
    /HDBUFA09*/CL-CNT*/HDBUFA10
    /HDBUFA08*/CL-CNT*/HDBUFA10
    /HDBUFA09*/HDBUFA10*/A01
    /HDBUFA08*/HDBUFA10*/A01
    DB1*CL-CNT*A01
    HD-BCS*/HDBUFA10



    Рассмотрим вариант обычного счёта при работе с регистром 0161040 и при работе контроллера FDD в режиме ПДП, а также при подаче сигнала HD-BRRQ с контроллера жёсткого диска (два фронта CLK). В данном варианте активны следующие сигналы /HD-BCS, /CL-CNT. Значение сигнала /A01 не имеет значение, т.к. правила с ним повторяют правила с /CL-CNT. Сигналы CL-CNT и HD-BCS неактивны. Итого у нас получаются для исполнения следующие правила.
    Разряд HDBUFA09:
    /HD-BCS*HDBUFA08*HDBUFA09
    /HDBUFA08*/HDBUFA09*/CL-CNT
    Первое правило исполняется при равенстве единице разрядов HDBUFA08 и HDBUFA09. Второе правило при равенстве нулю разрядов HDBUFA08 и HDBUFA09. Если эти разряды имеют разные значения, то ни одно правило не исполняется. Не забываем про инверсный выход с триггера. Итого получается 00>0, 01>1, 10>1, 11>0. Получается, что если 8-й разряд был равен нулю, то 9-й разряд сохраняет своё старое значение, а при равенстве 8-го разряда единице происходит перенос и 9-й разряд меняет своё значение на противоположное.
    Разряд HDBUFA10:
    /HD-BCS*HDBUFA08*HDBUFA09*HDBUFA10
    /HDBUFA09*/CL-CNT*/HDBUFA10
    /HDBUFA08*/CL-CNT*/HDBUFA10
    В случае с 10-м разрядом правила такие же, только участвуют уже три разряда. Изменяться 10-й разряд будет уже только при равенстве единице 8-го и 9-го разрядов из-за переноса. В остальных случаях он сохраняет своё значение. Итог: 000>0, 001>0, 010>0, 011>1, 100>1, 101>1, 110>1, 111>0.

    Следующий случай - это очистка счётчика через запись в регистр 0161054. В данном случае активны сигналы /HD-BCS, CL-CNT, /A01. Неактивны /CL-CNT, A01 и HD-BCS.
    Разряд HDBUFA09:
    /HD-BCS*HDBUFA08*HDBUFA09
    /HDBUFA08*/HDBUFA09*/A01
    Первое правило исполняется при равенстве единице разрядов HDBUFA08 и HDBUFA09. Второе правило при равенстве нулю разрядов HDBUFA08 и HDBUFA09. Если эти разряды имеют разные значения, то ни одно правило не исполняется. Не забываем про инверсный выход с триггера. Итого получается 00>0, 01>1, 10>1, 11>0. В данном варианте 9-й разряд не должен трогаться, но он изменяется, если перед этим был установлен 8-й разряд. Такого по идее не должно быть, т.к. после каждого счёта разряды с нулевого по восьмой должны быть сброшены.
    Разряд HDBUFA10:
    /HD-BCS*HDBUFA08*HDBUFA09*HDBUFA10
    /HDBUFA09*/HDBUFA10*/A01
    /HDBUFA08*/HDBUFA10*/A01
    Всё точно так же, как и в предыдущем счучае, но здесь в сравнении уже участвуют три разряда. Итог: 000>0, 001>0, 010>0, 011>1, 100>1, 101>1, 110>1, 111>0. Так же видим, что мешает 8-й разряд.

    Далее установка этих разрядов через запись в регистр 0161076. В данном случае активны сигналы /HD-BCS, CL-CNT, A01. Неактивны /CL-CNT, /A01 и HD-BCS.
    Разряд HDBUFA09:
    /HD-BCS*HDBUFA08*HDBUFA09
    CL-CNT*/DB0*A01
    В случае равенства единице 8-го и 9-го разрядов срабатывает верхнее правило и записывается ноль, что есть неправильно. Если же 8-й разряд равен нулю, как и должно быть, то срабатывает нижнее правило и осуществляет запись нового значения разряда из нулевого бита. Т.к. выход триггера инверсный, то для получения прямого значения записывается инвертированный бит.
    Разряд HDBUFA10:
    /HD-BCS*HDBUFA08*HDBUFA09*HDBUFA10
    DB1*CL-CNT*A01
    Здесь почти всё точно так же, портят картину три одновременно установленных разряда с 8-го по 10-й, запишется ноль. А вот если какой-то из тех разрядов был равен нулю, то срабатывает нижнее правило и записывает первый бит. Но здесь в правиле он прямой, а на выходе появляется инверсный, наоборот. Для чего это делается, будет объяснено ниже.

    Ну и наконец счёт в режиме обмена с буфером контроллера жёсткого диска. Здесь активны сигналы HD-BCS, /CL-CNT. Неактивны соответственно /HD-BCS, CL-CNT. Значение A01 и /A01 не играет роли.
    Разряд HDBUFA09:
    /HDBUFA08*/HDBUFA09*/CL-CNT
    HD-BCS*/HDBUFA09
    Верхнее правило работает при равенстве разрядов 8 и 9 нулю, в результате получается ноль. В других случаях выполняется нижнее правило. Текущее значение инвертируется и опять же в инверсном виде поступает на выход, т.е. в итоге не меняет значения. При работе верхнего правила значение также не будет изменено.
    Разряд HDBUFA10:
    /HDBUFA09*/CL-CNT*/HDBUFA10
    /HDBUFA08*/CL-CNT*/HDBUFA10
    HD-BCS*/HDBUFA10
    Из-за трёх разрядов ситуация более сложная, но в итоге 10-й разряд не меняется.

    Из-за того, что 9-й и 10-й разряды не меняются во время обмена с буфером контроллера HDD (сигнал HD-BCS), переключение на следующий банк осуществляется обработкой сигнала HD-BDRQ от контроллера жесткого диска. При записи сектора или форматировании сначала подаётся сигнал HD-BDRQ, а уже потом во время операции используется буфер. В случае с чтением сначала заполняется буфер, а уже потом подаётся HD-BDRQ. Из-за этого при записи возникает небольшая коллизия, из-за того что сначала делается переход на следующий банк. Поэтому при операциях записи и форматирования необходимо после заполнения буфера выставить номер предыдущего банка. Это дело учтено в ВПО в процессе P16HDC:
    bitb #10, h.err+1 ; Это дисковод?
    bne F.RW ; На работу с дисководом
    bitb #20, (r2) ; Запись?
    beq 20$ ; Нет
    decb bcnt ; На предыдущий банк
    bicb #^C3, bcnt ;
    20$:
    Это надо учесть при эмуляции контроллера жёсткого диска. При работе с жёстким диском начальный адрес банка не имеет значения.

    В случае работы с контроллером дисковода необходимо после чтения или записи заданного количества секторов подавать сигнал TC на контроллер дисковода. Для этой цели и записывают инверсное значение бита 1. Также для дисковода имеет значение номер устанавливаемого банка, в зависимости от количества секторов: 11 - один сектор, 10 - два сектора, 01 - три сектора, 00 - четыре сектора. Т.к. бит 1 у нас записывается в инверсном значении, то получается следующая картина. Первая колонка - записываемые значения, вторая колонка - они же с инверсией первого бита, далее изменение при счёте:
    11 01 -> 10
    10 00 -> 01 10
    01 11 -> 00 01 10
    00 10 -> 11 00 01 10
    Во всех случаях видим, что после чтения последнего сектора 10-й разряд переходит из нуля в единицу. Для этого к выводу HDBUFA10 подсоединён конденсатор C17 (330 пФ) и резистор R41 (56 кОм). Это аналоговый одновибратор, подающий импульс на вход контроллера TC для прекращения считывания или записи.

    Остался один сигнал HD-RESET. Логического выхода для него не нашлось, поэтому сделали на регистровом:
    Сигнал FD-RESET:
    /DB4*CL-CNT*A01
    /FD-RESET*/DB4
    /FD-RESET*/A01
    /FD-RESET*/CL-CNT
    Если при записи в регистр 0161076 установлен бит 4, то на контроллера FDD подаётся сигнал сброса. После сброса необходимо записать в этот бит нулевое значение.

  2. #22
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Preview 109

    https://github.com/nzeemin/neonbtl/r...review-109.zip

    Убран хак в процессоре на команде MOVB.
    Введён флаг HDbuffdir и его переключение по обращению к регистрам.
    Максимальное количество дорожек увеличено до 83.
    dir/bad/fil теперь отрабатывает без ошибок

  3. Эти 6 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Aleks1985 (21.01.2023), Alex_K (21.01.2023), Oleg N. Cher (22.01.2023), Radon17 (22.01.2023), Ynicky (22.01.2023), ZEman (21.01.2023)

  4. #23
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Preview 111

    https://github.com/nzeemin/neonbtl/r...review-111.zip

    Версия с начальной поддержкой MSX Mouse.
    Пока вот так - мышь реагирует на движение, где бы не находился курсор. Принципиально не хочу делать захват мыши эмулятором.

    UPDATE: Есть бага, перепутано состояние битов для кнопок, и ещё надо убрать контекстное меню - поправлю.
    Последний раз редактировалось nzeemin; 26.01.2023 в 11:23.

  5. Этот пользователь поблагодарил nzeemin за это полезное сообщение:

    Alex_K (26.01.2023)

  6. #24
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,662
    Спасибо Благодарностей отдано 
    1,254
    Спасибо Благодарностей получено 
    1,883
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Принципиально не хочу делать захват мыши эмулятором.
    Это почему это? )

  7. #25
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Это почему это? )
    Потому что с захватом мыши неудобно. Это вводит отдельный режим, в него надо входить, из него надо выходить.
    Хочу сделать без отдельного режима - что-то вроде "когда водим мышь над эмулятором, тогда она бегает в эмулируемой машинке".

  8. #26
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,662
    Спасибо Благодарностей отдано 
    1,254
    Спасибо Благодарностей получено 
    1,883
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Это вводит отдельный режим, в него надо входить, из него надо выходить.
    Ну не знаю, все так делают, и очень удобно.
    Входить - кликнуть мышкой.
    Выходить - кликнуть средней кнопкой, или же нажать комбинацию клавиш.
    Зато пользоваться внутри эмулируемой системы очень удобно.

  9. #27
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В этой версии исправления ошибок по мыши и улучшения работы с ней, должно стать немного комфортнее. Добавился флаг отключения мыши в меню.
    Синхронизация курсора с эмулируемой машиной несколько страдает. Можно сделать идеально, если брать из памяти координаты курсора - но это будет зависимо от драйвера.

    UPDATE: Антивирус возбуждается на этот EXE. Вероятнее всего, ложно-положительное срабатывание, но удалил на всякий случай.
    Последний раз редактировалось nzeemin; 26.01.2023 в 21:46.

  10. Эти 3 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Alex_K (26.01.2023), Black Cat / Era CG (26.01.2023), ZEman (26.01.2023)

  11. #28
    Guru Аватар для ZEman
    Регистрация
    28.10.2005
    Адрес
    Омск
    Сообщений
    2,064
    Спасибо Благодарностей отдано 
    118
    Спасибо Благодарностей получено 
    36
    Поблагодарили
    25 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а где 113 релиз ? не могу скачать.

  12. #29
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Preview 114

    https://github.com/nzeemin/neonbtl/r...review-114.zip

    Версия с экспериментальной поддержкой IDE HDD драйвера HZ от @S_V_B.
    Пока особо не тестировал.

    Прикладываю к сообщению диск с работающим драйвером HZ.
    Образ винчестера можно взять здесь: https://forum.pk-fpga.ru/viewtopic.php?f=15&t=6079 - архив Soyuz-Neon-IDE.zip файл PK11_16.img

    P.S. На Virus Total 3 антивируса считают эмулятор вирусом, но я думаю что это false positive
    https://www.virustotal.com/gui/file/...c965/detection
    Вложения Вложения
    Последний раз редактировалось nzeemin; 03.02.2023 в 19:52.

  13. Эти 8 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Aleks1985 (03.02.2023), Alex_K (03.02.2023), Doronetty (04.02.2023), Oleg N. Cher (04.02.2023), Radon17 (05.02.2023), Titus (03.02.2023), Ynicky (04.02.2023), ZEman (04.02.2023)

  14. #30
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С некоторым опозданием выкладываю версию 118 эмулятора.

    В этой версии работает Covox.
    Загружаемся с приложенной дискеты, вводим dmp delta.stm, переключаем каналы клавишами K1-K5.
    Вложения Вложения

  15. Эти 5 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Doronetty (18.02.2023), Oleg N. Cher (17.02.2023), Radon17 (18.02.2023), Ynicky (18.02.2023), ZEman (17.02.2023)

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Союз-Неон ПК-11/16 описания и доработки
    от pilgrim в разделе ДВК, УКНЦ
    Ответов: 102
    Последнее: 05.05.2024, 23:55
  2. Эмулятор Союз-Неон ПК-11/16 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 335
    Последнее: 01.04.2024, 11:33
  3. Программирование для ПК 11/16 «Союз-Неон»
    от MacBuster в разделе ДВК, УКНЦ
    Ответов: 149
    Последнее: 11.01.2021, 21:10
  4. Проект рабочей реплики Союз-Неон ПК-11/16
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 4
    Последнее: 10.08.2018, 12:31
  5. ПК-11 'Союз-Неон'
    от Keeper в разделе ДВК, УКНЦ
    Ответов: 12
    Последнее: 16.10.2013, 05:07

Ваши права

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