|
|
|
|
В компьютере Специалист постоянно идут споры о реализации цвета. Сколько цветов и как их читать.
Выскажу и я свою безумную идею.
Сделаем групповое кодирование, как в "Орионе" 16-цветный режим. Т.е. атрибуты цвета находятся в параллельной памяти по тем-же адресам, что и основной экран.
Атрибут размером в 1 байт содержит информацию о цвете точки на основном экране в пределах одного байта для 8 точек. 4 бита для нулевого значения и 4 бита для единицы.
По 16 комбинаций цвета. Получится, что 8 точек рядом могут иметь только 2 разных цвета из 16-и. Ничего страшного не вижу в этом, в "ZX Spectrum" с этим ещё хуже - 2 цвета на квадрат 8х8.
Такое решение позволит старым программам без поддержки цвета прекрасно работать, установив атрибуты однотипные для всего экрана.
А как-же получать доступ к дополнительной памяти? Можно, как в "Орионе" заменять основной участок памяти памятью из дополнительной плоскости, управляя через определённый порт.
Но есть более изящное решение, основанное на особенности процессора i8080. Заключается оно в том, что используя слово состояния при обращению к стеку, можно подменить основную память на дополнительную,
объёмом до 65536 байт! Т.е. выделить туда стек и атрибуты экрана и переключаться они будут намного быстрее, чем управление через порт. Да и команды чтения/записи стека быстрее работают. Эту-же память можно использовать и как кеш для игрушек и накопителей.
Такой подход был использован в компьютере "ЮТ-88" для организации квазидиска. В принципе, можно и здесь так сделать, установив, например, микросхему памяти DS1250Y ёмкостью 512 кб с встроенной батарейкой.
Схемотически позаимствуем видеоузел у Ориона или у Сябра. Видеоданные и атрибуты, как и в стандартной схеме, параллельно читаются в промежуточные регистры с частотой 1/4 пиксельклока и переписываются с частотой 1/8 пиксельклока данные в регистр сдвига, атрибуты в параллельный регистр, откуда через мультиплексор передаются на видеомонитор/телевизор.
В общем, загорелся я идеей собрать это чудо! Что изменится относительно стандартного "Специалиста"?:
Необходима будет правка ПЗУ:
Для памяти стека переключение банков по 64 кб. осуществляется четырьмя битами, записываемами в порт на ИР35. Остальные 4 бита управляют начальным адресом видеопамяти, аналогично Ориону-128.
Здесь, есть небольшая фишка, 2 бита переключают 4 области экрана и атрибутов в пределах 64 кб, а ещё 2 атрибуты - в памяти выше 64 кб. в пределах 256 кб.
Т.е. возможно создать видеоэффект моментального переключения цветов на экране (предварительно записав нужные атрибуты в разные области памяти атрибутов!
Платы расширения.
Для установки дополнительного оборудования будет разъём SL62, частично совместимый по сигналом с шиной ISA-8.
Это позволит использовать некоторые платы от IBM PC.
Для начала создам проект в Протеусе, потом на макетной плате. Если всё пойдёт как задумано - закажу опытную партию плат.
Что-бы уменьшить размеры платы и упростить монтаж и наладку, вероятно, всю мелкую логику засуну в ПЛИС. Старенькая Altera MAX7000 в корпусе PLCC вполне подойдёт.
Обсуждение в Telegram
Распределение портов
| 00h-3Fh | Резерв для Z180
| 40h-43h | КР580ВИ53
| 44h-47h | КР580ВВ51
| 48h-4Bh | AM9511
| 4Ch-4Fh |
| 50h-53h | Накопитель CH376
| 54h-55h | Конфигурация памяти
| 58h-5Bh | Звук SAA1099
| 5Ch-5Fh |
| 60h-61h | VT82C42/HT6542B
| F8h-FBh | КР580ВВ55 матричная клавиатура, принтер.
| Платы расширения
| 80h | Тест коды
| 88h-89h | Звук OPL3 YMF262-M
| 70h-71h | Часы КР512ВИ1
| F0h-FBh | КР580ВВ55 программатор, расширения.
| xxh-xxh | CF Card
| 2F8h-xxh | COM3, COM4
| | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Существует в природе интересный процессор родом из СССР именуемый КР580ВМ1. Это доработанный КР580ВМ80, имеющиё одно питание 5в, и отдельный вывод для адресации дополнительных 64 КБ памяти данных,
частота до 5 МГц. В паре с генератором 16 МГц на КР1810ГФ84 при стандартном пиксельклоке видео 8 МГц, получаем 5,333 МГц клок процика.
Ну, и, вместо стека используем ту самую возможность доппамяти!
Всё это хорошо и радостно, только процессоров этих было выпущено очень ограниченное количество, и всречаются они в продаже с очень негуманным ценником.
Так что пока будем творить на ВМ80, в турборежиме 32/9 = 3,555 МГц.