User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 46

Тема: Особенности фирменного Спектрума

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    У меня на прерываниях тока музыка висит. Тем более как длина инта влияет на медленную память? Вопрос был только конкретно про неё.
    1. Длина инта влияет только на количество команд в инте ... То есть, если пришло прерывание, и ты в нём с делал только одну команду RETI, а длина инта была 32 такта, то он сразу тебя вернёт назад в инт, но при этом произойдёт тормоз на один инт. Так что если у тебя в инте музыка, а она уж точно более 224 тактов, то не стоит переживать ...

    2. Если твой плеер занимает не более 10000 тактов, то глубоко наплевать в каком адресе он будет играться. Можешь его положить в тормозящую память и всё будет идеально. Тормоза тормозящей памяти начинаются только в момент высвечивания пикселов экрана. То есть пока лучь выше экранной области никаких тормозов не будет.

    3. Если вектор прерывания лежит в тормозяще области то вот тут самое страшное. А если ещё и точка входа в инт в тормозящую область, то будет тормоз-тормозов ...

    Вообщем, I=128..191, точка входа в любое место, главное до начала отрисовки экрана начать выполнять код в нетормозяще области ...
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

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

  3. #2

    Регистрация
    13.12.2007
    Адрес
    Архангельск
    Сообщений
    2,189
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    13 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а если данные выбираются ? скажем копируется вирт экран в 5 на реальный там же? и не укладываются в инт?

  4. #3

    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Totem Посмотреть сообщение
    а если данные выбираются ? скажем копируется вирт экран в 5 на реальный там же? и не укладываются в инт?
    Ну ... Собственно и не должно ... Или я не понял ... Переброска всего экрана как минимум скушает целый инт ... Ты, соответственно, превысишь лимит времени начала отрисовки экрана и начинает тормозить. Но если ты сделаешь все операции с тормозящей областью до начала отрисовки экрана, то как на пентагоне, так и на фирменно будет работать одинаково.

    ---------------------------------------------------------------------------

    Кстати не досказал насчёт длины инта ... Бывает ещё так, что длина инта слишком мала. Допустим вы делаете LDIR, и в этот момент пришёл инт. Который в тактах меньше тактов LDIR'а ... Тогда инт пропустится ...
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

  5. #4

    Регистрация
    02.03.2005
    Адрес
    Екатеринбург
    Сообщений
    133
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Robus Посмотреть сообщение
    Бывает ещё так, что длина инта слишком мала. Допустим вы делаете LDIR, и в этот момент пришёл инт. Который в тактах меньше тактов LDIR'а ... Тогда инт пропустится ...
    Уточняю, что длина INT-а должна быть не менее чем длина самой длинной команды, а это, вроде бы, 23 такта.
    По поводу LDIR-а, т.к. он может оперироват большущими блоками и выполняться куда больше чем 23 такта, то выполняется он так:
    1. читается код команды (LDIR) из памяти
    2. читается байт из (HL)
    3. пишется байт в (DE)
    4. увеличивается HL, DE, уменьшается BC
    5. если BC = 0 то PC = PC + 2
    6. Анализируется INT, если = 0 то выполняется прерывание

    Таким образом, когда BC <> 0 счетчик PC не изменяется и повторно читается та же самая команда (LDIR) из памяти.

  6. #5

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexCrush Посмотреть сообщение
    1. читается код команды (LDIR) из памяти
    2. читается байт из (HL)
    3. пишется байт в (DE)
    4. увеличивается HL, DE, уменьшается BC
    5. если BC = 0 то PC = PC + 2
    6. Анализируется INT, если = 0 то выполняется прерывание
    Не совсем.

    1. Запрещаются прерывания
    2. Читается префикс команды
    3. Читается команда
    4. Разрешаются прерывания
    5. Выполняются пункты 2-4 из твоего списка
    6. Если BC != 0, то PC -= 2

  7. #6

    Регистрация
    02.03.2005
    Адрес
    Екатеринбург
    Сообщений
    133
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Не совсем.
    Может и так, сейчас уж точно не помню.
    В любом случае, суть в том, что LDIR выполняется не непрерывным блоком а как большое кол-во LDI, между которыми возможно прерывание.
    Сорри что увел тему немного в сторону от особенностей фирменного спека
    С новым годом всех!

  8. #7

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    1. Запрещаются прерывания
    2. Читается префикс команды
    3. Читается команда
    4. Разрешаются прерывания
    5. Выполняются пункты 2-4 из твоего списка
    6. Если BC != 0, то PC -= 2
    т.е. прерывание может быть обработано после выборки команды, но до ее выполнения? Можно ссылочку на источник информации? Просто в Z80 Family CPU User Manual (um0080.pdf) написано (Timing / Interrupt Request/Acknowledge Cycle): The CPU samples the interrupt signal (/INT) with the rising edge of the last clock cycle at the end of any instruction.

  9. #8

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  10. #9

    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Вроде так...
    Только так !!!

    У фирменного спека есть прекрасная особенность ... Если сделать HALT в момент торможения, то есть когда отрисовывается пиксель экрана, то число тактов при окончании исполнения HALT будет делиться на 4 !!! В итоге, если вы хотите сделаьть мультиколорный эффект, то просто делаете один HALT в середине отрисовки экрана, и вы ввалитесь в прерывание чётко с первыйм тактом самого инта. Таким образом вы всегда будете синхронизированы с лучём, и можете рисовать на брдюре и на экране одновременно, - пиксель в пиксель ... На пентагоне такое сделать нельзя !!! Всегда будет несовпадение как минимум на 4 пикселя !!!

    Original Speccy - BEST ...
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

  11. #10

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Robus Посмотреть сообщение
    У фирменного спека есть прекрасная особенность ... Если сделать HALT в момент торможения, то есть когда отрисовывается пиксель экрана, то число тактов при окончании исполнения HALT будет делиться на 4 !!! В итоге, если вы хотите сделаьть мультиколорный эффект, то просто делаете один HALT в середине отрисовки экрана, и вы ввалитесь в прерывание чётко с первыйм тактом самого инта. Таким образом вы всегда будете синхронизированы с лучём, и можете рисовать на брдюре и на экране одновременно, - пиксель в пиксель ... На пентагоне такое сделать нельзя !!! Всегда будет несовпадение как минимум на 4 пикселя !!! Original Speccy - BEST ...
    Hi Robus, вот чего никогда не мог сделать так это понять что ты хотел сказать с первого раза

    Вот и тут пришлось мне 10 минут думать над этой фразой. На скоко я понимаю речь тут идет о том что если сделать HALT до того как ULA прочитает последний байт в текущем кадре то схема торможения проца выровняет последующие выполнения операций NOP таким образом что при поступлении сигнала прерывания процессор начнет выполнять процедуру обработчик прерывания всегда в один и тот же такт по отношению к кадровому синхроимпульсу и самому сигналу прерывания. Если же сденать HALT в нижней части border-a под paper-ом то никакого торможения и выравнивания выполнения NOP-ов не произойдет и учитывая что сигнал прерывания может прийти на 1,2,3,4 такте команды NOP можно ожидать различное время начала выполнения процедуры обработчика прерывания а значит и срыв синхронизации эфектов multicolora.

    Но вот вопрос как по другому можно синхронизироватся? Порт 0xff ?

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

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

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

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

Похожие темы

  1. Национальный Фонд Спектрума
    от copperfeet в разделе Люди
    Ответов: 49
    Последнее: 04.05.2008, 08:58
  2. Firmware для Спектрума
    от CityAceE в разделе Оси
    Ответов: 30
    Последнее: 25.07.2005, 10:14
  3. Продаются 2 модема для спектрума
    от Alpha в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 23.03.2005, 02:40
  4. Ремонт фирменного 48-го
    от kgbplus в разделе Зарубежные модели
    Ответов: 2
    Последнее: 11.03.2005, 20:43

Ваши права

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