Регистр позволяет сдвигать в горизонтальном направлении содержимое экрана на один пиксел. При использовании регистра HPR совместно с регистром начального адреса контроллера атрибутов можно производить горизонтальный сдвиг экрана влево на любое число пикселов.
Формат регистра горизонтального панорамирования представлен ниже:
D3-D0 Биты задают величину горизонтального сдвига. Соответствие содержимого регистра и величины сдвига для различных режимов приведены в таблице 8.18.
D7-D4 Не используются.
D3 D2 D1 D0
Величина сдвига содержимого экрана (в пикселах)
монохромный текстовый
VGA, режим 13h
остальные режимы
0 0 0 0
8
0
0
0 0 0 1
0
-
1
0 0 1 0
1
1
2
0 0 1 1
2
-
3
0 1 0 0
3
2
4
0 1 0 1
4
-
5
0 1 1 0
5
3
6
0 1 1 1
6
-
7
1 0 0 0
7
-
-
1 0 0 1
-
-
-
1 0 1 0
-
-
-
1 0 1 1
-
-
-
1 1 0 0
-
-
-
1 1 0 1
-
-
-
1 1 1 0
-
-
-
1 1 1 1
-
-
-
Таблица 8.18 Величина горизонтального сдвига в различных режимах работы видеоадаптера.
По умолчанию для всех режимов работы видеоадаптера регистр горизонтального панорамирования содержит нулевые значения для всех битов.
На рисунке 8.16 иллюстрируется операция горизонтального сдвига содержимого экрана при различных значениях регистра HPR. На левой части рисунка регистр горизонтального панорамирования содержит ноль, а на правой части рисунка значение регистра увеличено до трех, при этом изображение на экране сдвигается на три пиксела влево.
Рисунок 8.16 Горизонтальный сдвиг экрана.
Следующая программа позволяет перемещать содержимое экрана по горизонтали и вертикали. Функции HorScroll и VerScroll реализуют, соответственно, горизонтальный и вертикальный сдвиг экрана.
// смещение содержимого экрана по горизонтали и вертикали