User Tag List

Показано с 1 по 10 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

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

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

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    ivagor, можешь вот это на векторский перевести?
    interrupt.zip
    и например обьяснить как этим правильно пользоваться
    Сколько смотрю на этот алгоритм, не могу понять, как можно восстановить испорченные стеком данные.
    С моей точки зрения, сделать это на 100% - это не возможно.

    Пример.
    Есть на экране картинка. Я с помощью стека вношу в неё изменения.
    Только-что полностью закончил вывод спрайта, и собираюсь восстановить указатель стека, который в данный момент указывает на фоновую картинку под выведенным спрайтом... И тут пришло оно... прерывание... Адрес возврата из прерывания пишется в стек, т.е. прямо на мою фоновую картинку, о содержимом затёртого стеком ни кто, ни как знать вообще не может...
    Подпрограмма "восстановления" в прерывании загоняет за место двух затёртых байт фоновой картинки содержимое пары ВС (если я правильно понял), и вот на фоновой картинке под спрайтом появляется артефакт...
    А если я только занёс в ВС данные для спрайта, но не выполнил PUSH BC... и произошло прерывание, то оно сделает это за меня, испортив два предыдущих байта в спрайте?
    Выход только один, в своих подпрограммах вывода спрайта, постоянно запрещать и разрешать прерывания... а будет ли при этом выигрыш от использования стека, вот в чём вопрос ?
    Последний раз редактировалось KTSerg; 01.08.2020 в 07:43.

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

    metamorpho(01.08.2020)

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

  3. #2

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Сколько смотрю на этот алгоритм, не могу понять, как можно восстановить испорченные стеком данные.
    С моей точки зрения, сделать это на 100% - это не возможно.

    Пример.
    Есть на экране картинка. Я с помощью стека вношу в неё изменения.
    Только-что полностью закончил вывод спрайта, и собираюсь восстановить указатель стека, который в данный момент указывает на фоновую картинку под выведенным спрайтом... И тут пришло оно... прерывание... Адрес возврата из прерывания пишется в стек, т.е. прямо на мою фоновую картинку, о содержимом затёртого стеком ни кто, ни как знать вообще не может...
    Подпрограмма "восстановления" в прерывании загоняет за место двух затёртых байт фоновой картинки содержимое пары ВС (если я правильно понял), и вот на фоновой картинке под спрайтом появляется артефакт...
    А если я только занёс в ВС данные для спрайта, но не выполнил PUSH BC... и произошло прерывание, то оно сделает это за меня, испортив два предыдущих байта в спрайте?
    Выход только в своих программах постоянно запрещать и разрешать прерывания... а вудет ли при этом выигрыш от использования стека, вот в чём вопрос ?
    Ну над этим алгоритмом работал один из гениев программирования спектрума.

    Задача этого набора процедур не дать сдохнуть данным спрайтов выводимых через стек при включенных прерывания.

    Для этого нужна другая процедура рисования спрайтов. Более быстрая. С прокачкой данных через стек.

    Стек не на экране. Стек на спрайтах.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(01.08.2020)

  4. #3

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Стек не на экране. Стек на спрайтах.
    Вот с этим согласен.
    Если стек на спрайте, а не на экране. Есть вероятность корректной работы алгоритма.
    Для этого как минимум нужно разрешить прерывание только после установки стека на спрайт и чтения первых байт спрайта. А перед переходом на другой спрайт запрещать.
    Иначе спрайтам - кирдык.
    Можно конечно выкрутиться, и подогнать, что-бы все спрайты начинались и заканчивались одинаково... тады...
    Последний раз редактировалось KTSerg; 01.08.2020 в 07:59.

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

    metamorpho(01.08.2020)

  5. #4

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Вот с этим согласен.
    Если стек на спрайте, а не на экране. Есть вероятность корректной работы алгоритма.
    Для этого как минимум нужно разрешить прерывание только после установки стека на спрайт и чтения первых байт спрайта.
    Прерывания разрешены всегда.
    Просто сначала заряжаешь основной регистр под графику, потом уже стек.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(01.08.2020)

  6. #5

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    ...
    и например обьяснить как этим правильно пользоваться.
    Ну вот похоже и сформировались рекомендации:
    1. Пара ВС ни где в программе больше не используется, кроме подпрограммы вывода спрайта.
    2. Стек при выводе спрайта используется на чтение данных из спрайта.
    3. Все спрайты должны иметь два первых и два последних байта одинаковыми. Например подпрограмма вывода спрайта может первую пару байт читать в холостую, без вывода на экран, и так-же по завершении вывода спрайта, считать из спрайта ещё пару байт (для очистки ВС).

    Дополняйте, что ещё ?

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

    metamorpho(01.08.2020)

  7. #6

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

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    1. Пара ВС ни где в программе больше не используется, кроме подпрограммы вывода спрайта.
    Пара BC в подпрограмме вывода спрайта используется только для чтения графики спрайта. Остальная программа может быть какой угодно.
    Цитата Сообщение от KTSerg Посмотреть сообщение
    3. Все спрайты должны иметь два первых и два последних байта одинаковыми.
    Это не нужно. Решение классика - первые два байта читаем обычно, без стека. Для вектора, если графики много и она в квазе, придется читать все стеком и на этот случай (в ветке robotz) jerri предложил делать промежуток в 2 байта между спрайтами.

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

    metamorpho(01.08.2020)

  8. #7

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Пара BC в подпрограмме вывода спрайта используется только для чтения графики спрайта. Остальная программа может быть какой угодно.
    Просто если ВС будет использоваться помимо подпрограммы вывода спрайта, то неизбежно, "буферные" байты между спрайтами будут менять значение. Это конечно не критично, для того они и предусмотрены.

    Это не нужно. Решение классика - первые два байта читаем обычно, без стека. Для вектора, если графики много и она в квазе, придется читать все стеком и на этот случай (в ветке robotz) jerri предложил делать промежуток в 2 байта между спрайтами.
    Ну "промежуток в 2 байта между спрайтами" и то, что я написал "первые2 и последние 2 одинаковые во всех спрайтах", в принципе одно и то-же.

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

    metamorpho(01.08.2020)

  9. #8

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

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Просто если ВС будет использоваться помимо подпрограммы вывода спрайта, то неизбежно, "буферные" байты между спрайтами будут менять значение. Это конечно не критично, для того они и предусмотрены.
    На время работы процедуры вывода спрайтов активен специальный(отдельный) обработчик прерываний.

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

    metamorpho(01.08.2020)

  10. #9

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    На время работы процедуры вывода спрайтов активен специальный(отдельный) обработчик прерываний.
    Это лишнее
    Все манипуляции происходят в стеке
    Заменяя адрес возврата из прерывания содержимым bc
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(01.08.2020)

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

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

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

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

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