ПРИЛОЖЕНИЕ
ТЕКСТЫ ПРОГРАММ П1. МОДУЛЬ ПОДДЕРЖКИ ТЕКСТОВОГО ВЫВОДА F_TEXT
Этот модуль не описан в книге, т.к. мне показалось, что реализуемая в нем техника мно— гостраничног'--- текстового ввода/вывода не представляет интереса для широкого круга читателей. Тем не менее его полный текст приводится ниже, т.к. некоторые тестовые программы и модули использует его для создания текстовых окон.
^«""~~"==-====; Unit F_Text; {==«=====.,===„} {+~ --———------————------—--—————————-------- --"-./-
I В этот модуль входят подпрограммы поддержки ¦
I многостраничного вывода а текстовом режиме ¦
+——————— ———_—_——____--__————_—_-__+;
INTERFACE {—— ——————.—— _——_-__——_——_——_._————__,
Oses CRT, DOS;
{Следующие константа используются для указания типа рамки при обращении к процедурам BORDER, SETWINDO» и PUTWINDOW.} const
EmptyBorder =0; {Стереть рамку} SingleBorder =1; {Рачка из одинарных линий} DoubleBorder =2; (Рамка из двойных линий}
{Следующий массив определяет символы псевдографики для вычерчивания рамок (альтернативная кодировка)} BorderChar: array [0..2,1..6] of Char = ((#32, #32, #32, #32, *32, #32), (#218, #196, #191, #179, #192, #217), 1*201, #205, #187, #186, #200, #188));
type
PageType = record {Описатель страницы}
case Byte of
0:(Attrib Byte; {Атрибут символов}
CLineUp Byte; {Верхняя строка курсора} CLineDown Byte; {Нижняя строка курсора} CVisible Boolean; (Признак видимого курсора} WBondUp Word; {Левый верхний угол окна} WBondDown Word); {Правый нижний угол} 1:(РадеРаг: array [1..8] of Byte) end;
const
Pages: array [O..7] of PageType -
((PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)), (PagePar: (7,6,7,1,0,0,79,24)));
{Адрес регистра статуса адаптера CGAf PortCGA = $3DA;
(Начало видеопамяти для CGA/EGA/VGA) BegVideo = $В800;
(Следующие константы зависят от режима работы и типа адаптера. Значения по умолчанию соответствуют CGA/EGA/VGA в режиме С080. Эти значения можно переопределить с помощью процедуры InitText}