Я бы предложил сделать видеорежим на подобие Sprinter-овского:
1. там графический экран располагается в спец.странице (#50) и соответственно можно включить в любое окно адресного пространства, что уже удобно.
2. переключение координаты Y происходит через порт и запрошенная строка находится уже с начала граф страницы. Тем самым не теряется время на расчет адреса в граф.экране, или не тратится место на хранение таблицы адресов.
3. для компактного расположения информации можно использовать 1 байт для 2х пикселей, но не так, как это реализовано в АТМ/16Ц - %i I g r b G R B, а нормально, как в спринтере в режиме 640х256х16 - %igrbIGRB, что гораздо удобнее, нежели "продуманный" АТМ-мовский режим, в котором задерешься манипулировать с битами если хочешь один пиксель подправить.
4. Идея использования маски в спринтере так же хороша и удобна - если включен режим вывода с маской (3й бит в номере страницы видеоозу в Sprinter-е), то запись в ОЗУ определенной комбинации бит не производится, например байт %11110000, считается, что полубайт %1111 - это признак маски и он отметается, а записывается в ОЗУ только младшая половинка байта. Этим мы увеличим скорость работы со спрайтами. А то в данный момент надо сильно извратиться, чтоб вывести спрайт с маской - либо тратися куча тактов и турба тут мало помогает, либо место в памяти для распаковки п/п вывода и хранения маски самого спрайта.
Кроме всего прочего экранная область не разбросана по всей памяти, и программисту удобней размещать и код и графику.
Как то так.





Ответить с цитированием
