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

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 30

Тема: Влияние чтения портов на прерывания

  1. #1
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,654
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Влияние чтения портов на прерывания

    Вопрос по портам и прерываниям:
    Цитата Сообщение от ALKO Посмотреть сообщение
    Музон в прерываниях пашет, но порой подлагивает, когда обрабатывает перемещения спрайта с клавиатуры.
    В процедуре опроса клавиатуры имеется восьмикратное чтение портов. Влияет ли чтение портов на задержки прерываний?

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

  3. #2
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,924
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    180
    Поблагодарили
    94 сообщений
    Mentioned
    12 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    В процедуре опроса клавиатуры имеется восьмикратное чтение портов. Влияет ли чтение портов на задержки прерываний?
    нет

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

    Andrew771 (21.10.2019)

  5. #3
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,662
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Вопрос по портам и прерываниям:

    В процедуре опроса клавиатуры имеется восьмикратное чтение портов. Влияет ли чтение портов на задержки прерываний?
    музыка на прерываниях лагает когда ты запрещаешь прерывания
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

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

    Andrew771 (21.10.2019)

  7. #4
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,654
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    спасибо!

  8. #5
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    43
    Поблагодарили
    34 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    музыка на прерываниях лагает когда ты запрещаешь прерывания
    или жо обработчик срабатывает 2+ раза
    по причини короткого обработчика\длинного сигнала инта
    на эмуляторах такой проблемы обычно нет

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    нет
    А если проц без остановки висит на вайте
    захват прерывания происходит?

  9. #6
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,377
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Вопрос по портам и прерываниям:

    В процедуре опроса клавиатуры имеется восьмикратное чтение портов. Влияет ли чтение портов на задержки прерываний?
    в оригинальном спектруме обращение к портам влияет на задержки процессора.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  10. #7
    Veteran
    Регистрация
    07.10.2006
    Адрес
    Павлоград, Днепропетровская обл., Украина
    Сообщений
    1,214
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    в оригинальном спектруме обращение к портам влияет на задержки процессора.
    Обращение к портам у 48/128 не влияет на задержки, а тормозится задержками. Причем время задержки обращения к порту зависит от номера порта. Но чтение портов в процедуре обработки прерывания никак не тормозится, потому что происходит в начале кадра, когда до задержек ULA ещё далеко (они происходят во время вывода растра (основной картинки, закодированной пикселами/атрибутами), и вызваны чтением видеопамяти ULA-й).

    У прерываний на Спектруме обычно нет никаких задержек. Пришел сигнал INT во время выполнения команды, и если прерывания разрешены, после выполнения этой команды идет вход в прерывание. Исключение для команд EI, префиксов #DD/#FD (и других префиксов (#CB и #ED) тоже, но другие префиксы не образуют цепочки, являются частью команд), и команд LD A,I/LD A,R на CMOS Z80 - после них подтверждения прерывания не происходит. (Поэтому если во время прихода INT выполнять цепочку из таких команд всё время активности INT, прерывание не произойдет, а обычно оно происходит после следующей за командой-исключением командой. Можно считать, что вход в прерывание задерживается командами-исключениями.)

    - - - Добавлено - - -

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    на эмуляторах такой проблемы обычно нет
    Обычно есть. Стандартное время сигнала INT на 48м - 32 такта, на 128м - 36 тактов, за это время короткий обработчик прерывания, укладывающийся в это время с запасом, может выполниться дважды. Нормальные эмуляторы это эмулируют.
    Последний раз редактировалось weiv; 27.10.2019 в 02:28.

  11. #8
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    43
    Поблагодарили
    34 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от weiv Посмотреть сообщение
    Обычно есть. Стандартное время сигнала INT на 48м - 32 такта, на 128м - 36 тактов,
    я говорю про длину инта 300+ тактов
    когда срабатывает даже большой обработчик по 2 раза...

    ну и да
    19 тактов вход в им2 обработчик
    10 тактов рет

    даже если обработчик будет просто инкрементить регистр 4 такта
    то на оригинальном 48-м он отработает вполне нормально свой один раз
    и все будет в шоколаде
    а если юзать рети то в шоколаде все и на 128-м
    ...

    то есть такая длина не с проста
    нормальный полезный обработчик гарантировано больше инта

    ...но в отечественных поделиях
    какая либо длина инта не гарантирована...


    и смысол вешать на инт один рет? (разве что он иногда заменяется нопом)
    даже так
    повторное срабатывание такого обработчика сдвинет разве что мультикороры...
    код синхронизирующийся по халту (для которого обработчик как раз может быть и один рет)
    летать от этого тоже не станет..
    Последний раз редактировалось NEO SPECTRUMAN; 27.10.2019 в 04:12.

  12. #9
    Veteran
    Регистрация
    07.10.2006
    Адрес
    Павлоград, Днепропетровская обл., Украина
    Сообщений
    1,214
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ну и да
    19 тактов вход в им2 обработчик
    10 тактов рет

    даже если обработчик будет просто инкрементить регистр 4 такта
    то на оригинальном 48-м он отработает вполне нормально свой один раз
    и все будет в шоколаде
    а если юзать рети то в шоколаде все и на 128-м
    ...
    Один RET быть не может, т.к. вход в прерывание запрещает прерывания, минимум EI:RET. 19+4+10=33. Такой на 128м может отработать дважды. И такие короткие обработчики бывают не так уж редко - когда от прерываний нужна только синхронизация с началом кадра. Попадались и в играх, и в демах.

    - - - Добавлено - - -

    Повлиять двойное срабатывание прерывания может на потактовые видеоэффекты (гигаскрины-мультиколоры), на запись RZX, на тесты таймингов, на генерацию биперного звука.

    - - - Добавлено - - -

    Самый смак, если поставить EI первой командой в обработчике. Тогда и на 48м будут двойные срабатывания, независимо от длины обработчика.

  13. #10
    Veteran Аватар для daniel
    Регистрация
    31.10.2005
    Адрес
    Кемерово
    Сообщений
    1,351
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от weiv Посмотреть сообщение
    Один RET быть не может, т.к. вход в прерывание запрещает прерывания, минимум EI:RET. 19+4+10=33.
    Может быть один RET! EI может быть и не в обработчике. Если я правильно вашу мысль понял.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ЮТ-88 карта портов I/O
    от palsw в разделе ЮТ-88
    Ответов: 15
    Последнее: 07.03.2015, 18:06
  2. Прерывания IM 2
    от GM BIT в разделе Программирование
    Ответов: 12
    Последнее: 21.01.2011, 23:52
  3. Описание портов ZX Spectrum
    от Keeper в разделе Unsorted
    Ответов: 10
    Последнее: 26.05.2008, 06:00

Ваши права

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