ВН := Page; {Страница} Intr($10,Reg) end end {PutCursor};
^———————————————-;
Procedure SetCursorLine (Pi-.ge,Up, Down: Byte);
{Устанавливает размер курсора} begin
if Page in [O..MaxPage] then with Pages[Page] do begin
CLineUp := Up;
CLineDown := Down;
if Page=ActivePage then
SetActivePage(Page) end
end; {SetCursorLine) /*_--_--•-______-__•-_-•-_•---•----.--———---«----*
] Подпрограммы управления текстовый выводом ¦ *——————————————————————————————*;
var
OldOutput: Text; (Сохраняет стандартный канал вывода} const
ChangeOut: Boolean = False; {Флаг замены канала вывода)
Procedure WriteCharXY(Page,X,Y: Byte; Cr: Char);
(Выводит символ на указанное место. Атрибуты берутся из пассива Attrib. Курсор остается на месте} var
Loc: Word; {Старое положение курсора} begin
Loc := MemW[$0040:$0050+P?ge];
with Reg do begin
AH := 2;
DL := X-1;
DH := У-1;
BH := Page;
Intr($10,Reg); {Переводим курсор} АН := $9;
AL :° ord(Cr) ;
BL := Pages[Page].Attrib;
BH := Page;
CX := 1;
Intr($lO,Reg); (Выводим, символ} АН := 2;
DX := Loc;
BH := Page;
Intr($10,Reg) {Курсор - на старое место} end;
MemW[$0040:$005O+Page] := Loc end; {WriteChavXYf /—————————————————;
Function ZeroFunc(var F: TextRec): Integer; Far;
{Пустая процедура для операций OPEN/CLOSE} begin
ZeroFunc := 0 end; {ZeroFunc} (———...———— ————————;
Procedure Border (Page,Xl,Yl,X2,Y2,Bord: Byte);
{Обводит ранкой заданную прямоугольную область экрана/