У Вектора должно быть фиксированное количество тактов на кадр. Значит, раз уж мы один раз выбрали какую-то позицию для КСИ, то дальше просто считаем клоки и все должно стоять, как вкопанное. Или F50Гц только для начальной установки используется?
У Вектора должно быть фиксированное количество тактов на кадр. Значит, раз уж мы один раз выбрали какую-то позицию для КСИ, то дальше просто считаем клоки и все должно стоять, как вкопанное. Или F50Гц только для начальной установки используется?
Больше игр нет
Ну вот например, запущенный Бейсик, 4 последовательных отрезка прихода КСИ - здесь это сигнал f50. Он четко отсчитывает 312 строк 384 точки. С шины ВУ я ловлю сигнал СТРОБ и если 0-бит шины данных равен 1 генерирую interrupt. Все 4 импульса оказываются с различной задержкой от фронта f50. Сверху длительности разбега.
- - - Добавлено - - -
Если использовать F50Гц, то все стоит четко, сейчас так и сделано. Если же не использовать этот сигнал и пытаться отстроиться по сигналам ВУ, то засада.
- - - Добавлено - - -
А вот подробнее про счетчик регенерации можно? Что имеется ввиду?
"... жизнь удалась, если найдётся кто-нибудь, кто заберёт с помойки твои книги и инструменты, когда ты умрёшь". (c) marta_ketro
Любой компьютер, в котором стоят резисторы, компьютером может называться с натяжкой. (с) Д. Михайлов
В 4х тактном цикле 2 слота для общения вектора с внешней памятью - для проца и для регенерации (или наоборот, забыл). Счетчик регенерации на ШАП с RAS без CAS. По данным из Вектор-USER его период 8 строк, 32 значения в строке (в активной области изображения, как я понимаю). На временных диаграммах svofski счетчик регенерации четко видно.
- - - Добавлено - - -
svofski это упомянул
ну и я фантазировал по этой причине.
- - - Добавлено - - -
Возможно остальные 16 значений (там, где бордюр и синхра) являются повторениями половины из 32х, это надо уточнять. Если да, то это неприятный (усложняющий) момент.
Правда ли, что при отсуствии F50Гц мы можем приделать такую воображаемую ручку сдвига момента начала кадра, которой можно будет отстроиться один раз при включении и потом забыть?
В моих диаграммах счетчик видно, но я никогда не вдавался в подробности происходящего. Уверен, что можно изловчиться и отловить его, но само по себе явление RAS без CAS на ВУ недостаточный признак, поскольку CAS без БЛК на ВУ не проходит вообще. Syntal уже отлавливает прохождение всей картинки, значит эта наука уже развита.
И вот тут вопрос с подковыркой: если получается поймать вообще все данные, которые проходят через видеоадаптер, почему нельзя просто по адресу выборки этих данных сделать вывод о том, что наступил момент КСИ? Пробежали все адреса экрана, отсчитали +32 строки с клювиком и сделали КСИ. Почему это не получается?
Меня интересует все это с точки зрения возможности добавить в Шадков функцию снятия скриншота. Это точно не сегодня и не завтра, но и в текущем виде Шадки еще полгода назад были гипнагогией. Для одного скриншота требования не такие жесткие, как для вывода на монитор. В принципе для скриншота в первом приближении вообще не нужен момент КСИ, нужны только адреса и данные (ну и история записи в регистры для прокрутки и палитры).
Больше игр нет
Дополнительно можно учесть то, что эти значения появляются строго раз в 4 векторовских такта и изменяются регулярно и предсказуемо. Правда, повторюсь, не знаю, что там на бордюре.
Имхо самый простой вариант - настроиться один раз при старте загрузчика. Там прерывание после HLT и проблем быть не должно. А потом просто отсчитываем по 59904 такта.
Посмотрел временную диаграмму и можно предложить вариант попроще, чем я вчера выдумывал:
1. Фиксируем значение ШАП по переднему фронту RAS. Проверяем, что нет ЧТВВ или ЗПВВ.
2. На момент заднего фронта RAS проверяем, есть ли ЧТЗУ или ЗПЗУ. Если нет - значит мы фиксировали с ШАП счетчик регенерации.
У меня сделано сейчас так: по приходу F50Гц образно обнуляются счетчики горизонтальных и вертикальных позиций экрана для VGA. Так как 12 МГц поступают на Вектор с DE1, получается полный синхрон, по приходу следующего F50Гц в счетчиках уже будет по нулям. Можно не ловить F50Гц, счетчики будут сами по себе отсчитывать позиции, но тогда при выводе на бордюре получается произвольное положение обратного хода луча и видно как он палитру прописывает, скролл крутит и т.п. Кнопки приделать и крутить туда-сюда с точностью до пикселя не проблема, но какой в этом смысл и все равно на глазок получится.
Я наверное не объяснил как у меня сделано и отсюда недопонимание. Я отлавливаю на шине все операции записи в старшую половину ОЗУ Вектора, скидываю в SRAM DE1, дополнительно также записываю операции записи в порты 02, 03, 0C-0F и на основе этих данных генерирую картинку в VGA-формате. Если честно не знаю есть ли на ВУ данные видеоадаптера - не думал об этом.
- - - Добавлено - - -
Присмотрелся к счетчику регенерации, очень перспективно выглядит! Значения EF и E0 всегда при смене кадра постоянны, к тому же все RASы приходят кратно, а последний на 1 пиксель раньше - какой-то краевой эффект, но очень полезным получается. Самое замечательно, что циклограмма выполняется еще до сброса проца при включении питания. Нужно попробовать реализовать такой способ и посмотреть какие будут результаты.
Последний раз редактировалось Syntal; 04.08.2018 в 09:49.
"... жизнь удалась, если найдётся кто-нибудь, кто заберёт с помойки твои книги и инструменты, когда ты умрёшь". (c) marta_ketro
Любой компьютер, в котором стоят резисторы, компьютером может называться с натяжкой. (с) Д. Михайлов
Это был мысленный эксперимент, чтобы понять как устроена синхронизация. Теперь понятно.
А я почему-то думал, что прямо по данным видеоадаптера на ВУ. Я тоже не знаю наверняка, есть ли они там, но по-моему нет ничего отрезающего данным путь во время видеодоступа.
Это же специально для синхронизации VGA-адаптеров =)
Больше игр нет
Учитывая объем видеоданных каждый кадр для их "показа" на ВУ нужно было бы или вывести 32х битную шину данных или отдельную шину видеоданных меньшей разрядности, но большей скорости. Например 8ми битную шину видеоданных и менять там данные каждый такт. Через имеющиеся на ВУ шины затруднительно протолкнуть видеоданные вектора в real time.
Выходы мультиплексоров D11-D14, которые формируют сигнал на ШАП, идут напрямую к ОЗУ. Выходы ОЗУ, все 32, заведены на мультиплексоры D41-D44, выходы которых идут на ШД через буфер D28, а выборка осуществляется проводами 22,23 (ШАВВ5 и ШАВВ6), то есть частью адреса. Эти же выходы идут параллельно на сдвиговые регистры D48-D45, откуда из них уже получается видеосигнал.
К сожалению ivagor как всегда прав.
Больше игр нет
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)