![]() |
Разработка НОВОГО клона
Предистория:
Примерно 1 декабря 2006 года я наткнулся на этот форум. Во первых был приятно удивлен что Spectrum ЖИВ!, а во вторых меня замучала настольгия по светлому прошлому и я решил собрать клон. Нужно заметить что году в 1999-2000 я сидел за живым спеком (у меня ещё не было пицюка), меня реально не устраивали 48К и существующий видеорежим. память я расширил до 128К по стандарту, а вот всё что выше до 1М как уш получилось. Но до видео так и не добрался. Были конечно попытки собрать новый контроллер со своей памятью, но все эти попытки останавливались после того как я на экране монитора получал полосатый матрац (без участия спека). Память я так к ниму и не прикрутил, так как: первое: не мог достать то что мне надо было, второе - откуда у бедного студента деньги... Сейчас же всё изменилось. Денег хватает, времени мало, но тем не менее.... В чём суть: Немного пораскинув мозгами я решил собрать таки клон. Но на современной элементной базе. Железо: 1. Процессор Z84C0020VEC (Z80 20MHz PLCC44 CMOS) 2. ОЗУ K6R4008C1C-15 (SRAM 512K*8 15ns CMOS)x 2 шт 3. ПЗУ am29F010-90 (128K*8 90ns Flash) 4. Всё остальное - Altera EP1K30 5. Макетная плата (еще проектируется) Концепция: Особое внимание хочу уделить видеоконтроллеру о чем подробно и рассказываю. Видеоконтроллер по сути дела состоит из синхрогенератора и счетчиков адреса. Синхрогенератор будет иметь 8 портов, предназначенных для хранения информации о ширине синхроимпульса, импульса гашения, ширины бордюра, и ширине экрана. Таким образом появлется возможность полностью менять параметры экрана и если удастся запустить режим 640*480 100Гц. Изначально работы ведутся над 60 и 75Гц режимом, так на эти режимы информация имеется. Стандартный ТВ режим также будет присутствовать. У Видеоконтроллера также будут присутствовать следующие возможности конфигурирования: 1. Управление частотой задающего генератора, что собственно и обеспечивает смену разрешений TV/VGA. 2. Управление счетчиком адреса (адресация спектрум экрана/линейная адресация памяти экрана) 3. Переключение экранов. Количество этих самых экранов будет ограничиваться объёмом ОЗУ. 4. Аппаратный мультиколор до 256 цветов из палитры 65536, а если остануться свободные ноги у ПЛИС то и 16777216. 5. Аппаратный скроллинг экрана по обеим осям. 6. Текствовый режим. в режиме ТВ размер символа 8*8 25 строк, в режиме VGA - 19*8 25 строк или 8*8 60 строк. Возможности загрузки шрифтов скорее всего не будет, т.к. возможности видеоконтроллера слихвой перекрывают эту необходимость. Спектрум в целом: Частота процессора будет также задаваться через порты ввода вывода. Могу сказать только одно процессор будет работать без WAIT'ов теоретически до 120 с чем-то МГЦ... такчто как разгонится :-) Адресация памяти. Гарантировано будет совместимость до 128К, дальше как попрет... Диспетчер памяти. Рассматриваются два варианта. Первый: любая страница ОЗУ из 256[до 4МБ] и более (а возможно и 65536 [до 1 Гб]) становится в любую четверть экрана. Второй (посложнее): Введение аппаратного сегментного регистра по принципу IBM PC (к содержимому сегментного регистра прибавляются 2 старших бита адреса процессора. т.е. если содержимое регистра =#DEAD а программа обращется по адресу #ABCD, то реальный адрес памяти будет равен #37ABEBCD). В чем сложноть... для того чтобы не ограничивать программу объёмом 64К или не заставлять програмеров скакать от отного сегмента к другому, необходимо перехватывать КОП от Z80 и на время выполнения операций с памятью при выполнении команды LD A,(HL) LD (HL),A подставлять другой рестр, и так далее... Таким образом программист получает доступ к огромному объёму памяти данных... Законченый вариант: Плата будет иметь формфактор микро-ATX с 5ю системными разъёмами 62pin, возможно появиться и расширение этого разъёма (как ISA). Что сделано на сегдня: Подготавливается PCB файл для макетной платы... готовую плату получу через 1-2 дня. В Quatrus'е засимулированы режимы работы синхрогенератора... по всей вероятности работает Цена: На сегодняшний день всё это удовольствие обходится мне в 925 рублей. (плата бесплатная будет :-))) На этомпока всё... у кого есть предположения - пишите... есть вопросы? отвечу. |
Quote:
|
Quote:
Quote:
З.Ы. Только что подготовил файл макетной платы... скоро на работу... 5-6 часов и плата готова... |
Quote:
И почему все железячники так любят аппаратные спрайты и прочую дребедень, проистекающую из убогости элементной базы 80-х... |
Quote:
|
Quote:
Quote:
|
Quote:
А товарищу пожелаю больших успехов в разработке своей машины! Не каждый на это способен :) ИМХО лучше 2Д-аксель на основе блитинга или спрайтов всё-таки сделать, чем погрязть в софтварщине... |
Quote:
Основная идея - отделить видеопамять от основной и организовать в виде параллельных плоскостей (довести до ума EGA-подобную схему), что позволит во многих случаях ускорить вывод графики только зетником (плюс удобная раскладка экрана, ибо от специфических восьмибитных ограничений разгон Z80 как таковой не спасает). А для нормальной полноцветной графики юзать блиттер, работающий за счет расширения ШД видеопамяти очень быстро (значит, актуальная графика тоже должна храниться "внутри"). |
Quote:
видеоданные отправлял в LCD со скоростью 16МБит/с - регистром сдвига, данные формировались AVR-контроллером. Был видеобуфер(цвет прозрачности/отсечение)... Скорость получилась приемлемая. Z80 конечно такое не потянет, поэтому нужно собирать аксель! Была идея на ту же LCDшку привешать ATmega8515 - собственно аксель - блитинг/смарт фильтр/отсечение/полу-прозрачность / скэйлинг/.... Но потом попался в руки V9990 и я передумал... В любом случае для зэтника нужен аксель, а то графа будет отстойная по скорости |
Quote:
Сегодня-то какая разница - вызывать стандартную процедуру, которая будет координаты с атрибутами у ограниченных спрайтов менять, или вызывать стандартную процедуру, которая блиттер запрограммирует на переброску произвольного блока? Сам же всех спрашиваешь - "и как только с этими спрайтами хитромудрыми обращаться?" ;) |
| All times are GMT +4. The time now is 13:21. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.