А при чем здесь таймер? Снег-2 такого же происхождния, что и снег-1.
Вид для печати
Бес попутал :o
Подозреваю, что у меня неправильно реализован флаг 0 (ССИ) -- сейчас он считается взведенным, если "луч" рисует пикселы от 0 до 100 (из 1000). Длительности ССИ в ТО нет, но он должен быть короче.
/me открыл книжку "Узлы и блоки телевизоров" :-)
Длительность видимой части горизонтальной развертки 160 тактов процессора (или 80 символов), длительность сигнала HBlank (горизонтальное гашение луча) - 40 тактов процессора (20 невидимых символов). Каждая строчка начинается с интервала HBlank (40 тактов), затем видимая часть 160 тактов, а не наоборот.
---------- Post added at 01:04 ---------- Previous post was at 01:01 ----------
Код:Тактирование системы:
=======================
Задающий генератор - 30,8МГц
Тактирование видеосистемы - 15.4МГц (pixelclock)
Частота обращения к ОЗУ - 1.54МГц
Частота строк - 15400Гц
Частота кадров - 50Гц
Число строк развертки - (25 + 3) * 11 = 308
Видимых строк - 25 * 11 = 275
Тактов ОЗУ в строке - 100 (80 на видимую часть, 20 на HBlank)
Тактов CPU в строке - 200
Команд CPU в строке <= 200
Тактов в кадре - 61600
Тактирование CPU - 3.08МГц (но две фазы - первая и вторая)
Полутактовое тактирование CPU - 6.16МГц
10 точек символа равно двум командам процессора.
Нашел на схеме куда заведен сигнал управления 25-й строкой. Этот сигнал называется ФЛ3Н, и заведен он на D17 (ЛА3), туда же, куда и сигнал VBlank (ОКРН). Таким обраозм, этот сигнал аналогичен сигналу обратного хода кадровой развертки, только формируется программно (к слову сказать, не обязательно может выключать 25-ю строку, а вообще любую). Остается открытым вопрос, чем этот сигнал отличается по своему действию от сигнала запрета отображения ФЛ0В?
---------- Post added at 03:12 ---------- Previous post was at 03:07 ----------
Подозреваю, что VBlank и ФЛ3Н просто запрещают отображение, тогда как ФЛ0В и запрещает отображение, и запрещает выборку видеоинформации из памяти.
---------- Post added at 03:21 ---------- Previous post was at 03:12 ----------
Но что-то здесь все равно не так, потому что если реализовать таким образом, то управляющей строки в обычном режиме не видно, т.к. если нулевой бит регистра R10 = 0, отвечающий за самый последний разряд управляющей строки (индикация строки 25), то на время отображения управляющей строки, сбрасывается ФЛ3Н, и строку не видно. А по умолчанию там именно 0, и значит при старте не видно строки.
Н означает, что сигнал активен при низком уровне (0)
Из темы про 15ИЭ
"по поводу флага 0 надо добавить, что низким уровнем он также блокирует формирование сигнала РИН (режим индикации), который разрешает автоинкремент счетчика символов в ЗУ при индикации. Таким образом, при сброшенном флаге 0 процессор может спокойно работать с ЗУ.
Сброшенный флаг 1 разрешает стандартную блокировку отображения во время 3 маркерных строк (также запретом ЗСРВ) под символами.
Установленный флаг 1 включает режим 5 Гц запрета/разрешения отображения во время 3 маркерных строк. Т.е., очевидно разрешает мигать курсору. Но, похоже, что он должен включаться программно строго во время формирования МСВ (активен вдоль всех 3 битовых маркерных строк), но только на время отображения того символа, под которым курсор! Т.е., похоже, процессор как-то должен программно отслеживать (может по жесткой времянной привязке выполнения команд к времени отображения строки?) момент отображения курсора и в этот момент включать флаг 1, а потом сразу выключать?
Флаг 3, повторю, также блокировкой ЗСРВ, запрещает отображение всей символьной служебной строки."
Кстати, теперь прекрасно работает TSTKGD.SAV с этого сборника:
http://s020.radikal.ru/i700/1304/31/3fca9442814e.png
Все автоматически переключается туда-сюда, между текстовым и графическим экраном. И обратно выходит в режим УКНЦ, если был из него запущен.