Приложение C. Описание стандартных модулей
113
располагается в оперативной памяти и занимает 8 или 16 килобайтов, соответственно,
для Пылдина 601 и Пылдина 601А/601М.
В режиме высокой разрешающей способности можно использовать только два
цвета - черный и белый, в режиме низкой разрешающей способности - 16 цветов, а в
режиме средней разрешающей способности - только 4 цвета, но выбираемые из одной
палитры (выбор палитры и цвета делается отдельно). Номера цветов совпадают с теми
номерами, заданными в модуле UniCRT. Палитры следующие:
1 палитра
черный(0), зеленый(2),
красный(4),
желтый(6);
2 палитра
синий(1),
сине-зеленый(3),
фиолетовый(5)
белый(7);
3 палитра яркые:
серый(8),
зеленый(10),
красный(12) ,
желтый(14);
4 палитра яркые:
синий(9),
сине-зеленый(11), фиолетовый(13),
белый(15).
Независимо от разрешающей способности, координатная система одна и та же
(координаты являются логическими). Графическая система компьютера (находящаяся в
XBIOS-е) делает преобразование логических координат в физические и выполняет
черчение на экране. Верхний левый угол экрана имеет координаты (0, 0), а нижний
правый угол - (639, 399), т.е. экран имеет размеры (в точках) 640x400 при
использованием логических координат.
Выписание символов возможно и в графическом режиме с высокой или средней
разрешающей способностью. Выписывание символов происходит автоматическим
образом (при помощи WRITE) на графическом экране, если он является активным.
Программист ничего не обязан делать, т.е. механизм прозрачен. Кроме READ/WRITE,
в графическом режиме можно использовать все процедуры модуля UniCRT.
Графический курсор (который невидим, т.е. он не индицируется как текстовой курсор)
и текстовой курсор не являются одним и тем же курсором, т.е. текущая графическая
позиция и текущая текстовая позиция независимы. Например: gotoxy(10, 10); и
moveto(40, 40); вызывает следующее: текст будет выписыван с позиции (текстовой) (10,
10), а черчение, например, линии начинается с позиции (графической) (40, 40).
function ActualXsz: cardinal;
Действие: В качестве результата возвращает физический размер экрана по горизонтали
(допустимое число точек строки) или 0, если не установлен графический режим.
function ActualYsz: cardinal;
Действие: В качестве результата возвращает физический размер экрана по вертикали
(допустимое число строк) или 0, если не установлен графический режим.
function AllctCharSet(Npg: shortcard; free: boolean): pointer;
Действие: Резервирует память для дефиниции Npg * 32 символов на границе 256 байтов
(как требует XBIOS), т.е. младший байт начального адреса будет содержать 0.
Возможна дефиниция 32 последовательных символов, начинающихся с симола,
код которого один из следующих: $00, $20, $40, $60, $80, $а0, $c0, $е0.
Дефиниция каждого символа состоит из содержимого 8 байтов (по одному для
каждой строки графического изображения символа). Следовательно,
дефиниция 32 символов состоит из 256 последовательных байтов (по 8 байтам
каждому символу). Эта функция только отводит область памяти для этих
символов и возвращает ее начальный адрес. Запись в область дефиниции
должно произойти позже (например, чтением с файла). Так как память для
дефиниции резервируется на 256-байтовой границе, в большинстве случаев
отведеная область содержит сверх необходимого числа байтов (но лишнее
число байтов не превышает 255). Если параметр FREE = TRUE, неиспользованная
память (зарезервированные лишние байты) освободится функцией AllctCharSet
сразу и может быть использована (этим способом образуется "дыра" в
<<  <  GO  >  >>

Вернуться к началу сайта