В официальной документации есть информация о том, что при работе с графическим
экраном есть несколько методов для вывода графики:
- обычный;
- прозрачный цвет;
- временный;
Режим включается через указание номера страницы в порт окна процессора. Известно,
что для графического экрана у нас доступно 16 страниц с номерами 50h - 5fh.
При этом по факту программист не участвует в переключении этих страниц. Нужно
знать только одно, что в номере страницы биты 2 и 3 отвечают за режим вывода.
3..2 = 0 = 50h обычный метод вывода. Все данные попадают на экран без исключения.
bit3 = 1 = 58h режим прозрачного цвета. Цвет с номером FFh не выводится на экран.
bit2 = 1 = 54h временный вывод на экран. Самый мутный режим и тут нужно немного
пояснить как работает экран у Спринтера.
Для работы с графикой на Спринтере установлена отдельная память - vram,
т.е. видео-озу. По факту это sram, быстрая память. Экран устроен так, что при
обычном методе или с приминением прозрачности все данные записываются и в vram
и в ram (озу). Суть метода 3 в том, что когда он активен данные пишутся
только в vram. Например, мы включили граф.режим, обычный метод и вывели фоновую
картинку на весь экран. Потом включили бит3+бит2 и вывели какой-то спрайт.
Координаты вывода мы запомнили. Потом нам нужно сдвинуть спрайт на сколько-то
пикселей в сторону. Мы берём ранее сохранённые координаты, включаем обычный
режим и делаем чтение и запись в те же координаты. Что получается в результате?
Фоновая картинка была записана и в ram и в vram. Потом по методу 3+прозрачность
мы вывели спрайт. Его данные попали только в vram, а в ram сохранена фоновая
картинка. Когда мы снова включили обычный режим и сделали чтение, мы прочитали
данные из ram, а потом записали их в vram и повторно в ram. Таким образом мы
восстановили область под спрайтом. После этого можно рисовать спрайт в новых
координатах. Замысел данного метода в том, что нам не требуется процедура
и лишний буфер для сохранения фона (данные под спрайтом). Однако процедура
которая будет восстанавливать этот фон, всё же нужна. При использовании
акселератора это работает достаточно быстро. Биты 2 и 3 можно использовать как
раздельно, так и совместно.
Ближайшим примером работы всех этих режимов является демка balls.