При формировании на экране сменяющих друг друга окон, при выборе режима работы программы с помощью экранного меню и других ситуациях требуется предварительно запоминать состояние экрана, а затем его восстанавливать. Эта процедура сводится к копированию видеопамяти в оперативную память и обратно.
В примерах, которые будут в дальнейшем иллюстрировать работу с экраном, используются различные переменные, связанные с видеопамятью. Чтобы не повторять описание переменных, будем считать, что это описание содержится в модуле DesUnit, а в обрабатывающей программе задано предложение Uses DesUnit.
Текст модуля DesUnit:
UNIT DesUnit;
{ Модуль содержит глобальные описания типов и переменных }
Interface
Type
ScreenColRange = 1..80; { тип номера столбца экрана }
ScreenRowRange = 1..25; { тип номера строки экрана }
ScreenChar = record{ элемент видеопамяти }
Symbol : char; { символ }
Attrib : byte; { атрибут }
end;
ScreenRowArray = array[ScreenColRange] of ScreenChar;
{ тип строки экрана }
ScreenArray = array[ScreenRowRange] of ScreenRowArray;
{ тип видеопамяти }
ScreenPointer = ^ScreenArray;
Var Screen : ScreenArray absolute $B800:$0000;
{ видеопамять }
RowAr : ScreenRowArray;{ строка видеопамяти }
BufAr : ScreenPointer; { указатель буферного }
{ массива для сохранения видеопамяти }