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

User Tag List

Страница 28 из 183 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя
Показано с 271 по 280 из 1824

Тема: Эмулятор ДВК

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

    По умолчанию

    Patron, а в эмуляторе в КМД работает вывод на терминал, если к регистру 177566 обращаются из КМД через окно? В данном случае старший адрес окна равен 177777, а обращение к регистру идет через 77566. Регистр 177564 вроде читается через окно, а вот вывод на экран не идет.

  2. #271
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Patron, а в эмуляторе в КМД работает вывод на терминал, если к регистру 177566 обращаются из КМД через окно?
    Не работает.

    Эмулятор порта терминала и эмулятор КМД выполняются в разных потоках, а обработка записи в регистры устройства из другого потока в эмуляторе порта терминала пока не предусмотрена.

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

    Изменить содержимое регистра статуса невозможно - ячейка изменится, но эмулятор устройства уведомления не получит и записанное в ячейку слово пропадёт.


    В принципе - можно добавить в API устройств PDP-11 специальные вызовы "постороннего" чтения/записи регистров DMA_IO, которые можно будет вызывать как из своего, так и из чужого потока.
    Последний раз редактировалось Patron; 04.01.2014 в 20:01.

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Не работает.

    Эмулятор порта терминала и эмулятор КМД выполняются в разных потоках, а обработка записи в регистры устройства из другого потока в эмуляторе порта терминала пока не предусмотрена.
    Жаль. С точки зрения работы аппаратуры это обращение к шине МПИ, и устройству не играет роли, процессор к нему обращается или другое устройство через ПДП.
    Цитата Сообщение от Patron Посмотреть сообщение
    Читается в режиме дизассемблера - без уведомления устройства, поэтому бит готовности в регистре статуса не сбрасывается.

    Изменить содержимое регистра статуса невозможно - ячейка изменится, но эмулятор устройства уведомления не получит и записанное в ячейку слово пропадёт.
    Я вообще-то читаю регистр статуса терминала 177564 и проверяю бит готовности в цикле. Если он не будет установлен, то вывод в 177566 прерывается. Собственно всегда был установлен и вывод в 177566 проходил.

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    С точки зрения работы аппаратуры это обращение к шине МПИ, и устройству не играет роли, процессор к нему обращается или другое устройство через ПДП.
    При абстрактной многопоточной эмуляции это играет роль.

    После добавления новых вызовов в API устройств - КМД сможет работать через ПДП только с теми устройствами, в эмуляторы которых будет добавлена соответствующая возможность.

    Но ведь через запуск программы пользователя можно заставить реальный КМД работать с любым устройством на шине ДВК. Значит, надо будет добавить поддержку новых вызовов в эмуляторы порта терминала, порта принтера, платы МС1201 ( чтобы КМД мог изменять содержимое SEL1 ), процессора ВМ1 ( для доступа к регистрам ВЕ-таймера ), контроллера MX и даже микросхемы ВП1-128 ( вдруг КМД будет подключен к шине БК-0011, где есть своя ВП1-128 ).

    В принципе, можно сделать и так.

    Кстати, если хочется поработать напрямую с ВП1-128 - можно прицепить её на шину ДВК вместо контроллера MX:

    Код:
    [objects]
    VP1-128 = DSK_module:VP1-128
    
    
    [links]
    ;; bus & CPU | CpuBoard | HD | TerminalPort | PrinterPort | Booter | MX | MY
    bus & CPU | CpuBoard | HD | TerminalPort | PrinterPort | Booter | MY | VP1-128
    
    
    [VP1-128.ini]
    MY0 = MY80_System.DSK
    MY1 = 
    MY2 = 
    MY3 =

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    При абстрактной многопоточной эмуляции это играет роль.

    После добавления новых вызовов в API устройств - КМД сможет работать через ПДП только с теми устройствами, в эмуляторы которых будет добавлена соответствующая возможность.

    Но ведь через запуск программы пользователя можно заставить реальный КМД работать с любым устройством на шине ДВК. Значит, надо будет добавить поддержку новых вызовов в эмуляторы порта терминала, порта принтера, платы МС1201 ( чтобы КМД мог изменять содержимое SEL1 ), процессора ВМ1 ( для доступа к регистрам ВЕ-таймера ), контроллера MX и даже микросхемы ВП1-128 ( вдруг КМД будет подключен к шине БК-0011, где есть своя ВП1-128 ).
    Вообще-то реальный ДВК - это конструктор. Есть корзина, в которую вставляются платы. Каждая плата имеет адреса, на которые она реагирует, играет роль место в приоритетной цепочке при обслуживании VIRQ, а также ответа на запрос ПДП. Есть другие сигналы, на которые реагируют устройства, например BS, INIT.
    Цитата Сообщение от Patron Посмотреть сообщение
    Кстати, если хочется поработать напрямую с ВП1-128 - можно прицепить её на шину ДВК вместо контроллера MX:
    Да пока интересно именно в составе КМД, если что программу можно загрузить и в СОЗУ с адреса 20000, что я и делал, пробовал выводить на терминал через "окно".

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Вообще-то реальный ДВК - это конструктор.
    Модульный API - точно такой же конструктур. Проблема возникает при многопоточной эмуляции, когда два потока одновременно обращаются к одному устройству.

    В принципе - может помочь введение межпоточной блокировки в обычный API обращения к устройству.

    Если межпоточная блокировка решит проблему - в следующем релизе КМД сможет работать с любыми устройствами на шине ДВК.

  8. #277
    Moderator Аватар для BYTEMAN
    Регистрация
    11.01.2006
    Адрес
    Брест/Минск
    Сообщений
    8,394
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    115
    Поблагодарили
    57 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Проблема возникает при многопоточной эмуляции, когда два потока одновременно обращаются к одному устройству.
    а как такая проблема решалась на аппаратном уровне?
    С уважением, Александр.
    Scorpion ZS-256 Turbo+ GMX-2048
    SID-Blaster/ZX
    Музей ретрокомпьютеров в Минске!
    Здесь ничего нет => http://byteman.by
    И здесь тоже --->>> http://bytespace.by

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

    По умолчанию

    Цитата Сообщение от BYTEMAN Посмотреть сообщение
    а как такая проблема решалась на аппаратном уровне?
    На аппаратном уровне для захвата шины устройство выставляет сигнал DMR. После того, как процессор освободит шину, он выставляет сигнал DMG (на самом деле у устройств есть вход DMGI и выход DMGO для передачи сигнала по приоритетной цепочке). Получив сигнал DMG, устройство снимает сигнал DMR и ставит SACK, подтверждая захват шины. Процессор снимает DMG и освобождает шину. После этого, во время действия сигнала SACK, устройство может распоряжаться шиной МПИ по своему усмотрению. После снятия сигнала SACK управление шиной возвращается процессору.

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

    По умолчанию

    Цитата Сообщение от BYTEMAN Посмотреть сообщение
    а как такая проблема решалась на аппаратном уровне?
    Активное устройство должно было "захватить" шину перед выставлением адреса. Пока активен сигнал захвата шины - все остальные активные устройства должны ждать.

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

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

    По умолчанию

    Кстати, по поводу захвата шины и процессора 1801ВМ1. Читал, что при захвате шины он позволяет захватившему устройству читать регистры межпроцессорной связи и таймера. А вот как обстоит с внешними регистрами SEL2 и SEL1? Формирует ли процессор в этом случае сигналы SEL2 и SEL1, если захватившее устройство выставило адрес 177714 или 177716? Ведь обычно регистр 177716 отвечает только на сигнал SEL1 и даже не надо формировать RPLY.

Страница 28 из 183 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 19
    Последнее: 24.06.2022, 08:02
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

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