|
|
|
|
В компьютере Специалист постоянно идут споры о реализации цвета. Сколько цветов и как их читать.
Выскажу и я свою безумную идею.
Сделаем групповое кодирование, как в "Орионе" 16-цветный режим. Т.е. атрибуты цвета находятся в параллельной памяти по тем-же адресам, что и основной экран.
Атрибут размером в 1 байт содержит информацию о цвете точки на основном экране в пределах одного байта для 8 точек. 4 бита для нулевого значения и 4 бита для единицы.
По 16 комбинаций цвета. Получится, что 8 точек рядом могут иметь только 2 разных цвета из 16-и. Ничего страшного не вижу в этом, в "ZX Spectrum" с этим ещё хуже - 2 цвета на квадрат 8х8.
Такое решение позволит старым программам без поддержки цвета прекрасно работать, установив атрибуты однотипные для всего экрана.
А как-же получать доступ к дополнительной памяти? Можно, как в "Орионе" заменять основной участок памяти памятью из дополнительной плоскости, управляя через определённый порт.
Но есть более изящное решение, основанное на особенности процессора i8080. Заключается оно в том, что используя слово состояния при обращению к стеку, можно подменить основную память на дополнительную,
объёмом до 65536 байт! Т.е. выделить туда стек и атрибуты экрана и переключаться они будут намного быстрее, чем управление через порт. Да и команды чтения/записи стека быстрее работают. Эту-же память можно использовать и как кеш для игрушек и накопителей.
Такой подход был использован в компьютере "ЮТ-88" для организации квазидиска. В принципе, можно и здесь так сделать, установив, например, микросхему памяти DS1250Y ёмкостью 512 кб с встроенной батарейкой.
Схемотически позаимствуем видеоузел у Ориона или у Сябра. Видеоданные и атрибуты, как и в стандартной схеме, параллельно читаются в регистры ИР33 с частотой 1/4 пиксельклока и переписываются с частотой 1/8 пиксельклока данные в регистр сдвига, атрибуты в параллельный регистр, откуда через мультиплексор передаются на видеомонитор/телевизор.
В общем, загорелся я идеей собрать это чудо! Что изменится относительно стандартного "Специалиста"?:
Необходима будет правка ПЗУ:
Для начала создам проект в Протеусе, потом на макетной плате. Если всё пойдёт как задумано - закажу опытную партию плат.
Что-бы уменьшить размеры платы и упростить монтаж и наладку, всю мелкую логику засуну в ПЛИС. Старенькая Altera MAX7000 в корпусе PLCC вполне подойдёт.
Обсуждение в Telegram