ВН := 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);

{Обводит ранкой заданную прямоугольную область экрана/