User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 14 из 14

Тема: Полосы в ZX Spectrum без ПЗУ как образуются?

  1. #11

    Регистрация
    19.11.2012
    Адрес
    г. Луганск
    Сообщений
    698
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lion17 Посмотреть сообщение
    Думаю, число все же не случайное, а сохраняется текущее. Если Reset произошел посреди выполнения операции, то SP уменьшится только на единицу и произойдет смещение матраса.
    Это очень маловероятно, потому что Reset "замораживает" процессор, а регистры как элементы динамической памяти требуют регенерации.
    Но все-таки я решил проверить. Нашел книжку. Тут описывается алгоритм этой команды:

    (SP-1) <- PCh
    (SP-2) <- PCl
    SP <- SP-2
    PC <- p

    т.е. SP не может быть уменьшен на 1.
    Описание тактов:
    4 такта - выборка команды из памяти;
    3 такта запись страшего байта PCh
    3 такта запись младшего байта PCl
    1 такт уменьшение на SP 2 и копирование #0038 в регистр PC

    Цитата Сообщение от Lion17 Посмотреть сообщение
    А насчет подсчета, ты не учел, что на стек помещается сразу два байта, так что надо умножать на 32768.
    А вот здесь правильно, пока процессор 65636 раз выберет команду RST#38 экран построится дважды.

  2. #12

    Регистрация
    18.01.2005
    Адрес
    Ростов-на-Дону
    Сообщений
    577
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    (SP-1) <- PCh
    (SP-2) <- PCl
    SP <- SP-2
    PC <- p

    т.е. SP не может быть уменьшен на 1.
    Описание тактов:
    4 такта - выборка команды из памяти;
    3 такта запись страшего байта PCh
    3 такта запись младшего байта PCl
    1 такт уменьшение на SP 2 и копирование #0038 в регистр PC
    1. ИМХО, регистры в процессоре статические. Регенерации не требуют.
    2. Алгоритм-то правильный, но на уровне микрокода, уверен, дело обстоит не так. (SP-1) <- PCh откуда берется SP-1? Его сначала надо вычислить, для этого нужен дополнительный двух-байтный регистр, лишнее копирование, лишний декремент. Зачем это нужно?
    Реальный алгоритм должен быть типа такого:
    SP--
    [SP]<-PCh
    SP--
    [SP]<-PCl
    PC<-p

    По тактам тоже не верно. Я проверял осциллографом команды, следил в какой момент идет обращение к памяти.
    Выходит так: 4-1-3-3

  3. #13

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lion17 Посмотреть сообщение
    1. ИМХО, регистры в процессоре статические. Регенерации не требуют.
    2. Алгоритм-то правильный, но на уровне микрокода, уверен, дело обстоит не так. (SP-1) <- PCh откуда берется SP-1? Его сначала надо вычислить, для этого нужен дополнительный двух-байтный регистр, лишнее копирование, лишний декремент. Зачем это нужно?
    Реальный алгоритм должен быть типа такого:
    SP--
    [SP]<-PCh
    SP--
    [SP]<-PCl
    PC<-p

    По тактам тоже не верно. Я проверял осциллографом команды, следил в какой момент идет обращение к памяти.
    Выходит так: 4-1-3-3
    RST #FF выполняется за 4+1+3+3 такта:
    1) чтение инструкции 4 такта
    2) выставление IR на шину адреса (без обращения к памяти) - 1 такт
    3) SP--, [SP] = PCH - 3 такта
    4) SP--, [SP] = PCL, PC=#FF - 3 такта
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  4. #14

    Регистрация
    19.11.2012
    Адрес
    г. Луганск
    Сообщений
    698
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно сделать 100 сбросов и подсчитать сколько раз поменялись полосы.
    Если ~50 раз - то информация в регистрах теряется.
    Иначе вероятность перехода 3/11 ~27%, должно быть около 30 изменений полос.
    У меня нет Спектрума живого

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 06.04.2012, 21:37
  2. Межзнакоместные вертикальные полосы
    от Kakos_nonos в разделе Изображение
    Ответов: 2
    Последнее: 27.03.2012, 20:50
  3. Владельцам ZX Spectrum+128 и ZX Spectrum+2(grey)
    от Black_Cat в разделе Зарубежные модели
    Ответов: 3
    Последнее: 11.03.2012, 17:24
  4. Полосы на бордюре - принцип эмуляции
    от Виктор в разделе Эмуляторы
    Ответов: 14
    Последнее: 20.04.2009, 04:38

Ваши права

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