Кстати, совсем забыл. Если это у нас VGA-развертка, где строчная 30кГц, а не PAL, где 15кГц, то надо немножко иначе делать, чем я предложил. Один узел будет записывать строчку PAL-развертки (бордюр + экран + бордюр) в 384-пиксельный буфер, а параллельно из другого 384-пискельного буфера будет по два раза с частотой 30кгц выводится предыдущая строчка. Таким образом, строка в буфере будет формироваться с пиксельклоком 7МГц, синхронно с обновлением экранной области процессором и обновлением бордюра, а уже из этого буфера с пиксельклоком 14МГц все будет выводиться на экран, с двухкратным повторением. Отсюда имеем как минимум два 384-ниббловых буфера.
Я тут по другому придумал, чтобы как раз на быстродействие памяти не закладываться. Смысл такой эту память ставим между основной и выходными регистрами (сдвига пиксельного и атрибутного) через мультиплексоры. Когда идет обращение процессора, то из памяти буфера идет чтение, а во время обращения к видеочасти идет запись в буфер. Тем самым практически изменения незначительны и памяти всего используется 256 байт. Кстати записыавать в видеобуфер можно по нечетным строкам, а после сброса нечетной строки менять местами буферы.
На вопрос почему 256 байт, 1 строка это 64 байта (наших как бы 56 но для кратности адресов проще так) видеопикселей + 64 байт атрибуты. И столько же занимает дополнительный буфер. Когда заканчивается видимая часть, то в память пишется значение бордера.
Короче надо будет схемку накидать, но вроде достаточно просто получается.
---------- Post added at 17:19 ---------- Previous post was at 17:18 ----------
Там память для палитры есть, так что она для этих целей не особо годится.
Более понятно это звучит так: в цикле процессорного доступа к основному ОЗУ Спектрума, мы пишем в теневое ОЗУ по адресу, задаваемому в соответствии с TV развёрткой, текущее значение регистра бордюра, а в цикле когда сканер имеет доступ к ОЗУ - читаем из теневого ОЗУ по адресу, задаваемому в соответствии с VGA развёрткой сохранённое значение регистра бордюра. Соответственно надо на теневую память свой мультиплексор адресов и некий переключатель шины данных между портом бордюра, мультиплексором видеовывода бордюра и теневым ОЗУ бордюра.
чёт ты тут намудрил.. нахрена нам ещё пиксели? они всегда одинаковы будут. Пишем в теневое ОЗУ токо значение бордюра, т.е. 3 бита порта #FE, которые потом подаём заместо атрибутов на мультиплексор видеоформирователя.
---------- Post added at 18:15 ---------- Previous post was at 18:14 ----------
Titus, ты что-то недопонимаешь в работе Спектрума
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)